您当前所在位置:

分析环境设计的要点

2013-09-04

【摘要】精品教育网为您精心编辑了环境设计论文-,希望帮助您提供更多想法。

可重定目标的硬件设计

为了使硬件环境尽可能对GNUTools开发工具所支持的系列MCU通用,在设计时,采取核心板和扩展板的方式实现在硬件上尽可能的通用。把每种芯 片的最小支撑电路单独设计在一块核心板上,把所有的模块及I/O引脚引出来,以便把相应的模块接口移到扩展板上,由于同一系列芯片的基本模块的功能引脚数 是相同的,只是引脚所处的位置不同而已,所以,每种MCU基本模块完全可以移到扩展板上,在扩展板上设计这些模块的支撑电路。考虑到嵌入式产品需要高端软 件和低端软件进行通信,通信接口有RS-232串口和USB口两种。因而,设计编程器时,既保留了串行接口,也加上了USB接口,这样就更进一步地提高了系统在硬件上的可重定性。

可重定目标的软件设计

SdIDE在软件上的可重定性设计思路体现在如下两个方面。

(1)SdIDE模块的可重定性设计

为了使该开发环境适用于多种MCU型号,在模块设计和编译器设计方面做了深入的研究,因为这两方面是SdIDE具有可重定性的关键点。首先,在模块 设计方面分为与MCU有关的部分(相关模块)和与MCU无关的部分(独立模块),独立模块主要包括编辑、编译出错处理、makefile文件编写,工程管理、函数及全局变量列表,界面设计等;相关模块主要包括程序下载模块,这些模块也可以通过软件的方法使其对某一系列MCU通用。

(2)编程器的可重定性设计

编程器主要是实现程序下载功能,编程器的通用一般只针对某一系列或某一芯片而言的,不可能做到完全通用。例如对FreescaleHCS12系列芯 片,都有BKGD引脚,因而可以用BDM方式下载;C*CORE和M*CORE系列芯片由串口通过监控的方式下载;ARM和COLDFIRE系列芯片通过 JTAG下载。下面以FreescaleHCS12系列芯片的程序下载模块设计为例,来说明编程器的可重定性设计。

编程器可重定性设计的关键技术在于如何处理HCS12系列MCU的Flash参数。要对不同芯片的Flash参数进行深入理解、比较和总结之 后,才能对程序下载模块进行设计。找出这些芯片有差异的Flash参数后,将其放在数据库中,以便下载程序时,从该数据库中读取相关参数。设计好参数数据 库之后,PC方下载界面可以根据所选择的芯片型号从配置文件和数据库中获取相应芯片的擦写操作所需的参数值。表1给出了HCS12系列MCU中的几款芯片 的参数,这些参数针对不同的MCU,其值可能不同。

用户数据起始地址:将一页用户数据写入相应空白芯片之前,要先将这一页数据通过BDM头写入到RAM区,然后运行写入程序,实现数据从RAM区写入 到ROM区。但由于不同芯片的RAM区大小和起始地址有可能不同,把一页用户数据写入到RAM区时,其起始地址也会有所不同,所以将其设置为可变参数,使 用时,从数据库中读取。

标志位首地址:该参数是RAM区的一个地址,用于存放擦写成功或出错的标志信息,占两个字节。每写完一页面用户数据之后,PC方可从该地址处读出一个字的内容,判断Flash写入操作是否成功,只有成功后,才写下一页用户数据。

写入文件路径和擦除文件路径:由于每个芯片的Flash参数和空间不尽相同,因而每种芯片的擦除和写入子程序也会有差异,因而,PC方要根据当前所 选的MCU型号以及当前是擦除还是写入操作来决定调用哪个MCU的写入程序代码文件(*Write.s19)或擦除程序代码文件 (*Erase.s19),以实现写入或擦除操作。

SdIDE软件架构的可重定性设计

本文设计的可重定目标集成开发环境SdIDE包含工程管理、编辑、编译、链接、程序下载等功能,启动的主界面如图1所示。为了使SdIDE的软件架构具有可重定目标的特性,因而在功能模块上将其划分为公共模块和相关模块。下面简要阐述这些模块的功能及其软件架构的设计思想。

1SdIDE独立模块

SdIDE独立模块是指与编译器和目标MCU无关的模块,主要是完成工程管理与编辑功能。

(1)编辑模块

该模块可以实现对源文件编辑,使用MFC界面库进行二次开发,支持剪切、复制、所有工程中查找、替换等常用功能,同时作者也在该环境中实现了完全支 持中文和语法高亮显示(SyntaxHighlight)功能,此部分主要的技术难点在于语法高亮显示和解决半个汉字问题。使用MFC的RichEdit 控件可以解决半个汉字此问题,但无法解决语法高亮功能,因而,笔者在RichEdit的基础上重新编写了语法高亮类,在实际测试中效果较好。

(2)工程模块

在SdIDE集成开发环境中,文件的组织和调用都以工程的方式来进行操作。工程是一个非常重要的概念,它是用户组织一个应用的所有源文件、设置编译 链接选项、生成调试信息文件和最终的目标文件的一个基本结构。提供对源文件、库文件及其他输入文件的管理,并含有编译与链接等设置。