Реализовал приём и запись прошивки во флеш. Логика следующая:
Бутлодер расположен в конце флешки начиная с адреса 0x177FFF, но его стартап расположен по адресу 0x100000. Последняя страница флешки зарезервирована для хранения резервной копии стартапа бутлодера, необходимой для переключения из user режима в boot.
Пользовательская программа слинкована так что в 1 странице флеша (с адреса 0x100000) лежит её стартап и далее сама программа (с адреса 0x100100).
Стартапы стандартные, взяты из примеров в IAR.
По отдельности обе прошивки (user и boot), прошитые самбой, работают нормально.
Программа на компьютере берёт bin-файл скомпилированный в IAR, разбивает его на страницы и отсылает блоками по 64 байта в ком-порт контроллера, бутлодер набирает буфер страницы, после чего пишет его во флеш. Первая страница (со стартапом) пишется в последнюю очередь.
Проверял то, что записывается во флеш - совпадает с bin-файлом пользовательской прошивки байт в байт начиная с адреса 0x100000.
После перезагрузки пользовательская программа не запускается. Нужны ли ещё какие то манипуляции после записи прошивки во флеш?
Отладчика нет, к сожалению
Всё заработало, косяк был в неправильном порядке байт в 32 битных элементах буфера записи, тот же косяк был и при последующем чтении флеша, поэтому не заметил. Всем спасибо