嵌入式架构有多重要?

                                                                             嵌入式架构有多重要?


架构设计的目的:

1.应用的代码逻辑清晰,且避免重复造轮子。
2.如果没有好的架构,移植将会是一件很痛苦的事情,因此一个好的架构设计,方便软件的移植。
3.最大限度地复用。
4.高内聚低耦合。

设计思路:

原则上来说,是不会在主程序里直接写功能语句的(喂狗指令除外)。一个好的主程序结构应该通过子程序去调用具体功能模块,这是程序模块化的要求。在这种模块化的程序结构中,主程序仅仅是执行调度功能,负责轮流调用功能模块程序。主程序每循环一圈,所有的功能模块都被调用一次(参见图3.2:模块化程序结构)。显然,采用了这种结构后,各个模块之间的相互独立性较强。我们可以像搭积木一样,很方便地增加或减少主程序调用的模块,即功能模块化设计、分层设计。

 模块化设计:将收集到的需求,进行归类,总结和分析,将这些需求概括为一个个单独的功能,每一个功能,做成一个单独的功能模块。

分层设计一句话不好直接表达,其主要体现在一下几方面:

1.功能模块对外调用的模块封装成一个个API,将底层驱动做个API以供功能模块调用。(各个功能模块可以独立编译(如通信模块纯ANSI C,可在任意平台复用),或者调用驱动层接口(日志库模块调用了驱动读写Flash),总而言之,言而总之,封装出各个功能独立的可复用的功能模块。)
2.API分为驱动层API和应用层API,而不是所有程序都调用驱动层API。(整个应用中都调用驱动层API会导致应用中驱动调用随处可见,无法移植和最大限度的复用)

总体分 硬件驱动层-->功能模块层-->业务逻辑层-->应用层

总体结构示意框图:

扫描二维码关注公众号,回复: 10875627 查看本文章

说明:

1.层与层之间不能跨层调用。
2.模块与模块各自独立,无依赖关系。
3.模块提供统一的接口供上层调用,模块的内外接口分明。
4.模块的功能只能增,不能改。
5.各个功能模块层也还可以进行继续分层,比如接口层、驱动层、硬件层。

(3)模块层次说明

硬件驱动层

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

功能模块层

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

业务逻辑层

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

应用层

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

(4)优势

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

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

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

发布了13 篇原创文章 · 获赞 4 · 访问量 765

猜你喜欢

转载自blog.csdn.net/yuechifanfan/article/details/105570728