Доступ к EEPROM

mihey78
Offline
Зарегистрирован: 04.10.2014

Правильно ли я понимаю, что IDE Arduino не имеет функции работы с EPROM микроконтроллера? То есть для загрузки данных в EEPROM с компьютера надо либо писать код в скетче и программу для PC, либо заливать EEPROM с помощью ISP программатора? Или же есть способ это сделать с помощью бутлодера adruino? Спасибо.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

arduino ide не может. либо скетч или через isp

sva1509
Offline
Зарегистрирован: 07.12.2012

Шьется через ISP - avrdude опция -U

mihey78
Offline
Зарегистрирован: 04.10.2014

Только что нашел следующее (http://freeduino.ru/arduino/sample_EEPROM.html):

Работа с EEPROM через boot-loader

При обмене данными с ПК загрузчик использует протокол stk500v1, и может работать, в том числе и с EEPROM.

Для чтения содержимого EEPROM в файл «0.bin» необходимо в командной строке

  • Перейти в подпапку \hardware\tools\avr\bin\ папки с ПО Arduino;
  • Выполнить команду (в одну строку):

avrdude -q -C ..\etc\avrdude.conf -p m168 -c stk500v1 -P COM3 -b 19200 -U eeprom:r:0.bin:r

Для записи содержимого файла 0.bin в EEPROM команда такая:

avrdude -q -C ..\etc\avrdude.conf -p m168 -c stk500v1 -P COM3 -b 19200 -U eeprom:w:0.bin

Параметр «COM3» нужно заменить на Ваш номер порта.

Radjah
Offline
Зарегистрирован: 06.08.2014

Или через usbasp и http://khazama.com/project/programmer/

Jek
Offline
Зарегистрирован: 05.01.2014

mihey78 пишет:

  • Выполнить команду (в одну строку):

avrdude -q -C ..\etc\avrdude.conf -p m168 -c stk500v1 -P COM3 -b 19200 -U eeprom:r:0.bin:r

Для записи содержимого файла 0.bin в EEPROM команда такая:

avrdude -q -C ..\etc\avrdude.conf -p m168 -c stk500v1 -P COM3 -b 19200 -U eeprom:w:0.bin

Параметр «COM3» нужно заменить на Ваш номер порта.

Господа, подскажите, эти строки работают? А то у меня ничего не получается...

 

Maverik
Offline
Зарегистрирован: 12.09.2012

столько плясок с бубном.

проще и правда всё перевести в цифру для скетча и залить в еепром.

 

Jek
Offline
Зарегистрирован: 05.01.2014

Необходимо менять значения в EEPROM без смены скетча....

axill
Offline
Зарегистрирован: 05.09.2011

Вообще то в avr-gnuc - это тулкит который использован и в Atmel студии и в ардуино IDE для eeprom предусмотрены специальный артибуты компилятора и линкера

Если включить файл avr/eeprom.h и потом использовать макрос EEMEM типа:

int bits[] EEMEM = { 0, 5, 8, 10 };

то после компиляции будет создан файл с расширением .eep содержащий HEX для заливки EEPROM. Данные присвоенные такой переменной во флэш не попадут, а попадут именно в файла для заливки EEPROM. Я в студии этим активно пользуюсь. Но вот создает ли такой файл ардуина - вопрос

механизм удобный еще и потому, что не нужно заниматься самому распрпеделением памяти EEPROM, адреса компилятор определяет сам. В моем примере &bits - вернет адрес в EEPROM, в случае если у нас одна EEPROM переменная то это будет 0

толстый
Offline
Зарегистрирован: 10.02.2020

https://arduino.ru/forum/programmirovanie/dostup-k-eeprom#comment-83601

Не выходит аленький цветочек. пишет:"-q" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

По папкам  ходить научился(я молодец:), но либо что-то не дописано(смущают точки после С) либо не до конца описаны действия, типа для разбирающихся - само собой разумеющееся:( 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Команда “..\folder1” означает «выйти на директорию выше а потом в папку войти в папку “folder1”. Например, сначала были тут “C:\temp”, потом будем в “C:\folder1”

толстый
Offline
Зарегистрирован: 10.02.2020

П'нятненько. Сыпасиба. Т.е. построение команды типа правильное, а не работает из-за кривых рук. Непонятен факт выполнения (точнее НЕ выполнения) команды из одной папки, что бы тут же войти в другую. Типа там что -то важное для начала беседы?

В любом случае спотыкается прямо на первом символе "-q". Вот бы кто-нибудь знающий проверил работоспособность(смущённый смайлик).

толстый
Offline
Зарегистрирован: 10.02.2020

BOOM пишет:

Команда “..\folder1” означает «выйти на директорию выше а потом в папку войти в папку “folder1”. Например, сначала были тут “C:\temp”, потом будем в “C:\folder1”

Вот и подтверждение теории, что разбирающиеся пропускают само собой разумеющееся и неофитам тупо побуквенно повторить без шансов:) Попробовал "..\folder1"  - ругается, а сделал "cd..\folder1" - заработало. Сложна:(

толстый
Offline
Зарегистрирован: 10.02.2020

Вот я дебил. Упорно набирал строку без начального "avrdude

Вроде сдвинулось с мёртвой точки, но программатор не отвечает

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x03 и т.д. Папки нигде вроде не создалось. Типа не с чем.
 
Порт верный, тренируюсь на UNO  с конвертером на 16U2.  Залит блинк. Пните дебилушку ещё в каком направлении.
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

покажи всю командную строку

толстый
Offline
Зарегистрирован: 10.02.2020

avrdude -q -C ..\etc\avrdude.conf -p m328p -c stk500v1 -P COM4 -b 19200 -U eeprom:r:0.bin:r

Заменил  "m168" типа думаю так правильней.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

толстый пишет:

avrdude -q -C ..\etc\avrdude.conf -p m328p -c stk500v1 -P COM4 -b 19200 -U eeprom:r:0.bin:r

Заменил  "m168" типа думаю так правильней.

UNO шьётся на 115200 и пробел при настройке скорости порта убери, и  -patmega328p

толстый
Offline
Зарегистрирован: 10.02.2020

"Огласите весь список, пжалста"(С)

А слона то я и не приметил. Учитывая недавние обсуждения о скорости обмена и фюзах:) могло бы и дойти.

В любом случае ни скорость ни  -patmega328p не повлияли  - нет ответа от программатора. Пробел с какой стороны?

avrdude -q -C ..\etc\avrdude.conf -patmega328p -c stk500v1 -P COM4 -b115200 -U eeprom:r:0.bin:r

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ты шьёшь через программатор или через UART?

толстый
Offline
Зарегистрирован: 10.02.2020

Через программатор любой дурак сможет, даже я:) Через конвертер на плате на 16U2. Кстати китайская на CH(без опознавательных знаков) перестала даже пытаться шиться после замены на "-patmega328p", не видит сигнатуру.

