嵌入式学习之裸机开发前奏
为裸机开发做铺垫我们需安装交叉编译工具链 (就是在linux下安装软件)并且进行相关配置方便裸机开发时使用熟悉makefile流程 方便裸机开发工程管理知道各个文件后缀的作用以及来历mkv210_imge.c程序的作用以及内部代码区分ubs串口烧写和sd卡烧写的区别1;我们使用安装包的形式进行安装工具链交叉编译工具链的安装步骤1:打开虚拟机,在/usr...
为裸机开发做铺垫
我们需
安装交叉编译工具链 (就是在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来完成。
更多推荐
所有评论(0)