WINAVR вопрос отладки по COFF

Oct 21, 2003 10 Replies

Hello! Требуется помощь клуба. Есть тестовый проект. Исходники : два *.С файла, два *.S файла с ассемблером. в одном asm исходнике - i2c, в другом - работа с клавиатурой. Компилится нормально, работает. Пытаюсь сделать отладку в COFF или EXTCOFF.


------------------------------------------------ avr-objcopy --debugging --change-section-address .data-0x800000



--change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000



-O coff-ext-avr main.elf main.cof



Warning: file D:\Temp/ccmKaaaa.s not found in symbol table, ignoring Warning: ignoring function i2c_init() outside any compilation unit Warning: file D:\Temp/cc2Haaaa.s not found in symbol table, ignoring Warning: ignoring function query_keyboard() outside any compilation unit



------------------------------------------------



Вскрытие показало, что эти файлы представляют из себя сгенеренный исходник ассемблеровских модулей, генерятся в процессе компиляции в указанной папке, но стираются, соответственно, в COFF нет ссылки на них, ну и отладка по asm исходникам в Avrstudio невозможна, виден только голый код.



Это действительно так, или только у меня ?



With best regards, Alexander


Привет Alexander!

21 Oct 03 09:08, Alexander Rozhkov писал All:

AR> Warning: file D:\Temp/ccmKaaaa.s not found in symbol table, ignoring AR> Warning: ignoring function i2c_init() outside any compilation unit AR> Warning: file D:\Temp/cc2Haaaa.s not found in symbol table, ignoring AR> Warning: ignoring function query_keyboard() outside any compilation AR> unit

А ты просил компилятор генерить отладочную информацию?

AR> Это действительно так, или только у меня ?

Я пытался когда-то сделать coff-объектники, но ничего не вышло с несколько иными симптомами: файл успешно генерился, по при загрузке его в avr-студию в ней отображались не все модули. По какому принципу, понять не удалось (при смене порядка линковки одни модули появлялись, другие - наоборот, пропадали). Тогда я бросил эту затею и продолжил отлаживаться в avrobj. Собственно, единственный минус - что нельзя переменные смотреть через watch.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Западно-уpальское pегиональное общество добpовольных учpедителей.

Tue, 21 Oct 2003 22:28:46 +0400 Alex Mogilnikov wrote to Alexander Rozhkov:

[...]

AM> Я пытался когда-то сделать coff-объектники, но ничего не вышло с AM> несколько иными симптомами: файл успешно генерился, по при загрузке его в AM> avr-студию в ней отображались не все модули. По какому принципу, понять не AM> удалось (при смене порядка линковки одни модули появлялись, другие - AM> наоборот, пропадали). Тогда я бросил эту затею и продолжил отлаживаться в AM> avrobj. Собственно, единственный минус - что нельзя переменные смотреть AM> через watch.

Ага, если еще вспомнить, что окошко locals там отсутствует как класс, то как вообще мониторить переменные?

А родимый gdb (insight) не пробовал?

...so long!

### Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.

Hello, Alex!

AM> Я пытался когда-то сделать coff-объектники, но ничего не вышло с AM> несколько иными симптомами: файл успешно генерился, по при загрузке AM> его в avr-студию в ней отображались не все модули. По какому AM> принципу, понять не удалось (при смене порядка линковки одни модули AM> появлялись, другие - наоборот, пропадали). Тогда я бросил эту затею AM> и продолжил отлаживаться в avrobj. Собственно, единственный минус - AM> что нельзя переменные смотреть через watch.

Сечас в Winavr 3.2 это пофиксено. Причем отладку можно вести в COFF для avrstudio 3.XX либо в EXTCOFF, для аврстудио 4.XX. Отладка по С исходникам бродит отлично, переменные показывает. По ASM - не хочет. Проблему я описал выше.

With best regards. Alexander

Thu, 23 Oct 2003 08:04:11 +0400 Alexander Rozhkov wrote to Alex Mogilnikov:

AM>> Я пытался когда-то сделать coff-объектники, но ничего не вышло с AM>> несколько иными симптомами: файл успешно генерился, по при загрузке AM>> его в avr-студию в ней отображались не все модули. По какому AM>> принципу, понять не удалось (при смене порядка линковки одни модули AM>> появлялись, другие - наоборот, пропадали). Тогда я бросил эту затею AM>> и продолжил отлаживаться в avrobj. Собственно, единственный минус - AM>> что нельзя переменные смотреть через watch.

AR> Сечас в Winavr 3.2 это пофиксено. Причем отладку можно вести в COFF AR> для avrstudio 3.XX либо в EXTCOFF, для аврстудио 4.XX.

Только ++ они не поддерживает. Ни тот, ни другой.

...so long!

### Детей интересует вопрос: откуда все берется, взрослых - куда все девается.

Привет Harry!

22 Oct 03 22:17, Harry Zhurov писал Alex Mogilnikov:

