历史上的今天
返回首页

历史上的今天

今天是:2025年02月13日(星期四)

正在发生

2018年02月13日 | 采用Proteus实现下位机硬件和嵌入式软件的并行开发应用

2018-02-13 来源:21ic

  本文针对磁场检测仪需要众多软硬件开发人员协同开发的问题,引入Redmine项目管理平台进行项目开发的协同管理。采用Proteus实现下位机硬件和嵌入式软件的并行开发,引入嵌入式系统和SVN版本管理器对嵌入式软件各模块进行协同开发。采用Bus Hound实现上位机和下位机软件的并行开发。最终,该协同开发模式的引入使得本项目开发用时比原计划用时减少25%,同时项目质量也有提高。

  随着电子产品功能日益增多、性能日益增强,低成本32位微处理器、多层PCB板被广泛应用,软件和开发团队的规模随之扩大,同时开发周期呈指数增长。因此,以往的开发方式越来越不适应项目开发的需要。目前,国内磁场检测仪器主要集中应用在工业用低频强磁场和通信用的高频弱磁场测量上,而中频强磁场测量仍是磁场测量领域的一个难题。基于嵌入式操作系统的中频强磁场的测量系统开发中,涉及到高速硬件电路设计、多层PCB板布线、32位微处理器编程、上位机软件编程等多项工作,因此,需要众多开发人员协同开发。

  通过长期的实践发现,在项目开发中引入开源项目管理平台Redmine、嵌入式操作系统μC/OS-II、仿真软件Proteus和调试软件Bus Hou nd,能够有效地提升整个项目的协同开发能力和管理水平。采用协同开发管理模式,可以达到以下4方面的显着效果:提高嵌入式软件和硬件之间的协同开发效率;提高嵌入式软件各模块间的开发效率和开发质量;提高上位机和下位机软件的开发效率和开发质量;有效提高整个项目协同开发的管理水平。

  1 磁场检测仪开发管理平台

  项目管理的好坏关系到项目开发质量的高低,同时,对开发效率和开发质量也将产生重大的影响。目前市场上,基于Web的开源项目管理软件已经发展得很成熟,此类软件在高校的教学和研究,以及中小企业的项目开发管理中,都得到了广泛的应用。

  现阶段,在磁场检测系统项目开发中,由于软硬件的开发复杂,开发人员众多且开发人员存在着开发能力参差不齐、流动性大等特点,加上项目的开发时间跨度大等原因,使得项目管理变得十分困难。经过笔者应用分析,从软件的成熟度、稳定性、流行性、社区发展情况,以及安装配置的简易性这几方面进行详细的分析比较,最终在Launchpad、Redmine和Trac这3个软件中,选择了Redmine。

  在磁场检测系统的项目管理平台搭建中,首先,利用BitNami Redmine Stack提供的一键式安装包,安装好Redmine平台,然后把中频磁场检测系统开发团队的成员、任务(问题)、文档、讨论、Wiki、版本管理,以及各种形式的资源整合在此平台上,大家通过一起参与更新任务、更新文档等来推动项目的进度。同时,系统地利用时间线索和各种报表,动态显示项目的进度状态。

a.JPG

    
    在项目中引入Redmine管理平台,界面如图1所示。起到了立竿见影的效果:
    ①开发团队中新加入的成员通过此平台,可以快速地了解项目的详细情况,从而能够快速地接手项目;
    ②团队中如有成员离开,其他成员可以快速地接手该成员原来负责的任务;
    ③相对于以往采用客户端TortoiseSVN访问SVN的方式,开发成员更容易接受Redmine提供的Web访问方式,来访问和操作SVN版本控制器;
    ④为团队成员的内部沟通和交流提供了高效的平台;
    ⑤根据项目的进展情况,可以及时地调整项目的进度,从而实现高效的动态管理。

2 嵌入式软件和硬件协同开发
    Proteus可以实现原理图设计、PCB布板以及微处理器与外围电路的协同仿真。Proteus微处理器模型支持8051、PIC、MSP430、AVR、ARM 7和HC11等系列微处理器。其中,2011年推出的Proteus7.10版本,增加了对ARM Correx-M3系列处理器的支持。
    电子产品从芯片的选型、电路设计、PCB布板到样板焊接调试,这中间一般需要几个月的时间,这段时间对整个项目开发来说,是非常关键的。在磁场检测仪样板制作的同时,嵌入式软件开发人员在Proteus中绘制基本原理图后,就可着手在Proteus的ARM Cortex-M3微处理器模型上编写程序。


    由于采用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为磁场检测仪的中断和任务间的同步关系框架图。


