ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
740482 Топик полностью
Apтём (02.03.2017 18:48, просмотров: 200) ответил Adept на бутлодырь...
Местами не соглашусь... 
а оттуда шить во флеш, пока заполняется другая страница RAM-буфера.
Проще сделать по другому 1) принять пакет с одной или несколькими страницами (сколько ОЗУ не жалко) 2) записать принятое во flash 3) проверить что записалось 4) сообщить компу результат операции Повторить шаги 1)-4) пока вся область flash не прошьётся. Можно предусмотреть случай когда flash не шьётся - ввести счётчик ошибок, припревышении которого больше не шить.
Скорость по UART нужно поменьше
Скорость побольше - сократим время на передачу и соответственно на весь процесс.
чтобы успевать шить во флешь, пока параллельная страница RAM-буфера не заполнилась,
А xmega сможет выполнять код из flash когда шьётся страница (Она ж не Cortex-M чтобы из ОЗУ программу исполнять)? Если может, то можно и так (хотя зачем такое усложнение?).
ибо тормозить поток в UART-канале нельзя.
Это почему? ПК пакет передал - и ждёт ACK/NACK. Как получит - передаёт следующий пакет. Если не подтвердили за какое-то время - высылает повторно по таймауту. P.S. Лучший путь - подключить к xmega SPI Flash и начинать обновлять только после приёма полного образа flash (образ flash можно предварительно проверить на CRC и если не совпадает, вообще не писать).