• mini6410移植--uboot移植(1)


    u-boot移植

    (1)移植环境

    u-boot版本:u-boot-2011-03
    Linux平台:XP下虚拟机Ubuntu12.04
    交叉编译工具:arm-linux-gcc-4.5.1
    arm开发板:mini6410
            CPU:S3C6410
            DDR:256M
            Nand Flash:256M
            网卡:DM9000EP

    (2)移植目标

    支持Nand启动
    支持Nand读写
    支持yaffs写入
    支持tftp下载

    下载UBoot把它解压,然后得到u-boot-2011-03的文件夹,然后进去,并且做下面几件事情:

    1:进入arch这个文件夹,把出arm外的前部文件夹删掉 

    2:进入board这个文件夹,把除samsung外前部文件夹删掉 

    3:进入include/configs,把除smdk6400.h外的所有文件删除。 

    4: 把顶层目录下有一个叫onenand_ipl的文件夹删除掉,因为没有用到。 

    5:进入nand_spl/board,把除samsung外全部文件删除掉。 

    6:再进入arch/arm/cpu文件夹,把除arm1176外其他文件夹删除掉。 

    7:再进入arch/arm/include/asm文件夹,把除arch-s3c64xx文件外带arch-XX的文件夹删除 

    8:再进入board/samsung文价夹下,把除smdk6400外其他文价夹删除掉。 

    至此已经把没用到或者不想见到它的文件夹跟文件删除掉了。爽吧。

    (3)因为6410和6400资源差不多,只是主频和外设有点差别,所以可以参考6400进行设置。首先在board/samsung/下建立自己开发板项目,取名mini6410

    #cd u-boot-2011.03/board/samsung/ //进入目录 
    #mkdir mini6410 //创建mini6410文件夹

    (4)参照board/samsung/smdk6400建立自己的mini6410模板,然后再修改

    #cp -rf smdk6400/* mini6410/     //将6400下所有的代码复制到mini6410下 
    #cd mini6410              //进入th6410目录 
    #mv smdk6400.c mini6410.c      //将th6410下的smdk6400.c改名为mini6410.c 
    #vim Makefile              //修改mini6410目录下Makefile的编译项,如下: 
    COBJS := mini6410.o       //因在mini6410下我们将smdk6400.c改名为mini6410.c

    (5)修改u-boot根目录下的Makefile文件。还要指定交叉编译器为arm-linux-,查找到smdk6400_config的地方,在其下面按照smdk6400_config的格式建立mini6410_config的编译选项。

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

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

    arm1176:CPU的类型

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

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

    s3c64xx:CPU型号

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

     (6)进入nand_spl/board/samsung/,新建目录mini6410并将smdk6400下的所有文件复制到mini6410中

    cd nand_spl/board/samsung/

    mkdir mini6410
    cp -rf smdk6400/*  mini6410/

     (7)编译新建的mini6410开发板项目

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

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

    编译失败,提示:
    arch/arm/cpu/arm1176/start.o: In function `_end_ofs':
    /home/max/U-Boot/u-boot/arch/arm/cpu/arm1176/start.S:61: undefined reference to `_end'
    这个错误要修改
    uboot.lds
    nand_spl/u-boot.lds
    nand_spl/board/samsung/smdk6400/u-boot.lds
    board/samsung/smdk6400/u-boot-nand.lds
    加入 _end = .;
    在这一行的前面

    .bss __rel_dyn_start (OVERLAY) : {

    再次编译就可以成功了
     
    到此为止,u-boot对自己的mini6410开发板还没有任何用处,以上的移植只是搭建了一个mini6410开发板u-boot的框架,要使其功能实现,还要根据mini6410开发板的具体资源情况来对u-boot源码进行修改。
  • 相关阅读:
    ASP.NET中JSON的序列化和反序列化
    Git 本地项目上传至托管平台(OsChina/GitHub)
    Android Gradle 完整指南(转)
    开发错误记录13:java.lang.UnsatisfiedLinkError: Couldn't load xxx.so: findLibrary returned null
    Android其它新控件 (转)
    一个Activity掌握Design新控件 (转)
    一个Activity掌握Android5.0新控件 (转)
    一个Activity掌握Android4.0新控件 (转)
    开发错误日记 12: Unsupported major.minor version 52.0
    Linux 下各个目录的作用及内容
  • 原文地址:https://www.cnblogs.com/killer-xc/p/4381978.html
Copyright © 2020-2023  润新知