толстый
Offline
Зарегистрирован: 10.02.2020

:)

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading eeprom memory:
avrdude: writing output file "0.bin"
 
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
 
avrdude done.  Thank you.
 
Глянул, что формируется при работе с дудкой, потом в самом IDE. По итогу трэба так. 
avrdude -q -C ..\etc\avrdude.conf -patmega328p -carduino -PCOM4 -b 115200 -U eeprom:r:0.bin:r
толстый
Offline
Зарегистрирован: 10.02.2020

Можно сразу в TXT сохранять. Правда такая хрень получается:)

”\ ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ”n ””n ”n ”n ”n ”n ”n ”n ”n ”n     $ ' *     % ( + @Ђ               $ѕПпШаЮїНї!а а±аА’©0Ібч”]”М”  блра$‘нйра”‘йирад‘о#Йр"#9р#0сЁф!0с"0)сраояоXяOҐ‘ґ‘/·ш”м‘Ѓ&Ађ•ћ#њ“/ї•'0©р(0Йр$0Iч ‘Ђ /}А ‘Ђ /w “Ђ ЯП$µ/w$ЅЫП$µ/}ыП ‘° /w “° ТП ‘° /}щПћ+ЪП?·ш”Ђ‘ђ‘ ‘°‘&µЁ›А/?р–Ў±?їє/©//€'јНbqЃ‘Bаfw€™J•Сч•Џ’џ’Ї’ї’П’Я’п’я’”ё K\„пИ.Э$У”б,с,”ё hy Љ h>s@Ѓ‘Ёу!аВСбс€о€ѓаЎ±БСбс)чяђпђЯђПђїђЇђџђЏђ•’’¶’$/“?“Џ“џ“Ї“ї“Ђ‘ђ‘ ‘°‘0‘ #а#-7Xх–Ў± “ Ђ“ђ“ “°“Ђ‘ђ‘ ‘°‘–Ў±Ђ“ђ“ “°“ї‘Ї‘џ‘Џ‘?‘/‘ђѕђђ•&и#–Ў±ТПx”„µ‚`„Ѕ„µЃ`„Ѕ…µ‚`…Ѕ…µЃ`…ЅЂ‘n Ѓ`Ђ“n ’Ѓ Ђ‘Ѓ ‚`Ђ“Ѓ Ђ‘Ѓ Ѓ`Ђ“Ѓ Ђ‘Ђ Ѓ`Ђ“Ђ Ђ‘± „`Ђ“± Ђ‘° Ѓ`Ђ“° Ђ‘z „`Ђ“z Ђ‘z ‚`Ђ“z Ђ‘z Ѓ`Ђ“z Ђ‘z ЂhЂ“z ’Б нйра$‘йира„‘€#™рђа€™ьиYяOҐ‘ґ‘ьоXяO…‘”‘Џ·ш”м‘в+м“ЏїАаРаЃа”p ”Э Ђа”p ”Э  —Ўу”  сПш”яПяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя

