at91系列:bootstrap
AT91Bootstrap是Atmel AT91 SoC的第二級引導載入程式,主要進行硬體的初始化,如時鐘配置、GPIO設定、DRAM初始化,從指定的啟動區(NAND FLASH、序列FLASH(與AT25相容的Data-Flash)、EEPROM、SD卡等)下載程式碼到主儲存器並啟動它。
Boot策略
AT91集成了一個支援對映的基於ROM的Bootloader。系統復位時,根據BMS(Boot Mode Select)引腳狀態使能。Boot ROM Code依次掃描如下外設:
- Data-Flash (SPI0_CS0)
- SD Card
- NAND Flash
- Data-Flash (SPI0_CS1)
- EEPROM
如果外設存在有效的啟動程式,那麼將程式碼拷貝到內部的SRAM並執行。Boot Code通過檢查8箇中斷向量來確定程式碼是否有效。
如果沒有有效的應用程式,則啟動SAM-BA監視器。它等待USB、DBGU串列埠上的資料,可以使用SAM-BA工具燒錄目標板上的FALSH、EEPROM。
BMS=1,ROM Code啟動流程:
Build AT91Bootstrap from sources:
建立ARM編譯工具鏈:
Ubuntu系統,可以通過下述操作建立交叉編譯環境(從3.9.3開始, AT91bootstrap需要系統支援Python3.)
• sudo apt-get install gcc-arm-linux-gnueabi • export CROSS_COMPILE=arm-linux-gnueabi-
Build AT91Bootstrap:
1. 下載官方AT91Bootstrap原始碼
可以從如下連結下載原始碼:https://github.com/linux4sam/at91bootstrap
2.Configure AT91Bootstrap(9260為例)
在board/sam9x60ek資料夾下包含如下檔案:
1 sam9x60ekdf_qspi_uboot_defconfig 2 sam9x60eksd_uboot_defconfig 3 sam9x60eknf_uboot_defconfig
注: qspi指的是 quad-SPI serial flash,sd指的是SD/MMC卡,nf指的是NAND-Flash。
假如配置一個基於NAND-Flash的U-Boot:
$ make mrproper
$ make sam9x60eknf_uboot_defconfig
$ make mrproper執行結果:
1 CLEAN obj and misc files! 2 CLEAN configuration files! 3 CLEAN binary files!
make sam9x60eknf_uboot_defconfig執行結果
#
# configuration written to .config
#
#
# make dependencies written to .auto.deps
# See top of this file before playing with this auto-preprequisites!
#
make mrproper clean掉生成的obj以及其他配置檔案。
make sam9x60eksd_uboot_defconfig會生成一個.config的配置檔案。