Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinAVR + Code::Blocks - отладка
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
ARV
Заинтересовался Code::Blocks, как альтернативе AVR Studio. Привлекает бесплатность и универсальность. Особенно обрадовался наличию поддержки отладки... однако, с GDB никогда никаких дел не имел, вообще смутно представляю, как можно отлаживать в консольном режиме... Судя по всему, Code::Blocks обеспечивает GUI для GDB, однако, не смотря на то, что компиляция происходит, отладка не получается - выводится месседж типа "неизвестно, что отлаживать" - и отладчик завершает работу.
Кроме того, упорно компилирует сначала avr-gcc.exe, а потом avr-g++.exe, хотя проект на чистом Си... В итоге получается, скорее всего, что-то не то... makefile тоже в папке проекта нет...
Установил опцию "создавать lss" - но листинг не создается...

В общем, если кто может помочь - отзовитесь!
AVR
Цитата(ARV @ Oct 11 2008, 13:48) *
Заинтересовался Code::Blocks, как альтернативе AVR Studio. Привлекает бесплатность и универсальность. Особенно обрадовался наличию поддержки отладки... однако, с GDB никогда никаких дел не имел, вообще смутно представляю, как можно отлаживать в консольном режиме... Судя по всему, Code::Blocks обеспечивает GUI для GDB, однако, не смотря на то, что компиляция происходит, отладка не получается - выводится месседж типа "неизвестно, что отлаживать" - и отладчик завершает работу.
Я делаю так:
Создаю два скриптика - один заливает прогу во флэш и проверяет как записалось + GDB стартует:
avarice -j /dev/ttyUSB0 -e -f ./hex/ig.elf.hex -P atmega16 -p -v :4242
второй просто проверяет что то что во флэше то что нужно и запускает GDB сервер (чтобы флэш не марать если программа не изменилась):
avarice -j /dev/ttyUSB0 -f ./hex/ig.elf.hex -P atmega16 -v :4242

Далее в среде CodeBlocks меню Project-Properties-Debugger-Remote debugging support (GDB only) пишу для каждой target
Connection type: TCP
IP address: 127.0.0.1 - так как на этом же компьютере и запускаю отладку
Port: 4242 - потому что в своих скриптиках я указал чтобы GDB сервер висел именно на этом порте (:4242)

Сначала запускаю один из скриптов и вижу что GDB ожидает соединение. Затем запускаю в CodeBlocks Debug-Start и понеслась smile.gif

В итоге получается удобная отладка прямо в тексте программы, происходящая непосредственно в среде CodeBlocks, которая мало чем отличается от отладки программы для windows/Linux. Всё что я описал я пробовал под Linux, как под маздай не знаю, но по идее должно работать и там...

Мой программатор USB-JTAG-ICE, поэтому я воспользовался программой avarice - она поддерживает много программаторов под разными ОС. Если программатор другой - достаточно запустить avarice --help и найти какие ключи подавать чтобы работать с конкретным программатором-отладчиком...

