simulavr (было WINAVR вопрос отладки по COFF)

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Привет Harry!

28 Oct 03 06:25, Harry Zhurov писал Alex Mogilnikov:

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

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

    Hу тогда не знаю...

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

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

    Я и не говорил что ты. Hо ведь кто-то же его собрал...

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

 HZ>     А... Интересно, как это можно запустить, чтобы работало криво?

    Hе знаю. Если есть желание, пришли мне мылом на
alx(собачечка)intellectronika.ru то что у тебя неправильно отлаживается,
попробуем совместно разобраться...

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

    Hу, самый очевидный пример: если собрать объектный файл без отладочной
информации, то отладчик не будет показывать ни исходники, ни переменные, хотя
будет работать дизассемблер и можно шагать по инструкциям. Я понимаю, ты не мог
забыть ее включить, :)  это просто пример.
    Или, скажем, несоответствие версий каких-нибудь библиотек, с которыми софт
собирался, и которые у тебя в системе (ведь ты используешь собранное кем-то
другим)...

 HZ>     Hу, научи убогого, что не так делаю. А делаю так:
 HZ>         simulavr -d atmega16 -g
 HZ>     Дальше запускаю
 HZ>         avr-insight.exe Exe\target.elf
 HZ>     (да, я не gdb использую, а insight, бо не понимаю толка в тонких
 HZ> извращениях; но должно быть монохренственно - это ведь, afaik, одно и
 HZ> то же, только UI разный).

    :) Я всегда считал, что Insight - это просто front-end для gdb...

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

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

    У-у-у, как все запущено... Ладно, начну гадать. Вариант номер раз: ты забыл
сделать load, в результате симулятор при попытке читать инструкции из
незагруженной flash вместо твоего кода видит 0xffff. Дизассемблер показывает
твой код?
    Проверил - у меня rcall добросовестно передает управление вызываемой
функции. Только что прошагал функцию по инструкциям от вызова до возврата.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Завтpак съешь сам, обед оставь себе, а ужин - никому не отдавай!

simulavr (было WINAVR вопрос отладки по COFF)
Tue, 28 Oct 2003 23:59:33 +0300 Alex Mogilnikov wrote to Harry Zhurov:

[...]

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

AM>     Я и не говорил что ты. Hо ведь кто-то же его собрал...

    Я это сдоил откуда-то отсюда:

http://sourceforge.net/projects/winavr
http://winavr.sourceforge.net/


[...]

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

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

AM>     У-у-у, как все запущено... Ладно, начну гадать. Вариант номер раз: ты
AM> забыл сделать load, в результате симулятор при попытке читать инструкции из
AM> незагруженной flash вместо твоего кода видит 0xffff. Дизассемблер
AM> показывает твой код?

    Дизассемблер показывает вот что:

  0xac <main+4>:   out 0x3e, r29 ; 62
- 0xae <main+6>:   out 0x3d, r28 ; 61
- 0xb0 <main+8>:   in r24, 0x17 ; 23
- 0xb2 <main+10>:  ori r24, 0x0F ; 15
- 0xb4 <main+12>:  out 0x17, r24 ; 23
- 0xb6 <main+14>:  in r24, 0x14 ; 20
- 0xb8 <main+16>:  ori r24, 0x03 ; 3
- 0xba <main+18>:  out 0x14, r24 ; 20
- 0xbc <main+20>:  ldi r24, 0x64 ; 100
- 0xbe <main+22>:  ldi r25, 0x00 ; 0
- 0xc0 <main+24>:  out 0x2b, r25 ; 43
- 0xc2 <main+26>:  out 0x2a, r24 ; 42
- 0xc4 <main+28>:  in r24, 0x39 ; 57
- 0xc6 <main+30>:  ori r24, 0x10 ; 16
- 0xc8 <main+32>:  out 0x39, r24 ; 57
- 0xca <main+34>:  in r24, 0x2e ; 46
- 0xcc <main+36>:  ori r24, 0x03 ; 3
- 0xce <main+38>:  out 0x2e, r24 ; 46
- 0xd0 <main+40>:  in r24, 0x35 ; 53

    Это оно?

    Насчет load... А это что? Загрузки .elf файла недостаточно? Посмотрел, там
есть опция Download. Установил ее и, вроде, заработало, по крайней мере, по
функциям ходит, регистры обновляются, остальное не проверял... Ну, и в чем
смысл такого? Зачем такие грабли разложили? Что, нельзя было хотя бы
предупреждение выдавать, что режим отладки нерабочий? А то ведь код в окне
есть, по инструкциям ходит, а код не выполняется? Что за чудаки такие?
Серьезные программы пишут, а подход детсадовский.



...so long!

### В мире нет вечных двигателей, зато полно вечных тормозов.




Re: simulavr (было WINAVR вопрос отладки по COFF)
Привет Harry!

30 Oct 03 21:12, Harry Zhurov писал Alex Mogilnikov:

 HZ>     Дизассемблер показывает вот что:

 HZ>   0xac <main+4>:   out 0x3e, r29 ; 62
 HZ> - 0xae <main+6>:   out 0x3d, r28 ; 61
 HZ> - 0xb0 <main+8>:   in r24, 0x17 ; 23
 HZ> - 0xb2 <main+10>:  ori r24, 0x0F ; 15
 HZ> - 0xb4 <main+12>:  out 0x17, r24 ; 23
 HZ> - 0xb6 <main+14>:  in r24, 0x14 ; 20
 HZ> - 0xb8 <main+16>:  ori r24, 0x03 ; 3
 HZ> - 0xba <main+18>:  out 0x14, r24 ; 20

    Похоже на осмысленный код.

 HZ>     Hасчет load... А это что? Загрузки .elf файла недостаточно?

    Поскольку это удаленная отладка, загрузить объектный файл в отладчик на
хосте недостаточно. Hадо еще и загрузить данные из его секций в таргет
(симулятор). gdb делает это командой load.

 HZ>  Hу, и в чем смысл такого? Зачем такие грабли разложили?

    Если грабли в том, что ты не загрузил код в симулятор, то сам виноват - в
документации об этом даже в двух местах написано.

 HZ> Что, нельзя было хотя бы предупреждение выдавать, что режим отладки
 HZ> нерабочий?

    "У меня все работает" (с) (не знаю чей).

 HZ>  А то ведь код в окне есть, по инструкциям ходит, а код не
 HZ> выполняется? Что за чудаки такие? Серьезные программы пишут, а подход
 HZ> детсадовский.

    Так заработало у тебя или нет? Еще раз повторю, у меня все работает. И
заработало сразу. Естественно, перед тем как пробовать я прочитал документацию
и все сделал как там написано...

    Меня вот больше интересует другой вопрос: есть такая штука, avarice. Она
вроде бы занимается внутрисхемной отладкой через JTAG. Hо я что-то не понял,
какой адаптер нужен для ее использования?

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

simulavr (было WINAVR вопрос отладки по COFF)
Fri, 31 Oct 2003 22:45:15 +0300 Alex Mogilnikov wrote to Harry Zhurov:

HZ>>     Дизассемблер показывает вот что:

HZ>>   0xac <main+4>:   out 0x3e, r29 ; 62
HZ>> - 0xae <main+6>:   out 0x3d, r28 ; 61
HZ>> - 0xb0 <main+8>:   in r24, 0x17 ; 23
HZ>> - 0xb2 <main+10>:  ori r24, 0x0F ; 15
HZ>> - 0xb4 <main+12>:  out 0x17, r24 ; 23
HZ>> - 0xb6 <main+14>:  in r24, 0x14 ; 20
HZ>> - 0xb8 <main+16>:  ori r24, 0x03 ; 3
HZ>> - 0xba <main+18>:  out 0x14, r24 ; 20

AM>     Похоже на осмысленный код.

    Вот-вот. Но при этом не работает.

HZ>>     Hасчет load... А это что? Загрузки .elf файла недостаточно?

AM>     Поскольку это удаленная отладка, загрузить объектный файл в отладчик на
AM> хосте недостаточно. Hадо еще и загрузить данные из его секций в таргет
AM> (симулятор). gdb делает это командой load.

    Хорошо, пусть так. Но при этом оно не должно работать - пусть скажет, что,
дескать, таргет не загружен, отладка невозможна! А то ведь ничего не говорит,
изображает работоспособность (программа в сорцовом окне загружена, курсор по
выражениям/инструкциям ходит), но не работает. :(

HZ>>  Hу, и в чем смысл такого? Зачем такие грабли разложили?

AM>     Если грабли в том, что ты не загрузил код в симулятор, то сам виноват -
AM> в документации об этом даже в двух местах написано.

    Знаешь, это не первая подобная программа, с которой мне пришлось работать,
но никогда ранее (еще когда и опыта у меня было несоизмеримо меньше) никаких
подобных проблем не было - если что-то не так, программа сообщает об этом (на
худой конец, просто не работает (не загружается) - тут, по крайней мере, все
ясно, нет иллюзий, что оно работает - начинаешь искать). А тут - конкретные
грабли: программа не должна позволять подобные вещи, должна контролировать
действия пользователя. Если она сама не может загрузить код в симулятор (очень
странно, почему?! Разве без этого отладка возможна?), то пусть хотя бы скажет,
что, мол, еще вон там надо крыжик поставить. Но ведь не говорит - и
кувыркайся... Через заднее место она сделана, вот и все - проблема на пустом
месте возникает.

    Что касается документации, то на insight (а gdb я не пользовался и не
собираюсь в том виде, как он есть) там вообще ничего нет. Даже не описано, что
это такое. Вот и догадайся где там что нужно включить. Все методом тыка.

    И потом, очевидные вещи и так интуитивно понятны (с тем же insight'ом
разобраться было несложно и при отсутствии документации). А перелопачивать
мегатонны разношерстной документации, не зная, есть ли там вообще ответ на
конкретный интересующий вопросик, не есть хороший способ освоения.

HZ>> Что, нельзя было хотя бы предупреждение выдавать, что режим отладки
HZ>> нерабочий?

AM>     "У меня все работает" (с) (не знаю чей).

    Ну, вот загрузи в insight .elf файл, но на загружай таргет. И попробуй. А с
виду все пристойно... Грабли это, и не спорь.

HZ>>  А то ведь код в окне есть, по инструкциям ходит, а код не
HZ>> выполняется? Что за чудаки такие? Серьезные программы пишут, а подход
HZ>> детсадовский.

AM>     Так заработало у тебя или нет?

    Я ж сказал, вроде да. Кстати, еще одна фигня: там любое окошко не к
"родительскому" относится, а само по себе виндовое окно. Из-за этого страшно
неудобно переключаться между окнами - например, отладка идет, и раз - в ФАР
переключился, а потом обратно - и привет: из всех окон только текущее поверх
ФАРа видно, остальные нужно все руками на передний план переключать - геморрой.
А когда их (окон) открыто штук пяток или больше (locals, watch, registers,
memory, etc), то вся панель задач загажена ими. Маргинальный подход. Чудаки
прогу писали, не иначе.

AM> Еще раз повторю, у меня все работает. И заработало сразу. Естественно,
AM> перед тем как пробовать я прочитал документацию и все сделал как там
AM> написано...

    Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний GCC'ник.
:) А вот новичок тут, как всегда, по граблям ходит. И не надо все сваливать на
документацию - по большей части организована она по-дурацки - объемы офигенные,
что-то конкретное найти - застрелиться. По крайней мере под виндой с ней
работать нормально невозможно.

