В нашем случае процессор стартует по схеме загрузки со встроенной неизменяемой памяти ROM
BMS = 1, Boot on Embedded ROM
The system boots using the Boot Program.
• Boot on slow clock (On-chip RC or 32,768 Hz)
• Auto baudrate detection
• Downloads and runs an application from external storage media into internal SRAM
• Downloaded code size depends on embedded SRAM size
• Automatic detection of valid application
• Bootloader on a non-volatile memory
– SPI DataFlash® connected on NPCS0 and NPCS1 of the SPI0
– 8-bit and/or 16-bit NANDFlash
• SAM-BA® Boot in case no valid program is detected in external NVM, supporting
– Serial communication on a DBGU
– USB Device Port
Загрузчик встроенный в at91sa9260 стартует на низкой частоте 32 кГц от встроенного RC осциллятора, инициализирует DBGU (последовательный порт) и USB device порт. Затем он ищет начальный загрузчик на внешних устройствах:
dataflash на cs0, затем, если правильная последовательность не обнаружена, на cs1. Признаком правильного загрузчика служит наличие восьми векторов исключений - это должны быть инструкции безусловного перехода (b-branch) или загрузки регистра (LDR), исключение - шестой вектор - он содержит размер имиджа. Если обнаружена правильная последовательность, код загружается в SRAM, за этим следует remap памяти и переход на первый адрес в SRAM.
Если правильная последовательность не обнаружена начинается поиск загрузчика на NAND flash.
В конце если загрузчик нигде не обнаружен выполняется код SAM-BA® Boot - он ожидает транзакции на USB device и DBGU одновременно.
Обратите внимание на исключение - шестой вектор. Он должен содержать правильный размер иначе нормального старта системы не произойдет. После сборки bootstrap от atmel он не содержит правильный размер - именно поэтому для записи его в dataflash через samba требуется специальный скрипт, который выбирается из выпадающего меню а не простая загрузка бинарного имиджа. Другой вариант - вручную в hex-редакторе исправить его на правильный (по смещение 0×14 от начала файла)
размер файла.
Размыкая перемычку J6 (или выполняющие аналогичные функции J13, J14) мы разрываем цепь загрузки соответствующего внешнего носителя, не найдя правильную последовательность программа boot rom переходит к выполнению кода SAMBA.
1. Перейти в директорию board
2. Выбрать свою плату перейдя в нужную поддиректорию
3. Выбрать тип носителя с которого будет загрузка перейдя в нужную директорию
4. Выполнить make
Например: чтобы скомпилировать загрузчик для размещения в DataFlash для платы
AT91SAM9260-EK, наберите следующие команды:
cd board/at91sam9260ek/dataflash
make clean
make
или если вы хотите явно указать cross-компилятор :
make CROSS_COMPILE=<path_to_cross-compiler/cross-compiler-prefix->
path_to_cross-compiler нужен только если компилятор не находится по пути PATH.
cross-compiler-prefix- это обычно arm-linux- or arm-elf-
/home/starterkit/wiki.starterkit.ru/data/pages/bootstrap.txt · Последние изменения: 2009/04/11 15:52 От ms
Дискуссия
Bootstrap - начальный загрузчик
В нашем случае процессор стартует по схеме загрузки со встроенной неизменяемой памяти ROM
Загрузчик встроенный в at91sa9260 стартует на низкой частоте 32 кГц от встроенного RC осциллятора, инициализирует DBGU (последовательный порт) и USB device порт. Затем он ищет начальный загрузчик на внешних устройствах:
Обратите внимание на исключение - шестой вектор. Он должен содержать правильный размер иначе нормального старта системы не произойдет. После сборки bootstrap от atmel он не содержит правильный размер - именно поэтому для записи его в dataflash через samba требуется специальный скрипт, который выбирается из выпадающего меню а не простая загрузка бинарного имиджа. Другой вариант - вручную в hex-редакторе исправить его на правильный (по смещение 0×14 от начала файла) размер файла.
Размыкая перемычку J6 (или выполняющие аналогичные функции J13, J14) мы разрываем цепь загрузки соответствующего внешнего носителя, не найдя правильную последовательность программа boot rom переходит к выполнению кода SAMBA.
Процесс сборки начального загрузчика bootstrap
Архив с исходниками и инструкцию по сборке на английском языке можно найти по адресу AT91Bootstrap application note