Bootstap-v1.15移植流程

Bootstrap簡介

Bootstrap用於加載一段程序到SDRAM運行,它主要用於加載u-boot。它可以稱作一級boot,實際上芯片內部還有個BOOTROM,也就是SAM-BA的啓動程序。關於芯片內部BOOTROM程序的運行流程和詳細描述,請參考數據手冊的相關章節(Boot Program)。
Bootstrap的代碼由芯片上的BOOTROM根據一定的規則(0×14處的數據由特殊含義,這也是燒寫一級boot時需要選擇send boot file的原因)加載到內部SRAM運行。因SAM926x內部SRAM的限制,Bootstrap的代碼很短。其主要就是初始化SDRAM和相關存儲器(Data Flash, NAND),然後加載u-boot到SDRAM指定位置並開始運行u-boot。

Bootstrap源代碼由共用的硬件驅動,比如SDRAM,NAND,DATA Flash等,庫文件,頭文件等組成。重點關注的地方是board文件夾,也就是不同板子的項目所在。根據板子的啓動配置不同,同一個板子的文件夾下有不同的目標配置,比如dataflash與nandflash。進入不同的目標配置文件就可以看到該目標配置的配置文件(*.h)及Makefile。

新的Bootstrap代碼中包含了一個PDF格式的說明文件,包含在doc文件夾下。

 

開發環境

> Linux環境: untu 10.4。

>Windows環境:Windows XP SP3。

>Bootstrap版本:v1.15。

>交叉編譯工具:Winarm。

 

下載Bootstrap代碼

Bootstrap-v1.15下載地址:

ftp://www.at91.com/p /at91bootstrap/AT91Bootstrap1.15.zip

 

編輯Bootstrap代碼

1.      修改U-boot加載地址

修改文件 /Bootstrap-v1.15/board/at91sam9g20ek/nandflash/at91sam9g20ek.h

/* ******************************************************************* */

/* BootStrap Settings                                                  */

/*                                                                     */

/* ******************************************************************* */

#define IMG_ADDRESS    0x20000                    /* Image Address in NandFlash */

#define    IMG_SIZE            0x40000                     /* Image Size in NandFlash */

2.      配置Bootstrap的DEBUG信息顯示與否

修改文件 /Bootstrap-v1.15/board/at91sam9g20ek/nandflash/at91sam9g20ek.h

/* ******************************************************************* */

/* Application Settings                                                */

/* ******************************************************************* */

#define CFG_DEBUG                          /* 打印DEBUG信息 */

/* ******************************************************************* */

/* Application Settings                                                */

/* ******************************************************************* */

#undef CFG_DEBUG                           /* 不打印DEBUG信息 */

3.      增加自定義的NANDFLASH信息定義

修改文件 /Bootstrap-v1.15/incl? /nand_ids.h

static str t SNandInitInfo NandFlash_InitInfo[] = {

    {0xecf1, 0x400, 0x20000, 0x800, 0x40, 0x0, "K9F1G08 /0"},

       {0xecda, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08M/0"},

       {0xecaa, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08R0A/0"},

       {0x2cca, 0x800, 0x20000, 0x800, 0x40, 0x1, "MT29F2G16AAB/0"},     

       {0x2cda, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08AAC/0"},

       {0x20aa, 0x800, 0x20000, 0x800, 0x40, 0x0, "STMNAND02GR3B/0"},

       {0x2caa, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08ABD/0"},

       {0,}

};

下載安裝配置WinARM

WinARM下載地址:http://www.siwawi.ar i.uni-kl.de/avr_projects/arm_projects/WinARM-20060606.zip

安裝WinARM編譯工具

> 解壓縮winarm.rar

> 將解壓後的winarm目錄拷貝到C盤設定環境變量

> path變量添加說明:

> 右擊:我的電腦->屬性->高級

> 編輯“環境變量”->系統變量

> 雙擊path變量,在變量值的前面入:C:/WinARM/bin ;C:/WinARM/utils/bin;如圖1所示:


   圖 1

此時,winarm的編譯器已經配置好了,現在就可以進入DOS命令行窗口裏運行arm-elf-gcc相關命令,對at91sam9260的bootstrap程序進行編譯了。

 

編譯Bootstrap代碼

由於芯片內部資源的原因,9260的Bootstrap BIN文件必須要小於4K(9G20無此要求)。有兩種方法可以實現:

1. 用arm-linux-gcc 4.3.2編譯,修改Bootstrap的源碼。

> 增加優化等級

CCFLAGS=-g –O2 -Wall -D$(TARGET) -I$(INCL)

ASFLAGS=-g -c –O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)

> 屏蔽不用的NANDFLASH信息定義

static str t SNandInitInfo NandFlash_InitInfo[] = {

    {0xecf1, 0x400, 0x20000, 0x800, 0x40, 0x0, "K9F1G08 /0"},

       //{0xecda, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08M/0"},

       //{0xecaa, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08R0A/0"},

       //{0x2cca, 0x800, 0x20000, 0x800, 0x40, 0x1, "MT29F2G16AAB/0"},

       //{0x2cda, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08AAC/0"},

       //{0x20aa, 0x800, 0x20000, 0x800, 0x40, 0x0, "STMNAND02GR3B/0"},    

       //{0x2caa, 0x800, 0x20000, 0x800, 0x40, 0x0, "MT29F2G08ABD/0"},

       {0,}

};

2. 用Winarm編譯。

> 將下載的bootstrap壓縮包解壓至一個沒有中文名的路徑下。例如放至E:/。

> 點擊開始->運行->輸入cmd,進入DOS命令行窗口。

> 進入E:/Bootstrap-v1.15/board/at91sam9g20ek/nandflash目錄,如圖2所示:


   圖 2

> 在提示符後輸入:

/opt/Bootstrap-v1.15/board/at91sam9g20ek/nandflash# make clean

清除以前留下中間文件和BIN文件。如圖3所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
圖 3

> 在提示符後輸入:

/opt/Bootstrap-v1.15/board/at91sam9g20ek/nandflash#make all

生成新的BIN文件。如圖4所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
圖 4

 

下載Bootstrap到目標板

1. 首先得安裝SAME-BA。安裝詳細請自己GOOGLE,在此不累述。

2. 將目標板J8的跳線帽撥掉,重新上電或者按RESET按鍵。此時任務欄右下角將會出現熱插撥硬件的標誌。如圖5所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
圖 5

3. 雙擊 圖標,選擇芯片類型。如圖6所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
圖 6

4. 初始化NANDFLASH。如圖7所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
   圖 7

5. 通過SAM-BA燒寫Bootstrap到目標板。如圖8所示:

Bootstap-v1.15製作流程 - 抵岸科技 - 抵岸科技的博客
   圖 8

 

 

文件歷史記錄

版本            編制                    日期                        更改內容

-----------------------------------------------------------------------------------

V1.0           抵岸科技              2010-6-27              首發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章