Уважаемые форумчани! Помогите пожалуйста настроить отладку для AVR с использованием программного симулятора SimulAVR в eclipse.
Скачал последнюю версию simulavr v1.0.0 с официального сайта. Пользовался данной инструкцией:
Настраивал Starting the gdbserver следующим образом:
Спойлер
1)Скопировал скаченые файлы simulavr v1.0.0 в отдельную папку, в Starting the gdbserver в строке Location: указал новый путь к этой папке.
2)В отличие от основной инструкции, в поле Arguments ввёл следующие: -g -p 4242 -d atmega128 -F 11059200—cpufrequency т.к. синтаксис команды поменялся в новой версии simulavr v1.0.0
СпойлерC:\simulavr>simulavr -h
AVR-Simulator Version 1.0.0
-u run with user interface for external pin
handling at port 7777
-f --file <name> load elf-file <name> for simulation in simulated target
-d --device <name> simulate device <name>
-g --gdbserver listen for GDB connection on TCP port defined by -p
-G --gdb-debug listen for GDB connection and write debug info
--gdb-stdin for use with GDB as 'target remote | ./simulavr'
-m <nanoseconds> maximum run time of <nanoseconds>
-M disable messages for bad I/O and memory references
-p <port> use <port> for gdb server
-t --trace <file> enable trace outputs to <file>
-n --nogdbwait do not wait for gdb connection
-F --cpufrequency set the cpu frequency to <Hz>
-s --irqstatistic prints statistic informations about irq usage after simula
tion
is stopped
-W --writetopipe <offset>,<file>
add a special pipe register to device at
IO-Offset and opens <file> for writing
-R --readfrompipe <offset>,<file>
add a special pipe register to device at IO-offset
and opens <file> for reading
-a --writetoabort <offset>
add a special register at IO-offset
which aborts simulator run
-e --writetoexit <offset>
add a special register at IO-offset
which exits simulator run
-V --verbose output some hints to console
-T --terminate <label> or <address>
stops simulation if PC runs on <label> or <address>
-B --breakpoint <label> or <address>
same as -T for backward compatibility
-c <tracing-option> Enables a tracer with a set of options. The format for
<tracing-option> is:
<tracer>[:further-options ...]
-o <trace-value-file> Specifies a file into which all available trace value name
s
will be written.
-v --version print out version and exit immediately
-h --help print this help
В Debug Configurations нет строчки меню C/C++ Local Application
Спойлер
Поэтому решил настроить отладчик через GDB Hardware Debugging следующим образом:
Спойлер
Запускаю отладку следующим образом: сначала simulavr а потом debuger – режим отладки запущен.
Появляется интерфейс отладки но не чего не работает Спойлер
Консоль:
СпойлерСообщение в консоли (avr-gdb): No symbol "new" in current context.
target remote localhost:4242
warning: Can not parse XML target description; XML support was disabled at compile time
0x00000000 in __vectors ()
tbreak main
Breakpoint 1 at 0xbe: file ../main.c, line 11. continue
Program received signal SIGHUP, Hangup.
0x00000000 in __vectors ()
Сообщение в консоли №2 (*.elf):
No program to simulate. Use 'load' to upload it.
Что я делаю не так?
Использую следующий софт:
1) Eclipse IDE for C/C++ Developers
Version: Indigo Service Release 2
Build id: 20120216-1857
Спойлер2) WinAVR-20100110
3) simulavr v1.0.0
Кто-нибудь подключал к Eclipse плагины для работы с UML? Если есть таковые, ответьте, пожалуйста, на пару вопросов.
Насколько полно плагины соответствуют спецификации UML 2.x? Насколько корректно реализованы диаграммы состояний (особенно в части внутренних переходов и иерархии состояний)?
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Помогите пожалуйста настроить отладку для AVR с использованием программного симулятора SimulAVR в eclipse.
Скачал последнюю версию simulavr v1.0.0 с официального сайта. Пользовался данной инструкцией:
Всё разобрался! Надо было настроить отладчик GDB Hardware Debugging следующем образом Спойлер
Все здраствуйте.
Возникла парочку проблем при работе с eclipse + mac os + ATmega8 + stk500.
И так задача самая простая: скомпилировать и залить проект на контроллер.
Выглядит это чудо вот так:
питание от usb идет 5v.
Код выглядит так:
Спойлер#include <avr/io.h>
int main(void){
while(1);
return 0;
}
Все плагины на eclipse установленны, компиляторы то же.
А теперь проблемы:
1) При создании проекта нет возможности настроить MCU type
Что приводит к созданию проекта на ATmega16
Спойлерmake all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
Finished building: ../main.c
Building target: ATmega8_test.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,ATmega8_test.map -mmcu=atmega16 -o "ATmega8_test.elf" ./main.o
Finished building target: ATmega8_test.elf
Точнее не gdb-сервер, а сервер для gdb.
Чем прошиваете? st-link'ом? Тогда должна быть запущена утилита st-util, которая и создаёт сервер.
Потом запускаем arm-none-eabi-gdb
В командном интерфейсе пробуем подключиться к серверу: target extended-remote localhost:4242
Если всё нормально, в консоли st-util увидите что-то наподобие:
GDB connected.
recv: qSupported:multiprocess+;qRelocInsn+
query: Supported;multiprocess+;qRelocInsn+
send: PacketSize=3fff;qXfer:memory-map:read+
recv: !
send: OK
recv: Hg0
и т.д.
Если связка работает, проверяйте, как это запускается из eclipse.
Вообще хрен знает, как это под виндой работает. Но должно быть так же. Под линуксом проблем нет.
Android4300 писал(а):Не нашёл не одной рабочий инструкции как настроить отладку в Eclipse. Решил составить свою.
Спасибо большое за инструкцию Android4300.
У ARV есть хорошая инструкция по настройке Eclipse и simulavr. Но если честно я от simulavr ждал большего. А точнее, я понятия не имею, как в нем настраивать события по входам, ЖКИ и т.д. Очень мало информации, а русскоязычной почти нет. Да и тямы мне не хватает в этом вопросе.
PS: лично моё мнение, что данную тему давно пора объединить с темой по WinAVR касательно AVR, так как Programmers Notepad и Eclipse используют общие toolchains от WinAVR. И исходный код будет одинаково компилироваться в обоих IDE. Лично я давно перешел на Eclipse, так как данная IDE намного удобней и функционал шире, чем у Programmers Notepad.
А точнее, я понятия не имею, как в нем настраивать события по входам, ЖКИ
Подозреваю, что вообще никак. Смысл отлаживать программу в eclipse есть только в том случае, если код, который вы пишете – имеет сложную логику. Для другого лучше использовать proteus.