您当前所在位置:

分析环境设计的要点

2013-09-04

2SdIDE的相关模块

SdIDE相关模块是指与编译器和目标MCU相关的模块,完成编译、链接、程序下载等功能。为了满足可移植性,采用数据偶合的方式设计。

(1)交叉编译模块

包括C/C++编译器、汇编器、链接器、目标文件格式转换工具等。编译模块可根据选用的MCU型号调用GNU移植过来的m68hc11、m68k、 arm、mcore或ccore等编译器,源文件编译成功后,在相应的工程目录下生成标准的MotorolaS-record文件或Bin文件等;链接器 根据链接定位信息,将可重定位的目标模块链接成一个单一的、绝对定位的目标程序,链接后的目标程序中包含可裁剪的调试信息。

(2)程序下载模块

程序下载模块包括PC方模块和MCU方模块。PC方模块主要是负责获取MCU的环境变量及公用参数,分析重组S格式文件,最后通过调用TBDML动 态链接库函数把擦写程序和用户程序写入RAM区,然后再运行存放于RAM区的擦除和写入程序实现程序下载操作。MCU方模块主要是编写不同微处理器的 Flash的擦除和写入程序,存放在工程模板目录中,供PC方下载数据时调用。

SdIDE编译模块的可重定性设计

SdIDE开发环境使用的是由GNU移植的GCC编译器,GCC是由美国自由软件基金(FSF)开发和维护的软件,它是一个跨环境的C语言编译器。 GCC所支持的所有编译器目录都放在SdIDE开发环境的安装目录下,SdIDE根据所选定的MCU型号,决定调用相应的编译器工具集。

1更换编译器的设计

如何编写较通用的makefile脚本文件是实现SdIDE可重定目标特性的关键点。makefile是编程人员和make之间的接口,本设计中各 模块的依赖关系主要体现在编写的makefile文件中,makefile文件中的代码内容设计成宏定义区和基于依赖关系的指令区两大部分。前者主要是定 义一些全局变量,可以在makefile的任何地方被引用。为了增加可移植性,与编译器有关的路径和编译器名都用一个全局变量来定义,这样,在更换编译器 时,只需要把GCC支持的编译器目录全部放在开发环境的安装目录下,以便程序调用,同时把当前所需的编译器名赋给全局变量 CompilerName,makefile脚本文件中的编译器名就可用宏$(Compiler-Name)来编写。

2更换编译参数的设计

若编译命令需要定义一组编译参数,且这组编译参数会被多个规则(或编译器命令)引用,那么可把这组参数赋值给一个变量,把这个变量放在所有引用它的地方。当需要改变参数时,只需要在变量赋值的地方改变一下就可以了。变量可在makefile文件的宏定义区定义。

编程器的可重定性设计

编程器主要是完成系列MCU的程序下载功能,编程器的可重定性体现在根据所选的MCU型号不同,决定调用不同的程序下载模块。例如对 AT91RM9200T和MCF5271微控制器进行程序下载,则使用JTAG头,因而要调用JTAG下载模块。下面以FreescaleHCS12系列 微控制器的下载为例,来阐述BDM方式下载,该方式对HCS12系列MCU都是可行的,它们都有BKGD引脚,支持BDM下载。

1编程器PC方软件设计

编程器的PC方软件功能包括S19文件分析模块和Flash存储器的擦除和写入模块。但采用BDM头下载时还要包括TBDML通信模块,该模块负责 通过USB接口将PC方的S-record机器码写入到空白的Flash存储器的指定区域。S19文件分析模块则负责对S-Record标准的S19文件 进行分析,将文件的内容转换成方便传输的格式,以及判断文件中的程序的起始地址、页数、是否越界等。下载程序先将Flash擦写程序数据和用户程序数据写 入到RAM的指定区域,当一页的用户程序数据写入到事先分配的RAM区后,则可通过调用tbdml动态链接库函数来实现擦除和写入操作。BDM头下载程序 的工作流程如图2所示。

2编程器MCU方软件设计

编程器的MCU方的软件功能主要包括Flash的擦除和写入程序。由于在Flash的擦除和写入过程中,Flash是不能读的,故擦除和写入 Flash的程序要放在RAM中,擦除操作时,首先初始化相应Flash寄存器,然后调用整体擦除子程序开始对Flash进行整体擦除。写入操作时,首先 初始化相应Flash寄存器,然后读取RAM区相应地址处的一页用户数据包,即分别读出PPAGE寄存器的分页值、起始地址、一次写入的数据字个数,最后 调用块写入子程序开始写入数据。Flash擦除/写入子程序流程图如图3所示。

结语

一套方便、稳定、适用范围较广的嵌入式集成开发环境肯定要有较好的可扩充性和可移植性,因而研制可重定目标IDE的难点在于软件架构的可重定性设 计。经过两年的努力,本文在SdIDE的结构设计上运用“调用/返回、数据流、数据仓库”等设计风格,初步实现了IDE的可重定性和通用性,目前 SdIDE已投入到教学和实验中进行测试,结果表明该系统运行较稳定,且扩展性较好。但是,完善、升级以及对新出品芯片的适应还需进一步去扩充,系统的功 能和稳定性还有待去加强。嵌入式集成开发环境的开发在我国还基本处于一个刚起步的阶段,道路还很漫长,但意义重大。

更多环境设计论文请关注精品教育网!

相关推荐:

探索中国文化特色的商业室内环境设计