Цитата(mempfis_ @ Jul 29 2010, 12:28)

1. Правильно ли я понимаю что для ARM бутлоадер это обычная программа (в отличии от AVR) которая может начинаться с какого угодно адреса?
3. Если п.1 верный то где во flash лучше располагать бутлоадер (в начале или в конце)?
Обычно процессор все-таки стартует с загрузчика, поэтому в начале.
Цитата(mempfis_ @ Jul 29 2010, 12:28)

2. Чтобы иметь возможность прошить flash собственно подпрограммы прошивки flash должны находится в оперативной памяти?
Да.
Цитата(mempfis_ @ Jul 29 2010, 12:28)

4. Как быть со стартапом приложения? Если я в бутлоадере инициализирую стеки, тактовый генератор и т.д. то можно ли исключить стартап из приложения и просто вызвать main? Или лучше произвести сброс переферии и вызвать приложение со стартапом?
Ну уж стеки точно стоит инициализировать заново, а с периферией смотрите сами, как удобнее.
Цитата(mempfis_ @ Jul 29 2010, 12:28)

5. Достаточно ли будет выделить в flash сегмент и размещать в нём основную программу или в startup и LowLevelInit() нужно будет както дополнительно учитывать что в МК живёт ещё и бутлоадер?
Зависит от п.4
Цитата(mempfis_ @ Jul 29 2010, 12:28)

Теперь мои соображения по поводу бутлоадера - поправте если гдето буду не прав:
В общем-то все правильно, только почему у загрузчика нет никакой самостоятельности в плане запуска программы?
В моем варианте загрузчик действовал по такому алгоритму:
1. Проверка состояния внешнего пина, если имеется нужный уровень - переходим к п.4
2. Проверка наличия сигнатуры по определенному адресу RAM, при совпадении переходим к п.4
3. Проверка CRC имеющейся во флеш программы, если все в порядке - запускаем ее на исполнение
4. Ждем загрузку