嵌入式GUI开发后记——浅谈现代软件开发思想在嵌入式软件开发中的应用

历经接近一年的分析、设计、编程和测试,适用于8位、16位和低档32位嵌入式系统,支持完全事件驱动编程机制的嵌入式GUI——TBsoft-GUI V1.00正式完成。
 
TBsoft-GUI V1.00部分实用版本可以在我们的网站免费下载,网址:http://www.qian-tbsoft.com。这些版本包括:
 
TBsoft-GUI V1.00 8051评估版,使用Keil C51 V7.06A作为编译器,可用于MCS-51系列单片机和单色LCD,支持键盘设备,支持使用小汉字库,允许用户程序外挂LCD和键盘驱动程序。
 
 
TBsoft-GUI V1.00 DOS试用版,使用Turbo C++ 3.0或者Borland C++ 3.1作为编译器,可用于使用DOS作为操作系统的工控计算机系统,也可用于学习。
 
 
用户服务E-mailservice@qian-tbsoft.com
 
在各种嵌入式GUI系统已经大行其道的今天,TBsoft-GUI有什么特点和优势呢?我们可以用“又小又好”这句话来形容TBsoft-GUI的主要特点和优势。
 
TBsoft-GUI的第一个优势是“小”。大部分嵌入式GUI系统的内存消耗,包括程序存储器(ROM)和数据存储器(RAM),均在几百KB以上,使得它们对嵌入式系统的最低要求是中高档的32位嵌入式系统。而在目前很多嵌入式系统的开发中,特别是仪器仪表的开发中,流行的是8位、16位或者低档32位嵌入式系统,这类嵌入式系统一般只有几十KB到一百多KBROMRAM,导致了大部分嵌入式GUI系统无法在这类系统上运行,严重制约了这类系统的用户界面增强。很多开发者为了给用户提供良好的用户界面,不得不改用中高档32位嵌入式系统,导致了系统成本的大幅度提高。
 
TBsoft-GUI解决了这个问题,TBsoft-GUI可以在较小ROMRAM8位、16位和低档32位嵌入式系统上运行。仅使用一片有64KB Flash1KB以上RAM的增强型MCS-51系列单片机,例如STC89C516RD+或者NXP P89V51RD2,加上一块STN单色图形LCD,即可很好地运行TBsoft-GUI,用户输入设备最小只需要有几个按键开关的键盘。TBsoft-GUI还可以支持凌阳系列16位单片机和无外部FlashRAMARM系统,例如NXPLuminary的低档ARM
 
由于流行的MCS-51系列单片机C语言编译器——Keil C51具有一定的特殊性,很多C语言开发的系统移植到Keil C51下编译时,容易出现兼容性问题而不得不修改源程序,例如μCOS—Ⅱ在MCS-51系列单片机上的移植。TBsoft-GUI在设计之初就考虑到了这个问题,专门为MCS-51系列单片机和Keil C51编译器作了特殊设计和优化,有很好的Keil C51兼容性。
 
TBsoft-GUI支持和μCOS—Ⅱ等抢占式多任务嵌入式操作系统同时使用,也可以不使用嵌入式操作系统。TBsoft-GUI无需任何动态内存分配函数的支持。
 
TBsoft-GUI的第二个优势是“好”。TBsoft-GUI没有因为追求小的RAMROM占用而忽视GUI系统编程体系结构的优化,更没有使得编程变得更加复杂,甚至可以这样说:TBsoft-GUI的编程体系结构是目前嵌入式GUI系统中最好的编程体系结构之一。相对其他GUI系统,TBsoft-GUI的最大特点是支持完全的事件驱动编程机制,TBsoft-GUI在只使用了C语言,连C++都没有使用的情况下,实现了原来只有使用VBDelphi或者Java才能实现的事件驱动编程机制,这种编程机制使得TBsoft-GUI的程序设计体系结构十分清晰,还使得TBsoft-GUI具有了向可视化开发过渡的能力。
 
TBsoft-GUI有很好的中文支持,支持不同字体和大小的汉字以及西文混合显示,还提供专用的小字库提取工具,可以将小字库提取成C语言源程序的形式,直接编译进最终应用程序。
 
TBsoft-GUI引入了控件管理器的机制,同一用户界面上的控件由控件管理器统一管理,TBsoft-GUI与可视化开发一样,控件不再看作子窗口,而将窗口看作一种控件,真正实现了以控件为中心的GUI设计。TBsoft-GUI可以直接在用户界面上使用控件,无需使用窗口,同时又可以在窗口上使用控件,并不需要改变编程模型,更加适合嵌入式GUI开发的不同需求。
 
TBsoft-GUI是将现代软件开发,特别是PCWindows软件开发相关思想和技术引入低档嵌入式软件开发的成果。目前,笔者看来,嵌入式软件开发有两个主要方向:基于WinCE.NET Compact FrameworkLinuxJ2ME等平台的高档嵌入式软件开发,以及主要基于C语言和汇编语言的低档嵌入式软件开发。高档嵌入式软件开发主要用于消费类电子产品,例如手机、PDAGPS等,在高档32位嵌入式系统上进行,例如ARM9MIPS等。这类嵌入式软件开发由于使用了和PC软件开发类似的操作系统、平台和开发工具,已经与PC软件开发十分接近,在移植好的平台上,普通程序员较少直接访问硬件,现代软件开发思想早已用于这类嵌入式软件开发。
 
低档嵌入式软件开发目前主要用于工业控制领域、仪器仪表领域等,开发使用的嵌入式系统可以说是五花八门,从8位的8051AVR16位的MSP430和凌阳,一直到32位的低档ARM7,都在低档嵌入式软件开发中使用。这类嵌入式软件开发有一些共同特点:硬件能提供的资源少,ROMRAM有限;电路千变万化,程序设计缺乏统一性;程序员通常只能使用C语言甚至汇编语言,必须直接访问硬件;通常不使用嵌入式操作系统,即使使用,也是μCOS—Ⅱ等专用嵌入式操作系统等。这些特点使得软件开发与PC WindowsLinux软件开发相距甚远,却有些接近PC DOS软件开发。
 
但这不等于说,现代软件开发思想不能用于低档嵌入式软件开发。随着低档嵌入式系统的进一步发展,新型的8位单片机都可以做到64128KB Flash48KB RAM和单周期指令,例如C8051F系列单片机,其资源和速度远非传统8051可比,开发也多使用C语言,而C语言是一种有很强可移植性的编程语言,适应于多种平台。在这种情况下,低档嵌入式软件开发的代码量迅速扩大,将现代软件开发思想引入低档嵌入式软件开发不仅是可能的,也是保证软件质量所必需的。
 
将现代软件开发中的分层设计体系结构、面向对象、事件驱动程序设计等思想引入低档嵌入式软件开发之后,能够充分发挥新型MCU的资源和速度优势,充分利用MCU,简化最终用户编程的体系结构,有效地控制嵌入式软件质量。甚至可以引入现代软件工程,例如迭代—增量软件过程模型、面向对象软件工程方法和UMLXP过程等,以进一步提高软件开发效率和质量。
 
这里有读者可能会提出疑问:只使用C语言,没有C++,能实现面向对象,包括封装、继承和多态,以及事件驱动程序设计吗,笔者的答案是肯定的,因为Microsoft公司早就这样做过了。
 
算法与编程语言是无关的,结构化程序设计、面向对象和设计模式与平台是无关的,无论是Windows还是8位嵌入式系统。软件开发的思想都是相通的,在TBsoft-GUI的开发中,笔者充分证明了这一点。

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张