在嵌入式设备上构建基础应用框架

    以前是在做电力终端设备的小公司,现在去了一家只做OEM的硬件厂家。离开了管理岗位,去小公司做起了开发。个人感觉,挺好。很轻松,可以安心搞技术,做一些实实在在的事情了。


    由于在这家硬件单位,只有自己做应用程序的。接了几个项目,都是以最快的速度完成的,所以代码的可重用性比较差。就算是有类似功能的,也都是直接拷贝上一个项目中的部分代码后,修改一下,来实现新的项目的。还好,这些项目没有要我一直维护下去,直接给源代码给了客户,他们有什么需求,自行改进。 考虑到项目一多起来,光是拷贝代码和调试,自己一个人可能都忙不过来。严重的是,只要有一个厂家的代码出了问题,那就没办法应付了。最终决定,就算是自己一个人做项目,也要构建一个基础的应用框架。至少在代码维护上,不会顾此失彼。如果这个框架做的好的话,应该以后的工作量就会非常少了。做一个框架是有意义的。


    由于涉及到Ti的DSP的应用程序和嵌入式linux的应用程序。要记住全部的应用和涉及,对于我这样的记忆力差的人,是很难的。所以,要有足够的文档来记录相关的设计和过程。还好,有很多的工具可以使用,而且是开源的。我对软件的偏爱是,使用正版,使用免费的。除非不得以,不使用盗版软件。我使用了svn来管理我的代码库,和使用UML来编写我的设计文档。一个好的代码编辑工具是快速编码的必不可少工具,我使用eclipse for c++,至少编写完的代码,文字错误基本很少,他的自动补齐功能,可以减少你敲击键盘的次数。虽然自己在盲打方面,自认为已经非常快了。在去年,DSP程序开发我还是使用CCS3.3. 后来合众达给我提供了份CCS4的拷贝,当时我很兴奋,因为CCS4是基于eclipse框架的。但是安装完成后,很沮丧。因为CCS4很不好用,而且反映迟钝。后来还是换回了CCS3. 但是个人感觉,基于eclipse的CCS应该是一个趋势,现在又安装了一个CCS5,感觉比CCS4进步多了,但是调试的效率比较低下。希望Ti能够快速发布好用的CCS工具。


   磨刀不误砍柴工,寻找一些好的工具是非常有必要的。一般地应用中, DSP主要应用是进行采样,控制和数值计算,而嵌入式linux主要是作为通讯设备和数据处理,以及人机交互。DSP中除了典型的数据采集与控制逻辑外,剩余的就是通讯,还有一些通用算法的功能。TI在DSP系列产品上,提供了一个系统级的软件套件,叫做DSP/BIOS(CCS5中已经改名为SYS/BIOS,是为了兼容arm系列产品的应用)。虽然我接触到的技术人员,基本上很少有人使用这个软件套件,但是我很乐意使用,并研究它。这个套件提供了基于硬件的高级抽象,它有线程的概念,有线程通讯的概念。这些都为开发高可靠的DSP应用提供了方便。因为我可以基于BIOS的任务来做我自己的应用,而不用关心CPU的具体调度策略了。 嵌入式linux的开发就要考虑实时性,可靠性,已经用户需求的多变性了。能借用各种各样的开源软件是我在嵌入式linux系统开发的最大受益,不但稳定,功能齐全。而且通过研究,也让自己学习和长进。非常感谢这些典型的项目开发人员:Qt,sqlite,mysql,tinyxml,以及centos,ubuntu, gcc, gmake 等等,当然vmplayer也是必不可少的。


  没有把DSP完全的独立出来,姑且称之为DSP子系统吧。将DSP进行划分层次。一层是对芯片级的操作的封装,包括中断相应和数据接口。一层是数据层。如何组织数据对,DSP至关重要。抽象出典型的数据模型。包括参数区,缓冲区,数据区,通讯缓冲区等等。一层是应用层,如 维护口的人机交互,如和上位机的通讯协议,以及下位机的数据采集。当然还要有算法库在里面。


  嵌入式子系统更像是一个大型的应用服务器。它有齐全的各个子模块。数据存储,日志,任务管理等等。同时,还需要从分层的角度对它进行交叉的划分。


  认识到,开发可靠的程序,没有测试是不可能的。幸亏google有一个免费的开源单元测试框架google c++ testing framwork。

 

=================================

  本来是想将自己编写的自动构建的Makefile文件拿出来分享的,但是又不知道从何说起。于是就胡乱写了一通。后续好好整理后,再拿出来分享。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章