嵌入式系统开发环境概述
系统开发
系统架构设计
浏览:973 次

嵌入式系统开发环境主要包括:
集成开发工具
交叉编译器
批处理文件
生成文件
链接脚本
调试工具
下载工具
其他工具(脱机工具)
模拟器
版本控制工具
接下来,我们将解释上述工具:
1.集成开发工具
通常,CPU制造商会为这种CPU提供集成开发环境(IDE),但在实际应用中,大多数嵌入式项目开发公司仍会使用自己的开发环境。一个是项目某些功能的特殊要求,另一个是并非所有CPU模型都有相应的IDE。
2、 交叉工具
交叉工具包括:
交叉装配器
交叉编译器
跨图书馆
交叉链接器
转储工具(有关将可执行文件转换为汇编语言代码的信息)
调试工具(GNU gdb)
以GNU工具链中的C编译器gcc为例,以下是一些编译时选项:
-错误:将所有警告消息更改为错误消息。一旦生成警告消息,将不会生成目标文件。
-S: 在编译时输出汇编语言代码。
-C: 编译时仅生成对象文件
-E: 仅执行预处理,不生成目标文件
-D: 在编译时定义宏常量
-O、 -O2,-O3:优化水平。
-g: 在编译时添加模式信息,以便GDB可以用于调试
以GNU工具链中的C链接器链接器为例,以下是一些选项:
-T: 开发链接脚本文件
-地图:连接时生成地图文件,其中包含程序中所有符号的地址信息。
GNU工具链可以支持许多不同的CPU,用户可以根据需要设置配置。例如,arm elf gcc是一个生成elf格式的arm机器代码的C编译器,而68K coff ld是一个以coff格式生成68000机器代码的链接器。
3、 制造商

Make是用于自动编译的程序工具。只要makefile详细说明了哪些工具(如交叉编译器)用于处理哪些文件(.c,.obj,…)(生成未优化的目标文件),make还会检查这些文件是否过期,如果过期,它只会自动重新编译需要编译的文件(make会比较文件之间的依赖关系和日期,以确定是否需要重新编译文件)。对于普通的批处理程序(如Windows下的.bat程序),在更新一些文件后,需要重新编译所有文件。
用GNU软件/GNU程序设计编程
使用Make/Make管理项目
以上两本书详细说明了make的用法。
(1) makefile中的重要概念
目标:要生成的文件的名称。
依赖关系:定义两个文件是否相互依赖。
前提条件:可以创建目标的一些文件。目标通常由多个文件创建。
最新:如果文件比它所依赖的文件更新,则意味着该文件具有新版本。
makefile的基本语法:
#文件名:sample.mak
目标:依赖项列表
命令1
命令2
执行上述makefile的命令是:make-f sample make。如果-f未用于指定makefile,make将在当前目录中查找名为“makefile”的文件。此外,如果未指定目标,make将使用makefile中的第一个目标文件名作为目标名。
(2) makefile示例
以下是makefile中宏定义的示例:
#文件名:DEFINE.MAK
#
#定义将在其他生成文件中使用的宏。其思想与C语言中的#define相同
#
! IFNDEF_定义_标记
_DEFINE_MAK=已定义
#
#定义项目相关文件所在的磁盘驱动器号
#
PRJ_驱动器=Y:
#
#定义项目工具所在的目录
#
PRJ_工具_根=$(PRJ_DRIVER)\工具
#
#定义编译器所在的目录
#
GNU_ CC=$(GNU33_ROOT)\kcc33

GNU_ LK=$(GNU33_ROOT)\ld
GNU_AR=$(GNU33_ROOT)\AR
#
#定义项目程序所在的目录
#
SRC_根=$(PRJ_DRIVER)\Project2020
SRC_ INC=$(SRC_ROOT)\include
#
#当在编译期间传入-DXXX参数时,效果就像在程序中写入#define XXX
#
PRJ_配置=-DPRJ_ 2020-DCPU_ ARM9-DLCD_ 160X160
#
#执行C编译器时定义参数
#
? CFLAGS=-c-gstabs-mlong调用-fno内置-mgda=0-mdp=1-O3
-I$(包括GNU)
-I$(SRC_INC)
-I$(PRJ_CONFIG)
#
#执行链接器时定义参数
#
LDFLAGS=-T主。lds-映射$(目标)。地图-N
#
#
! 结束
以下是一个更复杂的示例:
#
#在makefile中,还可以包括其他makefile,就像include一样
#
! 如果“$(_DEFINE_MAK)”==“”
! 包括DEFINE.MAK
! 结束
#
#定义每个模块中包含的对象文件。每个对象都是目标
#

模式1 _ OBJS=m1_001.obj m1_002.obj m1-003.obj
MODEL2_OBJS=m2_001.obj m2_002.ob