当前位置:
文档之家› 嵌入式软件的开发过程与开发环境
嵌入式软件的开发过程与开发环境
Intel i960 MIPS R3xxx、R4xx0 Mitsubishi D10v、M32R/D
x86 Red Hat ห้องสมุดไป่ตู้inux
Motoroln 68k Sun SPARC、MicroSPARC
Toshiba TX39 9
3.2.3 链接
交叉编译器所产生的目标文件是不完整的,它里 面可能还有未定义的内部变量和函数引用。链接 阶段的工作就是用链接工具把这些目标文件组合 到一起,使所有未定义的变量和函数在程序库或 其它目标文件中找到它的定义。
15
3.4.1 直接测试法
直接测试法是嵌人式系统发展的早期经常采用的一 种调试方法。原因是这种方法需要的调试工具非常 简单,比较适应当时的实际情况。采用这种方式进 行软件开发的基本步骤如下:
16
(1) 在宿主机上编写程序的源代码; (2) 在宿主机上用交叉编译工具对程序的源代码进 行编译,生成可执行程序; (3) 将可执行程序固化到EPROM中; (4) 将EPROM插到目标机的插座上; (5) 在目标机上启动程序运行,若程序正确,则转 到第(8)步; (6) 在在宿主机上修改程序的源代码,纠正错误; (7) 转到第(2)步; (8) 程序开发完成。
5
嵌入式软件的建立步骤
6
3.2.1 源代码编写
源代码编写阶段的工作任务是使用适当的程序设计 语言编写程序的源代码。比如说用C语言、C++语 言、汇编语言等。就目前的情况来看,使用最多的 是C语言。这其中的原因可能有以下三个:其一, 受通用计算机的影响,C语言的使用非常广泛,几 乎每一种处理器都支持C语言的编译器,而且有相 当多的程序员具有用C语言进行程序开发的丰富经 验。其二,在嵌入式系统领域中,C语言是一种最 具统一标准的程序设计语言。其三,C语言是一个 非常“低级”的语言。它赋于程序员很多直接控制 计算机硬件的能力,但又不失去高级语言所固有的 好处。它的这种特点对嵌入式系统更为重要。 7
13
(3) 在目标机上按复位键,重新启动目标机。目标机 被 重 新 启 动 后 , 将 自 动 执 行 驻 留 在 ROM 中 的 bootloader程序。(一些开发评估板可以通过跳线选 择系统重新启动后从不同的地址开始运行。)
(4) 将宿主机的串口和目标机的串口设置为相同的传 输速率。在设置时应选择尽可能高的速率,以节省 程序下载所花费的时间。设置目标机串口传输速率 的方法是同过超级终端程序输入相应的命令。
3.2.2 编译
编译阶段要做的工作是用交叉编译或汇编 工具处理程序的源代码,产生目标文件。 当宿主机和目标机采用同样类型的处理器 时,没有“交叉”的问题,是这一阶段的 一个特例。这时编译工作往往简单些。
8
GNU C/C++编译器支持的宿主机/目标机组
合
宿主机
目标机
DEC Alpha Digital Unix AMD/Intel x86
HP 9000/700 HP-UX IBM Power PC AIX IBM RS6000 AIX
Fujitsu SPARClite Hitachi H8/300、H8/300H、H8/S Hitachi SH
SGI Iris IRIX
IBM/Motorola PowerPC
Sun SPARC Solaris Sun SPARC SunOS x86 Windows 95/NT
(5) 在宿主机上通过超级终端程序输入bootloader程 序的命令,将开发评估板设置为等待接收下载程序 状态,并指定程序下载的位置。
(6) 在宿主机上发出下载命令。开始进行程序下载。
14
3.4 嵌入式软件的调试及其工具
直接测试法 驻留程序法 插桩法 ROM仿真器法 在线仿真器法 片上调试法 模拟器法
12
使用目标机上的驻留程序
生成了目标机的内存映象文件之后,就可以使用 bootloader程序将这个内存映像文件下载到目标 机上面去。宿主机端软件和bootloader程序一般 是通过串口相互连接。当然也可以通过以太网相 连接。在使用串口相连接时,下载程序的工作可 分为以下几步进行: (1) 用串口线连接宿主机和开发评估板的串口。 (2) 在宿主机上启动bootloader程序。当使用以 Windows为操作系统的PC机做宿主机时,通常 以超级终端程序做宿主机端软件。
3 嵌入式软件的开发环境
本章主要内容: (1) 嵌入式软件的开发过程 (2) 嵌入式软件的建立及其工具 (3) 嵌入式软件的下载及其工具 (4) 嵌入式软件的调试及其工具 (5) 典型的嵌入式软件开发环境
1
3.1 嵌入式软件的开发过程
为嵌入式系统开发应用程序的过程与为PC机 开发应用软件过程有一定的不同,出现了一 些在PC机上不曾有的工作阶段。在同样的一 个阶段,具体的工作也有很多的不同。
链接阶段得到的结果是一个“可重定位”的程序 文件。其中包含了来自输入文件的所有代码和数 据。链接工具通过合并输入文件里的代码段、数 据段来完成这一工作。链接完成后,所有输入文 件里的机器语言代码将出现在输出文件的代码段 里,所有变量将出现在输出文件的数据段里。
10
3.2.4 定址
要使链接工具输出的文件变成可执行的程序文件还 必须做一件事,那就是为程序的代码和数据指定存 储地址。指定存储地址这项工作是需要在定址阶段 通过定址工具来完成的任务。定址工具的输入是 “可重定位”的程序文件,输出是可执行的二进制 文件。它们二者之间的转换,由定址工具自动完成, 但应用程序的开发者必须向定址工具提供有关目标 机上的存储器的信息。定址工具将用这些信息来为 “可重定位”程序里的每一个代码段和数据段指定 物理存储地址。
2
而应用程序要在和宿主机有很大 差别的目标机上实际运行。
应用程序的调试主要是 在宿主机上进行,但在 很多情况下要借助于目 机。
应用程序的编辑、编译、交链叉接开等发过模式
程都在宿主机上完成,
3
嵌入式软件的开发过程
4
3.2 嵌入式软件的建立及其工具
嵌入式软件的建立步骤: 源代码编写 编译 链接 定址
11
3.3 嵌入式软件的下载及其工具
程序的下载就是把在宿主机上生成的目标 机内存映像文件放到目标机的RAM存储器 或者Flash ROM上面去,以便进行调试和 运行。程序下载的方法主要有以下几种: (1) 使用ROM仿真器 (2) 使用在线仿真器(ICE) (3) 使用片上调试器(ICD) (4) 使用目标机上的驻留程序