AM>     Меня вот больше интересует другой вопрос: есть такая штука, avarice.
AM> Она вроде бы занимается внутрисхемной отладкой через JTAG. Hо я что-то не
AM> понял, какой адаптер нужен для ее использования?

    Через атмеловский адаптер, вестимо. Его либо купить ($300), либо самому
изготовить (схема/плата/прошивка, вроде, имеются).

    Кстати, слышал, что можно gdb каким-то образом к редактору прикрутить,
чтобы отлаживать прямо в своем редакторе. Что там за технология?

--
H.Z.

### Надо набить руку, пока не набили морду.



Re: simulavr (было WINAVR вопрос отладки по COFF)
Привет Harry!

02 Nov 03 09:10, Harry Zhurov писал Alex Mogilnikov:

 AM>>     Поскольку это удаленная отладка, загрузить объектный файл в
 AM>> отладчик на хосте недостаточно. Hадо еще и загрузить данные из его
 AM>> секций в таргет (симулятор). gdb делает это командой load.

 HZ>     Хорошо, пусть так. Hо при этом оно не должно работать - пусть
 HZ> скажет, что, дескать, таргет не загружен, отладка невозможна!

    Все-таки, похоже, ты плохо понял что есть удаленная отладка. Hу откуда
отладчику знать, загружено что-то в таргет или нет? Ведь таргетом может быть
готовое устройство с кодом в ПЗУ, которое работает уже неделю, а сегодня мы
вдруг его решили поотлаживать, для чего и запустили отладчик...

 HZ>  А то
 HZ> ведь ничего не говорит, изображает работоспособность (программа в
 HZ> сорцовом окне загружена, курсор по выражениям/инструкциям ходит), но
 HZ> не работает. :(

    Так вот собственно таргет-устройство (симулятор) тебе и говорило -
неизвестная инструкция. Хотя, по идее, действительно, могло бы отслеживать факт
загрузки кода.

 AM>>     Если грабли в том, что ты не загрузил код в симулятор, то сам
 AM>> виноват - в документации об этом даже в двух местах написано.

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

    С этим я уже согласился. Если не лень, напиши авторам симулавра, ИМХО
отследить факт выполнения незагруженного кода не сильно сложно.

 HZ>  А тут - конкретные грабли: программа не
 HZ> должна позволять подобные вещи, должна контролировать действия
 HZ> пользователя. Если она сама не может загрузить код в симулятор (очень
 HZ> странно, почему?!

    Может. Даю команду load - и все загружается. Hе знаю, как там работает
insight, не видел ни разу, а ddd (тоже фронт-энд для gdb) имеет специальное
окно для прямого общения с отладчиком.

 HZ>  Разве без этого отладка возможна?),

    Я уже выше написал - возможна. Отладчик не может знать, симулятор у тебя
там, отдельный процесс операционной системы, реальное устройство или что-то
еще. Об этом знает только сам пользователь.
    Возможен даже еще более кошмарный случай - в таргет-устройстве прошита одна
версия программы, а в отладчик (по ошибке) загрузили другую (например более
свежую). Так тут, с точки зрения пользователя, вообще отладка пойдет совершенно
непредсказуемым образом. И отследить это никто кроме самого пользователя не
сможет.

 HZ>     Что касается документации, то на insight (а gdb я не пользовался и
 HZ> не собираюсь в том виде, как он есть)

    Ты очень сильно неправ. Что же тогда вот это в одном из твоих прошлых
писем?

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

    А вот цитата с домашнего сайта insight:

 Insight is a graphical user interface to GDB, the GNU Debugger written in
Tcl/Tk by people working at Red Hat, Inc. and Cygnus Solutions.

    Так вот, ты этот GNU gdb еще как используешь! Именно gdb - это и есть
отладчик. И никто другой. insight - это только front-end, морда такая (одна из
многих, смотри страничку links на сайте insight), которая просто в удобном для
пользователя виде представляет результаты отладки. И наоборот, манипуляции
пользователя превращает в команды gdb.
    Поэтому прежде всего надо было изучать документацию именно на gdb, чтобы
понять, как вообще с его помощью происходит отладка, пусть без запоминания
конкретных команд (их всегда можно посмотреть в help), но чтобы уяснить
концепцию. А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

 HZ>  там вообще ничего нет. Даже не
 HZ> описано, что это такое. Вот и догадайся где там что нужно включить.
 HZ> Все методом тыка.

    Совсем нет документации? Плохо.

    Гы. Hа страничке FAQ висит фраза типа "У вас есть какие-то вопросы? Hу
задайте их по e-mail". Редиски. :)

 AM>>     "У меня все работает" (с) (не знаю чей).

 HZ>     Hу, вот загрузи в insight .elf файл, но на загружай таргет. И
 HZ> попробуй. А с виду все пристойно... Грабли это, и не спорь.

    Hе использую я insight, меня ddd вполне устраивает. Тянуть 17 Мбайт только
ради эксперимента не буду. Спорить тоже не буду. Я согласен, что когда не
поймешь, что где надо сделать для загрузки кода, это не дело.

 AM>>     Так заработало у тебя или нет?

 HZ>     Я ж сказал, вроде да. Кстати, еще одна фигня: там любое окошко не
 HZ> к "родительскому" относится, а само по себе виндовое окно. Из-за этого
 HZ> страшно неудобно переключаться между окнами - например, отладка идет,
 HZ> и раз - в ФАР переключился, а потом обратно - и привет: из всех окон
 HZ> только текущее поверх ФАРа видно, остальные нужно все руками на
 HZ> передний план переключать - геморрой. А когда их (окон) открыто штук
 HZ> пяток или больше (locals, watch, registers, memory, etc), то вся
 HZ> панель задач загажена ими. Маргинальный подход. Чудаки прогу писали,
 HZ> не иначе.

    Я в этом ничего не понимаю, но подозреваю, что просто писали ее не для
винды. В X таких проблем обычно просто нет...

 AM>> Еще раз повторю, у меня все работает. И заработало сразу.
 AM>> Естественно, перед тем как пробовать я прочитал документацию и все
 AM>> сделал как там написано...

 HZ>     Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний
 HZ> GCC'ник. :)

    Речь-то о симуляторе, а не gdb. С ним я познакомился два дня назад. Три
уже. :)
У него порядок действия написан в README и он же написан в info simulavr.

    А вот настоящей удаленной отладкой я не занимался. Хотел было ARM-систему
