Цитата(Зайцев Иван @ Aug 29 2008, 09:51)

Назначение RomBoot Первичная инициализация, а имено инициализация SDRAM, и загрузка нормального загрузчика. Поэтому и ограничение на размер первичного загрузчика - не больше 12к.
А лучше тогда приложи полный листинг.
Что бы посмотреть код
Посмотри как сделано у Atmela.
Тут эта тема поднималась - поиши
Глюки и грабли обычно из-за неправильной инициализации SDRAM и частот
Забудем на время про RomBoot.
Исходные данные: Есть AT91RM9200+AT45DB321, во флешке уже прошит образ микропрограмки (ассемблерный код приводил выше), которая просто зажигает светодиод.
Все. Ни чего больше не нужно для того чтобы загрузить из DataFlash в SRAM - ни SDRAM, ни RomBoot.
Про ограничение в 12 кБ я прекрасно помню. Странно то, что программка размером в 4 кБ уже не запускается (она нормально загружается из DataFlash, это видно по осцилографу, но ей не передается управление, а управление передается в DBGU). При этом точно такая же програмка, но без хвоста из "B InitReset" (размером например <2 кБайт) прекарсно загружается. Хвост может состоять из NOP-ов, это не важно. Важно то что если размер образа превышает 2,5-4 кБайт, то образ считывается но ему не передается управление. А если меньше 2.5 кБайт, то ему нормально передается управление.
Четкой границы (когда программа перестает загружаться) найти не удалось. При размере образа примерно 4 кБайт, получилась такая ситуевина, что программа то нормально запускается, то не запускается. Это видимо связано с тем что время считывания из Флэшки варируется незначительно (это видно по осциллографу). Т.е. во время загрузки из флэшки в SRAM происходит какое то событие (прерывание или таймаут таймера), после которого алгоритм загрузчика (тот что зашит в ROM) решает не передавать управление программе считанной в SRAM а перейти в DBGU.
Я очень прошу, посмотрите кто может - ткните осциллографом на чип-селект DataFlash на готовой отладочной плате: интересует сколько времени выполняется загрузка из флэшки, и сколько из этого времени тратится на определение готовности флэшки (когда сразу после старта проц. периодически запрашивает байт статуса). У меня это время занимает 10-30 мс, может быть это слишком много.
Спасибо
На шине SPI я вижу следующую картинку:
1. После ресета через 100 мс проц. кидает клоки на 40 байтовых интервалов (видимо чтение первых 8 векторов)
2. В течение 20 мс с периодом 10 мкс проц кидает клоки на 2 байтовых интервала (видимо запрос байта статуса)
3. В течение 0,75мкс*РазмерОбраза проц кидает клоки для чтения образа из DataFlash
...Не понятно зачем он так много запрашивает байт статуса (пункт 2).