uboot移植—-以Exynos 4412(Cortex-A9)为例

  • Post author:
  • Post category:其他



前言

:当在公司做开发时,拿到一个裸板, 上边无BootLoader, 无操作系统内核。我们首先需要做的事情是:根据板子信息(SOC、Arch、CPU、Vendor、board、参考板等),移植Uboot,继而移植linux内核。下面是以Cortex-A9为例,uboot移植的具体步骤。

1、确定开发板信息



目的:

嵌入式的系统移植就是移植BootLoader、linux内核、根文件系统。针对不同开发板所移植的linux内核和根文件系统大体相同,但针对不同开发板,uboot移植根据平台架构不同而做出不同改动。换句话说,uboot移植与平台架构紧密相关,而linux内核和根文件系统与平台结构联系不那么紧密。(这其中又引出一个问题:做系统移植可以不移植uboot吗?答案是可以的,uboot做的工作是针对不同的开发板硬件做初始化,所以开发板不同所做的硬件初始化也不同。这个过程也可以放在linux内核中对硬件做初始化,但是这样linux内核就不具有普遍性,总不能依不同开发板裁剪不同内核吧,太复杂了。)因开发板的不同,想要移植uboot到开发板上,首先要对uboot进行软件裁剪,选取合适的参考板,所以首先要确认开发板相关信息。

SOC:Exynos 4412 (查Exynos 412芯片手册可知)

Arch:ARM (查芯片手册)

CPU:Cortex-A9(芯片手册中叫的名)        armv7(uboot源码中叫的名)

Vendor:Samsung(查芯片手册)

board:fs4412(公司自定义)

参考板: origen(百度输入Exynos 4412  arm  armv7  Samsung fs4412查找)

2、确定内存划分


目的:

查看Exynos 4412芯片手册—-memory map 章节  如下图(部分)所示:

主要看对应地址及大小(如 iROM、iRAM、DDR(内存)等)

Exynos 4412内存划分
Exynos 4412芯片手册–内存划分部分截图

3、交叉开发



目的:

因为如果在开发板上编译uboot源码,由于开发板硬件(CPU等)限制,可能导致编译时间过长,所以我们要安装交叉编译工具链,使uboot源码在个人PC机上编译,在开发板上执行。在Ubuntu上用gcc直接编译的是x86架构的,不能一直到ARM开发板上。

(1)获取交叉编译工具链源码

有以下三种途径可以获得(



版权声明:本文为weixin_42015463原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。