天天看点

嵌入式学习之裸机开发前奏

为裸机开发做铺垫

我们需

安装交叉编译工具链 (就是在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在一个终端中执行以上命令后,该终端中就可以直接使用arm−linux−gcc了,但是只要关掉这个终端再另外打开一个立马就不行了。原因是我们本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出。解决方案是在 /.bashrc中,添加exportPATH=/usr/local/arm/arm−2009q3/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来完成。

继续阅读