第十章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环境,使目标机硬件初始化为已知的状态
初始化芯片的引脚
初始化