uboot移植

一、我们知道uboot就是一个Bootloader。但是,arm不像我们的pc机一样,用一个老毛桃随便找一个网站下一个windows镜像就可以直接装了。
我们的uboot对应的就是老毛桃里面刷的引导程序。

虽然uboo支持很多架构很多不同的厂家的板子,但是UBOOT它不具备通用性。
跟我们的电脑不一样,电脑无论是华为的,小米的,华硕的老毛桃刷的底层引导程序都i是一样的。

所以uboot移植是要跟做手术一样对一些东西进行一些裁剪和配置。让uboot适配我们板子。
下面我们说一下移植的步骤。
1)首先肯定要去下载一个ubbot的源码。
没有源码你怎么去裁剪和配置。
直接百度uboot的官网然后找source code(源码)
下载和我们的在我们的开发板所用的测试板发布之后的版本且时间要最好相近一点。这样的版本适配性才是最好的。比如说我现在用的是SAMSUNG的a9exyons的芯片,三星的这个芯片的发行板叫origen。
这个发行版的时间大概在12年所以我们下载13年的就可以了。

在这里插入图片描述
下载完之后把它复制到uboot里面,并且解压出来。
这样我们就得到了uboot的源码。
在这里插入图片描述
这些是源码的分类。
1)API:就是接口的一下实现。
2)arch:就是架构类型,
在这里插入图片描述
3)board:J就是板子的类型大部分大公司的发行板都有
在这里插入图片描述
这些都是公司名称,有熟悉的SAMSUNG和ST等等,这些公司下的目录就是他们发行的板子类型
在这里插入图片描述
我们要找的origen也在里面。
uboot之所以支持很多处理 器就是因为它把常用的架构和公司的板子都写进去了,有大公司发行板子,它又重新写进去,所以版本不要最新,只要最近。
4)COMMON:就是我们通用的uboot命令就是我们在板子的终端上按下help下所打印的命令,比如我们的设置环境变量的命令。
5)fs:文件管理系统
6)drinver:就是驱动的设备。
7)net:网络文件,比如我们之前用的TFTP和nfs都在这里。
8)MAKEFILE:这个是写好的makefile辅助我们去编译代码。
。。。。。。。。。。。
——————————————————————
以上讲了Uboot里面大概有什么东西。下面讲移植的过程。
在这里插入图片描述
1、指定我们当前的硬件平台,比如我们是samsung的
origen芯片。我们就用
make origen_config
这样makefile就知道我们的硬件平台了,然后就不会编译其它的硬件。

2、指定编译器。
我们是arm架构肯定得用arm的编译器,所以你得告诉makefile的用ARM的编译器
vi Makefile
//CORSS_COMPILE (找到交叉编译)
在这里插入图片描述
改成这个样子,指定用arm-none-linux-guneabi-
这个交叉编译工具链去编译。
在这里插入图片描述
3、编译Uboot
make
4、消除中间文件,只要目标文件。那些对与我们没有用,的编译过程中产生的中间文件我们要删掉
用makeclean
5、恢复原来到make之前的状态用
make distclean
——————————————————————
这样make出来的.bin的文件是只使用于三星的origen的这个评估板用的。并且只能在这个评估板上面用,换另一个板子就不可以了。那我们的芯片类型知识和origen的芯片一样,那些板子的硬件不一样,所以这个uboot肯定还不行。比如电源接口,网络接口,串口,这些东西和origen的板子的地址和配置方式完全不一样。
所以我们还要对这些东西做一个配置。

1)我们先重uboot下面 的三星的origen复制一个,并改上我们自己的名字fs4412,然后makefile的名字也要改。

2)添加三星加密引导方式。
查看我们下的uboot很明显它没有bios的程序,这是因为,三星把这些东西不设为开源,加密了,这加密文件需要我们自己去获取。
将资料中“移植相关文件”下的sdfuse_q、CodeSign4SecureBoot目录拷贝到uboot源 码的顶层目录下

3)添加调试代码(点灯法)
添加我们一上电的初始现象代码。

4)添加编译脚本
我们之前添加了三星的加密引导,但是这个加密引导得和其它文件一起编译才行啊,要不然放在目录里面上面都不干。
使用make命令编译时只链接uboot源码中的相关代码,而我们添加的初始引导加密的 代码不会被连接到u-boot.bin中,所以这里我们自己编写编译脚本build.sh,这个脚本 中除了对uboot源码进行配置和编译外还将初始引导加密代码链接到了u-boot.bin上, 最终生成一个完成的uboot镜像u-boot-fs4412.bin
这样改以后可以运行,但是你会发现我们的超级终端上面都不显示,这是因为,串口的有问题,你运行起了,但是信息不知道打过哪里去了。

5)实现串口输出

6)网卡移植

7)EMMC移植

8)电源管理移植

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值