系统的开发是否能跟上市场需求的变化成为制约嵌入 式产品能否占据市场的关键因素。因此,设计一种较为通用的,高度集成的,同时具备良好 扩展性的嵌入式软件对于提高嵌入式软件开发效率非常重要[1][4]。
本文中设计并实现的嵌入式软件开发环境 PLAEmbeddedIDE v1.0,是基于Windows 环 境的,集编辑器、交叉编译器、交叉调试器等工具为一体的,具备扩展性的嵌入式软件集成 开发环境。
PLAEmbeddedIDE 采用分层的模块化结构,其结构如图1 所示,从上至下分别是用户 界面层、配置实体层、接口层、功能层。其中,功能层又分为两大部分:工具集和可重用组 件库。用户界面接收用户的输入对系统进行配置,通过配置实体设定相应的参数,接口层通 过传递过来的配置参数,对工具进行必要的配置,并加载恰当的工具完成用户动作。
可重定向编译器是快速开发交叉编译器的平台[2],以最常用的可重定向编译器GCC 为 例,图2 是GCC 后端重定向的原理图。
GCC 后端与目标相关部分的源码insn-*,是由后端代码生成器gen*(文件名以gen 开 头的c 源程序)读入3 个目标描述文件自动产生的,如图2 中右侧所示。这些生成器gen* 相当于目标描述文件的解释程序,对目标描述文件进行分析和处理。目标描述文件由 machine.md、machine.h、和machine.c 构成,是insn-*文件描述内容的抽象形式,与insn-* 文件相比,目标描述文件更容易书写和理解。
gen*程序实现了从目标机描述文件到GCC 后 端的自动生成。 重定向交叉编译器时,gen*读入目标描述文件生成相应的insn-*,然后将这些insn-*与 GCC 的其它源程序(与目标不相关的代码)共同编译链接,生成最终的交叉编译器。用户 在基于GCC 构建新的交叉编译器时,需要做的工作就是编写或改写三个目标描述文件,修 改相关编译选项即可[5]。
基于 GCC 构建的交叉编译器是一个的应用程序,当用户调用的时候,GCC 作为后 台程序运行[5],完成编译功能之后,将返回结果传送给用户界面。因此,还需要向上层用户 界面提供通用的编译接口,PLAEmbeddedIDE 通过调用这些接口来完成各项编译工作。 根据集成开发环境对交叉编译器的功能要求,本文设计了通用的编译接口函数 InvokeComplier( )供上层GUI 调用。部分代码如下:
B 的移植工作主要集中在与目标相关的代码编写[3][6],下面将分别就B 源码中与 目标相关的文件,讲述如何进行移植代码的编写。
这两个文件是与操作系统相关的,其中文件ARCH-NAT.c 中的函数侧重于目标体系结 构,支持多种操作系统,文件ARCH-TOS-NAT.c 中的函数则针对某种目标体系结构上的某 种操作系统,实际编写时可以灵活掌握。
这两个文件是分别与体系结构相关和与操作系统相关的头文件,这些头文件将被很多相 关文件所包含。通过在这些头文件中设置相应的宏或其他的定义,起到对其他相关文件设置 的作用。
本文由 790游戏(www.790.kim)整理发布