为裸机开发做铺垫
我们需
安装交叉编译工具链 (就是在linux下安装软件)并且进行相关配置方便裸机开发时使用
熟悉makefile流程 方便裸机开发工程管理
知道各个文件后缀的作用以及来历
mkv210_imge.c程序的作用以及内部代码
区分ubs串口烧写和sd卡烧写的区别

1;我们使用安装包的形式进行安装工具链

交叉编译工具链的安装
步骤1:打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹
步骤2:先将安装包从Windows中弄到linux中去。可以用共享文件夹,也可以用Samba,也可以cuteftp。
步骤3:解压。tar -jxvf arm-2009q3.tar.bz2
到此相当于程序已经安装完毕,真正的应用程序安装在/usr/local/arm/arm-2009q3/bin目录下
安装后的测试
到真正的应用程序的安装目录下(也就是/usr/local/arm/arm-2009q3/bin),去执行arm-linux-gcc -v
执行方法是:./arm-none-linux-gnueabi-gcc -v
执行后可以得到一长串输出,其中有“gcc version 4.4.1 ”字样,即表示安装成功。

2;环境配置
将工具链导出到环境变量
export PATH=/usr/local/arm/arm-2009q3/bin: PATH使armlinuxgcc /.bashrcexportPATH=/usr/local/arm/arm2009q3/bin: P A T H 在 一 个 终 端 中 执 行 以 上 命 令 后 , 该 终 端 中 就 可 以 直 接 使 用 a r m − l i n u x − g c c 了 , 但 是 只 要 关 掉 这 个 终 端 再 另 外 打 开 一 个 立 马 就 不 行 了 。 原 因 是 我 们 本 次 终 端 中 执 行 时 的 操 作 只 是 针 对 本 终 端 , 以 后 再 打 开 的 终 端 并 未 被 执 行 过 这 个 命 令 所 以 没 导 出 。 解 决 方 案 是 在   / . b a s h r c 中 , 添 加 e x p o r t P A T H = / u s r / l o c a l / a r m / a r m − 2009 q 3 / b i n : PATH 即可。
注意:我们导出这个环境变量是在当前用户,如果你登录时在其他用户下是没用的。

3,为工具链创建arm-linux-xxx符号链接
ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line
可以制作脚本 就是将这些命令放到一个文件中做成.sh文件,然后放到bin目录下进行source执行即可
(注意在window下的文本中换行是\n而linux中换行是-r,因此有时会脚本制作出错 就是这个原因 解决办法是在linux里面建脚本文件然后进行粘贴,而不是在window下粘贴)

4;makefile;
为什么需要Makefile
Makefile是用来管理工程的。
在一个正式的软件项目中,由很多个.c和.h文件构成,此时如果直接在命令行编译,就会像这样:gcc a.c b.c c.c d.c e.c f.c g.c -o exe 这时候每次编译的时候都要打很多a.c等等 很不方便 那么就引出了makefile 建一个文件里面写好这些代码 那么每次编译调试的时候只需要打make编译就可以了 主要是一个集成的作用
Makefile中的一些基本概念
目标:目标定格写,后面是冒号(冒号后面是依赖)
依赖:依赖是用来产生目标的原材料。
命令:命令前面一定是Tab,不能是定格,也不能说多个空格。命令就是要生成那个目标需要做的动作。
Makefile的基本工作原理
其一,当我们执行 make xx 的时候,Makefile会自动执行xx这个目标下面的命令语句。
其二,当我们make xx的时候,是否执行命令是取决于依赖的。依赖如果成立就会执行命令,否则不执行。
其三,我们直接执行make 和make 第一个目标 效果是一样的。(第一个目标其实就是默认目标)
makefile里面的内容
这里写图片描述

mkv210_image.c的作用:为BL1添加校验头
我们编译链接时只得到了led.bin,这个210.bin的得到和交叉编译工具链是完全无关的。由led.bin得到210.bin的过程是三星的S5PV210所特有的,因此需要我们自己去完成,为此我们写了mkv210_image.c来完成。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