9、uboot移植——使用官方uboot进行移植(1)

来源:互联网 发布:相片水印软件 编辑:程序博客网 时间:2024/06/06 03:03

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,以及博客http://www.cnblogs.com/biaohc/p/6473079.html的学习整理,如有侵权,请告知删除。


一、官网uboot的获取

  • 下载地址:ftp://ftp.denx.de/pub/u-boot/
  • 下载版本:u-boot-2013.10.tar.bz2
  • 新版本的uboot引入了linux kernel的配置体系(Kbuild、Kconfig、menuconfig)。


二、结构目录分析

1、九鼎用的是1.3.4版本的uboot,这里用的是2013.10版本的uboot。

2、两个版本的不同之处

  • 1.3.4版本的uboot的cpu文件夹,对应2013.10版本的uboot的arch文件夹;
  • 2013.10版本的uboot引进DTS(设备树);
  • ……
3、所参照的开发板(它们的cpu要相同)
  • x210开发板使用的CPU是S5PV210,因此要找uboot中使用相同CPU(针对S5PV210或者S5PC110进行移植的例子)作为参考。
  • 参考include/configs/s5p_goni.h;include/configs/xxxx是每个开发板对应的头文件存放目录。
  • 对应的board在uboot/board/samsung/goni这个目录。


三、删除无关文件

(1)arch目录下

  • 只保留arm文件夹;
  • arm/cpu目录下的,除armv7文件夹以外,其他删除;
  • arm/cpu/armv7目录下保留s5pc1xx 以及s5p_common这两个文件夹,其他的删除;

(2)board目录下

  • board目录下只保留samsung文件夹;
  • samsung文件夹下只保留goni、common文件夹。

(3)使用sourceinsight创建项目。



四、主Makefile分析

新版本的uboot添加了boards.cfg文件

(1)在配置uboot时make xxx_config,这个xxx要到boards.cfg文件中查找。

  • 相当于将以前版本的uboot中各种开发板的配置的规则抽离出来,写到Makefile中;
  • 然后把配置信息部分写到一个独立文件boards.cfg。



(2)本次移植中

  • 配置对应的cpu:u-boot-2013.10\arch\arm\cpu\armv7;
  • 配置对应的board:u-boot-2013.10\board\samsung\goni;



(3)Makefile中添加交叉编译工具链

  • 官方原版的uboot中CROSS_COMPLIE没有定义,需要自己去定义。
  • 如果没定义就直接去编译,就会用gcc编译。
  • 在Makefile中添加一行:CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

五、mkconfig脚本的分析

1、脚本功能是完成uboot的配置,即生成配置文件config.h(include/config.h,包含一句代码#include<include/configs/s5p_goni.h>

(1)在命令行配置uboot时,执行make s5p_goni_config,对应Makefile中的一个目标。

(2)新版本的Makefile中有如下代码

%_config::unconfig@$(MKCONFIG) -A $(@:_config=)
  • 实际配置时是调用mkconfig脚本,然后传参2个:-A和s5p_goni。

(3)在mkconfig脚本中


  • 24到35行,使用awk正则表达式将boards.cfg中与刚才$1(s5p_goni)能够匹配上的那一行截取出来赋值给变量line;
  • 然后将line的内容以空格为间隔依次分开,分别赋值给$1、$2……$8。
(4)在解析完boards.cfg之后,$1到$8重新赋值如下
  • $1 = Active,$2 = arm,$3 = armv7,$4 = s5pc1xx,$5 = samsung,$6 = goni,$7 = s5p_goni,$8 = -; 

2、几个很重要的变量


  • arch=arm,cpu=armv7,vendor=samsung,soc=s5pc1xx;

3、符号链接



  • include/asm  -> arch/arm/include/asm
  • include/asm/arch -> include/asm/arch-s5pc1xx
  • include/asm/proc -> include/asm/proc-armv
  • 最后创建了include/config.h文件

六、配置编译测试

依次输入下列指令,得到u-boot.bin即可

  • make distclean
  • make s5p_goni_config
  • make
0 0