HZ> Ага, если еще вспомнить, что окошко locals там отсутствует как HZ> класс, то как вообще мониторить переменные?

:) Смотрю в map ее адрес, затем лезу в память по этому адресу. :)

HZ> А родимый gdb (insight) не пробовал?

Я тогда отлаживался эмулятором ICE-200, и альтернативы Астудии не было. Потом низкоуровневые дела более-менее отладил, и отладчиком почти не пользовался. А последнее время вообще для avr ничего не делаю.

Вот сейчас собрал avr-gdb ради интереса, и не обнаружил у него target sim. А, извиняюсь, как же им отлаживаются?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Если ты коп, почему я весь взмок?

Привет Alexander!

23 Oct 03 09:04, Alexander Rozhkov писал Alex Mogilnikov:

AM>> Я пытался когда-то сделать coff-объектники, но ничего не AM>> вышло с несколько иными симптомами: файл успешно генерился, по AM>> при загрузке его в avr-студию в ней отображались не все модули.

AR> Сечас в Winavr 3.2 это пофиксено.

Winavr тут ни при чем, я испльзовал gcc и их же binutils. Собственно, невозможность глядеть переменные была не такой уж большой проблемой на фоне общего "качества" и "надежности" avr-студии. Как я позже понял по примерам программ для at91 с атмеловского фирменного диска, в Атмел вообще не умеют писать программы. :(

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Северо-Кавказская межрегиональная ассоциация анонимных соискателей.

Thu, 23 Oct 2003 23:34:15 +0400 Alex Mogilnikov wrote to Harry Zhurov:

AM> 22 Oct 03 22:17, Harry Zhurov писал Alex Mogilnikov:

HZ>> Ага, если еще вспомнить, что окошко locals там отсутствует как HZ>> класс, то как вообще мониторить переменные?

AM> :) Смотрю в map ее адрес, затем лезу в память по этому адресу. :)

Мда.., круто! ;-))

HZ>> А родимый gdb (insight) не пробовал?

AM> Я тогда отлаживался эмулятором ICE-200, и альтернативы Астудии не было. AM> Потом низкоуровневые дела более-менее отладил, и отладчиком почти не AM> пользовался. А последнее время вообще для avr ничего не делаю.

AM> Вот сейчас собрал avr-gdb ради интереса, и не обнаружил у него target AM> sim. А, извиняюсь, как же им отлаживаются?

Не знаю, как по-правильному, но я делал так: запускаешь simulavr.exe (это, как я понял, драйвер симулятора), он сообщает номер некоего порта (у меня это

1212). Потом запускаешь insight, где выбираешь GDB Server TCP/IP и указываешь то самое значение порта. Это такая процедура запуска - сам GDB/insight симулировать ничего не умеет. Как всегда документировано все это - в лучших традициях GCC (да простят меня апологеты оного) - хуже некуда - цепочку эту восстановил путем анализа разрозненной документации.

После этого оно, вроде, как-то работает, но криво: регистры и память (а также local и watch) не отображают значений, программа идет как-то странно... В общем, плюнул я на это дело, пришлось в студию бинарник загружать и там смотреть, благо вещь была разовая и смотреть много не пришлось. А coff там не проканал, т.к. прога была плюсовая (coff-avr с ++ не дружит :( )

...so long!

### Есть два способа командовать женщинами. Hо их никто не знает.

Привет Harry!

24 Oct 03 22:55, Harry Zhurov писал Alex Mogilnikov:

AM>> Вот сейчас собрал avr-gdb ради интереса, и не обнаружил у него AM>> target sim. А, извиняюсь, как же им отлаживаются?

HZ> Hе знаю, как по-правильному, но я делал так: запускаешь HZ> simulavr.exe (это, как я понял, драйвер симулятора), он сообщает номер HZ> некоего порта (у меня это 1212).

А, действительно, есть внешние симуляторы. Сейчас соберу avarice и посмотрю...

HZ> Как всегда документировано все это - в лучших традициях GCC (да HZ> простят меня апологеты оного) - хуже некуда - цепочку эту восстановил HZ> путем анализа разрозненной документации.

Как обычно, :) приведу цитату из документации:

Remote debugging ================

If you are trying to debug a program running on a machine that cannot run GDB in the usual way, it is often useful to use remote debugging.

[....]

