基本信息
文件名称:嵌入式系统设计与开发——基于ARM Cortex-A9和Linux 课件 第10章 ARM-Linux软件开发基础.pptx
文件大小:9.61 MB
总页数:148 页
更新时间:2025-06-26
总字数:约1.08万字
文档摘要

第十章ARM-Linux软件开发流程;提纲;ARM-Linux软件开发流程;.s:扩展名为.s的文件是汇编源文件,是嵌入式系统必不可少的文件。

.c:扩展名为.c的文件是C源文件,是嵌入式系统文件最为常见形式。

.cpp:扩展名为.cpp的文件是C++源文件,是面向对象编程常见文件形式。

.o:扩展名为.o的文件是目标文件,目标文件就是源代码编译后但未进行链接的那些中间文件(Windows的.obj和Linux下的.o)。在Linux下,.o文件也被称为ELF(ExecutableLinkableFormat)文件。

.axf:扩展名为.axf的文件是链接器处理后的文件,它是ARM芯片使用的文件格式,它除包含bin代码外,还包括输出给调试器的调试信息。

.bin(.hex):ROMformat格式二进制文件的两种形式是.bin和.hex。

.a(.lib).a的文件在Linux系统下是静态链接库文件(Windows下称为.lib文件),库文件和目标文件一起生成可执行文件。一段代码或一个工程可以生成.a供别的工程调用,.a也可以是类似工程的源文件,作为链接器的输入。;armasm把汇编代码生成.o文件

armcc把C语言代码生成.o文件

armcpp把C++语言代码生成.o文件

armer是编译器,把.o文件生成库

armlink是链接器,把.o文件变成.axf文件

fromelf是一个处理工具,把.axf文件变成可运行的二进制文件,也可以直接处理.o文件,生成反汇编和调试信息

DWARF2debugtables存放各种调试信息表;上述的源文件一步步编译链接生成可执行的ROMformat文件。使用了两个工具:编译器和链接器。

编译的过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件。

链接是“组装”,“组装”的“原料”是编译器生成的.o文件和扩展名为.a的库文件。之所以会有这么多的.o文件,完全是因为程序的设计者追求代码的小型化、模块化以及多语言混合编程。链接的过程主要包括地址和空间分配(AddressandStorageAllocation)、符号决议(SymbolResolution)和重定位(Relocation)等步骤。

在Linux系统中,编译和链接是由Makefile文件完成的,Makefile文件编写的依据是GNUMake。本章后面将有Makefile文件编写的内容。;提纲;与嵌入式OS无关的开发工具,用于开发

板级测试软件,辅助硬件调试

基本的驱动程序

系统软件,如OS

与嵌入式OS相关的开发工具,用于开发

部分特定OS的驱动程序,BSP

基于嵌入式OS的应用;嵌入式软件开发工具的分类;根据不同的阶段,嵌入式软件开发工具可以分为

需求分析工具(RequirementAnalysisTools)

软件设计工具(SoftwareDesignTools)

编码、调试工具(CodingDebuggingTools)

测试工具(TestingTools)

配置管理工具、维护工具等;主要嵌入式软件开发工具产品;嵌入式软件的编码阶段工具;嵌入式软件的测试阶段工具;测试阶段工具—内存分析工具;测试阶段工具—性能分析工具;测试阶段工具—覆盖分析工具;覆盖分析工具实例;测试阶段工具—逻辑分析仪;主要功能

真实再现程序运行流程

发现系统死锁及软件造成的死机

发现系统内存泄漏

指导对任务的合理划分

指导关键路径设计与验证

指导合理分配任务堆栈

CPU使用率统计

指导合理设计中断服务程序;测试阶段工具—逻辑分析仪;向着开放的、集成化的方向发展

具有系统设计、可视化建模、仿真和验证功能

自动生成代码和文档

具有更高的灵活性;提纲;开发需要专门工具和特殊方法

嵌入式交叉开发环境:宿主机、目标机、工具集

采用交叉开发的方式进行;宿主机(Host)

用于开发嵌入式系统的计算机。一般为PC机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。

目标机(Target)

即面向应用所开发的嵌入式系统,嵌入式软件的运行环境。;嵌入式软件的交叉开发环境;宿主机端的工具软件集合

文本编辑器

交叉编译器

交叉调试器

仿真器

下载器等

;嵌入式软件开发的实现阶段,可分为三个步骤

软件的生成

调试

固化运行;嵌入式软件的生成过程;嵌入式软件的编译链接;嵌入式软件的调试;交叉调试与非交叉调试;嵌入式软件的调试;嵌入式软件的固化运行;嵌入式软件的固化运行;?Boot模块

整个应用系统代码的入口模块

?Boot模块的主要功能

初始化CPU环境,使目标机硬件初始化为已知的状态

初始化芯片的引脚

初始化