LINUX.ORG.RU

Просьба помочь - отладка набора инструкций AVR

 , , ,


0

1

TL;DR Не мог бы кто-нибудь отправить мне результаты отладки инструкций AVR
(модель AVR, инструкция, регистры до/после, PC до/после, SREG до/после) или
пожертовать отладчик с debugWIRE?

Я уже некоторое время работаю над NGSpice библиотекой с AVR микроконтроллерами
и недавно обнаружил и исправил пару ошибок в декодере инструкций благодаря
одной прошивке которую пытался просимулировать.

Вот почему я прошу о помощи. Если у вы можете подцепиться отладчиком к пришивке
в кремние и отрассировать ассемблерные инструкции, то пожалуйста запишите:

  • модель AVR;
  • саму инструкцию (например 0x1b28);
  • значения регистров до/после;
  • PC до/после;
  • SREG до/после.

и вышлите в список рассылки MCUSim, либо откройте обсуждение, либо в личку тут.

Хотя Atmel и предоставляет отличную документацию и Instruction Set Manual, но
я бы хотел использовать данные напрямую из кремния для того, чтобы написать
модульные тесты на инструкции. Это будет немного лучше, нежели гадать как оно
будет работать в настоящих чипах.

Спасибо.



Последнее исправление: dsl (всего исправлений: 1)

Cast Zubok

Это я отписывал Вам пару лет назад на почту с темой «По поводу Свободное ПО в электронике - 2». Может есть кого посоветовать на лоре с программатором :)

dsl
() автор топика

Я правильно понимаю, что нужен avr и jtag? В целом у меня все есть, могу попробовать, только с вас прошивка с нужными вам командами под mega16 (у меня только на есть в отладке c jtag-ом).

yax123 ★★★★★
()
Ответ на: комментарий от yax123

Спасибо за помощь

В общем, мне нужно было как-то подтвердить корректность AVR декодера, вот я и подумал что можно было бы реальные данные пособирать, но тут выяснилось кое-что интересное…

Я оставил точно такой же пост в avrfreaks.net и в процессе дискуссии выяснилось, что ребята из Atmel очень интересным образом создают модели микроконтроллеров для своего симулятора в Atmel Studio (начиная примерно года с 2012-2014). Они конвертируют модели на VHDL в DLL с помощью Verilator и это работает как для набора инструкций, так и для всей цифровой переферии внутри МК, т.е. их симулятор можно назвать «образцовым». Именно на него я и решил опираться при написании тестов для своего симулятора.

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

Кстати, может Вы знаете дают ли Atmel’овцы код тех самых моделей которые получаются перегонкой из VHDL в С/C++? Я бы с удовольствием использовал их вместо того, чтобы свою реализацию декодера и переферии пилить. Но максимум что я видел, так это модели в виде dll для Windows и so для GNU/Linux x86_64. Хотелось бы компилировать самому.

dsl
() автор топика
Ответ на: Спасибо за помощь от dsl

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

Позже, так позже :) На авторство не претендую. Все из любви к искусству.

Насчет моделей. Вы про hdl-код или про полученные исходник для программной модели? Уверен что вряд ли они будут так раскидываться. Но можно поступить хитрей. Уверен, что можно найти hdl-код похожего контроллера для FPGA. потом прогнать его через верилатор, получится конечно не то. Но зная отличия в МК можно будет в сишном коде это все поправить. И получится то, что надо.

А потом можно придумать свой прожект. Придумать какую-нидь описалку ядра и периферии (свой недоязык) и конвертор этого языка в программную модель (да, я хочу почитать Фаулера). Необязательно весь функционал МК описывать подробно на HDL, как мне кажется достаточно грубой модели на самодельном предметном языке и трансляцию его уже в программную модель.

yax123 ★★★★★
()
Ответ на: комментарий от yax123

Ё-маё

Насчет моделей. Вы про hdl-код или про полученные исходник для программной модели? Уверен что вряд ли они будут так раскидываться.

Да мне можно и исходники и/или HDL-код сойдёт, чтобы скомпилить то, чему можно прошивку в бинарном виде скормить и по инструкциям исполнять и получать состояние процессора, регистров, вот этого всего для AVR. Суда по тому, что я спросил про исходники и мне ничего не ответили - то да, не дадут.

Уверен, что можно найти hdl-код похожего контроллера для FPGA. потом прогнать его через верилатор, получится конечно не то. Но зная отличия в МК можно будет в сишном коде это все поправить. И получится то, что надо.

Вот это кстати очень интересная идея, но мне нужно подумать. Хрен его знает разберусь ли я в выхлопе верилатора (а хотелось бы от него C ISO9899:1999 получить например). Пока пилю свой декодер в составе MCUSim (https://trac.mcusim.org). Кстати, даже список рассылки есть (mcusim-dev@freelists.org), приглашаю!

Основная идея - сделать свободную библиотеку для NGSpice с AVR микроконтроллерами. И крутить-вертеть ее в KiCad на разных схемах.

dsl
() автор топика
Ответ на: комментарий от yax123

М да, выбор то невелик, хотя я и нашел только те что указаны как FPGA клоны на странице AVR в вики: https://en.wikipedia.org/wiki/Atmel_AVR#FPGA_clones.

Самый перспективный avr_core на мой взгляд (https://opencores.org/projects/avr_core), но даже он выглядит удручающе в плане переферии:

– Программируемый UART
– Два 8-разрадных таймера/счётчика с раздельными предделителями и ШИМ
– Восемь внешних источников прерываний
– Два параллельных порта

А как же 16-разрядные таймер который даже в ATmega8A есть? Не дело это. Даже пофиг на то, что верилатор генерит только C++ код насколько я понял, его и так можно использовать, но вот переферия удручает. Видимо все равно руками на С продолжу программить.

dsl
() автор топика
Ответ на: Если будет желание помочь, от dsl

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

yax123 ★★★★★
()

выглядит странно заниматься такими вещами и не иметь на руках хотя бы пару разных AVR чипов

они ж в любом ближайшем магазине с детальками имеются в наличии

Harald ★★★★★
()
Ответ на: комментарий от Harald

зачем эти грязные железки чистому программисту?

yax123 ★★★★★
()
Ответ на: комментарий от Harald

Хм

Дело не в чипах, они то стоят недорого. Дело в отладчике и в том, чтобы выяснить состояние CPU, регистров ввода-вывода, памяти данных AVR чипа. Мне это нужно чтобы написать тесты к симулятору.

Мне нужен хотя бы debugWIRE чтобы подцепиться к mega328p, но сами по себе отладчики не очень дешевые, например:

  1. AVR JTAGICE mkII (~$150)
  2. AVR Dragon (~€80)
  3. ATATMEL-ICE (~€87)

Вот есть вариант собрать отладчик самому, но на это тоже надо тратить время и ресурсы (https://hackaday.io/project/20629-debugwire-debugger).

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

dsl
() автор топика
Ответ на: Хм от dsl

ну тогда ладно

Harald ★★★★★
()
Ответ на: Хм от dsl

может на алиэкспрессе можно что-то найти в исполнении китайских мастеров копирования :)

Harald ★★★★★
()
Ответ на: комментарий от Harald

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

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

dsl
() автор топика
Ответ на: Хм от dsl

У меня как раз dragon есть. Пару раз выручил при помощи параллельного Hi-V интерфейса.

yax123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.