Если будут вопросы - пиши.
ARV
я так понимаю, речь идет о внутрисхемной отладке? меня же пока больше волнует симуляция, т.е. отладка без кристалла... это возможно?
AVR
Цитата(ARV @ Oct 12 2008, 18:02) *
я так понимаю, речь идет о внутрисхемной отладке? меня же пока больше волнует симуляция, т.е. отладка без кристалла... это возможно?
Да, вполне возможно, однако такая симуляция будет ещё более убогой чем даже в AVR Studio...
[оффтоп] Лично я уже давно пришел к выводу, что симуляция это прошлый век и никогда не заменит реальной системы... Сегодня даже самый микроскопический проц имеет поддержку внутрисхемной отладки (например 8-ми выводные ATtiny можно отлаживать через debug wire в том же самом CodeBlocks например. А для AVR отладочная плата изготавливается за час...[/оффтоп]

Но если всё же заинтересовало, то:
http://www.oshec.org/articles/otladka-avr-...-avr-pod-linuh/
В данном случае, вместо DDD (на мой взгляд неудобной красноглазой программы) можно использовать CodeBlocks... Там правда под Linux, но наверняка эта программа-симулятор есть и под windows - работает как GDB сервер тоже... Сам её не проверял, но предполагаю, что возможности у неё ограничены по сравнению с внутрисхемной отладкой smile.gif
ARV
установил WinAVR-20080610, в ней уже имеется simulavr.
как я понимаю, этот симулятор может работать с gdb. но у меня происходят ошибки: когда gdb подключается к simulavr, последний вылетает. при этом пишет, что STATUS_ACCESS_VIOLATION.

может ли кто-нибудь прояснить ситуацию?
AVR
Цитата(ARV @ Oct 12 2008, 23:39) *
может ли кто-нибудь прояснить ситуацию?
К сожалению, не обладаю телепатическими способностями, поэтому хотелось бы больше информации: какие команды набирались, что выводилось и т.д. ... smile.gif
ARV
запускаю simulavr:
Код
simulavr -d atmega8 -g

запускается, но в начале выводит подозрительную информацию:
Код
      4 [main] simulavr 3764 dll_crt0_1: internal error: couldn't determine location of thread function on stack.  Expect signal problems.

после этого ждет подключения GDB на порту по умолчанию (localhost:1212 - как в доке к simulavr)
когда из Code::Block запускаю отладку, то simulavr вылетает... напоследок пишет следующее:
Код
Connection opened by host 127.0.0.1, port 2357.
126486578 [main] simulavr 3764 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
126487228 [main] simulavr 3764 open_stackdumpfile: Dumping stack trace to simulavr.exe.stackdump
126499358 [main] simulavr 3764 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
126499877 [main] simulavr 3764 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)


после этого создается дамп-файл... в общем, нарушение прав доступа к памяти, как я понимаю...
AVR
Да, возможно что-то не так с simulavr... Попробуйте скачать отдельно от WinAVR самую распоследнюю версию...
ARV
сборку simulavr под винду я не нашел свежее, чем внутри WinAVR, все сплошь линух... мне посоветовали поискать дубли cygwin1.dll - и действительно, я нашел 2 в разных папках, прописанных в path: от WinAVR и от Lazarus... только никакие манипуляции с ними не помогли. а когда я скачал самую последню версию cygwin1.dll - вообще отказался запускаться из-за несоответствия версий dll... такие вот дела...
AVR
Цитата(ARV @ Oct 13 2008, 23:39) *
сборку simulavr под винду я не нашел свежее, чем внутри WinAVR, все сплошь линух... мне посоветовали поискать дубли cygwin1.dll - и действительно, я нашел 2 в разных папках, прописанных в path: от WinAVR и от Lazarus... только никакие манипуляции с ними не помогли. а когда я скачал самую последню версию cygwin1.dll - вообще отказался запускаться из-за несоответствия версий dll... такие вот дела...
Свежую версию можно самому скомпилировать из репозитория этого проекта ^_^ Как вариант, можно попробовать поменять себе операционную систему (а почему бы и нет, Linux можно с чистой совестью скачать и установить). Но одно остается непонятным: откуда стремление найти аналог AVR Studio? Тем, кто переходит на Linux это просто необходимо, так как использовать IAR или AVR Studio может быть проблематично.
ARV
Цитата(AVR @ Oct 14 2008, 14:11) *
Свежую версию можно самому скомпилировать из репозитория этого проекта ^_^ Как вариант, можно попробовать поменять себе операционную систему (а почему бы и нет, Linux можно с чистой совестью скачать и установить). Но одно остается непонятным: откуда стремление найти аналог AVR Studio? Тем, кто переходит на Linux это просто необходимо, так как использовать IAR или AVR Studio может быть проблематично.
собрать самому? это значит, скачать и установить GCC для Win32, потом только собрать... это лишняя морока.
Стремление (не сильное) уйти с AVR Studio обусловлено бедными возможностями ее редактора текстов. Хочется комфортма, как в Delphi или NetBeans... но, судя по всему из-за отсутствия симуляции (необходимой для поиска ошибок в программе) придется с этой идеей распрощаться... ну, а пользоваться крякнутыми IAR-ами и т.п. как-то уже не модно smile.gif хочется постепенно стать честным smile.gif

перейти на линух? это вообще равносильно смене пола... почему-то хочется покоя smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.