分析IMX6Q开发板U-boot-2009.08引导程序中的build.sh代码

转载地址:http://baijiahao.baidu.com/s?id=1597908272737208426&wfr=spider&for=pc

1、引言

我使用的开发板是通过公司购买的OKMX6Q-C开发板,该开发板如图1所示。该开发板自带稳定版的引导程序版本为:U-boot-2009.08。Linux内核版本为:Linux3.035。我现在分析了引导程序的一些代码,并做了一些笔记。以后,我将陆续分享给大家。希望各位能持续关注我的百家号:爱捣鼓。希望志同道合的朋友能和我一起学习进步。谢谢!

今天我先给大家分享一下,我分析U-boot-2009.08引导程序根目录下的./build.sh和./build_sd.sh这两个文件的笔记。

 

2、编译IMX6Q烧写到eMMC存储器的Uboot映像

编译烧写到 eMMC所用 uboot 映像,默认生产 LVDS 的 u-boot.bin。如果客户使用LCD,需要把./include/configs/mx6q_sabresd.h 中的“#define CONFIG_LVDS ”改为“/* #define CONFIG_LVDS */”,再使用命令编译:# ./build.sh

编译成功后,将在uboot2009-08目录下产生名为 “u-boot.bin”的二进制文件。该文件即我们需要烧写到eMMC上的 U-boot 映像文件。

3、作用

./build.sh的作用是:

获取宿主机CPU核心数量,用于提高make的编译效率。设置环境变量,指定目标机CPU架构、交叉编译器路径和交叉编译命令路径。执行make命令,清除编译产生的非源码文件,配置目标机和按宿主机CPU核心指定的并行线程数编译源码。

4、分析源码

1.#!/bin/sh

2.export CPUS=`grep -c processor /proc/cpuinfo`

3.export ARCH=arm

4.exportCROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-

5.export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH

6.make distclean

7.make mx6q_sabresd_config

8.make -j${CPUS}

第1行:指定Shell程序为宿主机Linux操作系统路径下./bin/sh。

第2行:获取宿主机CPU的信息,把宿主机CPU的核心数量传给变量“CPUS”。

第3行:指定目标机CPU采用ARM架构。

第4行:告诉宿主机采用指定路径的Freescale交叉编译器编译代码。

第5行:告诉宿主机采用指定路径的Freescale交叉编译器命令。

第6行:清除编译过程中产生的非源码文件。

第7行:执行makefile中目标机的配置命令,完成目标机相关基本参数的配置。

第8行:执行编译u-boot源码。一般输入“make”命令即可,这里采用“make -j${CPUS}”是指根据不同的CPU核心数量,执行编译时,可并行编译的线程数(每个核心对应1个线程)。这样配置,对于多核CPU可以提高编译效率,缩短编译时间。

 

5、分析./build_sd.sh

./build_sd.sh用于编译从SD卡启动的u-boot映像。除了执行make配置命令不同外,其代码和./build.sh相同。即把3.3章节代码第7行替换为下面代码即为./build_sd.sh的源码。

 

make mx6q_sabresd_sd_config

 

6、小结

通过build.sh和build_sd.sh可知:

(1)在make之前,设定环境变量配置ARM结构对应的交叉编译工具链。

(2)执行make distclean清除编译后的文件。

(3)如果是编译适合eMMC的uboot映像,那么,执行:make mx6q_sabresd_config

(4)若编译适合SD的uboot映像,那么,执行:make mx6q_sabresd_sd_config

(5)根据uboot映像烧写到不同的存储器,执行不同的配置命令。

(6)最后,指定主机的CPU核心数量,执行make编译uboot。编译好的u-boot.bin存放在uboot2009-08根目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值