толстый
Offline
Зарегистрирован: 10.02.2020

И чё теперь с этим делать:) 

Кстати с китайской платой то же работает. Версия IDE 1.8.12

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а теперь залей в дуню код и посмотри, что там в реальности:
 

// https://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/schitat-eepro...

#include <EEPROM.h>

void setup() {
  Serial.begin(115200);
  for (uint16_t i = 0; i < EEPROM.length(); i++) { //Опрелеляем диапазон EEPROM памяти
    if (0x00 == (i % 0x10)) { // В начале каждой строки из 16 ячеек дампа выводим адрес блока
      Serial.println();
      if (i < 0x0F) { Serial.print("0"); }
      if (i < 0xFF) { Serial.print("0"); }
      Serial.print(i, HEX);  Serial.print(" ");
    }
    uint8_t val = EEPROM.read(i);
    if (val < 0x0F) { Serial.print("0"); }
    Serial.print(val, HEX); Serial.print(" ");
  }
  Serial.println();
}

void loop() { }

 

толстый
Offline
Зарегистрирован: 10.02.2020

Да пустая она, сам лично стирал. Но первые 4 строки чёй-то не по порядку.

 
000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
3F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
FF FF FF FF FF FF 
3E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
3F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 
000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
.....
3F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 
 
А. не это я другую стирал:) После чистки все FF стали 00
 
А сохраняется теперь так. Все яяяяяяяяяяяяяяяяяяяяя пропали:)
 
