天天看點

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

這是第一階段,如果編譯能夠成功,恭喜你,可以進入下一步的移植了······

繼續閱讀