u-boot在s3c44b0 上的移植

来源:互联网 发布:看电影软件不付费 编辑:程序博客网 时间:2024/05/16 01:58

准备工作已完毕:

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-)

1.1.4,编译过程会出现以下错误:
(1)invalid option `abi=apcs-gnu'
修改 /cpu/s3c44b0/config.mk
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
改为
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu))
PLATFORM_RELFLAGS+=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
(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

完成。




           

原创粉丝点击