Наконец дошли руки, разобрался. Сделал вариант 2, все работает. Вдруг кому понадобится, пишу как:
Структура использования памяти EPCS
Код
| ... |
0x400000 | app SW | <- *.flash - загружается нашим прошивальщиком с PC
| ... |
0x200000 | app HW | <- *.rbf - загружается нашим прошивальщиком с PC
| ... |
| factory SW | <- *.sof, *.elf - загружаются стандартной утилитой Flash Programmer
0x000000 | factory HW |
Загрузка происходит следующим образом:
- стандартным образом загружается factory HW образ и factory SW образ
- загрузчик (factory) проверяет наличие программатора в течение нескольких секунд,
если да, разрешает работу программатора и загрузку обновленных прошивок, после чего
запускает app HW; если программатор не обнаружен, сразу запускает app HW по адресу 0x00200000.
- app HW содержит внутреннюю память, проинициализированную копировщиком (boot copier), запускает его.
- boot copier загружает app SW по адресу 0x00400000, запускает целевое приложение.