1. 程式人生 > 實用技巧 >at91系列:bootstrap

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依次掃描如下外設:

  1. Data-Flash (SPI0_CS0)
  2. SD Card
  3. NAND Flash
  4. Data-Flash (SPI0_CS1)
  5. 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的配置檔案。