Цитата(KRS @ Aug 3 2006, 17:58)

Поставте в начале функции main вызов функции проверки и программирования флеша
если такой способ почему то не устаривает (интерсно почему)
то проще всего переписать cstartup
Да меня бы наверное устроило поставить вызов проверки в начале main(), но этот способ добавит геморроя, если понадобится изменить firmware programmer (FP) без изменения самой firmware.
Т.е. в идеале имеем возможность прошивать FP и firmware независимо друг от друга.
Как это используется. Через Ethernet посылается прошивка основной программы либо программатора; основная программа, принявшая данные по Ethernet, записывает их во внешнее хранилище, помечая в сигнатуре необходимость перепрошивки, и reset'тится. После сброса контроллера запускается cstartup, оттуда __low_level_init(), где выясняется, нужно ли перепрошиваться и в случае необходимости запускается FP и нужные страницы flash контроллера перепрошиваются. Причем, если __low_level_init() загружает сам FP уже из внешнего хранилища (если он там есть, если нет, то производится копирование в RAM и запуск имеющегося), то было бы несложно вызывать FP, как бы ни изменился FP и/или firmware.
А в случае с проверкой из main() любое изменение в одном или в другом месте влечет за собой перезаливку и того, и другого, т.к. оба куска уже завязаны друг на друга.
А как переписать cstartup? Что там нужно делать, что нет, как инициализировать сегменты? Хотя, там вроде может быть много работы, есть ли смысл заморачиваться? Ведь предполагается использовать FP в любых проектах, где это потребуется, а не в одном-двух, и заранее неизвестно, что будут из себя представлять эти проекты...