Цитата(crack_enigma @ Jul 27 2009, 08:54)

то есть если я правильно понимаю само загрузится из флеши на SPI первые 4 кб ? (с адресов 0х1000 0000 до 0х1000 0000 + 0х1000). На этих 4кнеобходимо настроить тактирование, стеки , и загрузить из флеши в SDRAM какую либо программу (часть данных флеши или всё что там есть). передать управление на неё можно просто вызвав функцию по адресу SDRAM ( 0x2000 0000). ?
Само загрузит столько, сколько пропишите на месте reserved вектора. Но не более, чем физически есть памяти, естественно.
И не с адреса 0х10000000 (откуда вообще эта цифра?), а с 0, т.к. ремап уже сделан.
Управление после загрузки передаете любым способом, можно и вызовом фиктивной функции.
Цитата(crack_enigma @ Jul 27 2009, 08:54)

Но есть 1 НО: SDRAM c адреса 0x2000 0000 если в boot программе из SRAM ссылаться на SDRAM для Undefined_Handler то нужен жесткий адрес по которому располагается этот обработчик. Так вот как IAR заставить его там расположить по требуемому адресу? Или есть более рациональное решение?
Также интересует ситуация: по хорошему boot программа из флеши должна уметь обновлять прошивку основной. При этом процессе может случиться Undefined_Handler и результат плачевен. (ведь в SDRAM пусто - самаписная boot вся в sram). Как разрешить подобную ситуацию?
Ничего не понял, если честно. Почему так именно Undefined_Handler покоя не дает?
После загрузки, основная программа может совершенно спокойно записать в область векторов что-то свое.
На самом деле, нужно сделать два совершенно раздельных проекта:
1. Boot. Делает минимальную настройку процессора, загружает программу в SDRAM, передает управление.
2. Основная программа. Скомпилирована для работы из SDRAM, содержит отдельный asm-файл с областью векторов, который средствами линкера укладывается по нулевому адресу.