一、分层的目的
“高内聚,低耦合的思想”,表示在设计和开发软件系统时,应该使模块之间的关系更加紧密,同时避免模块之间的依赖性过于紧密,以便更好地实现系统的可维护性,可扩展性和可重用性
二、分层逻辑图
三、分层的架构图
四、分层的优缺点
- 优点
- 易维护性:各层之间耦合度低,方便进行独立维护和修改。如果某一层发生故障,只需对该层进行修改,而不会影响到其他层。
- 复用性:各层功能明确,可以独立地应用于不同的系统。例如,某一层的技术或算法经过验证后,可以在其他嵌入式系统中直接使用,无需从头开始开发。
- 开放性:分层架构有利于标准化的实现。各层之间可以方便地进行替换和升级,提高了系统的可扩展性和可升级性。
- 可移植性:由于各层相对独立,嵌入式系统可以方便地从一种硬件平台移植到另一种硬件平台,只需对相应层进行修改即可。
- 缺点
- 开发成本高:需要开发更多的代码,增加了开发时间和成本。
- 性能开销大:分层架构需要处理更多的层级和接口,可能导致性能开销增大。
- 通信开销大:各层之间需要进行数据传输和通信,可能导致较大的通信开销。
- 跨层调用复杂:在分层架构中,跨层调用需要经过多个层级,可能导致复杂的逻辑和额外的性能开销。
因此,在选择是否采用嵌入式分层架构时,需要根据具体的应用场景和需求进行权衡。如果系统规模较大、复杂度高、需要高可维护性和可扩展性,分层架构是一个不错的选择;但如果系统规模较小、复杂度低、对性能要求较高,可能会更适合采用非分层架
五、举例
我需要获取一个ds18B20的数据然后上传到阿里云,使用的是STM32
- 硬件层
STM32的底层库函数 - HAL库
就是使用STM32的底层库函数疯转一个方便上层调用的函数,比如GPIO的翻转,拉高,拉低等等。 - 驱动层
使用HAL库写DS18B20的驱动
4G的驱动 - 中间层
这里面没有用到中间层,如果上了FreeRTOS实时操作系统的话,中间层就有FreeRTOS - 逻辑层
刚刚不是已经写好了传感器的驱动,限制逻辑层里面需要获取驱动的数据来操作。比如滤波, - 应用层
这边拿到的是最终的数据,就要通过4G上传到阿里云了。肯定要有定时器了,定时器到了,就可以上传数,那么就有上传失败成功的情况,
这边的应用层就做两个事:一是拿到最终数据,二是定时器。定时器到了,把标志位传给逻辑层区处理。
六、 优化
如果需要响应度很快的话,那么最少有三层。HAL层,驱动层,应用层。这样的话,系统的开销就小了。
文章是自己总结而记录,有些知识点没说明白的,请各位看官多多提意见,多多交流,欢迎大家留言
如果技术交流可以加以下群,方便沟通