S3C2440之uboot移植

S3C2440之uboot移植 



裸奔S3C2440断断续续快搞完了,该linx还是wince呢?犹豫了几天,打算wince吧,可是电脑装vs2005+wince6.0成功后投标时灰的了,呵呵!还是选择linux。但linux和windows差别很大,还是一步步来,一个星期学习了基本的指令,并学习了韦东山的书后了解了Makefile,哈哈,刚开始还不知Makefile是一个文件还是像记事本的txt的后缀。又逢周末,还是先uboot吧,免费的,符合linux的发展。废话少说,先动手吧!


一、移植环境


1,宿主机:vmware+fedora9


2,开发板:友善之臂MICRO2440-64M NANDFLASH

3,UBOOT: u-boot:u-boot-2009.08.tar.bz2
(下载网站:ftp://ftp.denx.de/pub/u-boot/)里面有最新的UBOOT。
二,uboot目录结构

    u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;


    u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

三,建立符合自己开发板的UBOOT
1,解压UBOOT:解压到的目录任意。
#tar –xjvf u-boot-2009.08.tar.bz2
2,建立自己开发项目的路径:由于2440与2410差不多,所以我们建立的项目以2410为模板,在2410的基础上作小量修改即可。
        A,进入u-boot-2009.08/board/samsung/   目录
                               cd u-boot-2009.08/board/samsung/   
               B,建立目录:zjj-2440
                               mkdir zjj-2440
2,将smdk2410里面的文件复制到刚才创建的目录
        cp smdk2410 /*  zjj-2440/
3,进入zjj-2440修改smdk2410.c为zjj-2440.c
        cd zjj-2440
        mv smdk2410.c zjj-2440.c
4,修改zjj-2440目录下的Makefile
        vim Makefile打开Makefile
COBJS    := zjj-2440.o flash.o  //因在zjj-2440下我们将smdk2410.c改名为zjj-2440.c
 
5,使用cd ../../../回到根目录,
 
6,建立zjj-2440的头文件
   cp include/configs/smdk2410.h include/configs/zjj-2440.h
7,修改根目录下的Makefile

      CROSS_COMPILE ?= arm-linux-        //指定交叉编译器为arm-linux-gcc


smdk2410_config    :    unconfig   //2410编译选项格式
    @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0


 


zjj-2440_config    :    unconfig     //2440编译选项格式
    @$(MKCONFIG) $(@:_config=) arm arm920t zjj-2440 samsung s3c24x0


8, zjj-2440开发板u-boot的stage1入口点分析。
一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。那么我们的zjj-2440开发板u-boot的这个链接文件就是cpu/arm920t/u-boot.lds,打开该文件部分代码如下:


     vim 


OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)    //定义生成文件的目标平台是arm
ENTRY(_start)       //定义程序的入口点是_start

SECTIONS
{
    //其他一些代码段、数据段等分配
    . = 0x00000000;

    . = ALIGN(4);
    .text :
{
        cpu/arm920t/start.o    (.text)
        *(.text)
    }
    ..................
    ..................
}


 


 


9,定义了程序的入口点是_start,所以打开cpu/arm920t/start.S(即u-boot的stage1部分)


    vim cpu/arm920t/start.S


.globl _start
_start: b       start_code    //将程序的执行跳转到start_code处


/*
 * 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
因为下面的led不适合我们开发板的led所以注释掉,添加我们的led



 


 


10,在include/configs/my2440.h头文件中添加CONFIG_S3C2440宏


vim 在include/configs/my2440.h


#define CONFIG_ARM920T        1    /* This is an ARM920T Core     */
#define CONFIG_S3C2410        1    /* in a SAMSUNG S3C2410 SoC    */
#define CONFIG_SMDK2410       1    /* on a SAMSUNG SMDK2410 Board */
#define CONFIG_S3C2440        1    /* in a SAMSUNG S3C2440 SoC    */

11,测试编译
        make zjj-2440_config
(如果出现Configuring for。。。表示编译通过)
12,make   编译

 


13,在DNW下使用【a】absolute 。。。。下载。将开发打到nandflash启动就可以看到想要的效果了。我刚才编写的是中间两个灯灭了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值