zoukankan      html  css  js  c++  java
  • mini6410移植全攻略(2)uboot移植之搭建项目框架

    转载地址:http://blog.csdn.net/muge0913/article/details/7167599

    目前u-boot-2010.09对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有6410,所以我们就在这里建立自己的开发板项目。

    1)因6410和6400的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫th6410
    #tar -jxvf u-boot-2010.09.tar.bz2    //解压源码  
    #cd u-boot-2010.09/board/samsung/    //进入目录  
    #mkdir th6410                       //创建th6410文件夹 

    #tar -jxvf u-boot-2010.09.tar.bz2    //解压源码
    #cd u-boot-2010.09/board/samsung/    //进入目录
    #mkdir th6410                       //创建th6410文件夹

    2)因6410和6400的资源差不多,所以就以6400项目的代码作为模板,以后再修改
    #cp -rf smdk6400/* th6410/   //将6400下所有的代码复制到6410下  
    #cd th6410                   //进入th6410目录  
    #mv smdk6400.c th6410.c      //将th6410下的smdk6400.c改名为th6410.c  
    #vim /Makefile   //修改th6410下Makefile的编译项,如下:  
    COBJS    := th6410.o  //因在th6410下我们将smdk6400.c改名为th6410.c 

    #cp -rf smdk6400/* th6410/   //将6400下所有的代码复制到6410下
    #cd th6410                   //进入th6410目录
    #mv smdk6400.c th6410.c      //将th6410下的smdk6400.c改名为th6410.c
    #vim /Makefile   //修改th6410下Makefile的编译项,如下:
    COBJS    := th6410.o  //因在th6410下我们将smdk6400.c改名为th6410.c
    [cpp] view plaincopyprint?
    #cd ../../../                //回到u-boot根目录  
    #cp include/configs/smdk6400.h include/configs/th6410.h //建立th6410头文件 

    #cd ../../../                //回到u-boot根目录
    #cp include/configs/smdk6400.h include/configs/th6410.h //建立th6410头文件


    3)修改u-boot跟目录下的Makefile文件。查找到smdk6400_config的地方,在他下面按照smdk6400_config的格式建立th6410_config的编译选项,另外还要指定交叉编译器
    vim Makefile 

    vim Makefile

    指定交叉编译工具,找到CROSS_COMPILE?=在等号后面添加arm-linux-
    :/CROSS  
    CROSS_COMPILE ?=arm-linux- 
    export CROSS_COMPILE 
     
    th6410_noUSB_config    / 
    th6410_config    :    unconfig 
        @mkdir -p $(obj)include $(obj)board/samsung/th6410 
        @mkdir -p $(obj)nand_spl/board/samsung/th6410 
        @echo "#define CONFIG_NAND_U_BOOT" >$(obj)include/config.h 
        @echo "CONFIG_NAND_U_BOOT = y" >>$(obj)include/config.mk 
        @if [ -z "$(findstring th6410_noUSB_config,$@)" ];then            / 
            echo "RAM_TEXT = 0x57e00000">> $(obj)board/samsung/th6410/config.tmp;/ 
        else                                      / 
            echo "RAM_TEXT = 0xc7e00000">> $(obj)board/samsung/th6410/config.tmp;/ 
        fi 
        @$(MKCONFIG) th6410 arm arm1176 smdk6410 samsung s3c64xx 
        @echo "CONFIG_NAND_U_BOOT = y" >>$(obj)include/config.mk 

    :/CROSS
    CROSS_COMPILE ?=arm-linux-
    export CROSS_COMPILE

    th6410_noUSB_config    /
    th6410_config    :    unconfig
        @mkdir -p $(obj)include $(obj)board/samsung/th6410
        @mkdir -p $(obj)nand_spl/board/samsung/th6410
        @echo "#define CONFIG_NAND_U_BOOT" >$(obj)include/config.h
        @echo "CONFIG_NAND_U_BOOT = y" >>$(obj)include/config.mk
        @if [ -z "$(findstring th6410_noUSB_config,$@)" ];then            /
            echo "RAM_TEXT = 0x57e00000">> $(obj)board/samsung/th6410/config.tmp;/
        else                                      /
            echo "RAM_TEXT = 0xc7e00000">> $(obj)board/samsung/th6410/config.tmp;/
        fi
        @$(MKCONFIG) th6410 arm arm1176 smdk6410 samsung s3c64xx
        @echo "CONFIG_NAND_U_BOOT = y" >>$(obj)include/config.mk

    注:*说明:arm   :CPU的架构(ARCH)

    arm1176:CPU的类型

    smdk6410 :对应在board目录下建立新的开发板项目的目录

    samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL

    s3c64xx:CPU型号

    *注意:编译选项格式的第二行要用Tab键开始,否则编译会出错

    4)

    1、从U-boot根目录,进入nand_spl/board/samsung/


    [cpp] view plaincopyprint?
    cd nand_spl/board/samsung/ 

    cd nand_spl/board/samsung/

    2、新建目录th6410并将smdk6400下的所有文件复制到th6410中


    [cpp] view plaincopyprint?
    mkdir th6410 
    cp -ar smdk6400/* th6410/ 

    mkdir th6410
    cp -ar smdk6400/* th6410/


    4)测试编译新建的th6410开发板项目

     
    [cpp] view plaincopyprint?
    #make th6410_config ARCH=arm//如果出现Configuring for th6410 board...则表示设置正确  
     
    #make ARCH=arm //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了 

    #make th6410_config ARCH=arm//如果出现Configuring for th6410 board...则表示设置正确

    #make ARCH=arm //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了

    到此为止,u-boot对自己的th6410开发板还没有任何用处,以上的移植只是搭建了一个th6410开发板u-boot的框架,要使其功能实现,还要根据th6410开发板的具体资源情况来对u-boot源码进行修改。

  • 相关阅读:
    说说Cookie和Session
    说说SQL Server的数据类型
    Java访问权限控制
    数据库-- 触发器
    关于jni编译32位、64位动态库(Android.mk和Application.mk文件)
    Android中的 init.rc文件简介
    Android系统属性简介
    Android Support 包知识
    Android窗口机制分析与UI管理系统
    Android界面架构(Activity,PhoneWiondow,DecorView)简介
  • 原文地址:https://www.cnblogs.com/davy2013/p/3131533.html
Copyright © 2011-2022 走看看