Николай Коровин (24.06.2017 00:39, просмотров: 7286)
Кто-нибудь делал настройки девайса при помощи эмуляции USB-харда/флопа? Делается массовый сторож (скажем, через V-USB, если на Меге --> ) но вместо SD дальше типа как-то так: http://we.easyelectronics.ru/AVR/usb-fleshka-na-atmega8-i-v-usb-ot-idei-k-gotovomu-ustroystvu.html
Хардкодится системная область. Я в три сектора по 512 уложился, но оно, хотя и соответствует формальным спецификациям FAT, но безбожно нарушает негласные умолчания, поэтому работает не везде (в контр не шил, тестил на волшебной коробочке Zalman ZM-VE200). Даже линух увидел, но всосал только как read-only. Правда, это было напрасное задротство, потому что объём прошивки не меняется, отдавать 1 или 8 одинаковых секторов, забитых константами.
Короче, это всё была лирика, а суть в том, что контр при доступе к системной области на чтение отдаёт её, а при доступе на запись -- говорит, мол, всё сделано, хозяин, а сам ессно ни байта нигде не меняет, потому что нету никакой ложки.
Так вот, вся фишка в том, что именно записано в этой системной области. А записано в ней то, что у нас в корне лежит один файл, который занимает единственный существующий на диске кластер. Остальные или забиты константой Bad, или просто после него диск кончается.
И вот доступ к этому кластеру обрабатывается уже "всерьёз". Если приказано в него записать -- контр парсит содержимое и извлекает оттуда настройки прибора. Если приказано читать -- вытягивает из EEPROM настройки и отдаёт этот типа-как-файл.
Это был у меня 4-й сектор, итого этот "иногда почти работающий" образ потянул на два килобайта всего, хотя, как я сказал выше, это значения не имеет. Можно и стандартную дискету (с FAT12 обычного её размера) так же захардкодить, просто задать "от номера такого-то до такого-то отдавать сплошняком константу такую-то".
Т. е. получаем весьма небольшой плевочек кода, который эмулирует дисковое устройство, на котором всегда виден один файл, хоть стирай, хоть форматируй. И этот файл можно редактором открыть, поменять настройку и пересохранить. Распарсить текст, пришедший на контр от компа -- тоже не особо сложная задача, сформировать "на отдачу" -- тем более.
Кто-нибудь так делал уже? Понравилось или я хернёй занимаюсь?