准备工作已完毕:
u-boot版本u-boot-1.1.4
详细步骤如下:
1,在board文件夹下建立自己的开发板文件,由于dave文件是最接近44b0的文件,所以拷贝修改较简单。
命令:cd u-boot-1.1.4 //进入u-boot目录
cd board
cp -R dave myboard //复制dave文件夹里的内容到myboard文件夹中(建立我的目标板文件夹,名称:myboard)
cd myboard
mv B2 myboard_s3c44b0 //将B2内容移到目标板myboard_s3c44b0中
cd myboard_s3c44b0
mv B2.c myboard_s3c44b0.c //
*修改myboar_s3c44b0文件夹里的Makefile文件,将OBJS :=B2.o flash.o 修改成OBJS :=myboard_s3c44b0.o flash.o 保存退出。
2,然后进入/u-boot-1.1.4/include/configs目录下
命令: cp B2.h myboard_s3c44b0.h
3,再进入u-boot-1.1.4目录
修改Makefile,找到
B2_config : unconfig
@./mkconfig $(@:_config=) arm s3c44b0 B2 dave
在后面加上这部分:
myboard_s3c44b0_config : unconfig
@./mkconfig $(@:_config=) arm s3c44b0 myboard3c44b0 myboard
注意:在 @./mkconfig$(@:_config=) arm s3c44b0 myboard3c44b0 myboard 前面的是 Tab 来的,万万不能用空格代替,因为它是靠这个来识别命令的!
(还要将CROSS_COMPILE = arm-linux- 改成CROSS_COMPILE = arm-elf-)
(2)出错:make[1]:***没有规则可以创建目标“all”需要的目标 hello_word.srec"
对u-boot 1.1.1编译也是这样的错误
解决办法:
$cd /u-boot解压目录/examples
$vim Makefile 在第58、59行修改hello_world.srec为hello_world.o hello_world.bin为hello_world.o
以上修改完毕先编译一次
make distclean
make myboard_s3c44b0_config
make
编译成功后进入下一步
4,修改board里的相关内容
进入board/myboard/myboard_s3c44b0
(1)修改初始化代码文件myboard_s3c44b0.c,只需简单修改IO端口值即可
(2)修改存储器初始化设置文件lowlevel_init.S
5,修改cpu文件中的相关内容
进入cpu/s3c44b0
(1)修改start.S,设置中断跳转矢量(这里也要修改#if CONFIG_S3C44B0_CLOCK_SPEED==60)
#if CONFIG_S3C44B0_CLOCK_SPEED==60
ldr r0, =0x88042 /* 60MHz (Quartz=10MHz) */
(2)修改serial.c,
将所有的#if CONFIG_S3C44B0_CLOCK_SPEED==66修改成#if CONFIG_S3C44B0_CLOCK_SPEED==60
部分代码参考:
UFCON0 = 0x0;
ULCON0 = 0x03;
UCON0 = 0x245;
UBRDIV0 = divisor;
6,修改include文件中的相关内容
进入include/configs
修改myboard_s3c44b0.h文件内容。
其他修改处:
显示信息如下:
修改include/configs/myboard_s3c44b0.h
将#define CONFIG_B21 /* on an B2 Board */
改成:#define CONFIG_myboard_s3c44b01 /* on an B2 Board */
修改board/myboard/common/flash.c
将write_buff函数中的#ifdef CONFIG_B2
全部改成:#ifdef CONFIG_myboard_s3c44b0
完成。