S3C2440之uboot移植

您所在的位置:网站首页 三星2440与2410 S3C2440之uboot移植

S3C2440之uboot移植

2024-07-13 06:37| 来源: 网络整理| 查看: 265

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启动就可以看到想要的效果了。我刚才编写的是中间两个灯灭了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3