[Atmel][Sama5d3-xp] - 簡介U-Boot

對於Sama5d3這塊板子來說,uboot是在bootstrap之後執行的,可視為第三階段的bootloader,uboot使用的非常廣泛,尤其是在Linux的環境下,幾乎是所有開發者的優先選擇
uboot負責配置主要介面以及帶起kernel(也可以從bootstrap帶起kernel,但這不是一般狀況故不在此討論)

前置作業

要build在開發版上跑的程式必須先有cross compiler,而sama5d3是ARM Cortex-A5的CPU,因此用的gcc如下

sudo apt-get install gcc-arm-linux-gnueabi

安裝完cross compiler之後必須下載uboot的src code(當然必須先有git相關指令,這部份請自行安裝)

sudo apt-get git://github.com/linux4sam/u-boot-at91.git

註1: 也可建立完整的toolchain來得到cross-compile gcc

建置程式

因為Sama5d3預設本來就是跑Linux的,因此建置u-boot-at91過程和Linux的bootstrap/uboot基本上沒什麼太大的不同
你可以在抓下來的程式碼當中的configs資料夾內發現許多default configuration files
若要從flash boot輸入以下指令

make mrproper
make sama5d3_xplained_nandflash_defconfig

若要從SD/MMC card boot輸入以下指令

make mrproper
make sama5d3_xplained_mmc_defconfig

另外也可以使用以下指令進行產生客製化的.config檔,細部使用不在此篇敘述

make menuconfig

最後輸入以下指令,會在最上層目錄看到u-boot.bin,將bin檔放置flash當中的u-boot位置即可在bootstrap執行完成後,跳到此段程式執行

make CROSS_COMPILE=arm-linux-gnueabi-

燒錄到nandflash

建置完u-boot之後可看到最上層目錄多出了一個u-boot.bin,即是我們要燒錄到flash的檔案

我們可以到atmel官網下載SAM-BA工具,檔名為SAM-BA 2.16 for Linux,下載完之後解壓縮可得到sam-ba_cdc_linux資料夾,裡面的執行檔(sam-ba or sam-ba_64)即是我們要使用的工具

首先先把NAND chip select(JP5)設為0接著RESET,若從UART看到RomBoot的log代表成功進入sam-ba監控模式,接著必須把JP5再設回1

接下來要啟動sam-ba,正常打開應可看到Select connection有相關資訊,若沒有的話可能是權限問題,可以用sudo開啟此檔案

1
sudo ./sam-ba

開啟後畫面如下,將板子選至at91sama5d3x-xplained後按Connect

將標籤頁選至NandFlash,Scripts選擇Enable NandFlash,之後按Execute,沒看到紅色字代表成功

在燒uboot前需先Enable OS PMECC parameters

接著就可以燒uboot了,先選擇Send File Name開啟要燒的u-boot.bin,接著將Address設為0x40000,最後按Send File,若沒看到紅字代表成功

最後按RESET可以從UART看到log進入到uboot,且最終會停在可輸入指令的狀態(輸入?可顯示可使用的指令)