c.JPG

    
3.2 引入版本控制器实现代码合并
    引入嵌入式操作系统后,每个嵌入式软件开发人员只需负责一个或若干任务。通过引入源代码控制软件,可以实现嵌入式软件代码的整合和集中备份。其中,SVN是BitNami Redmine Stack一键式安装模式中默认安装的版本控制器。通过SVN的使用,开发人员每天回到实验室,
通过SVN更新整个项目代码,然后用Source Insight开始一天的代码编写工作。下班前,使用IAR编译平台进行代码编译,确认没有编译错误后,再把自己修改过的代码上传到SVN中。上传代码时,SVN会自动检测代码是否存在冲突(如果两个或多个开发人员都改动了某一文件的同一地方,SVN会提示存在冲突)。如果存在冲突,开发人员可根据实际需要,协调解决冲突。
    引入SVN后,每次代码上传到SVN后都会自动更新生成一个版本号。当磁场检测仪的嵌入式软件各模块联调出现新问题时,通过比较类软件(如beyond compare),比较两个版本代码之间的差别,很多时候能够快速找出问题的关键所在。


4 下位机和上位机的协同开发
    Bus Hound可以用来分析USB总线数据协议、捕获I/O动作等。同时,也可以传送用户编写的命令,实现对下位机的控制和调试。虽然上位机软件还没有完成,但定义好上位机和下位机的通信协议后,可以用Bus Hound模拟上位机软件接收下位机软件发送的USB数据,或发送USB数据给下位机软件,从而实现上位机和下位机软件的并行开发。
    在磁场检测仪中,使用南京沁恒电子有限公司生产的CH375作为USB主控芯片,实现ARM和上位机的USB通信。实际编程中,使用了CH375的3个端点,端点0用于控制传输,实现USB设备的枚举;端点2 IN用于USB数据从下位机到PC的Bulk传输(一次最多64字节);端点2 OUT用于USB数据从PC到下位机的Bulk传输(一次最多64字节)。Bus Hound接收32字节磁场测量数据如图3所示,利用Bus Hound控制CH373的USB端点2OUT,分32次控制接收下位机回传1 KB的磁场点采集信号数据,最终通过PC的中频磁场分析软件实现中频磁场的单点、平面和空间的磁场模拟分布显示。


b.JPG

    
    另外,端点1 IN用于USB数据从下位机到PC的中断传输,端点2 OUT用于USB数据从PC到下位机的BULK传输(一次最多8字节)。在磁场检测仪嵌入式软件的调试中,利用端点1 IN发送调试指令和接收调试数据。

结语
    Redmine、Proteus、μC/OS-II、SVN和Bus Hound的使用,提高了磁场检测系统的开发效率和开发质量,为磁场检测系统高效、高质量地完成开发任务提供了坚实的基础。在实际使用该协同开发模式中,高校或中小企业可以根据自身的实际需要进行改动,如μC/OS-II换成μCl inux等其他嵌入式操作系统,SVN换成GIT等其他版本管理器,Proteus换成SkyEye等其他仿真平台。最终,有效提高了高校研究生课程的教学效果以及高校和企业的项目开发效率和开发质量。


推荐阅读

史海拾趣

宜源科技(ETERNAL)公司的发展小趣事

随着国内市场的饱和,宜源科技公司积极寻求海外市场的发展机会。公司加强与国际知名企业的合作,共同开发新产品,拓展市场份额。同时,宜源科技还积极参加国际展会和论坛,提升品牌知名度和影响力。通过不懈的努力,宜源科技的产品已经成功进入多个国家和地区,实现了国际化发展。

ConnectBlue公司的发展小趣事

ConnectBlue公司成立于2000年,当时正值无线通信技术快速发展的时期。公司创始人凭借对无线技术的深刻理解和市场需求的敏锐洞察,决定专注于无线系统的研发和生产。起初,公司面临资金紧张和技术难题,但创始团队凭借坚韧不拔的精神,克服了一个又一个困难,成功开发出了一系列具有竞争力的无线模块产品。

Delta Electronics公司的发展小趣事