поотлаживать, так сначала конвертер remote gdb -> jtag нашел только под винду,
потом оказалось, что любимый byteblaster надо переделывать в некий raven. Уже
было взялся перепаивать, так оказалось, что этот конвертер не умеет с
jtag-цепочками работать, он хочет чтобы в цепи кроме процессора никого не было.
Hу что за детская болезнь такая? :( Так и не стал пока перепаивать. :) Уж лучше
ИМХО готовый девайс купить, который этот remote gdb через ethernet умеет...

 HZ>  А вот новичок тут, как всегда, по граблям ходит. И не надо
 HZ> все сваливать на документацию - по большей части организована она
 HZ> по-дурацки - объемы офигенные, что-то конкретное найти - застрелиться.
 HZ> По крайней мере под виндой с ней работать нормально невозможно.

    Объем, действительно, не маленький, но зато разжевано достаточно подробно,
с примерами.

 AM>>     Меня вот больше интересует другой вопрос: есть такая штука,
 AM>> avarice. Она вроде бы занимается внутрисхемной отладкой через
 AM>> JTAG. Hо я что-то не понял, какой адаптер нужен для ее
 AM>> использования?

 HZ>     Через атмеловский адаптер, вестимо. Его либо купить ($300), либо
 HZ> самому изготовить (схема/плата/прошивка, вроде, имеются).

    А известны примеры успешного изготовления? Это я к тому, стоит ли тратить
время, экспериментировать, или проще (и надежнее) сразу купить? Вроде как на
сайте Атмела схему-то с прошивками не раздают, хотя протокол открыт, это меня
порадовало. Вот сейчас скачал юзер-гад на эту игрушку, почитаю...

 HZ>     Кстати, слышал, что можно gdb каким-то образом к редактору
 HZ> прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за
 HZ> технология?

    Краем уха слышал, что к emacs его приделывают, но я ничего такого сооружать
не пытался. Я привык тексты в jed писать, а для отладки переключаюсь в ddd. Сам
ddd имеет какой-то встроенный редактор, то есть можно править исходник прямо в
нем (типа как у AVR-студии), но я даже пробовать не стал - есть редактор, к
которому я привык, им и пользуюсь.
    А технология, я думаю, все та же - в emacs сделали еще один front-end к
gdb, такой же как ddd, insight и т.п...

 HZ> ### Hадо набить руку, пока не набили морду.

    Хе-хе. :)

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Сисоп спит - почта идет...

simulavr (было WINAVR вопрос отладки по COFF)
Tue, 04 Nov 2003 01:52:17 +0300 Alex Mogilnikov wrote to Harry Zhurov:

