×
单片机 > 单片机程序设计 > 详情

ARM入门篇之(二)工具

发布时间:2020-08-28 发布时间:
|
  (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段的结束位置

}​

    ​

关键字:ARM入门  工具 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义