协同开发模式在磁场检测仪开发中的应用
由于采用Proteus和IAR联调,即在IAR集成开发环境中进行代码调试,运行和调试结果直接在Proteus中显示,因此不用等到样板制作完毕再开始嵌入式软件的调试,从而做到嵌入式软件和硬件的同步开发。
另外,相对于直接在样板上调试,Proteus更容易判断出某个功能不能实现的具体原因,是由于硬件的故障还是软件的编程问题引起的,从而避免了误将硬件故障认为是软件编程问题的情况发生,大大提高开发效率。另一方面,在磁场检测仪LCD显示驱动程序的调试中,利用Proteus提供的逻辑分析仪虚拟仪器测量LCD驱动时序,可以非常直观地调试LCD的驱动程序,快速地完成LCD驱动程序的编程和调试。
由于磁场检测仪中每一版本的PCB都只焊接制作了3块样板,大部分调试都在Proteus上完成。所以,用Proteus代替实际样板调试,可以很大程度地减少元件的购置,减少样板的制作;同时,也大大减少了JTAG仿真器、示波器、逻辑分析仪等调试设备的购置。为磁场检测系统开发节约大量的资金和宝贵的开发时间。
3 嵌入式软件各模块协同开发
3.1 引入嵌入式操作系统实现任务分解
现在,国内低端手机设计上广泛使用联发科技MTK的方案,将手机芯片和手机软件平台预先整合到一起。MTK的整套软件系统十分庞大且复杂,但其架构是引入Nucleus嵌入式操作系统,将手机软件分解成多个任务并行开发。
MTK使用了Nucleus实时操作系统,但在其上做了内核抽象层的封装,以适应最终生产厂商选择其他实时操作系统的需要(如选择替换为ThreadX)。Nucleus、ThreadX和μC/OS-II这3个嵌入式操作系统功能上很类似,但商用license是不一样的。其中μC/OS-II应用在市场上销售的产品,是需要购买license的;而针对高校的教学和研究,是免费的。这也是μC/OS-II广泛被高校教师和学生认知的一个重要原因,同时这也是我们优先采用μC/OS-II作为磁场检测仪的嵌入式操作系统的一个重要原因。
目前,ARM程序的规模一般都很大,需要多人协同开发。由于不带嵌人式操作系统的程序,仅依靠全局变量和函数传递信息,程序耦合度十分高,很难实现多人的协同开发。引入嵌入式操作系统后,各个任务间通过消息邮箱、消息队列或信号量同步,大大降低程序的耦合度,极大地提高团队协同开发的效率。
引入嵌入式操作系统后,一般将程序分成几个任务(线程),分别由专人负责。嵌入式软件开发流程中,首先是对电路板和嵌入式操作系统进行初始化,接着创建若干任务,剩下的工作就是编写每个任务或中断处理的程序代码。图2为磁场检测仪的中断和任务间的同步关系框架图。本文引用地址:https://www.eepw.com.cn/article/148266.htm
3.2 引入版本控制器实现代码合并
引入嵌入式操作系统后,每个嵌入式软件开发人员只需负责一个或若干任务。通过引入源代码控制软件,可以实现嵌入式软件代码的整合和集中备份。其中,SVN是BitNami Redmine Stack一键式安装模式中默认安装的版本控制器。通过SVN的使用,开发人员每天回到实验室,
通过SVN更新整个项目代码,然后用Source Insight开始一天的代码编写工作。下班前,使用IAR编译平台进行代码编译,确认没有编译错误后,再把自己修改过的代码上传到SVN中。上传代码时,SVN会自动检测代码是否存在冲突(如果两个或多个开发人员都改动了某一文件的同一地方,SVN会提示存在冲突)。如果存在冲突,开发人员可根据实际需要,协调解决冲突。
引入SVN后,每次代码上传到SVN后都会自动更新生成一个版本号。当磁场检测仪的嵌入式软件各模块联调出现新问题时,通过比较类软件(如beyond compare),比较两个版本代码之间的差别,很多时候能够快速找出问题的关键所在。
评论