HZ>>     Хорошо, пусть так. Hо при этом оно не должно работать - пусть
HZ>> скажет, что, дескать, таргет не загружен, отладка невозможна!

AM>     Все-таки, похоже, ты плохо понял что есть удаленная отладка. Hу откуда
AM> отладчику знать, загружено что-то в таргет или нет? Ведь таргетом может
AM> быть готовое устройство с кодом в ПЗУ, которое работает уже неделю, а
AM> сегодня мы вдруг его решили поотлаживать, для чего и запустили отладчик...

    Ну, так отладчик-то должен как-то законнектиться, засинхронизироваться с
таргетом? И сообщить про траблы, если что не так?! А как иначе?

HZ>>  А то
HZ>> ведь ничего не говорит, изображает работоспособность (программа в
HZ>> сорцовом окне загружена, курсор по выражениям/инструкциям ходит), но
HZ>> не работает. :(

AM>     Так вот собственно таргет-устройство (симулятор) тебе и говорило -
AM> неизвестная инструкция. Хотя, по идее, действительно, могло бы отслеживать
AM> факт загрузки кода.

    Вообще-то, я в то консольное окно драйвера особо и не смотрел - ожидал, что
мне эта гуйная морда все скажет, если что не так.

[...]

HZ>>  А тут - конкретные грабли: программа не
HZ>> должна позволять подобные вещи, должна контролировать действия
HZ>> пользователя. Если она сама не может загрузить код в симулятор (очень
HZ>> странно, почему?!

AM>     Может. Даю команду load - и все загружается. Hе знаю, как там работает
AM> insight, не видел ни разу, а ddd (тоже фронт-энд для gdb) имеет специальное
AM> окно для прямого общения с отладчиком.

    А под винду это ddd имеется?

HZ>>  Разве без этого отладка возможна?),

AM>     Я уже выше написал - возможна. Отладчик не может знать, симулятор у
AM> тебя там, отдельный процесс операционной системы, реальное устройство или
AM> что-то еще. Об этом знает только сам пользователь.
AM>     Возможен даже еще более кошмарный случай - в таргет-устройстве прошита
AM> одна версия программы, а в отладчик (по ошибке) загрузили другую (например
AM> более свежую). Так тут, с точки зрения пользователя, вообще отладка пойдет
AM> совершенно непредсказуемым образом. И отследить это никто кроме самого
AM> пользователя не сможет.

    Вот-вот, вот они грабли-то! Не, горбато сделано - тут ведь не только
новичок набьет шишку, но и опытный товарисч элементарно может не отследить, что
версия устарела. Кстати, ИАРовский C-SPY этот момент отслеживает и сообщает,
что сорцы не соответствуют загруженному объектнику, поэтому отладка может быть
некорректной. Для людей сделано. Все можно, если захотеть.

HZ>>     Что касается документации, то на insight (а gdb я не пользовался и
HZ>> не собираюсь в том виде, как он есть)

AM>     Ты очень сильно неправ. Что же тогда вот это в одном из твоих прошлых
AM> писем?

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

AM>     А вот цитата с домашнего сайта insight:

AM>  Insight is a graphical user interface to GDB, the GNU Debugger written in
AM> Tcl/Tk by people working at Red Hat, Inc. and Cygnus Solutions.
AM>     Так вот, ты этот GNU gdb еще как используешь! Именно gdb - это и есть
AM> отладчик. И никто другой. insight - это только front-end, морда такая (одна
AM> из многих, смотри страничку links на сайте insight), которая просто в
AM> удобном для пользователя виде представляет результаты отладки. И наоборот,
AM> манипуляции пользователя превращает в команды gdb.

    Да, в курсе я, что инсайт это тот же гдб (у них даже размер файла
одинаковый). Я имел в виду то, что не собираюсь пользоваться той классической
версией, которая предполагает текстовый интерфейс.

AM>     Поэтому прежде всего надо было изучать документацию именно на gdb,
AM> чтобы понять, как вообще с его помощью происходит отладка, пусть без
AM> запоминания конкретных команд (их всегда можно посмотреть в help), но чтобы
AM> уяснить концепцию.

    Ну, и у ИАРа тоже похожий подход - есть отладчик (сам C-SPY) и есть драйвер
таргета. Драйверов этих туча под разные кристаллы и разные режимы (симуляторы,
эмуляторы). Но проблем-то никаких - все с полпинка заводится и без проблем
работает! Все понято - и организация, и концепция, и без особо глубокого
копания в документации. Просто сделано для людей.

AM> А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

    Так проблема была в том, что у этой морды есть галочка одна, закопанная
несколько глубоковато, без установки которой получается такое подлое поведение.
А доки на эту морду нет.

HZ>>  там вообще ничего нет. Даже не
HZ>> описано, что это такое. Вот и догадайся где там что нужно включить.
HZ>> Все методом тыка.

AM>     Совсем нет документации? Плохо.

    Может, она и есть. Но в том комплекте ее не было.

AM>     Гы. Hа страничке FAQ висит фраза типа "У вас есть какие-то вопросы? Hу
AM> задайте их по e-mail". Редиски. :)

AM>>>     "У меня все работает" (с) (не знаю чей).

[...]

AM>>> Еще раз повторю, у меня все работает. И заработало сразу.
AM>>> Естественно, перед тем как пробовать я прочитал документацию и все
AM>>> сделал как там написано...

HZ>>     Да, ладно, ты и так все это знал гораздо ранее, т.к. уже давнишний
HZ>> GCC'ник. :)

AM>     Речь-то о симуляторе, а не gdb. С ним я познакомился два дня назад. Три
AM> уже. :)

    А что, раньше ты про gdb ничего не знал? Что-то с трудом верится, зная твой
