Chinaunix
标题:
实时系统软件开发方法
[打印本页]
作者:
yxchugo
时间:
2014-03-12 20:07
标题:
实时系统软件开发方法
大家有没有在资源极其有限,同时还要求实时性的嵌入式平台进行开发的工作经验?
举例说明,随着多年的积累,项目代码量已经很多。随之而来的问题就是各个模块之间的耦合度非常高,全局变量很多很多。
想要解耦合,可以参考面向对象的设计方法,但是这样做又会以牺牲性能为代价。
请问在这种情况下,有没有好的设计方法,何降低耦合度,又不牺牲性能呢?
作者:
hellioncu
时间:
2014-03-12 20:17
没做过这种,不过“可以参考面向对象的设计方法,但是这样做又会以牺牲性能为代价”这个逻辑不存在吧
作者:
Hugo801122
时间:
2014-03-12 20:43
鱼和熊掌不可兼得!
作者:
yxchugo
时间:
2014-03-12 22:08
回复
2#
hellioncu
这样做必然会引入一些新的处理,降低代码的执行效率。
例如,本来不同模块之间,用一个flag来标识一个事件的发生。现在你加入一套消息传递机制,在系统里绕一大圈才通知那个模块。
这不就是降低性能了嘛
作者:
yxchugo
时间:
2014-03-12 22:17
回复
3#
Hugo801122
想找一个相对较好的解决方案。
作者:
hellioncu
时间:
2014-03-12 22:19
yxchugo 发表于 2014-03-12 22:08
回复 2# hellioncu
面向对象跟消息传递有啥关系?
作者:
yulihua49
时间:
2014-03-15 15:34
Hugo801122 发表于 2014-03-12 20:43
鱼和熊掌不可兼得!
这话怎讲?用一个大容器,把鱼、熊掌、和熊的其他部分都装进来。
作者:
一介村夫
时间:
2014-03-15 23:57
PUSH/POP不会影响多少效率,远比很多程序员写的程序的水分要少!
作者:
yxchugo
时间:
2014-03-16 15:11
回复
8#
一介村夫
我的经验比较少。
按照你的意思,函数调用所花的资源消耗并不会对性能产生太大的影响。
但是随着功能的不断增多,原来一定时间(比如20ms)能完成的任务,会不会达不到要求了?
作者:
gvim
时间:
2014-03-16 17:53
如果是硬实时的话,功能多了就把功能拆开,用几个单片机来处理,每个单片机只处理极少几个功能,少量消息可以用GPIO直接传。这种东西一般是轮询中断然后处理,然后再轮询。
如果不能拆,那么要计算每个任务的响应时间来规划需要的计算能力,对象层面上造成的性能损失只多1,2条指令,不是决定性的损失。好好规划一个状态机来处理状态才是正解。
作者:
yxchugo
时间:
2014-03-18 23:49
回复
10#
gvim
对你说的状态机很感兴趣。谢谢!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2