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(设备树);
- ……
- 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。
- $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
- 9、uboot移植——使用官方uboot进行移植(1)
- 10、uboot移植——使用官方uboot进行移植(2)
- 8、uboot移植——使用三星官方的uboot进行移植
- 嵌入式linux开发uboot移植(七)——三星官方uboot的移植
- Exynos4412 Uboot 移植(五)—— Uboot 移植过程
- Exynos4412 Uboot 移植(五)—— Uboot 移植过程
- Exynos4412 Uboot 移植(五)—— Uboot 移植过程
- Exynos4412 Uboot 移植(五)—— Uboot 移植过程
- 8(1)、uboot移植——DM9000的移植
- 三星官方uboot移植实战1
- 从官方源码移植uboot(Exynos4412)
- 从三星官方移植uboot
- mini6410移植--uboot移植(1)
- OK6410 uboot移植(1)
- uboot移植-从uboot官方源码开始移植过程总结
- uboot移植第一天——代码分析(1)
- UBOOT 移植操作(1)
- UBOOT 移植操作(1)
- APP安全报告第六期:用户病例信息存在泄漏风险,医疗APP需加强安全措施!
- 用C语言实现将int类型转化为字符串,不使用已有的转换函数
- Java核心技术II:ZiP压缩文档
- PHP 轻量级的PHP类检测移动设备(包括平板电脑)。
- AJAX
- 9、uboot移植——使用官方uboot进行移植(1)
- 一句话的解密
- mapreduce 原理
- 内网中远程重启服务器
- JVM 调优
- 借助node实战WebSocket
- Java字符串常用操作
- source的用法
- 分布式缓存Redis使用心得