”5 ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”] ”Ѕ”] ”-””] ”] ”] ”] ”] ”] ,$ѕПпШаЮїНїа а±ажбчаАђ
’Є1±Щч!аЄб±аА’ <ІбчаЕгРаА!—ю”ѓД3СЙч”_”‰”  Ї’ї’П’Я’п’я’““П“Я“l{‹л^®їАСYрi‘Цн‘ь‘ђрЃа-Ж •‰+yчЕЯ‘П‘‘‘яђпђЯђПђїђЇђ•ьSЌDЌ%/0а„/ђа‚“TрП–•—•ь‘Ќ‚ЌaрўЌ®ї/±]–Њ‘’Ќџ_џs’Џђа•Џпџп•ь‘Ќ‚Ќ1р‚Ќис…Ќђа•Џпџп•ь‘Ќ"Ќ‰/ђаЂ\џO‚‘ Џs™'•ѓв‘а”Ѕ !а‰+ ф а‚/•Ђађа‰+)р”Й Ѓ”  •ь¤ЌЁ№/±ЈZїO,‘„Ќђа–Џs™'„Џ¦‰·‰,“ ‰±‰Њ‘ѓpЂdЊ““Ќ„ЌА€у‰а-ЂЃЏ}Ђѓ•п’я’““П“Я“мЃа€Џ›ЌЊЌАи‰щ‰ЂЃ…яАџ·ш”о‰я‰`ѓи‰щ‰ЂЃѓpЂdЂѓџїЃађаЯ‘П‘‘‘яђпђ•ц.Ќа_Os'а.ЊЌЋА¶ьъПи‰щ‰ЂЃ…яхПО”Э сПлЌмэ/сгZяOр‚џ·ш”Џк‰ы‰ЂЃЂbППП“Я“м€Ќ€#№рЄ‰»‰и‰щ‰Њ‘…эАЂЃ†э
А¶ьчПЊ‘…ятПЂЃ…янПО”Э йПЯ‘П‘•ьђ  йч1—ЇHYјѓв‘а”_ Џ’џ’Ї’ї’““П“Я“Н·Ю·Ў—¶ш”ЮїѕНїўB0фJаЋ]O„.‘,±,Ў,Ґ””aж/№Кк0ффа]Шо“Ќ#+$+%+yчђаЂа—рН”lЎ–¶ш”ЮїѕНїЯ‘П‘‘‘їђЇђџђЏђ•й\бП’’¶’$/“?“Џ“џ“Ї“ї“Ђ‘ђ‘ ‘!°‘"0‘#а#-7Xх–Ў± “Ђ“ђ“ “!°“"Ђ‘ђ‘ ‘°‘–Ў±Ђ“ђ“ “°“ї‘Ї‘џ‘Џ‘?‘/‘ђѕђђ
 
Ну, наверное всё логично, если bin открывать блокнотом:)

 

толстый
Offline
Зарегистрирован: 10.02.2020

"Всё чудесатее и чудесатее"(С)

А эта строка точно еепром читает? Хоть в логах и пишет о "avrdude: reading eeprom memory:", но что то есть сомнения.

Стер полностью контроллер через CodeVisionavr  и самолепный avrisp mkii. Залил загрузчик и-и-и-и в текстовом файле теперь только куча яяяяяяяяяяя(считать сколько их там не стал)   PS ровно 1024:)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

тебя ничем не проймёшь! Это тебя ни грамма не смутило:

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading eeprom memory:
avrdude: writing output file "0.bin"
 
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
 
avrdude done.  Thank you.
 
А вот как у меня:

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e950f (probably m328p)

avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.

 
и дамп в файле:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

 

 

толстый
Offline
Зарегистрирован: 10.02.2020

Фюзы видел. ХЗ почему не читаются. В реальности они установлены.

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

Возможно это всё изобретение лисапеда и есть готовые функции. Основная идея это считать еепром с компа, изменить отдельные значения и затолкать обратно. Опыта и знаний по созданию программ для винды нет, потому начал ковыряться в процессинге. Да - да, в том самом мёртворождённом. Набросал оболочку, научился считывать с текстовых файлов копию еепром с разделителем",". Ну и посетила мысль убрать лишнее звено типа SD карты > считать образ > перенести на комп.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

оно не только фьюзы не читает но и дамп читает неверно, подумал, может дело в загрузчике, в UNO это оптибут, он всего 512 байт, может что-то из протокола STK500v1 выкинули, подоткнул чистую нано со старым загрузчиком, такая же песня
Через программатор читается, то-есть автор статьи или заблуждается или у него какой-то свой загрузчик используется

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