Some configurations of GDB have special serial or TCP/IP interfaces to make this work with particular debugging targets. In addition, GDB comes with a generic serial protocol (specific to GDB, but not specific to any particular target system) which you can use if you write the remote stubs--the code that runs on the remote system to communicate with GDB. Other remote targets may be available in your configuration of GDB; use `help target' to list them.

HZ> После этого оно, вроде, как-то работает, но криво: регистры и HZ> память (а также local и watch) не отображают значений, программа идет HZ> как-то странно... В общем, плюнул я на это дело, пришлось в студию HZ> бинарник загружать и там смотреть, благо вещь была разовая и смотреть HZ> много не пришлось.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Западно-уpальское pегиональное общество добpовольных учpедителей.

Привет Harry!

25 Oct 03 22:15, Alex Mogilnikov писал Harry Zhurov:

Собрал я и simulavr.

HZ>> После этого оно, вроде, как-то работает, но криво: регистры и HZ>> память (а также local и watch) не отображают значений,

? Hабросал тестовую программку, запустил симулятор, запустил отладчик.

- значения глобальных переменных показывает; - значения автоматических переменных показывает; - значения регистров показывает; - содержимое памяти программы показывает; - содержимое памяти данных показывает; - содержимое eeprom показывает; - breakpoints работают; - watchpoints работают; - машинный код (дизассемблированный) показывается; - run/cont/next/step/nexti работают.

Подозреваю, что периферия симулируется не очень здорово, я это не проверял, ну так про этот симулятор так и говорится: "This program is still under development and is not ready for production use."

HZ>> программа идет как-то странно...

У меня программа очень простая, но идет как полжено (может ты компилировал с включенной оптимизацией? Тогда это нормально. Для отладки рекомендуется -O0).

Похоже, или у тебя что-то криво собрано, или ты просто не умеешь это готовить (не прочитал доки)...

Как обычно, версии того что я тестировал:

alx2% simulavr -v

simulavr version 0.1.1 Copyright 2001, 2002 Theodore A. Roth.

alx2% avr-gdb --version GNU gdb 5.3 Copyright 2002 Free Software Foundation, Inc.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... О сколько нам откpытий чудных готовит откpывашки кpюк!

Mon, 27 Oct 2003 01:53:59 +0300 Alex Mogilnikov wrote to Harry Zhurov:

AM> Собрал я и simulavr.

HZ>>> После этого оно, вроде, как-то работает, но криво: регистры и HZ>>> память (а также local и watch) не отображают значений,

AM> ? Hабросал тестовую программку, запустил симулятор, запустил отладчик.

AM> - значения глобальных переменных показывает; AM> - значения автоматических переменных показывает; AM> - значения регистров показывает; AM> - содержимое памяти программы показывает; AM> - содержимое памяти данных показывает; AM> - содержимое eeprom показывает; AM> - breakpoints работают; AM> - watchpoints работают; AM> - машинный код (дизассемблированный) показывается; AM> - run/cont/next/step/nexti работают.

AM> Подозреваю, что периферия симулируется не очень здорово, я это не AM> проверял, ну так про этот симулятор так и говорится: "This program is still AM> under development and is not ready for production use."

HZ>>> программа идет как-то странно...

AM> У меня программа очень простая, но идет как полжено (может ты AM> компилировал с включенной оптимизацией? Тогда это нормально. Для отладки AM> рекомендуется -O0).

Попробовал и так - без разницы.

AM> Похоже, или у тебя что-то криво собрано,

Это я не сам собирал (не занимаюсь я такими делами, да и нет у меня окружения соответствующего для этого), ибо не работаю с GCC.

AM> или ты просто не умеешь это готовить (не прочитал доки)...

А... Интересно, как это можно запустить, чтобы работало криво? Понимаю, либо смог запустить (и работает), либо не смог. А так, чтоб запустилось, но криво... :-\

Ну, научи убогого, что не так делаю. А делаю так:

simulavr -d atmega16 -g

На это оно выдает:

Simulating a atmega16 device.

MESSAGE: file ../../src/decoder.c: line 3517: generating opcode lookup_table Waiting on port 1212 for gdb client to connect...

Дальше запускаю

avr-insight.exe Exe\target.elf

(да, я не gdb использую, а insight, бо не понимаю толка в тонких извращениях; но должно быть монохренственно - это ведь, afaik, одно и то же, только UI разный).

Там указываю GDB Server TCP/IP, порт 1212, и оно, вроде пошло. Шаги выполняются, но функции не вызываются (команда call проходится, как будто это 'nop'), окошки с регистрами, памятью и прочим не обновляются (нули там), только PC изменяется. И почти на каждую команду в окне драйвера выдается такое:

WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff WARNING: file ../../src/decoder.c: line 3541: Unknown opcode: 0xffff

AM> Как обычно, версии того что я тестировал:

AM> alx2% simulavr -v

AM> simulavr version 0.1.1 AM> Copyright 2001, 2002 Theodore A. Roth.

I:\CAD\GCC\AVR\bin>simulavr.exe -v

simulavr version 0.1.1.20030912 Copyright 2001, 2002, 2003 Theodore A. Roth.

AM> alx2% avr-gdb --version AM> GNU gdb 5.3 AM> Copyright 2002 Free Software Foundation, Inc.

I:\CAD\GCC\AVR\bin>avr-insight.exe -v GNU gdb 5.3.91

...so long!

### "Hello World!" 17 errors, 31 warnings.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required