微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM入门篇之(二)工具

ARM入门篇之(二)工具

时间:11-21 来源:互联网 点击:
(1) 交叉工具链,可以理解为交叉工具集

?交叉,指在宿主机上编写编译好代码,生成目标机能够运行的格式文件,通过数据线连接宿主机与目标机,从宿主机上下载程序到目标机内

工具链,就是交叉?编译器(arm-linux-gcc),交叉连接器(arm-linux-ld),交叉转换器(arm-linux-objcopy),交叉ELF文件阅读器(arm-linux-readelf),交叉反汇编器(arm-linux-objdump)等工具的集合

?

(2)Makefile管理

?makefile,描述了整个程序的编译,链接等的规则

包括:什么样的源文件需要编译,链接;使用什么工具编译,链接;编译,链接时依赖哪些文件;?最后产生我们先要的最终执行文件

而上面这一个过程只要你编写好makefile这个文件,再用make命令就可一步生成最终想要的可执行文件?

makefile由规则和变量构成

规则:描述了如何通过依赖文件,使用什么工具命令,最终生成?目标文件

格式如下:

目标:依赖??

[Tab]命令

例如:

start.o:start.S

?[Tab]arm-linux-gcc -g -o start.o -c start.S

?变量:

系统定义的变量:($@)代表目标,($^)代表所有依赖,($<)代表第一个依赖,(%)通配符?

例如上面的例子用变量就是:

%.o:%.S

[Tab]arm-linux-gcc -g -o $@ -c $^??

默认情况下,make命令会自动找到文件名叫makefile的文件,当你把makefile改名后,可以用命令:

make -f 文件名?

(3)链接脚本(.lds)

段:一个可执行程序通常由代码段,数据段。bss段构成,所以在脚本文件中也要体现出来

?链接脚本大概如下:

?OUTPUT_FORMAT("elf32littlearm",“elf32littlearm”,“elf32littlearm”)

指定输出文件格式为elf,32位,小端,arm指令

OUTPUT_ARCH(arm)

?指定输出平台为ARM

ENTRY(_start)

指定入口_start

??SECTIONS{

. = 0x50000000 设置程序开始地址(OK6410首地址)

. = ALIGN(4) 代码四字节?对齐

?.text: 指定代码段

{

start.o(.text)? 第一个部分代码为Start.o

*(.text)? 其他部分代码放在start.o代码后面

}?

.= ALIGN(4)?

? .data:{ *(.data) }? 数据段

. = ALIGN(4)

bss_start = . ? bss段的开始位置

.bss:{ *(.bss) } bss段

bss_end = .? bss段的结束位置

}?

?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top