C语言之嵌入式C代码分层
问题描述:嵌入式、单片机中C代码实现较大的工程时,代码量非常大,查看维护起来也比较吃力,除非代码组织得层次分明,各个功能的划分很明晰,如果仅是一堆实现了功能的代码,没有进行层次的设计,维护起来将是一场噩梦。对C代码的分层设计知识在网络搜索学习了下,并结合自己的点点经验做下记录,方便以后更改和提升。一、分层模式概述--参考自[1]:分层(Layer)模式是最常见的一种架构模式。
分层(Layer)模式是最常见的一种架构模式。分层描述的是这样一种架构设计过程:从最低级别的抽象开始,称为第1层。这是系统的基础。通过将第J层放置在第J-1层的上面逐步向上完成抽象阶梯,直到到达功能的最高级别,称为第N层。分层模式可以定义为:将解决方案的组件分隔到不同的层中。每一层中的组件应保持内聚性,并且应大致在同一抽象级别。每一层都应与它下面的各层保持松散耦合。
分层模式的关键点在于确定依赖:即通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。
相对于分层,还有一种概念叫分区。分层是对架构的横向划分,而分区是对架构的纵向划分。典型的分层方式是应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层。层的数量与组成取决于问题领域和解决方案的复杂程度。通常而言只有一个应用程序专用层。应当把子系统组织成分层结构,架构的上层是应用程序专用子系统,架构的低层是硬件和操作专用子系统,中间件层是通用服务。
对系统进行分层有如下基本原则:
·可见度。各子系统只能与同一层及其下一层的子系统存在依赖关系。
·易变性。最上层放置随用户需求的改变而改变的元素。最底层放置随实施平台(硬件、语言、操作系统、数据库等)的改变而改变的元素。中间的夹层放置广泛适用于各种系统和实施环境的元素。如果在这些大类中进一步划分有助于对模型进行组织,则添加更多的层。
·通用性。一般将抽象的模型元素放置在模型的低层。如果它们不针对于具体的实施,则倾向于将其放置在中间层。
·层数。对于小型系统,三层就足够了。对于复杂系统,通常需要5-7层。无论复杂程度如何,如果超过10层,就需要慎重考虑了。层数越多,越需慎重。
创建自己的分层架构。基本过程如下:
1.使用定义明确的一组标准将解决方案的功能组织成一组层,并定义每一层所提供的服务。
2.定义每一级别之间的接口以及它们彼此通信所需的协议。
3.设计层的实现。
二、分层的好处--参考自[2]
- 隐藏细节,提供抽象,隐藏的细节包括数据的表示、功能的实现
- 在新的一层建立更高层的“语言”
- 接口清晰,修改维护方便
- 方便开发,将软件分为若干层次,逐层实现
硬件层比较适合于电子、通信、自动化、机电一体、信息工程类专业的人来搞。需要掌握的专业基础知识,有:单片机原理及接口技术、微机原理及接口技术、C语言等。
2.驱动层:这部分相对而言比较难。驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行。若不懂操作系统内核架构和实时调度性、没有良好的驱动编写风格、按大多数书上所说添加的驱动的方式,这样可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞。当然除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通。
3.操作系统层:对于操作系统层而言目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人/年;中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人/年才能搞定。因此这部分工作相对来讲没有太大意义。
4.应用层:相对来讲较为容易。如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。
[2]浅谈代码分层:构建模块化程序_wang_8910的博客-CSDN博客
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)