做电脑系统软件开发,工
这儿利用两个前述发生的例子,针对最高级技师时常犯的两个小严重错误,或是时常要走的两个急弯,做了前瞻性的纠正。希望可以帮到我们,文辞不好文章中有叙述不清的地方我们龙显蕙。这首诗我不是想说程式结构设计的规章的东西,如果你想让他们的流程文件起码简单的看起来耐用、时效性强,推荐找宏碁的C语言程式结构设计规范。我只想想来当他们的电脑系统遇到多个组件的统计数据须要处置,近似于虚拟化时他们如果怎么办?背景是这种的,去年9月份已经开始安排两个技师已经开始做电动车交流充电桩,机械结构设计部份由公司机械结构部门负责。充电桩的Nagapattinam分总体上分为X个部份(加进的资源),阻抗触屏(RS232),M1卡随机存取(RS232),热能计量表(RS485),音频提示信息(SPI),电力控制器(阻抗器IO),通讯USB(RS485、CAN)。技师做的操作过程非常刻苦,期间也是举步维艰,改了很多个版本,总算今年6月把充电桩立起来了。咱们来环评一下吧,结果发现TNUMBERFK的这时候无法处置触屏,播映音频的这时候无法处置TNUMBERFK,音频播映无法打断或是弹跳,反正就是所有该事件要两个两个有条不紊的来,一旦操作方式严重错误就须要多次执行、等候、甚至重新来过。两个工作3年多的技师怎么会把商品弄成这种呢?看看流程吧!一看没关系,吓了一跳!整个的流程是没有逻辑的,一个点就往下写……While(1){//上电步入主流程 或 促发触屏//播映提示信息音频Delay();//等候播映完//加载M1卡信息Delay();//等候TNUMBERFK统计数据返回//播映提示信息音频Delay();//等候播映完//M1卡统计数据可视化,认定下一步棋操作方式及提示信息Delay();//等候统计数据处置完…………}这儿说这个技师基本上对于他们结构设计的商品没有任何的整体概念,或是说对他们开发的流程加进结构设计白眉林有怎样的前述效果根本就不清楚。他犯了两个他们在软件开发操作过程中最失礼的两个问题:
1、 delay(死等)这类表达式只在如果实验室校正某个功能操作过程中加进,在前述的商品设计时无论是主循环while中,还是其初始化的表达式中,亦或是中断服务流程中绝对不可以加进。
2、 商品设计的各子组件之间的相互关系过强,例如:要等候广播完才能TNUMBERFK步入下一步棋操作方式等。
他们讲,商品设计中只有各该事件处置组件间的相互关系弱化,才能更加灵活的进行处置。例如:两个该事件A和B,如果软件开发时将A弄成B该事件的必要条件,B该事件的促发就要等候A该事件的发生。反之如果A该事件作为B该事件处置的两个特殊情况,那么软件开发起来就变得灵活很多。
3、 没有考虑到电脑系统本身是两个单核单任务的架构,每两个该事件都会独占CPU内核,当多个任务组件同时存在时他们如果对各该事件进行区分,他们应当分情况、分该事件实时性要求等区分对待。
那么针对于这种的问题,或是是遇到类似的项目他们如果如何处置呢?
几条建议:
1、将硬件系统区分为独立单元单独弄成底层驱动表达式和应用表达式,并且表达式正常如果有参数和返回值,其中返回值是必要的。如何衡量这类表达式呢?这类表达式可移植性强,只要两个.h文件和两个.c文件就可以随意放到任何工程中。例如:音频播映、M1TNUMBERFK、485处置等等。
2、将1中的所有表达式进行时间评估,评估点有两个。两个是表达式的执行时间t,第二个是表达式的周期性发生的时间T,两个最基本的条件是t < T,理想情况如果是t << T。
3、建立两个集中逻辑处置表达式,在这个表达式中对1中的各表达式进行调度。这个表达式发挥的作用相当于嵌入式系统中的系统调度。这种调度是整个硬件逻辑中所有该事件处置的调度,它的目的是完成两个处置操作过程,但是绝不依赖于任意该事件的必要处置操作过程。这种就将问题2中提到的该事件间的相互关系弱化了,处置起来变得十分灵活,使得各关系不在相互必要。
4、为了保证前面内容的正常实施还须要针对各类该事件的周期,建立两个必要的时间管理表达式,时间表达式的基础一般情况下由两个内部定时器的中断来完成,中断的周期一般他们考虑5-10ms。按照前述需求将N个定时器中断定义为两个该事件处置的周期TT,这个周期如果保证处置完最恶劣情况可能发生的所有t,且保证TT < T。
5、 这其中也有例外,一些实时性要求高的该事件应当用中断完成。其中中断处置表达式的处置该事件应尽量短,时间要求参见2。
上一篇:三大小不一软件开发网络平台的
下一篇:小软件开发只不过无从!