分类: LINUX
2009-07-27 16:20:22
一、移植前说明
虚拟机上安装Ubuntu-8.04,交叉编译器是arm-linux-gcc
下载U-Boot-
以下移植是参照网上的一篇基于优龙FS2410开发板U-Boot-1.1.6的移植,这篇文章确实写得很好,佩服。原文地址如下:http://blog.chinaunix.net/u2/74310/showart_1091899.html
二、U-Boot的移植
1、建立自己的开发板配置
$cp -r board/smdk2410 board/GEC2410
$cp include/configs/smdk2410.h include/configs/GEC2410.h
2、修改顶层的Makefile
$pwd
/home/yuaf/u-boot-
$vi Makefile
找到:
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s
在其后面添加:
GEC2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t GEC2410 NULL s
各项的意思如下:
arm: CPU的架构(ARCH)
arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。
GEC2410: 开发板的型号(BOARD),对应于board/GEC2410目录。
NULL: 开发者/或经销商(vender)。
s
(3). include/configs/GEC2410.h:
修改:
# define CFG_PROMPT “SMDK2410 #”
为:
# define CFG_PROMPT “GEC2410 #”
这是u-boot的命令行提示符。
(4) 修改board/GEC2410/Makefile
将:
OBJS := smdk2410.o flash.o
改为:
OBJS := GEC2410.o flash.o
当然,GEC2410下的 smdk2410.c要改成GEC2410.c;
(5)依照你自己开发板的内存地址分配情况修改board/GEC2410/lowlevel_init.S文件
|
(6)测试编译能否成功:
make GEC2410_config
make
如果没有问题,在u-boot-
(7)在board/GEC2410加入NAND Flash读函数,建立nand_read.c,加入如下内容:
|
(10)修改cpu/arm920t/start.S文件
2410的启动代码可以在外部的NAND FLASH上执行,启动时,NAND FLASH的前4KB(地址为0x00000000,OM[1:0]=0)将被装载到SDRAM中被称为Setppingstone的地址中,然后开始执行这段代码。启动以后,这4KB的空间可以做其他用途,在start.S加入搬运代码如下:
|
(11)修改include/configs/GEC2410.h文件,添加如下内容:
* NAND FLASH BOOT
*/
#define CONFIG_S
#define STACK_BASE 0x
#define STACK_SIZE 0x8000
#define UBOOT_RAM_BASE 0x30100000
#define NAND_CTL_BASE 0x4e000000
#define bINT_CTL(Nb) _REG(INT_CTL_BASE+(Nb))
#define oNFCONF 0x00
#define oNFCMD 0x04
#define oNFADDR 0x08
#define oNFDATA 0x
#define oNFSTAT 0x10
#define oNFECC 0x14
/*--------------------------------------------------------------------*/
#define NAND_MAX_CHIPS 1
(12)修改board/GEC2410/Makefile
OBJS := GEC2410.o flash.o nand_read.o
(13)重新编译u-boot
make GEC2410_config
make
通过SJF2410.exe 可以烧写到NAND FLASH中,烧写完之后,复位一下,就可以看到启动信息啦......