UAC389AE02 HIEE300888R0002用软件来实现部分硬件功能
UAC389AE02 HIEE300888R0002用软件来实现部分硬件功能
敏捷开发不需要架构
极限编程,敏捷开发的出现使一些人误以为软件开发无需再做架构了。这是一个很大的误解。敏捷开发是在传统瀑布式开发流程出现明显弊端后提出的解决方案,所以它必然有一个更高的起点和对开发更严格的要求。而不是倒退到石器时代。事实上,架构是敏捷开发的一部分,只不过在形式上,敏捷开发推荐使用更高效,简单的方式来做设计。比如画在白板上然后用数码相机拍下的UML图;用用户故事代替用户用例等。UAC389AE02 HIEE300888R0002测试驱动的敏捷开发更是强迫工程师在写实际代码前设计好组件的功能和接口,而不是直接开始写代码。敏捷开发的一些特征:
针对比传统开发流程更大的系统
承认变化,迭代架构
简洁而不混乱
强调测试和重构
2. 嵌入式环境下软件设计的特点
要谈嵌入式的软件架构,首先必须了解嵌入式软件设计的特点。
2.1. 和硬件密切相关
UAC389AE02 HIEE300888R0002嵌入式软件普遍对硬件有着相当的依赖性。这体现在几个方面:
一些功能只能通过硬件实现,软件操作硬件,驱动硬件。
硬件的差异/变更会对软件产生重大影响。
没有硬件或者硬件不完善时,软件无法运行或无法完整运行。
这些特点导致几方面的后果:
软件工程师对硬件的理解和熟练程度会很大程度的决定软件的性能/稳定性等非功能性指标,而这部分一向是相对复杂的,需要资深的工程师才能保证质量。
软件对硬件设计高度依赖,不能保持相对稳定,可维护性和可重用性差
UAC389AE02 HIEE300888R0002软件不能离开硬件单独测试和验证,往往需要和硬件验证同步进行,造成进度前松后紧,错误定位范围扩大。
针对这些问题,有几方面的解决思路:
UAC389AE02 HIEE300888R0002用软件实现硬件功能。选用更强大的处理器,用软件来实现部分硬件功能,不仅可以降低对硬件的依赖,在响应变化,避免对特定型号和厂商的依赖方面都很有好处。这在一些行业里已经成为了趋势。在PC平台也经历了这样的过程,比如早期的汉卡。
将对硬件的依赖独立成硬件抽象层,尽可能使软件的其他部分硬件无关,并可以脱离硬件运行。一方面将硬件变更甚至换件的风险控制在有限的范围内,另一方面提高软件部分的可测试性。
2.2. 稳定性要求高
大部分嵌入式软件都对程序的长期稳定运行有较高的要求。比如手机经常几个月开机,通讯设备则要求24*7正常运行,即使是通讯上的测试设备也要求至少正常运行8小时。为了稳定性的目标,有一些比较常用的设计手段:
将不同的任务分布在独立的进程中。良好的模块化设计是关键
Watch Dog, Heart beat,重新启动失效的进程。
完善而统一的日志系统以快速定位问题。嵌入式设备一般缺乏有力的调试器,日志系统尤其重要。
将错误孤立在最小的范围内,避免错误的扩散和连锁反应。核心代码要经过充分的验证,对非核心代码,可以在监控或者沙盒中运行,避免其破坏整个系统。
举例,Symbian上的GPRS访问受不同硬件和操作系统版本影响,功能不是非常稳定。UAC389AE02 HIEE300888R0002其中有一个版本上当关闭GPRS连接时一定会崩溃,而且属于known issue。将GPRS连接,HTTP协议处理,文件下载等操作独立到一个进程中,虽然每次操作完毕该进程都会崩溃,对用户却没有影响。
双备份这样的手段较少采用

ABB 3BSE042243R1 触摸屏 PP800面板
ABB 07KT98 GJR5253100R2260 控制器模块PLC风电设备
ABB 07CR41 控制器模块PLC风电设备
ABB 07EB62R1 控制器模块PLC风电设备
ABB PM564-RP-ETH DCS备件 控制器
ABB PM554-RP-AC DCS备件 控制器
ABB P-HA-RPS-32000000 DCS备件 控制器
ABB PFTL101A/3BSE004172R1 DCS备件 控制器
ABB PFTL101A 0.5KN DCS备件 控制器
ABB PFSK102 DCS备件 控制器
ABB PFSA140 DCS备件 控制器
ABB PFEA112-65 3BSE050091R65 DCS备件 控制器
ABB PFEA113-65 3BSE050092R65 DCS备件 控制器
ABB PFEA11X-20 DCS备件 控制器
ABB PFEA111-65 3BSE050090R65 DCS备件 控制器
ABB PFEA111-20 DCS备件 控制器
ABB UFC921A101 模块 控制器
ABB UAA326A04 HIEE300024R4 模块 控制器
ABB XVC770AE 模块 控制器
ABB XV9738A 模块 控制器
ABB UAC375AE103 模块 控制器
ABB UFC760BE143 模块 控制器
ABB UGTMEM-03LBB11 模块 控制器
ABB UNS0874A 模块 控制器
ABB UNS0867A-P 模块 控制器
ABB UNS2881B-PV1 模块 控制器
ABB UFC911B106 模块 控制器
ABB UAC389AE02/HIEE300888R0002 模块 控制器
ABB UA377a-E 模块 控制器
ABB UB371a-E 模块 控制器
ABB UNS-0869A-P 模块 控制器
ABB UCD224A102 模块 控制器
ABB UCD208A101 模块 控制器
ABB UAD154A 模块 控制器
ABB UA374B-E 模块 控制器
ABB UA372c-E 模块 控制器
ABB PM861K01 模块 控制器
ABB PM856AK01 3BSE066490R1 模块 控制器
ABB PP881 模块 控制器
ABB 07AC91 GJR5252300R0101控制器模块
ABB 1HSB495663-2 气体密度继电器
ABB DSTA131控制器模块
ABB 3BHE023584R2634/PPD113B03-26-100110现货型号齐全
ABB DSQC539/SR92B130/3HAC14265-1现货型号齐全
ABB 3BSE004940R0001直销
ABB IGCT 5STB24Q2800晶闸管可控硅
ABB 58119687控制器模块
ABB PM866A/3BSE076359R1现货型号齐全
ABB 3BHL000986P7000备件现货
ABB 3BSE018059R1 TC512V1模块
ABB 5SHY3545L0020可控硅模块
ABB 3BHE024642R0101 GCD207B101备件现货
ABB 3BHE031065R0020控制器模块
ABB 3HAC14550-4/04B机器人配件
ABB 3HNA000651-001控制器模块
ABB DSQC370/3BSC980004R574控制器模块
ABB TB82PH/TB82PH2110410NS现货型号齐全
ABB FC95-22/HESG440295R2/HESG448688R22现货型号齐全
ABB DSQC377B/3HNE01586-1/15现货型号齐全
ABB 3BSE018877R1/PFSK152备件现货
ABB DSIH72VP现货型号齐全
ABB REF3BUR980025R1控制器模块
ABB DSQC679/3HAC028357-001控制器模块
ABB 3HNA006146-001-SIB-01备件现货
ABB 3BHE035301R1002转速端子板模块
ABB DSDX451L控制器模块
ABB DSQC697控制器模块
ABB 3BHE003688R0101直销