Bootstap-v1.15移植流程

来源:互联网 发布:汉密尔顿学院 知乎 编辑:程序博客网 时间:2024/04/30 02:10

标签: ARM Linux Bootstrap 移植 抵岸科技

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              首发