天天看点

基于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成功。

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

继续阅读