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

Привет 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ак съешь сам, обед оставь себе, а ужин - никому не отдавай!

Reply to
Alex Mogilnikov
Loading thread data ...

Tue, 28 Oct 2003 23:59:33 +0300 Alex Mogilnikov wrote to Harry Zhurov:

[...]

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

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

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

formatting link

[...]

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!

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

Reply to
Harry Zhurov

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

Reply to
Alex Mogilnikov

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 каким-то образом к редактору прикрутить, чтобы отлаживать прямо в своем редакторе. Что там за технология?

Reply to
Harry Zhurov

Привет 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] Алексей М. ... Сисоп спит - почта идет...

Reply to
Alex Mogilnikov

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!

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

Reply to
Harry Zhurov

Привет 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уды не выкачаешь почту из фиды...

Reply to
Alex Mogilnikov

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 на него (по слухам) более хорошо ложится, я даже скачивал какой-то, версию не помню (Лев Серебряков делал пакет), должен признать - кодогенерация там на высоте. Ну, и внутрисхемная отладка тоже не последнее дело.

Reply to
Harry Zhurov

Привет Harry!

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

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

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

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

formatting link
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] Алексей М. ... Искать смысл - бессмысленно...

Reply to
Alex Mogilnikov

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.