опыт в gcc'ной кухне...

[...]

HZ>>  А вот новичок тут, как всегда, по граблям ходит. И не надо
HZ>> все сваливать на документацию - по большей части организована она
HZ>> по-дурацки - объемы офигенные, что-то конкретное найти - застрелиться.
HZ>> По крайней мере под виндой с ней работать нормально невозможно.

AM>     Объем, действительно, не маленький, но зато разжевано достаточно
AM> подробно, с примерами.

    Этот объем сильно грузит мозги начинающему и мешает сделать простую вещь -
просто попробовать для начала, чтобы оценить, что к чему. А это очень важная
вещь. И если с тем же ИАРом я через пару часов уже гонял тестовые примеры и мог
прикинуть, стоит ли с ним дальше связываться, то с avr-gcc то же самое вылилось
в несколько дней. Очень показательно! Единственное, что тут есть полезного, это
то, что следующая gcc платформа осваивается значительно проще и быстрее, т.к.
все там одинаковое. Это ценное свойство. Но ИАР и тут не отстает. :)

AM>>>     Меня вот больше интересует другой вопрос: есть такая штука,
AM>>> avarice. Она вроде бы занимается внутрисхемной отладкой через
AM>>> JTAG. Hо я что-то не понял, какой адаптер нужен для ее
AM>>> использования?

HZ>>     Через атмеловский адаптер, вестимо. Его либо купить ($300), либо
HZ>> самому изготовить (схема/плата/прошивка, вроде, имеются).

AM>     А известны примеры успешного изготовления? Это я к тому, стоит ли
AM> тратить время, экспериментировать, или проще (и надежнее) сразу купить?

    Разумеется, проще и надежнее купить. :) Но дороже. Сам я не пользовался,
мне не надо, я сейчас больше на 430-х, а там все это от рождения есть и адаптер
значительно более простой и открыт был с самого начала.

HZ>>     Кстати, слышал, что можно gdb каким-то образом к редактору
HZ>> прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за
HZ>> технология?

AM>     Краем уха слышал, что к emacs его приделывают, но я ничего такого
AM> сооружать не пытался. Я привык тексты в jed писать, а для отладки
AM> переключаюсь в ddd. Сам
AM> ddd имеет какой-то встроенный редактор, то есть можно править исходник
AM> прямо в нем (типа как у AVR-студии), но я даже пробовать не стал - есть
AM> редактор, к которому я привык, им и пользуюсь.
AM>     А технология, я думаю, все та же - в emacs сделали еще один front-end к
AM> gdb, такой же как ddd, insight и т.п...

    Мне попадалось, что gdb можно к VisualSlick'у приделать. Любопытно как оно
делается.


...so long!

### Бороться и искать, найти и... перепрятать.



Re: simulavr (было WINAVR вопрос отладки по COFF)
Привет Harry!

04 Nov 03 22:23, Harry Zhurov писал Alex Mogilnikov:

 HZ>     Hу, так отладчик-то должен как-то законнектиться,
 HZ> засинхронизироваться с таргетом? И сообщить про траблы, если что не
 HZ> так?! А как иначе?

    У меня сообщает:

(gdb) si

Program received signal SIGILL, Illegal instruction.
0x00000000 in __vectors ()
(gdb)

    То есть симулятор выдал отладчику нужную информацию. Почему у тебя это
выглядело как будто инструкции выполняются, не могу даже предположить.


 HZ>     А под винду это ddd имеется?

    Судя по наличию в его исходниках строки "WIN32" в немаленьком количестве,
наверное должен.

 HZ>>>  Разве без этого отладка возможна?),

 HZ>     Вот-вот, вот они грабли-то! Hе, горбато сделано - тут ведь не
 HZ> только новичок набьет шишку, но и опытный товарисч элементарно может
 HZ> не отследить, что версия устарела. Кстати, ИАРовский C-SPY этот момент
 HZ> отслеживает и сообщает, что сорцы не соответствуют загруженному
 HZ> объектнику, поэтому отладка может быть некорректной. Для людей
 HZ> сделано. Все можно, если захотеть.

    А по какому протоколу он с таргетом работает? Какой-то свой собственный?

 AM>> А уже потом изучать интерфейс приделанной к нему морды. ИМХО.

 HZ>     Так проблема была в том, что у этой морды есть галочка одна,
 HZ> закопанная несколько глубоковато, без установки которой получается
 HZ> такое подлое поведение. А доки на эту морду нет.

    Могу только еще раз посочувствовать.

 HZ>     Может, она и есть. Hо в том комплекте ее не было.

    Тут ИМХО есть единственный вариант - скачивай штатный дистрибутив
(поскольку, как я понял, ты взял уже собранный кем-то третьим). Если доки там
все-таки есть, замечательно, значит сборщик-редиска их зачем-то выкинул. Если
нет - не повезло значит.

 AM>>     Речь-то о симуляторе, а не gdb. С ним я познакомился два дня
 AM>> назад. Три уже. :)

 HZ>     А что, раньше ты про gdb ничего не знал? Что-то с трудом верится,
 HZ> зная твой опыт в gcc'ной кухне...

    Я раньше ничего не знал о simulavr. С симуляторами, встроенными прямо в
gdb, обсуждаемых нами граблей ИМХО быть просто не может. Hапример, ARM7 gdb сам
умеет симуляровать. А вот AVR не умеет. Вполне возможно, через какое-то время и
AVR-симулятор будет в него встроен...

 AM>>     Объем, действительно, не маленький, но зато разжевано
 AM>> достаточно подробно, с примерами.

 HZ>     Этот объем сильно грузит мозги начинающему и мешает сделать
 HZ> простую вещь - просто попробовать для начала, чтобы оценить, что к
 HZ> чему. А это очень важная вещь.

    Может быть, может быть. Сколько людей, столько мнений. Лично мне казалось,
что как раз идея начать руководство с примера сеанса отладки несложной
программы и дает возможность оценить что к чему. А ведь бывает, иные
руководства начинаются с перечня команд... :)

 AM>>     А известны примеры успешного изготовления? Это я к тому, стоит
 AM>> ли тратить время, экспериментировать, или проще (и надежнее) сразу
 AM>> купить?

 HZ>     Разумеется, проще и надежнее купить. :) Hо дороже. Сам я не
 HZ> пользовался, мне не надо, я сейчас больше на 430-х, а там все это от
 HZ> рождения есть и адаптер значительно более простой и открыт был с
 HZ> самого начала.

    Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все что-то накак.
А надо бы, надо...

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Без тpуды не выкачаешь почту из фиды...

simulavr (было WINAVR вопрос отладки по COFF)
Thu, 06 Nov 2003 00:13:30 +0300 Alex Mogilnikov wrote to Harry Zhurov:

[...]

HZ>> так?! А как иначе?

AM>     У меня сообщает:

AM> (gdb) si

AM> Program received signal SIGILL, Illegal instruction.
AM> 0x00000000 in __vectors ()
AM> (gdb)

    Во, так нормально.

AM>     То есть симулятор выдал отладчику нужную информацию. Почему у тебя это
AM> выглядело как будто инструкции выполняются, не могу даже предположить.

    Похоже, что морда та - недоделанная.


HZ>>     А под винду это ddd имеется?

AM>     Судя по наличию в его исходниках строки "WIN32" в немаленьком
AM> количестве, наверное должен.

    А где оно живет?

HZ>>>>  Разве без этого отладка возможна?),

HZ>>     Вот-вот, вот они грабли-то! Hе, горбато сделано - тут ведь не
HZ>> только новичок набьет шишку, но и опытный товарисч элементарно может
HZ>> не отследить, что версия устарела. Кстати, ИАРовский C-SPY этот момент
HZ>> отслеживает и сообщает, что сорцы не соответствуют загруженному
HZ>> объектнику, поэтому отладка может быть некорректной. Для людей
HZ>> сделано. Все можно, если захотеть.

AM>     А по какому протоколу он с таргетом работает? Какой-то свой
AM> собственный?

    Да, там у них свой. У них многое свое, в т.ч. и формат объектника, который
позволяет помещать каждую функцию в отдельный сегмент, т.ч. при сборке
окончательного файла, линкуются только те функции, на которые есть ссылка.
Таким образом, ничего лишнего в исполняемом нет. С avr-gcc я столкнулся с тем,
что там линкуются все функции из файла, если хотя бы на одну из них была
ссылка.

[...]

HZ>>     Может, она и есть. Hо в том комплекте ее не было.

AM>     Тут ИМХО есть единственный вариант - скачивай штатный дистрибутив
AM> (поскольку, как я понял, ты взял уже собранный кем-то третьим). Если доки
AM> там все-таки есть, замечательно, значит сборщик-редиска их зачем-то
AM> выкинул. Если нет - не повезло значит.

    Может и редиска, может и морковка. Какая разница. Брал-то я это на, как бы,
официальном сайте проекта winavr. Там не один человек этим занимается, а целая
команда, и работу проделали немаленькую. Но все равно недоделанное.

AM>>>     Речь-то о симуляторе, а не gdb. С ним я познакомился два дня
AM>>> назад. Три уже. :)

HZ>>     А что, раньше ты про gdb ничего не знал? Что-то с трудом верится,
HZ>> зная твой опыт в gcc'ной кухне...

AM>     Я раньше ничего не знал о simulavr. С симуляторами, встроенными прямо в
AM> gdb, обсуждаемых нами граблей ИМХО быть просто не может. Hапример, ARM7 gdb
AM> сам умеет симуляровать.

    Так я не пойму - ты именно gdb (его интерфейсом) пользуешься или тем
front-end'ом ddd?


AM>>>     Объем, действительно, не маленький, но зато разжевано
AM>>> достаточно подробно, с примерами.

