[[bootstrap]]
 

Bootstrap

Необходимо заполнить.

Дискуссия

Alexander, 2009/04/26 13:13
Bootstrap - начальный загрузчик

В нашем случае процессор стартует по схеме загрузки со встроенной неизменяемой памяти 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 порт. Затем он ищет начальный загрузчик на внешних устройствах:

  1. dataflash на cs0, затем, если правильная последовательность не обнаружена, на cs1. Признаком правильного загрузчика служит наличие восьми векторов исключений - это должны быть инструкции безусловного перехода (b-branch) или загрузки регистра (LDR), исключение - шестой вектор - он содержит размер имиджа. Если обнаружена правильная последовательность, код загружается в SRAM, за этим следует remap памяти и переход на первый адрес в SRAM.
  2. Если правильная последовательность не обнаружена начинается поиск загрузчика на NAND flash.
  3. В конце если загрузчик нигде не обнаружен выполняется код SAM-BA® Boot - он ожидает транзакции на USB device и DBGU одновременно.

Обратите внимание на исключение - шестой вектор. Он должен содержать правильный размер иначе нормального старта системы не произойдет. После сборки bootstrap от atmel он не содержит правильный размер - именно поэтому для записи его в dataflash через samba требуется специальный скрипт, который выбирается из выпадающего меню а не простая загрузка бинарного имиджа. Другой вариант - вручную в hex-редакторе исправить его на правильный (по смещение 0×14 от начала файла) размер файла.

Размыкая перемычку J6 (или выполняющие аналогичные функции J13, J14) мы разрываем цепь загрузки соответствующего внешнего носителя, не найдя правильную последовательность программа boot rom переходит к выполнению кода SAMBA.

Процесс сборки начального загрузчика bootstrap

Архив с исходниками и инструкцию по сборке на английском языке можно найти по адресу AT91Bootstrap application note

  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
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki