u-boot对于理解linux系统的运行有一定的好处,便着手移植。错误一步步的出然后一步步的解决。记录移植的过程。下面是移植的步骤:
第一步:
在U-Boot中建立自己的开发板类型,并测试编译。1、在U-Boot源码Board中找一款与目标开发板配置相近的文件夹,在这里我们进入board/samsung目录,把smdk2410复制一
份并命名为mini2440,进入mini2440目录,将里面的smdk2410.c改成mini2440.c,同时Makefile中也要作相应的更
改。
2、进入include/configs目录,将smdk2410.h复制一份并命名为mini2440.h。
3、打开U-Boot根目录下的Makefile文件,搜索smdk2410,定位到smdk2410_config : unconfig处,对照该格式在下面加两行:
1 2
| mini2440_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 samsung s3c24x0 |
注意在@$(MKCONFIG)前要加入一个TAB这是Makefile文件规则规定的,在第二行的第一个arm表示MCU平台(包括:i386、
ppc、mips、nios、m68k等);第二个arm920t表示arm内核版本(包括:arm7tdmi、arm10、arm11等);第三个
mini2440对应开发板所在文件夹board/samsung/mini2440;第四个samsung对应开发板所在文件夹上层目录board
/samsung,如果mini2440目录就直接放在board目录下,那么此处应写NULL;第五个s3c24×0对应MCU型号。
完成了上面三步,可以执行以下命令进行编译:
#make mini2440_config
#make
以上的步骤一般不会有什么问题。如果你编的时候出错了,可以尝试换一下交叉编译器。我原先用3.3.2的出错,后面换了4.3.2后就没问题了。
总结一下,移植U-Boot基本步骤有三:1、在board目录下创建开发板对应目录;2、在include/configs下创建开发板对应配置文件;3、在U-Boot根目录下的Makefile中加入开发板对应编译命令。
以上很多内容引用了的文章。
第二步:
修改U-Boot中的文件,以同时匹配2440和2410。主要内容为:
/cpu/arm920t/start.s (加入S3C2440的时钟相关的寄存器定义,加入时钟初始化代码,以使S3C2440工作在405MHz)
board/samung/mini2440/lowlevel_init.s(加入S3C2440内存控制寄存器的定义)
board/samung/mini2440/mini2440.c (修改GPIO,PLL的设置,应注意GPBCON的设置,不要让蜂鸣器响)
include/configs/mini2440.h(设定环境变量)
以下文件主要加入CONFIG_S3C2440宏定义以使得编译一些S3C2410的代码,和加入led灯的控制。以指示u-boot程序进程。
/inlcude/s3c24x0.h
cpu/arm920t/s3c24x0/interrupts.c(这里还要加入CONFIG_rat2440和CONFIG_rat2410)
/cpu/arm920t/s3c24x0/serial.c
cpu/arm920t/s3c24x0/speed.c
cpu/arm920t/s3c24x0/usb_ohci.c
/cpu/arm920t/s3c24x0/usb.c cpu/arm920t/s3c24x0/i2c.c
drivers/usb/usb_ohci.c
drivers/rtc/s3c24x0_rtc.c
/lib_arm/board.c
1:修改/cpu/arm920t/start.s
#include <config.h>
#include <version.h>
#if defined(CONFIG_AT91RM9200DK)
#include <status_led.h> /*这是针对AT91RM9200DK开发板的。对于SCB2440V4也有4个LED指示灯,我用来指示程序用行的进度。*/
#endif
......
/*
* the actual start code
*/
start_code:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
#if defined(CONFIG_AT91RM9200DK)
bl coloured_LED_init
bl red_LED_on
#endif
阅读(1081) | 评论(0) | 转发(1) |