可重定目标的嵌入式集成开发平台设计
引 言
嵌入式应用软件的开发与通用计算机软件开发不同,由于受资源约束,嵌入式软件开发一般需要在专门的开发平台上进行交叉开发(cross developing)。同时,由于嵌入式系统的开发及嵌入式软件的调试也非常复杂,因而迫切需要强有力的集成开发平台(Integrated Development En-vironment,IDE)作为支持,以保证程序执行的实时性、可靠性,保障软件质量,并缩短开发时间。因而,对MCU系统开发平台和开发环境的研究近年来备受重视,出现了比较著名的嵌入式开发软件,如ImageCraft公司的IC-CAVR、Freescale公司的CodeWarrior等。当前,在我国高等院校及嵌入式系统产品的研发企业中,绝大多数都使用国外的嵌入式系统集成开发平台。原因很简单:MCU绝大多数是进口的,国外集成开发平台功能完善、稳定。另外,由于嵌入式系统集成开发平台具有芯片相关性,这就为我国研制嵌入式系统集成开发平台增加了难度。因此,开发具有自主知识产权的嵌入式系统集成开发平台是一件很有意义且具有挑战性的工作。从2001年开始,苏州大学在Motorola M68HC08系列MCU上尝试开展这一工作,并开发了MT-HC08/S08型嵌入式集成开发平台,命名为"MT-IDE For Motorola HC08/S08"。为了克服开发平台适用范围的局限性,通过实验确定,开发平台模块可分为"与芯片无关"和"与芯片有关"两大部分,这样就可彻底地分割开来,实现可重定目标。因而,在先前研究的基础上又成功研发了可重定目标的集成开发平台(SdIDE),且已成功应用于Freescale HC08/S08/S12、M*Core、C*Core、ColdFire及ARM等系列MCU芯片。本文主要介绍这项成果,并对开发平台的可重定性和通用性的关键技术给出必要的阐述。
1 设计思路
考虑到GNU Tools是开源软件,且完全覆盖编译开发工具(如gcc等)、调试工具(如gdb)等)和软件工程工具(如make等),可有效地开发嵌入式系统。因而,选择GNU Tools作为IDE的交叉开发工具,会有较好的推广前景。在设计过程中,重点考虑以下三个方面。
1.1 编程调试器方案的确定
在早期的MCU开发中,程序固化于EPROM中,擦除时间较长,操作繁琐,程序调试困难。为解决此问题,仿真器技术得以较快发展,用软件来模拟目标系统中MCU的运行情况,但是使用仿真器往往把目标硬件与软件独立开来,难以实现100%的硬件模拟。
片内Flash 储器的使用,使得嵌入式系统的开发可以不再使用仿真器,而是直接调试目标系统。Flash存储器虽然有写入、擦除次数、寿命方面的限制,但一般都可以达到10万次以上,故开发过程中不必顾及Flash的寿命问题。目前单片机内Flash都是可以在线编程的,即在线写入、擦除,在线调试程序。由此可见,如今嵌入式系统的开发可以彻底脱离仿真器方式。所以,本文设计的编程调试器是充分利用Flash存储器特点,直接面向目标系统的编程调试方式(如BKGD模式)。
1.2 开发平台的通用性
一般嵌入式集成开发平台都与具体的单片机相关,很多集成开发平台只能针对一种MCU芯片,移植起来非常不方便。本文在开发平台的通用性上做了较深入研究,使其便于移植。在硬件相关部分尽可能对GNU Tools开发工具所支持的系列MCU通用,与MCU有相关性的参数由PC机方的IDE软件处理,使IDE与MCU相对独立。考虑到许多笔记本电脑没有串行口,编程调试器与PC机的接口采用USB,以提高适用性。本文给出嵌入式系统集成开发平台SdIDE,把系列MCU的下载与调试接口设计在一块评估板上,可以适用于多种MCU型号,对新型号也给出了加入方法。
1.3 开发平台的可移植性
嵌入式开发平台一般针对某一厂商生产的MCU,或针对某一系列MCU。但其中运行于PC方的IDE在工程管理、编辑功能上具有公用性,编译设置、下载与调试等功能虽然与硬件相关,但可以通过调用参数数据库的方式,用软件的方法避免其直接与硬件打交道,提高IDE的可移植性。一种嵌入式开发平台可以尽可能地做到对某一系列MCU通用,但很难做到适用所有的MCU。因而,没计一个可以方便移植到其他系列MCU平台上的IDE是很有意义的。本文在IDE可移植性方面做了大量的研究工作,并成功地将其移植到Freescale HC08/S08/S12系列微控制器、M*Core核的MMC2107微控制器、C*Core核的CCM3118微控制器、ColdFire核的MCF5271微控制器和ARM核的AT91RM9200微控制器上。
2 SdIDE集成开发平台的软件功能设计
可重定目标集成开发平台SdIDE是一个高度集成的标准的Win32界面,包含编辑器、编译汇编链接器、调试器、工程管理、Flash在线编程及程序下载等交叉工具,采用Visual C++MFC编写。该集成开发平台包含工程管理、编辑、编译、链接、程序下载与调试等功能,为了使其具有可重定目标的特性,因而在其功能模块上将其划分为公共模块和私有模块两大部分。下面具体介绍各个模块的功能及其软件设计思想。
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)