HZ>>     Этот объем сильно грузит мозги начинающему и мешает сделать
HZ>> простую вещь - просто попробовать для начала, чтобы оценить, что к
HZ>> чему. А это очень важная вещь.

AM>     Может быть, может быть. Сколько людей, столько мнений. Лично мне
AM> казалось, что как раз идея начать руководство с примера сеанса отладки
AM> несложной программы и дает возможность оценить что к чему.

    Вот и я так же считаю. Но когда хочется попробовать самому слепить что-то,
то на gcc с нуля это сделать быстро не получается (нюансиков там слишком до
фига), в то время, как на иаре это делается легко (т.к. путь там значительно
проще, а документации (по объему) меньше, но она толковее - возьми какой-нибудь
их compiler reference guide и почитай - разницу почувствуешь сразу).

AM> А ведь бывает, иные руководства начинаются с перечня команд... :)

[...]

HZ>> Сам я не пользовался, мне не надо, я сейчас больше на 430-х, а там все это
HZ>> от рождения есть и адаптер значительно более простой и открыт был с
HZ>> самого начала.

AM>     Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все что-то
AM> накак. А надо бы, надо...


    А ты только начни - потом не остановишься. Там все очень просто и понятно.
Я вот однажды (года два назад) взял в выходной день, скачал User's Guide на
MSP430x1xx и прочитал его (там страниц 500, но написано очень понятно,
структурировано, много схем, графиков), т.ч. представление формируется сразу и
безошибочное. Там один файл на всю линейку, в котором вся необходимая
информация, а даташиты на конкретные чипы - очень небольшие - содержат только
конкретную информацию, характерную для этого чипа (таблицы с параметрами,
графики зависимостей и проч.) - это очень удобно (в противоположность к тому,
как сделано для AVR, когда на каждый кристалл дока страниц на 350-400, причем
доки почти одинаковые, отличаются мелочами - вот и ищи эти различия; неудобно).

    Да, и сам процессор там более процессор - проще он и стройнее, более
классический, чем avr. И gcc на него (по слухам) более хорошо ложится, я даже
скачивал какой-то, версию не помню (Лев Серебряков делал пакет), должен
признать - кодогенерация там на высоте. Ну, и внутрисхемная отладка тоже не
последнее дело.


--
H.Z.

harry.zhurov<antispam::at>ngs<antispam::period>ru

We've slightly trimmed the long signature. Click to see the full one.
Re: simulavr (было WINAVR вопрос отладки по COFF)
Привет Harry!

07 Nov 03 11:14, Harry Zhurov писал Alex Mogilnikov:

 HZ>>>     А под винду это ddd имеется?

 AM>>     Судя по наличию в его исходниках строки "WIN32" в немаленьком
 AM>> количестве, наверное должен.

 HZ>     А где оно живет?

    http://www.gnu.org/software/ddd /

 AM>>     Тут ИМХО есть единственный вариант - скачивай штатный
 AM>> дистрибутив (поскольку, как я понял, ты взял уже собранный кем-то
 AM>> третьим). Если доки там все-таки есть, замечательно, значит
 AM>> сборщик-редиска их зачем-то выкинул. Если нет - не повезло значит.

 HZ>     Может и редиска, может и морковка. Какая разница. Брал-то я это
 HZ> на, как бы, официальном сайте проекта winavr.

    Мне кажется, что документацию на insight логично искать на официальном
сайте проекта indight, а не какого-то winavr. Какое он вообще имеет отношение к
insight?

 AM>>     Я раньше ничего не знал о simulavr. С симуляторами,
 AM>> встроенными прямо в gdb, обсуждаемых нами граблей ИМХО быть просто
 AM>> не может. Hапример, ARM7 gdb сам умеет симуляровать.

 HZ>     Так я не пойму - ты именно gdb (его интерфейсом) пользуешься или
 HZ> тем front-end'ом ddd?

    Я пользуюсь ddd, но среди прочих окон у него есть gdb-консоль, что
позволяет отдавать команды gdb напрямую. Часто бывает удобно.

 HZ>>>     Этот объем сильно грузит мозги начинающему и мешает сделать
 HZ>>> простую вещь - просто попробовать для начала, чтобы оценить, что
 HZ>>> к чему. А это очень важная вещь.

 AM>>     Может быть, может быть. Сколько людей, столько мнений. Лично
 AM>> мне казалось, что как раз идея начать руководство с примера сеанса
 AM>> отладки несложной программы и дает возможность оценить что к чему.

 HZ>     Вот и я так же считаю. Hо когда хочется попробовать самому слепить
 HZ> что-то, то на gcc с нуля это сделать быстро не получается

    ? При чем тут опять gcc? Мы вроде бы говорим об отладчике gdb. У него
руководство как раз начинается с примера сеанса отладки...

 AM>>     Я вот все собираюсь-собираюсь с 430-ми познакомиться, да все
 AM>> что-то накак. А надо бы, надо...

 HZ>     А ты только начни - потом не остановишься. Там все очень просто и
 HZ> понятно. Я вот однажды (года два назад) взял в выходной день, скачал
 HZ> User's Guide на MSP430x1xx и прочитал его

    Hайду время - так и сделаю. Если что - знаю кому вопросы можно задать. :)

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Искать смысл - бессмысленно...

Site Timeline