除了电源管理技术外,Delta在工业自动化领域也取得了重要突破。公司开发了一系列工业自动化产品和解决方案,如变频器、PLC、HMI等,广泛应用于机械制造、自动化生产线等领域。这些产品和解决方案不仅提高了生产效率,降低了生产成本,还为客户提供了更加智能化、自动化的生产方式。

ALLEN BRADLEY公司的发展小趣事

近年来,网络安全问题日益严重。2022年,Delta Electronics遭遇了一起勒索软件攻击。面对这一挑战,公司迅速启动了应急响应机制,与专业的网络安全机构合作,成功阻止了攻击者的进一步行动。这一事件虽然给公司带来了一定的损失,但也让Delta更加重视网络安全问题,加强了公司网络安全防护体系的建设。

CalAmp公司的发展小趣事

随着物联网技术的快速发展,车队管理成为了一个重要的应用领域。CalAmp公司凭借其深厚的技术积累和市场洞察力,成功推出了一款车队管理新解决方案。该方案通过直观的用户界面(UI)设计,为企业、政府和建筑机构提供了更为便捷、高效的车队管理工具。用户可以通过该界面轻松获取关键业务数据,如资产位置、驾驶行为和车辆状态等,从而加快智能决策,提高车队运营效率,降低成本并增强安全性。这一创新解决方案的推出,进一步巩固了CalAmp在车队管理领域的领先地位。

Hpc Technology Inc公司的发展小趣事

在某年第一季度,CalAmp公司发布了其财报数据。根据财报,该季度公司实现营收7089.1万美元,虽然比市场预期的7566万美元略低6.30%,但仍然展现了稳健的增长态势。同时,公司的每股收益为-0.11美元,低于预期的0.04美元,这可能与公司在研发和市场拓展方面的持续投入有关。尽管如此,CalAmp公司在无线通信解决方案应用领域的广泛布局和深厚的客户基础,使得其整体业绩依然保持稳健。

问答坊 | AI 解惑

s3c6410液晶驱动

新板出来了,用了NEC的液晶,所以需要修改驱动。 目前遇到了问题,液晶背光可以点亮,但是不管我往显存里面写什么数据,液晶都是白的。 串口出来的信息没有任何异常。 以前的液晶是16bit的,NEC是18Bit。但是我觉得就是那里不对也不应该显示一片 ...…

查看全部问答>

DSHOW的IMediaSample接口如何使用

想得到DSHOW的IMediaSample接口的数据,如何做?…

查看全部问答>

LED照明与功率因数关系解析

功率因数偏低的害处 1)供电设备的带负载能力被打了折扣,即降低了带负载能力。如某设备能供出100KVA的视在功率,若功率因数为 0.7,则只能供出70KW的有功功率了;若功率因数为0.9,则能供出90KW的有功功率,可见提高功率因数很有意义。 2)输电 ...…

查看全部问答>

团购的IC都是什么封装的?

本帖最后由 dontium 于 2015-1-23 13:18 编辑 请问下团购的IC都是什么封装的,不要是一些不太方便焊接的芯片啊。我看了是工业级的,会不会有QFN等一些难焊接的封装啊。 …

查看全部问答>

misc设备的read一次最大读取长度

是和scull设备一样是4000吗?…

查看全部问答>

Help~!!!PendSV中断置位后没立刻执行~?~??~

发现置INTCROL里的PENDSV挂起位后,接着开中断,竟然不会进入PENDSV中断处理代码!?!?!? 这是什么情况~~~~…

查看全部问答>

LM3S系列自带CRC16好像有问题,求解

LM3S系列自带CRC16好像有问题,求解? CRC_ITER(CRC,DATA); usCrc = Crc16(0, pucData1, ulLen1); usCrc = Crc16(usCrc, pucData2, ulLen2); usCrc = Crc16(usCrc, pucData3, ulLen3); 值好像不一致。 [ 本帖最后由 benbending 于 2013-2-1 11 ...…

查看全部问答>

请各位大神们告诉小弟这幅图的出处和详细内容

请各位大神们告诉小弟这幅图的出处和详细内容,万分感激啊!…

查看全部问答>

PCB焊接调试心得

不知大家有没有发现,在自己设计的PCB焊接过程中,稍不注意就很容易出现问题。而且有时找老半天还找不到问题的根源,特别是贴片元件比较密集的地方特别容易出现问题!        当然在工厂批量生产过程中谢谢问题是比较容易避免 ...…

查看全部问答>