яяя  это в ASCII и есть FF FF FF, - значит EEPROM пустая (стёртая)

толстый
Offline
Зарегистрирован: 10.02.2020

Да это то понятно, что типа транслитерация. Использовать то как это? на все значения буков не хватит:) и разделения нет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

толстый пишет:

Да это то понятно, что типа транслитерация. Использовать то как это? на все значения буков не хватит:) и разделения нет.

это жеж дамп памяти, в ячейках десятичное значение от 0 до 255, как хочешь так и используй

толстый
Offline
Зарегистрирован: 10.02.2020

Может я всё усложняю, но как отсчитать условно четвёртую "я" и это хорошо если это будет именно "я" а не "¶"(хз что это такое)

Повторюсь может я это всё усложняю, а при считывании сформированного файла из процесстинга и сохранении в массив будет что то адекватное. Как говорит граф:" будем есть слона по частям". Можно продолжить здесь или переползать в мега популярный раздел?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Почему у тебя тут:

-U eeprom:r:0.bin:r

“r” это ж чтение (read), а ты ж вроде бы записать хочешь (write), так? )

смотри #3

толстый
Offline
Зарегистрирован: 10.02.2020

толстый пишет:

Основная идея это считать еепром с компа, изменить отдельные значения и затолкать обратно. 

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

не читает оно через бутлоадер, точнее читает хрень те что

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я тут подумал... А не проще через UART в EEPROM писать/читать? Напиши свои функции чтения и записи и посылай им команды/принимай от них.Чем это не подходит?

толстый
Offline
Зарегистрирован: 10.02.2020

Э-э-э... А чем мы тут по вашему второй день занимаемся?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Ну точно не тем же самым, о чем я имел ввиду, говоря выше.)))

Serial знаешь как работает? Вот я о нем...

А вы тут два дня с бубном вокруг прямого доступа через дудку к EEPROM пляшете.)

толстый
Offline
Зарегистрирован: 10.02.2020

BOOM пишет:

Я тут подумал... А не проще через UART в EEPROM писать/читать? Напиши свои функции чтения и записи и посылай им команды/принимай от них.Чем это не подходит?

Тогда уточняю: вы предлагаете написать скетч, залить его и потом общаться с контроллером, а он уже там сам будет читать/шить еепром. Так ?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Совершенно верно. Но только не отдельный скеч писать, а дописать этот функционал в том, что должен там работать изначально. Надеюсь понятно выразился.

толстый
Offline
Зарегистрирован: 10.02.2020

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

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Не понятно по какому принципу данные EEPROM менять не зная исходного кода скеча))) 
Ну да ладно, мое дело предложить - Ваше отказаться. Обмен «любезностями» завершён. Буду следить за успехами.

толстый
Offline
Зарегистрирован: 10.02.2020

Идеи - это хорошо, а хорошие идеи -вааааще отлично.(почти по классике:)

Получается то, как видите, кривовато и нестабильно. Судя по всему если во флеш есть программа(кроме загрузчика), то читает с мусором даже на свеже стёртой. Ну или я не тем открываю. На полностью стёртой по SPI и восстановленным загрузчиком - типа норм. Но как её запихнуть в просессинг ещё не нашёл. Докопался до exec(cmd), но пока глухо. 

Green
Offline
Зарегистрирован: 01.10.2015

ua6em пишет:

не читает оно через бутлоадер, точнее читает хрень те что


А должно? А поддержка есть в буте? Отож!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

ua6em пишет:

не читает оно через бутлоадер, точнее читает хрень те что


А должно? А поддержка есть в буте? Отож!

так я об этом еще в посте #28 говорил, так как автор этой затеи утверждает, что оно работает хотелось бы увидеть под каким бутлоадером...
PS Программаторы STK500v1-v2 на жабе даже через вэбморду работают

толстый
Offline
Зарегистрирован: 10.02.2020
толстый пишет:
 
"Всё чудесатее и чудесатее"(С)
 
