免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3723 | 回复: 10

[C] 实时系统软件开发方法 [复制链接]

论坛徽章:
0
发表于 2014-03-12 20:07 |显示全部楼层
大家有没有在资源极其有限,同时还要求实时性的嵌入式平台进行开发的工作经验?

举例说明,随着多年的积累,项目代码量已经很多。随之而来的问题就是各个模块之间的耦合度非常高,全局变量很多很多。

想要解耦合,可以参考面向对象的设计方法,但是这样做又会以牺牲性能为代价。

请问在这种情况下,有没有好的设计方法,何降低耦合度,又不牺牲性能呢?

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-03-12 20:17 |显示全部楼层
没做过这种,不过“可以参考面向对象的设计方法,但是这样做又会以牺牲性能为代价”这个逻辑不存在吧

论坛徽章:
0
发表于 2014-03-12 20:43 |显示全部楼层
鱼和熊掌不可兼得!

论坛徽章:
0
发表于 2014-03-12 22:08 |显示全部楼层
回复 2# hellioncu


    这样做必然会引入一些新的处理,降低代码的执行效率。
    例如,本来不同模块之间,用一个flag来标识一个事件的发生。现在你加入一套消息传递机制,在系统里绕一大圈才通知那个模块。
    这不就是降低性能了嘛

论坛徽章:
0
发表于 2014-03-12 22:17 |显示全部楼层
回复 3# Hugo801122


    想找一个相对较好的解决方案。

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2014-03-12 22:19 |显示全部楼层
yxchugo 发表于 2014-03-12 22:08
回复 2# hellioncu


面向对象跟消息传递有啥关系?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2014-03-15 15:34 |显示全部楼层
Hugo801122 发表于 2014-03-12 20:43
鱼和熊掌不可兼得!

这话怎讲?用一个大容器,把鱼、熊掌、和熊的其他部分都装进来。

论坛徽章:
24
金牛座
日期:2013-10-18 21:35:56综合交流区版块每日发帖之星
日期:2015-08-15 06:20:00综合交流区版块每日发帖之星
日期:2015-09-30 06:20:00综合交流区版块每日发帖之星
日期:2015-10-16 06:20:03每日论坛发贴之星
日期:2015-10-16 06:20:03综合交流区版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之天津
日期:2016-02-25 16:28:04综合交流区版块每日发帖之星
日期:2016-06-12 06:20:00每日论坛发贴之星
日期:2016-06-12 06:20:00综合交流区版块每日发帖之星
日期:2016-06-13 06:20:00综合交流区版块每日发帖之星
日期:2015-06-22 22:20:00
发表于 2014-03-15 23:57 |显示全部楼层
PUSH/POP不会影响多少效率,远比很多程序员写的程序的水分要少!

论坛徽章:
0
发表于 2014-03-16 15:11 |显示全部楼层
回复 8# 一介村夫

我的经验比较少。

按照你的意思,函数调用所花的资源消耗并不会对性能产生太大的影响。

但是随着功能的不断增多,原来一定时间(比如20ms)能完成的任务,会不会达不到要求了?   

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
发表于 2014-03-16 17:53 |显示全部楼层
如果是硬实时的话,功能多了就把功能拆开,用几个单片机来处理,每个单片机只处理极少几个功能,少量消息可以用GPIO直接传。这种东西一般是轮询中断然后处理,然后再轮询。
如果不能拆,那么要计算每个任务的响应时间来规划需要的计算能力,对象层面上造成的性能损失只多1,2条指令,不是决定性的损失。好好规划一个状态机来处理状态才是正解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP