Chinaunix首页 | 论坛 | 博客
  • 博客访问: 852340
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: LINUX

2010-03-11 18:48:05

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



阅读(1048) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~