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

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

Reply to
Alexander Rozhkov
Loading thread data ...

Привет 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едителей.

Reply to
Alex Mogilnikov

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!

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

Reply to
Harry Zhurov

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

Reply to
Alexander Rozhkov

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!

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

Reply to
Harry Zhurov

Привет 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] Алексей М. ... Если ты коп, почему я весь взмок?

Reply to
Alex Mogilnikov

Привет 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] Алексей М. ... Северо-Кавказская межрегиональная ассоциация анонимных соискателей.

Reply to
Alex Mogilnikov

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о их никто не знает.

Reply to
Harry Zhurov

Привет 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едителей.

Reply to
Alex Mogilnikov

Привет 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юк!

Reply to
Alex Mogilnikov

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.

Reply to
Harry Zhurov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.