Не читает содержимое EEPROM avrdude через USB arduino
- Войдите на сайт для отправки комментариев
Чт, 09/08/2012 - 14:45
Собственно, сабж.
Залез в тему "считывание кодов с ардуины" - оказалось все совсем нетрудно - штатная avrdude успешно прочитала прошивку через программатор "ардуино", НО! При чтении eeprom читается опять же часть программной памяти. Наверно по этому и не может IDE залить содержимое eeprom при объявлении переменной как EEMEM.
Кто-нибудь сталкивался? Через ICP внешним программатором проблемм не возникает.
Вот тут http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1289849174 (такие же симтомы через программатор - OK, через дудтку - сигналы из космоса)
пришли к выводу что не всякий бутлоадер поддерживает eeprom команды. В частности uno/optibot - не поддерживает.
так что похоже либо "через внешний программатор", либо искать будтлоадер который "умеет такое" и прошивать его.
Я так и думал... бкдк думать и скать бутлодырь...
Вообщем "гимор" в любом случае обеспечен.
Но можно еще попробовать будет ли читаться/писатся если в качестве программатора использовать ArduinoISP скетч. Если будет - попытатся выдрать из него эти команды, заменить отсылку их SPI на запись во EEPROM и весь этот венигрет всобачить в свой скетч.
Потом попытатся как-то объяснить дудтке что не нужно DTR линию, при чтении флеша, дергать. Тогда "отвечать" ей будет не бутлоадер, а наш скетч (который предположительно уже знает комманды).
Если ArduinoISP, тоже "не знаком с этими командами", то остается брать в зубы что-то типа http://www.atmel.com/Images/doc2591.pdf и пытатся самому их заимплементить.
Плюсом такого подхода будет - не нужно бутлоадер мучать, минусом - нужно будет "засорить" свой скетч все этой логикой.
Если верить этому http://electronics-diy.com/electronic_schematic.php?id=1071
То, по идее, ArduinoISP должно понимать эти команды. А значит можено попытатся "спионерить" их :)
Да и вверху самого ArduinoISP есть надпись "// - Added support for writing to EEPROM (what took so long?)"
Правда, на форумах видел жалобы типа "глючит она с этим - берите более старую версию", зато потом в ответах мелкало "в arduino 1.0.1 исправили".
Ну и функция типа uint8_t write_eeprom(int length) видна.
Так что осталось только подменить ее реализацию на запись во флеш, вместо "spi_transaction"
Всегда удивляло, почему в софтах, а именно: AVR studio, CVAVR и т.п. типа напрямую можно считать/записать содержимое EEPROM МК, а в реальности оказывается только "кривым",замороченным внутри системным способом?!?!