弄AT91SAM9260EK有一段时间了,一直没有时间把这些东西写下来。经过女友的多次鼓励,还是决定将这些东西写下来。一来,等很久以后,自己可以回头来看;二来,希望自己的这些点滴能够帮助后来者。
首先,这个移植起来不难,很简单,只要你是按照9260EK板做的,只需要添加你所用的NAND在里面就可以了。顺便在这里声明下,我的板子是按照9260EK做的,不过我的板子上没有NOR FLASH,也没有DATA FLASH。因此,所有代码都是在NAND FLASH中放着的。这样是出于对成本的考虑。其他部分就和9260EK一样咯……
下面开始正题吧……看如何改写这个代码。
这里,我的开发文件夹路径是这样的。
[root@localhost at91sam]# pwd
/usr/local/at91sam
我的这个boot代码在这个文件夹
[root@localhost src]# pwd
/usr/local/at91sam/boot/src
[root@localhost src]# ls
AT91Bootstrap1.15.zip u-boot-1.3.4-exp.3.diff u-boot-1.3.4.tar.bz2
[root@localhost src]# unzip AT91Bootstrap1.15.zip
解压之后,文件名为Bootstrap-v1.15,由于是大写开头,为了方便起见,将其改为小写并移动到上一层目录,因为src是存放源码的。
[root@localhost src]# mv Bootstrap-v1.15/ ../bootstrap-v1.15/
目前我们回到bootstrap文件夹。
[root@localhost bootstrap-v1.15]# pwd
/usr/local/at91sam/boot/bootstrap-v1.15
下面要修改以下几个地方:
1.include/nand_ids.h
[root@localhost bootstrap-v1.15]# vim include/nand_ids.h
在如下代码中添加一行,就是使其支持我当前板子的nand flash,K9F1G08U0B是我的nandflash:
/* Supported NandFlash devices */
static struct SNandInitInfo NandFlash_InitInfo[] = {
{0xecda, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08U0M\0"},
{0xecaa, 0x800, 0x20000, 0x800, 0x40, 0x0, "K9F2G08R0A\0"},
{0xecf1, 0x400, 0x20000, 0x800, 0x40, 0x0, "K9F1G08U0B\0"}, /*ADD BY LPC*/
{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.修改board/at91sam9260ek/nandflash/Makefile
修改该文件中关于如下的部分:
ifndef CROSS_COMPILE
CROSS_COMPILE=arm-none-linux-gnueabi-
endif
3.进入到board/at91sam9260ek/nandflash/
[root@localhost bootstrap-v1.15]# cd board/at91sam9260ek/nandflash/
[root@localhost nandflash]# make
这样在nandflash的文件夹会生成如下文件:
[root@localhost nandflash]# ls
at91sam9260ek.h crt0_gnu.o div0.o main.o nandflash_at91sam9260ek.bin nandflash_at91sam9260ek.map pmc.o string.o _udivsi3.o
at91sam9260ek.o debug.o gpio.o Makefile nandflash_at91sam9260ek.elf nandflash.o sdramc.o udiv.o _umodsi3.o
其中nandflash_at91sam9260ek.bin就是我们需要的文件,可以通过SAM-BA烧写到目标板中。具体烧写地址看图AT91Boot.png示意。
好了,编译AT91Bootstrap就到这里。具体SAM-BA的用法,可到上去查找相关信息。有疑问也可与我取得联系。