А эта строка точно еепром читает? Хоть в логах и пишет о "avrdude: reading eeprom memory:", но что то есть сомнения.
 
Стер полностью контроллер через CodeVisionavr  и самолепный avrisp mkii. Залил загрузчик и-и-и-и в текстовом файле теперь только куча яяяяяяяяяяя(считать сколько их там не стал)   PS ровно 1024:)
 
 
толстый пишет:
 
Получается то, как видите, кривовато и нестабильно. Судя по всему если во флеш есть программа(кроме загрузчика), то читает с мусором даже на свеже стёртой из IDE
 
 
Залил блинк. Размер 924 байта. Считывается куча мусора  и в конче куча "я" количеством 101 шт. :(
Жаль, хорошая была идея. 
Ещё и цитирование кривое получилось:( Походу, не судьба.
b707
Offline
Зарегистрирован: 26.05.2017

что-то какие-то мудовые страдания....

Если дудка умеет читать ЕЕПРОМ - значит это будет работать.

Вывод - осталось найти мануал к дудке и вдумчиво прочитать.

толстый
Offline
Зарегистрирован: 10.02.2020

b707 пишет:

что-то какие-то мудовые страдания....

Если дудка умеет читать ЕЕПРОМ - значит это будет работать.

Вывод - осталось найти мануал к дудке и вдумчиво прочитать.

Не, это метод "научного тыка". Применяется теми, кто не умеет в даташиты. :)

ИМХО. Мануал не поможет , если эту возможность не сделали в загрузчике.

Green
Offline
Зарегистрирован: 01.10.2015

b707 пишет:

Если дудка умеет читать ЕЕПРОМ - значит это будет работать.

Дудка то умеет. Умеет ли бут? В Оптибуте открытым текстом:

/* What you lose:                                         */
/*   Implements a skeleton STK500 protocol which is       */
/*     missing several features including EEPROM          */
/*     programming and non-page-aligned writes            */

 

b707
Offline
Зарегистрирован: 26.05.2017

три минуты поиска в гугле...

Открываем ардуино ИДЕ, подключаем Ардуину (у меня Нано). Берем первый поавшийся скетч, компилируем прошиваем. Смотрим на выхлоп Ардуино ИДЕ

Скетч использует 598 байт (1%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.

T:\Arduino\hardware\tools\avr/bin/avrdude -CT:\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM25 -b57600
 -D -Uflash:w:D:\Users\DDU\AppData\Local\Temp\arduino_build_834470/sketch_jun20a.ino.hex:i 

Вот эта строчка нам и нужна!  - все что после -D просто меняем на

-U eeprom:r:myfile.hex:i

Это чтобы параметры не подбирать, а сразу взять заведомо рабочие.

Получаем

T:\Arduino\hardware\tools\avr/bin/avrdude -CT:\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM25 -b57600 -Ueeprom:r:myfile.hex:i

Запускаем:

T:\Arduino\hardware\tools\avr\bin>T:\Arduino\hardware\tools\avr/bin/avrdude -CT:
\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM25 -
b57600 -Ueeprom:r:myfile.hex:i 

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "T:\Arduino\hardware\tools\avr/etc/av
rdude.conf"

         Using Port                    : COM25
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
W   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  36
00 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  45
00 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0
 0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0
 0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading eeprom memory:

Reading | ################################################## | 100% 2.25s

avrdude: writing output file "myfile.hex"

avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

ищем в текущем катлоге файл myfile.hex

:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:20004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:20006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:20008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:2000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:2000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:2000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:20010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:20014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:20016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:20018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:2001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:2001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:2001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:20020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:20022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:20024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:20026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:20028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:2002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:2002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:2002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:20030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:20032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:20034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:20036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:20038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:2003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:2003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:2003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:00000001FF

ЕЕПРОМ прочитан

Читал через USB без программатора, через бут

Конфиг:

Ардуино ИДЕ 1.8.3
Ардуино Нано atmega328 Old bootloader

и прямые руки...