Eclipse+AVR+ARM: первые шаги. Часть шестая
- ARV
- Автор темы
- Не в сети
- Администратор
Шаг 7: Подготовка к отладке AVR.
Предвижу, что кое у кого уже просто чешутся руки приступить отлаживать свои AVR-ные проекты в среде Eclipse IDE. Что ж, это возможно вполне, но вот удовольствие от такой отладки будет пониже среднего. Однако, начнем по порядку.
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
было бы замечательное дополнение к статье про отладку - да и смысла в отладке AVR стало бы побольше.
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- druidcat
- Не в сети
- Осваиваюсь на форуме
- Сообщений: 35
- Репутация: 2
- Спасибо получено: 1
По поводу GIMSK, я пишу исходный код для Atmega8, и регистр GIMSK там есть. По поводу ошибки, он мне пишет, Symbol 'GIMSK' could not be resolved, я в самом начале исходного кода писал #include <avr/interrupt.h>, думал из-за этого. Ничего не получилось.
Мужчина должен прожить жизнь без сожаления!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
самой первой строкой вашего исходника имеется?
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- druidcat
- Не в сети
- Осваиваюсь на форуме
- Сообщений: 35
- Репутация: 2
- Спасибо получено: 1
Или я опять что-то путаю.
Многоуважаемый ARV не могли бы вы подсказать, а как можно настроить проект в ECLIPSE, чтобы при компиляции DEBUG файла, компилировался файл с расширением *.cof?
Мужчина должен прожить жизнь без сожаления!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- druidcat
- Не в сети
- Осваиваюсь на форуме
- Сообщений: 35
- Репутация: 2
- Спасибо получено: 1
Так же я пользуюсь "протезом", тока почему то в нем у меня пошаговая отладка не получается.
Пользуюсь версией протеуса 7.7, когда во время симуляции нажимаю паузу, у меня в окне исходного кода пусто.
Мужчина должен прожить жизнь без сожаления!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
1. настроить Eclipse на компиляцию с включением отладочной информации в ELF-файл, формат должен быть DWARF-2
2. файл протеуса со схемой поместить в ту же папку, где все исходные файлы, т.е. в корневую папку вашего проекта.
если одно из правил не соблюдено, протеус не найдет исходники для пошаговой отладки.
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- druidcat
- Не в сети
- Осваиваюсь на форуме
- Сообщений: 35
- Репутация: 2
- Спасибо получено: 1
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
Мужчина должен прожить жизнь без сожаления!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- уни
- Не в сети
- Новый участник
- Сообщений: 1
- Спасибо получено: 0
Зато есть одно несомненное преимущество данного вида отладки: ни студия, ни протеус не позволяют вести отладку 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
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
на вооружение я принимать не стану, т.к. на С++ не пишу, а в статьях, как акын, что вижу, о том и пою про С++ я только из других источников слышал, что у студии проблемы. как появится время - чисто для интересу попытаюсь повторить ваш опыт.
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Bulych24
- Не в сети
- Новый участник
- Сообщений: 2
- Спасибо получено: 0
Подскажите пожалуйста, как разобраться с такой проблемой. При конфигурации дебаггера строка "GDB Hardware Debug" отсутствует. Что же делать?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
нужно установить плугин.Bulych24 пишет: Подскажите пожалуйста, как разобраться с такой проблемой. При конфигурации дебаггера строка "GDB Hardware Debug" отсутствует. Что же делать?
1. Открываете окно Eclipse Marketplace
2. В открывшемся окне жмете ссылку Switch Marketspace Catalog (1), выбираете Yoxos Marketplace, вводите в строке поиска (2) GDB Hardware debug.
3. Когда в окне будет то же самое, что и на картинке, жмете кнопку Install (3).
Ну, а далее - как обычно, ждете завершения установки, соглашаясь со всем, о чем спросят.
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Bulych24
- Не в сети
- Новый участник
- Сообщений: 2
- Спасибо получено: 0
Вы советовали вот здесь:
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
После проделанного проект перестал собираться выдавая ошибку:
**** Build of configuration Release for project BEGIN_BLYA ****
make all
Building target: BEGIN_BLYA.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,BEGIN_BLYA.map -Wl, -gc-sections -Wl, -u,vfprintf_flt -lm -mmcu=atmega16 -o "BEGIN_BLYA.elf" ./BEGIN_BLYA.o
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: : No such file: Invalid argument
make: *** [BEGIN_BLYA.elf] Error 1
**** Build Finished ****
В чём тут дело? В статье упоминалось, что эти параметры как-то связаны (улучшают/помогают) с оптимизацией.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- ARV
- Автор темы
- Не в сети
- Администратор
Правильно параметр линкера, который поможет в оптимизации, должен записываться так (символ в символ!): -Wl,-gc-sections
Однако, он не даст никакого эффекта, если в настройках компилятора не будет параметра -ffuntion-sections и, желательно (но не обязательно), -fdata-sections
Что касается остальной части дополнительных параметров линкера, которые вы указали в своем вопросе, то они касаются работы форматированного ввода-вывода, я об этом писал в своих статьях по WinAVR. если вы не используете функции типа printf - эти параметры не окажут никакого эффекта. по умолчанию линкер собирает среднеоптимальный вариант функций printf - поддерживается любое форматирование, кроме чисел с плавающей точкой.
P.S. да, вот еще что: в дополнительных параметрах компилятора, влияющих на оптимизацию, используются так называемые параметры-флаги, они начинаются с -f. так вот, наверняка вам захочется по мере роста вашего опыта поиграться с различными вариантами оптимизации дополнительными флагами с целью получения самого оптимального кода. и вот тут я могу дать вам совет, как проводить эксперименты с разными комбинациями флагов, не вводя каждый раз их вручную: вы вводите все нужные вам флаги, а затем экспериментируете, выключая некоторые из этого списка (в том числе, можно выключать и те, которые уже активированы опцией -Os или другими вариантами опции -O). выключение флага осуществляется вставкой приставки no- к названию флага, например -fno-function-sections означает "отключить размещение каждой функции в отдельной секции кода".
я не ленивый, я энергосберегающий...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.