一、移植环境
- 主
机:VMWare–Fedora 9 - 开发板:Mini2440–64MB Nand,Kernel:2.6.30.4
- 编译器:arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz” target=”_blank”>arm-linux-gcc-4.3.2.tgz
- u-boot:u-boot-2009.08.tar.bz2
二、移植进程
本次移植的功用特色包含:
- 支撑Nand Flash读写
- 支撑从Nor/Nand Flash发动
- 支撑CS8900或许DM9000网卡
- 支撑Yaffs文件体系
- 支撑USB下载(还未完结)
1.
#tar -jxvf u-boot-2009.08.tar.bz2 |
#cp -rf smdk2410 start_code: |
由此能够看到,start_code处才是u-boot发动代码的真实开端处。以上便是u-boot的stage1进口的进程。
2)my2440开发板u-boot的stage1阶段的硬件设备初始化。
咱们在u-boot发动代码处有两行是AT91RM9200DK的LED初始代码,但咱们my2440上的LED资源与该开发板的不共同,所以咱们要删去或屏蔽该处代码,再加上my2440的LED驱动代码(注:增加my2440 LED功用仅仅用于一共u-boot运转的状况,给调试带来便利,可将该段代码放到任何你想调试的当地),代码如下:
#if //依据mini2440原理图可知LED分别由S3C2440的PB5、6、7、8口来操控,以下是PB端口寄存器基地址(查2440的DataSheet得知) #endif //此段代码使u-boot发动后,点亮开发板上的LED1,LED2、LED3、LED4不亮 |
在include/configs/my2440.h头文件中增加CONFIG_S3C2440宏
#gedit |
#define |
现在编译u-boot,在根目录下会生成一个u-boot.bin文件。然后咱们运用mini2440原有的supervivi把u-boot.bin下载到RAM中运转测验(留意:咱们运用supervivi进行下载时现已对CPU、RAM进行了初始化,所以咱们在u-boot中要屏蔽掉对CPU、RAM的初始化),如下:
/*#ifndef CONFIG_SKIP_LOWLEVEL_INIT #make my2440_config #make |
下载运转后能够看到开发板上的LED灯榜首了亮了,其他三个平息,测验成果契合上面的要求。终端运转成果如下:
3)在u-boot中增加对S3C2440一些寄存器的支撑、增加中止制止部分和时钟设置部分。
咱们2410和2440的寄存器及地址大部分是共同的,所以这儿就直接在2410的基础上再加上对2440的支撑即可,代码如下:
#gedit |
#if #
# #define #define UPLLCON # # endif |
S3C2440的时钟部分除了在start.S中增加外,还要分别在board/samsung/my2440/my2440.c和cpu/arm920t/s3c24x0/speed.c中修正或增加部分代码,如下:
#gedit |
#define #if #define #if |
#gedit |
static #if
ulong get_HCLK(void) #if
|
好了!修正结束后咱们再从头编译u-boot,然后再下载到RAM中运转测验。成果终端有输出信息而且呈现相似Shell的命令行,这说明这一部分移植完结。示意图如下: