基于qq2440开发平台的uboot移植(1)

 

       在嵌入式系统中,bootloader起到了一个配置硬件、创建软件执行环境和调试(仅在开发阶段对于开发人员有用)的作用。本文以目前功能最强大的bootloader--uboot为例,记录了我将uboot一直到QQ2440(S3C2440)开发板的过程。

       最开始要说一下uboot各文件夹的内容:

        board 目录:里面是各种开发板目录,每个开发板相当于一种硬件配置;

        common目录:里面是各种命令实现的源文件,是各个开发板共同使用的目录;

        cpu 目录:顾名思义,里面是各种内核体系的目录,每一个目录代表一种内核结构;

        doc目录:里面是各种移植文档,供移植参考使用;

        drivers目录:里面是各种驱动程序;

        examples目录:里面是一个移植例程;

        include目录:是所有内核共有的、所要包含的头文件;

        lib_**目录:  针对不同体系,各自独特的库文件;

        net目录:里面是各种网络协议;

        tools目录:里面是各种小工具;

基本上就这些目录,还有一些小目录及文件就不一一列举了,下面介绍一下具体的移植过程:

       

1.1.1  添加开发板的配置选项

 

进入U-Uoot根目录,修改Makefile文件,参考smdk2410的配置选项修改如下:

smdk2410_config    :    unconfig
     @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

qq2440_config    :    unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t qq2440 NULL s3c24x0

 

各项的意思如下:
arm     : CPU的架构(ARCH)
arm920t : CPU的类型(CPU),其对应于cpu/arm920t子目录。
qq2440: 开发板的型号(BOARD),对应于board/ mini2440目录。
NULL: 开发者/或经销商(vender),NULL为没有。
s3c24x0 : 片上系统(SOC)

 

同时在“ifndef CROSS_COMPILE ”之前加上自己交叉编译器的路径,我的是arm-linux-gcc-4.3.2

 

1.1.2  /board子目录中建立自己的开发板qq2440目录

 

目录结构为board/qq2440。如果开发者/经销商(vender)不为NULL,则目录结构为board/verder_name/mini2440,否则编译会出错。然后,将smdk2410目录下的文件考入此目录中,并将其中的smdk2410.c改名为mini2440.c。同时还得修改board/mini240/Makefile文件:
COBJS := qq2440.o flash.o

1.1.3  在include/configs/中建立配置头文件


    将smdk2410.h 复制一份在相同目录下,并改名为qq2440.h


1.1.4  测试编译能否成功


    回到U-Boot主目录,(若之前有编译过,最好执行一下make clean)  make qq2440_config,再make,编译生成u-boot.bin成功。

 

 

这是第一阶段,如果编译能够成功,恭喜你,可以进入下一步的移植了······

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章