面向接口的编程——平台技术、开关量信号
周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的"核心域",改变自己的编程思维,实现企业和个人的共同进步。经周立功教授授权,即日起,致远电子公众号将对该书内容进行连载,愿共勉之。
第四章为面向接口的编程,本文内容包括:4.1 平台技术、4.2 开关量信号。
本章导读:
在结构化程序设计中,由于高层模块依赖底层模块,通常一个变化会引出另外的问题发生改变,则变化的代价就会急剧上升。所以在引入接口时,一个重要的经济考量是软件的不可预测性,因为需求和技术都在以不可预测的方式变化,其目的就是为了降低依赖。
4.1 平台技术
>>> 4.1.1 创新的窘境
虽然嵌入式系统和通用计算机系统同源,由于应用领域和研发人员的不同,嵌入式系统很早就走向了相对独立的发展道路。通用计算机软件帮助人们解决了各种繁杂的问题,随着需求的提升,所面临的问题越来越复杂,软件领域的大师们对这些问题进行了深入研究和实践,于是诞生了科学的软件工程理论,无需多言通用计算机软件的发展是我们有目共睹的。
再回过头来看嵌入式系统的发展,其需求相对来说较为简单,比如,通过热电阻传感器测温、上下限报警与继电器的动作,因此嵌入式系统的应用开发似乎没有必要使用复杂的软件工程方法,于是通用计算机系统和嵌入式系统走上了不同的发展道路。
当嵌入式系统发展到今天,所面对的问题也日益变得复杂起来,而编程模式却没有多大的进步,这就是所面临的困境。相信大家都或多或少地感觉到了,嵌入式系统行业的环境已经开始发生了根本的改变,智能硬件和工业互联网等都让人始料不及,危机感油然而生。
尽管企业投入巨资不遗余力地组建了庞大的开发团队,当产品开发完成后,从原材料BOM 与制造成本角度来看,毛利还算不错。当扣除研发投入和合理的营销成本后,企业的利润所剩无几,即便这样员工依然还是感到不满意,这就是传统企业管理者的窘境。
虽然ZLG 投入了大量的人力资源,但重复劳动所造成的损耗以亿元计。上千种MCU,由于缺乏平台化的技术,即便相同的外围器件,几乎都要重新编写相应的代码和文档并进行测试,所有的应用软件很难做到完美地复用。
在开发同一系列高中低三个层次的产品时,通常会遇到这样的问题,主芯片可能使用ARM9、双核A9 和DSP,其操作系统分别为μC/OS-II、Linux 和SysBIOS。不仅驱动代码不兼容,而且应用层代码也不一样,显然浪费在这上面的开销是不可想象的。
>>> 4.1.2 AWorks
在MCU 产业快速发展的今天,不同的MCU 外设的差异千差万别。AWorks 对同一类外设进行了抽象,并设计了相应的标准接口与对应的中间层,使得不同厂商、型号的MCU 外设都能以标准的接口操作。
对于上层操作系统而言,对各个外设都需要编写驱动。在编写特定操作系统下的驱动时,必须熟悉特定的驱动平台与操作系统调用,以至于程序员不得不花费大量的时间学习与此相关的知识。对于同一个外设而言,如果要支持多个操作系统,则需要编写多个驱动,其实驱动底层对硬件的操作是有相通之处的,AWorks 的出现便是解决这里提到的问题。
1. AWorks 的特点
如图4.1 所示是AWorks 的标识符,这是ZLG 经过十多年时间积累开发的IoT 物联网生态系统,成功地应用到ZLG 的示波器、功率计、功率分析仪、电压监测仪、电能质量分析仪、数据记录仪与工业通讯等系列高性能仪器和工业IoT 产品中。
图4.1 AWorks
虽然AWorks 内嵌了操作系统,但AWorks 中的操作系统如同一个驱动代码一样,仅仅是一个可以根据需要任意更换的组件。操作系统适配器直接驻留在操作系统接口之上,主要用于屏蔽各类操作系统和硬件接口的差异,从而增强了AWorks 的可移植性和可维护性,详见图4.2。
图4.2 AMetal 与AWorks 的关系
AWorks 的核心是制定了统一的接口规范,可以"按需定制"提供各种各样的高质量组件,以及图形化配置工具,则开发者无需关心与MCU、外围器件、OS有关的技术细节。如果要对底层硬件外设进行操作,也可以直接调用底层接口。
其目的是不依赖于具体的底层硬件,实现"一次编程、终生使用"和"跨平台",通过高度复用应用软件组件,从而将程序员从苦海中释放出来,使之聚焦于更有竞争力的需求分析、算法和用户体验等业务逻辑上。行业合作伙伴可以在该平台上开发各种应用,通过有线接入和无线接入收集、管理
编程 相关文章:
- 基于单片机的可编程直流稳压电源设计(08-17)
- 利用可编程电源平衡输入纹波电流的解决方案(09-11)
- 可编程电源设计(01-12)
- NXP (Freescale) i.MX7 96Board(05-17)
- 可编程逻辑控制器(PLC)基本操作及功能简介(03-07)
- 分析机器人离线编程误差来源(06-28)