如何用一个实例来探讨嵌入式软件架构设计

一、感慨

近公司新招了一个做嵌入式软件开发开发的童鞋,该童鞋是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的功能测试,测试完成之后,准备让他做一个该产品的概要设计。然后他花了2个星期的时间,给我们写出来一个概要设计,说实话,我看到这个概要设计,我就觉得是刚毕业的大学生写的。

版本一的架构设计

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2.1系统体系结构 系统分为两层:硬件驱动层、应用层。 2.1.1硬件驱动层 硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序。 1)MCU初始化 2)I2C数据存取 3)SPI数据读取 4)加速度计初始化 5)蓝牙模块启动 6)BC95模块启动 7)485通讯模块启动 2.2.2应用层 1)Mcu运行模式切换 2)震动及倾斜 3)数据解析 4)开/关锁 5)数据发送 6)历史数据保存

看到版本一的架构设计之后,说实话,我还是第一次见到这样来写架构设计的,居然是以序号来写的,这个让别人读起来,特别的别扭。  

版本二的架构设计

如何用一个实例来探讨嵌入式软件架构设计

说明:

1.层与层之间不能跨层调用。

2.模块与模块各自独立,无依赖关系。

3.模块提供统一的接口供上层调用,模块的内外接口分明。

4.模块的功能只能增,不能改。

5.各个功能模块层也还可以进行继续分层,比如接口层、驱动层、硬件层。

 

(3)模块层次说明

硬件驱动层

硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序并提供API给功能模块调用。

功能模块层

功能模块层包括实现具体功能的函数,通过调用驱动层API实现相应功能,同时提供可调用的API给业务逻辑层。

业务逻辑层

业务逻辑层包括产品整体功能的各个业务流程,通过调用功能模块层的API实现。

应用层

应用层将各个业务逻辑进行整合调用,完成整个产品的功能。

 

(4)优势

如果驱动变动了,或者换不同平台,只需更改驱动层,应用层不受影响。

如果功能模块变动了,只需升级相应的功能模块,其他的模块不受影响,应用层也不受影响。

按照这种逻辑设计好之后,主要的工作就是在业务逻辑层。应用层则为程序的总体流程和框架,主要调用业务逻辑层实现不同的功能。

 

来源:goodweer

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年6月1日
下一篇 2018年6月1日

相关推荐