Eclipse+AVR+ARM: первые шаги. Часть шестая

Больше
11 года 6 мес. назад #1 от ARV
ARV создал эту тему: Eclipse+AVR+ARM: первые шаги. Часть шестая

Шаг 7: Подготовка к отладке AVR.

DBGПредвижу, что кое у кого уже просто чешутся руки приступить отлаживать свои AVR-ные проекты в среде Eclipse IDE. Что ж, это возможно вполне, но вот удовольствие от такой отладки будет пониже среднего. Однако, начнем по порядку.

Подробнее...

я не ленивый, я энергосберегающий...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 6 мес. назад #2 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
вот бы кто разобрался бы с simulavr более детально по его документации - там предусмотрена возможность интерактивной имитации некоторых входных и выходных сигналов, например, ЖКИ или 7-сегментных индикаторов... мне просто некогда вычитывать и вникать, а с набегу не вышло - там все на каких-то скриптах...
было бы замечательное дополнение к статье про отладку - да и смысла в отладке AVR стало бы побольше.

я не ленивый, я энергосберегающий...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 6 мес. назад #3 от druidcat
druidcat ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Пишу сейчас на форуме. Я просто немного запутался в интерфейсе сайта. :(
По поводу GIMSK, я пишу исходный код для Atmega8, и регистр GIMSK там есть. По поводу ошибки, он мне пишет, Symbol 'GIMSK' could not be resolved, я в самом начале исходного кода писал #include <avr/interrupt.h>, думал из-за этого. Ничего не получилось.

Мужчина должен прожить жизнь без сожаления!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 6 мес. назад #4 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
#include <avr/io.h>
самой первой строкой вашего исходника имеется?

я не ленивый, я энергосберегающий...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад #5 от druidcat
druidcat ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Я разобрался с GIMSK, почему ECLIPSE выдавал ошибку, я глянул в регистры Atmega8 и оказывается за разрешение внешних прерываний отвечает GICR а не GIMSK. Странно что WinAVR GIMSK нравился.
Или я опять что-то путаю. :)
Многоуважаемый ARV не могли бы вы подсказать, а как можно настроить проект в ECLIPSE, чтобы при компиляции DEBUG файла, компилировался файл с расширением *.cof?

Мужчина должен прожить жизнь без сожаления!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад #6 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
не совсем ясно, зачем такой формат... но если вам хочется, можете использовать утилиту avr-objcopy, которая из ELF-файла может сделать COF-файл - запустите ее в консоли и посмотрите параметры, как это сделать. можно добавить запуск этой утилиты на этапе post-build, как я описывал в одной из статей.

я не ленивый, я энергосберегающий...
Спасибо сказали: druidcat

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад #7 от druidcat
druidcat ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Симулятор VMLAB использует *.cof, а мне он очень нравится, так как я в нем более менее разобрался. :)
Так же я пользуюсь "протезом", тока почему то в нем у меня пошаговая отладка не получается. :(
Пользуюсь версией протеуса 7.7, когда во время симуляции нажимаю паузу, у меня в окне исходного кода пусто. :(

Мужчина должен прожить жизнь без сожаления!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад #8 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
чтобы в протеусе получалась пошаговая отладка, необходимо соблюсти несколько простых правил:
1. настроить Eclipse на компиляцию с включением отладочной информации в ELF-файл, формат должен быть DWARF-2
2. файл протеуса со схемой поместить в ту же папку, где все исходные файлы, т.е. в корневую папку вашего проекта.

если одно из правил не соблюдено, протеус не найдет исходники для пошаговой отладки.

я не ленивый, я энергосберегающий...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад - 11 года 4 мес. назад #9 от druidcat
druidcat ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Ого, второй пункт, я про его не знал. Вот причина! :)
PS: Я разобрался с *.COF. Кому интересно, то в ECLIPSE чтоб создать *.cof файл, нужно:
Проект -> Свойства -> C/C++ Build -> Параметры -> Build Steps -> Post-build steps -> avr-objcopy -O coff-ext-avr main.elf main.cof
(Должен быть установлен WinAVR, т.к. avr-objcopy идет в комплекте.)
Спасибо ARV

Мужчина должен прожить жизнь без сожаления!
Последнее редактирование: 11 года 4 мес. назад от druidcat.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад - 11 года 4 мес. назад #10 от уни
уни ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая

Зато есть одно несомненное преимущество данного вида отладки: ни студия, ни протеус не позволяют вести отладку C++-проектов, а для GDB и Eclipse - это раз плюнуть. Такие вот итоги этой огромной статьи.

не понравилось на такое смотреть. если есть желание - разместите на форуме архив с проектом протеуса, проектом AVR Studio 4.xx и необходимым набором файлов - вот тогда можно будет и посмотреть.

По просьбе повторяю здесь. Это нужно из статьи убрать, так как есть знающие люди, которые не оценят.

1) Это svn репозиторий. Чтобы сохранить проект можно использовать специальный плагин TortoiseSVN (весь инструментарий указан в readme.txt).

2) Не имеет смысла по этой причине упаковывать это в архив, т.к. проект развивается и с помощью TortoiseSVN можно посмотреть историю его развития (журнал проекта) и скачать любую ревизию любой даты, а не какой-то одноразовый слепок.

3) Для протеуса нужен всего один файл и он присутствует: uSD.dsn.

4) Также там присутствуют целых два отладочных файла: .elf (gcc) и .d90(iar). Их можно загрузить в модель, а исходники подключаются автоматически.

5) Проект для 4-ки формируется автоматически, если вы хотите в ней что-то отладить. Для этого нужно также как и Proteus загрузить в неё .elf или .d90 объектный файл. Студия сама создаст проект для отладки и попросит указать место куда его сохранить.

6) В 4-ке можно отлаживать этот проект как используя плагин Proteus VSM, так и просто через JTAG ICE mkII в железе.

Прикладываю ссылку на проект: mysvn.ru/avr/examples/uSD/

И три картинки, которые показывают как отлаживается проект на C++:
1) AVR Studio 4.19 и HappyJTAG2 - отладка в железе через JTAG ICE mkII .
2) AVR Studio 4.19 и Proteus VSM - отладка на модели внутри студии через специальный плагин .
3) Proteus 7.7 SP2 rus - просто отладка в Proteus с исходниками .

Мой код одновременно компилируется в двух компиляторах: iar и gcc, поэтому можно всеми тремя способами отлаживать оба варианта.

Только компилировать для разных целей нужно по-разному:
- для железа: частота 16 МГц и скорость 57600 для USART,
- для модели: частота 4 МГц и скорость 9600 для USART - это нужно для моделирование почти в реальном времени.

П.С. Я не поленился и продемонстрировал все три варианта, надеюсь, что это примется во внимание и вы тоже не поленитесь и почитаете readme.txt, рунет и поймёте, почему писать последний абзац нехорошо. Перенимайте на вооружение.

Россия навсегда!
ftp://82.193.156.30
Последнее редактирование: 11 года 4 мес. назад от уни.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 4 мес. назад #11 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
то есть студия с протеусом умеют отображать содержимое полей переменных-объектов, как положено?

на вооружение я принимать не стану, т.к. на С++ не пишу, а в статьях, как акын, что вижу, о том и пою :) про С++ я только из других источников слышал, что у студии проблемы. как появится время - чисто для интересу попытаюсь повторить ваш опыт.

я не ленивый, я энергосберегающий...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 4 мес. назад #12 от Bulych24
Bulych24 ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Здравствуйте. Прошу прощение сразу, что полез комментировать сначала статью, а не сюда - на форум.

Подскажите пожалуйста, как разобраться с такой проблемой. При конфигурации дебаггера строка "GDB Hardware Debug" отсутствует. Что же делать?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 4 мес. назад #13 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая

Bulych24 пишет: Подскажите пожалуйста, как разобраться с такой проблемой. При конфигурации дебаггера строка "GDB Hardware Debug" отсутствует. Что же делать?

нужно установить плугин.
1. Открываете окно Eclipse Marketplace

2. В открывшемся окне жмете ссылку Switch Marketspace Catalog (1), выбираете Yoxos Marketplace, вводите в строке поиска (2) GDB Hardware debug.

3. Когда в окне будет то же самое, что и на картинке, жмете кнопку Install (3).
Ну, а далее - как обычно, ждете завершения установки, соглашаясь со всем, о чем спросят.

я не ленивый, я энергосберегающий...
Вложения:
Спасибо сказали: Bulych24

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 4 мес. назад #14 от Bulych24
Bulych24 ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
Большое спасибо за ответ. Всё получилось. Тогда обнаглею и сразу задам ещё один вопрос.

Вы советовали вот здесь:
www.simple-devices.ru/articles/7-soft/15...lipse-avr-arm-part-5

в Project -> Properties -> C/C++ Build -> AVR C Linker -> General в строке Oter Arguments
вписать -Wl, -gc-sections -Wl, -u,vfprintf_flt -lm
После проделанного проект перестал собираться выдавая ошибку:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

В чём тут дело? В статье упоминалось, что эти параметры как-то связаны (улучшают/помогают) с оптимизацией.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 4 мес. назад - 10 года 4 мес. назад #15 от ARV
ARV ответил в теме Re: Eclipse+AVR+ARM: первые шаги. Часть шестая
При задании дополнительных параметров компиляции вручную очень важно вводить их по правилам GCC. Так как эти правила особо нигде не публикуются, а читать документацию многие не хотят или не могут (английский), то как раз тут и ошибка. Чтобы не ошибаться, я рекомендую не вписывать вручную параметры, которые я привожу в статье, а выполнять Copy-Paste, т.к. лишние пробелы (или смена регистра символов) - это катастрофа!
Правильно параметр линкера, который поможет в оптимизации, должен записываться так (символ в символ!): -Wl,-gc-sections
Однако, он не даст никакого эффекта, если в настройках компилятора не будет параметра -ffuntion-sections и, желательно (но не обязательно), -fdata-sections
Что касается остальной части дополнительных параметров линкера, которые вы указали в своем вопросе, то они касаются работы форматированного ввода-вывода, я об этом писал в своих статьях по WinAVR. если вы не используете функции типа printf - эти параметры не окажут никакого эффекта. по умолчанию линкер собирает среднеоптимальный вариант функций printf - поддерживается любое форматирование, кроме чисел с плавающей точкой.

P.S. да, вот еще что: в дополнительных параметрах компилятора, влияющих на оптимизацию, используются так называемые параметры-флаги, они начинаются с -f. так вот, наверняка вам захочется по мере роста вашего опыта поиграться с различными вариантами оптимизации дополнительными флагами с целью получения самого оптимального кода. и вот тут я могу дать вам совет, как проводить эксперименты с разными комбинациями флагов, не вводя каждый раз их вручную: вы вводите все нужные вам флаги, а затем экспериментируете, выключая некоторые из этого списка (в том числе, можно выключать и те, которые уже активированы опцией -Os или другими вариантами опции -O). выключение флага осуществляется вставкой приставки no- к названию флага, например -fno-function-sections означает "отключить размещение каждой функции в отдельной секции кода".

я не ленивый, я энергосберегающий...
Последнее редактирование: 10 года 4 мес. назад от ARV.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум