Цитата(Waso @ Nov 21 2007, 09:13)

1. Если я ставлю линкеру например -DROMSTART=00008000 в программе, то размер выходного бинарника не меняется. Значит вначале файла идут вектора, а затем программа как и в обычном случае, но со смещенными переходами?
Трудно сказать, не видя файла линкера. Зависит от того, как описан сегмент векторов - он либо линкуется в нулевые адреса ( -Z(CODE)INTVEC=00-3F ) либо начиная с ROMSTART (-Z(CODE)INTVEC=ROMSTART-ROMEND или подобное).
Цитата(Waso @ Nov 21 2007, 09:13)

2. Если я хочу прошить в чистый кристалл сразу и прогу и бутлодер, то как быть с векторами программы? Получается, нужно самому в этом случае создавать табличку векторов перед началом кода программы чтобы все это вместе вело себя также как и после перепрошивки проги бутом.
Я опишу как делаю я. Насколько это правильно - со стороны, наверное, виднее. Я использую AES Loader и на мегах и на ARMах. У меня загрузчик и приложение - два отдельных проекта. Я прошиваю сначала загрузчик, потом приложение. В процессе этого заодно тестируется канал связи. Если мне надо прошивать все сразу программатором (пока нужно было только на мегах) - я прошиваю загрузчик без лок-битов, прошиваю загрузчиком приложение, убеждаюсь, что все работает, считываю программатором всю память, открываю полученный .hex текстовым редактором и удалаю все строки, содержащие одни 0xFF. Получаю прошивку для масового производства. В голове крутится еще такой вариант - если прошиваем .hex, то можно "склеить" два файла (загрузчика и приложения) текстовым редактором или утилитой вроде srecord. Если прошивка делается из ИАРа через JTAG, то наверняка можно склеить полученный файл загрузчика с приложением при помощи postlink (не пробовал, не подскажу).
Про вектора - они находятся в начале приложения, загрузчик их копирует в начало ОЗУ и делает ремап. Поскольку приложение - отдельный проект, то для него естественным образом получаются и таблица векторов, и инициализация памяти.