摘要 C语言在嵌入式软件开发中有着非常广泛的应用,这是因为C语言能够很好的匹配高级与低级语言,同时简洁高效、灵活便捷,可以实现对硬件的直接操作,然而由于C语言具有较强的灵活性,也导致了代
C语言在嵌入式软件开发中有着非常广泛的应用,这是因为C语言能够很好的匹配高级与低级语言,同时简洁高效、灵活便捷,可以实现对硬件的直接操作,然而由于C语言具有较强的灵活性,也导致了代码管理与维护问题较为繁琐复杂[1]。和传统形式的软件编程相比较,嵌入式系统编程是以某个相应的硬件平台为载体的,服务的是一种专用的计算机系统,不单单有对硬件操作的复杂性,同时还表现出应用层次的通用性。所以,在实际开展软件开发时,选取适宜的软件框架以及优异的设计方法,加强对项目的工程化管理,可以有效地指导软件开发的层次划分以及功能模块规划设计。一方面可以很好的提升高级软件系统开发速度与质量,提高后期执行与维护的便捷性,另一方面也可以有效地提升程序代码的重用性、延伸性以及稳定性。为了进一步提高嵌入式系统视域下C语言编程软件设计效率与品质,本文建立在现阶段已有的主流软件工程思想之上,将面向对象设计技术、分层技术等与C语言嵌入式编程结合起来,深入探讨基于嵌入式系统的C语言编程软件设计方法、分层架构等,为不断提高编程质量与效率提供帮助。
1模块划分
模块划分主要表示为将某个庞大的、复杂程度较高的程序依照需要实现的不同功能,将其分割成若干个小段,并确保每一个小段都能够完成一个相应的功能[2]。软件需要最大程度降低和外部模块的接触,进一步改善程序的可移植性能,同时明确其能够达到的既定功能。通常来说,嵌入式系统涵盖了两个方面的模块,分别是硬件驱动模块以及软件功能模块[3]。其中一个硬件驱动模块往往只与某个特定的硬件相匹配,而在进行软件功能模块划分过程中,应当要最大程度符合低耦合、高内聚的基础需求[4]。在进行模块设计与开发以达到不同功能时,需要严格遵守两个关键性原则。(1)模块的独立性原则,每一个模块均是独立存在的,避免不同功能模块之间出现信息交互的现象,既不会产生相互之间的影响,同时也不会产生相互之间的依存,任何一个模块中的函数指令均不会与其他模块变量建立联系,不同功能模块之间的连接是建立在函数接口基础之上的。(2)正交性原则,所有的功能模块都是唯一且确定的,而这中间的变量和其要达成的功能是相同的。在实际进行模块划分过程中,应当要特别重视以下四点注意事项:(1)当一个功能模块在为其他关联功能模块提供相关数据以及外部函数时,应当要在头文件(.h)中特别注明extern字样进行声明。(2)某一个功能模块内包含的全局变量以及函数信息,应当要在头文件(.c)中特别注明static字样来声明。(3)当出现某一个功能模块同时涵盖有.h文件以及.c文件时,需要在该功能模块的接口文件中基于(.h)进行声明。(4)需要特别注意的是,(.h)头文件中不可以对任何定量进行定义,这是由于定义变量属于汇编方面的内容,会根据实际要求匹配相应的内存[5]。
2分层架构
2.1分层方向
现阶段技术分层主要涵盖了两个大方向,(1)自顶往下的方法,这种方法在当下嵌入式系统应用层设计中有着十分广泛的应用,不仅仅是一种从抽象向具体的开发模式,同时也是一种基于逻辑总体描述规范或最上层的程序为出发点逐步往下拓展的操作模块。(2)自底层往上的方法,是一种实际功能发展为抽象概念,这种模式在硬件驱动开发与设计中有着较为普遍的应用。先进行功能模块的探究,确保其能够对目标应用对象产生一定的作用,同时研究普遍使用的操作方式。不管是自顶往下方法,还是自底往上方法,两者方法都有着各自的优势与劣势,为了确保能够获得理想的效果,在实际进行系统软件设计与开发时,应当要在明确软件实际功能需求的基础之上,科学合理地使用某一种方法或两者混合使用。例如在逻辑分析应用过程中,应当要选取自顶往下的方法,进一步明确功能模块的逻辑性,降低不同功能模块的开发时间,该是模块执行与移植的速度。在进行硬件操作过程中,则需要选用自底往上的方法,充分明确硬件操作规范,将各个操作从中独立出来,从而为上层应用的模块移植提供良好的支持。
2.2分层架构设计方法
之所以对架构进行分层设计与开发,其重要目的是为了有效满足编程过程中不同功能的具体需求,将需要实现的总体功能划分为若干个独立子功能,在确保各个子功能可以实现对应功能后,再对其进行整合。所以,必须要依照功能需求的不同将代码转化为各种概念层次的模型,指出不同模块之间的关联性,之后再进行科学连接,从而确保总体的复杂功能得到全面实现。在实际进行分层过程中,也需要严格依照以下原则进行。(1)在开展分层过程中应当要最大程度降低层与层之间的联系,既可以避免出现相互影响的问题,也能够防止层与层之间相互制约,减小模块的可移植性[6]。当某一个功能层出现故障或者问题时,并不会对整体功能产生较大影响,仅仅会导致具备功能运行不正常。相关技术人员在进行故障排查与解决时,也只需要对问题层进行调整与改进,不会妨碍其他功能层的正常运行。(2)所有功能层都需要为其上一层提供相应的支持,同时确保所有层都可以独自有效解决一个问题,比如频率收集功能,能够依照其实现的功能将其划分为数据收集、数据分析以及数据显示三个层,每个层之间存在特定的关联性,共同实现模块功能。(3)最大程度提高各个功能层之间的内聚性,同时还需要维持各自之间的低耦合性,对各个模块内部进行规划,获得理想形态下的模块,进一步改善模块的可移植性能。当将模块功能划分得十分详细时,能够有效降低各个功能模块实现的难度,然而当划分出较多数量的功能模块时,又会导致复杂程度越来越高,因此要做到科学规划层次与功能模块,加强对其的调整与改进,使其达到理想状态。嵌入式系统必须要开展面向对象、去中心化设计,在实际进行设计过程中需要将系统逻辑架构划分为四个层次,分别是应用管理层、算法协议层、功能延伸层以及硬件驱动层,每个层都有着各自的功能。(1)应用管理层主要是进行应用功能调度、显示界面关联等;(2)算法协议层的主要功能是数据库访问、协议管理和分析、资源整理等;(3)功能延伸层的主要功能是确保不同器件的功能可移植性、接口连接访问以及器件保持较低耦合性等;(4)硬件驱动层主要是提供硬件操作源语言,同时确保各个硬件功能的相互独立性。上述分层方法与原则,合理运用了可达到相似功能的功能模块,一方面实现了代码应用、算法以及硬件功能间保持较低关联性,另一方面也有效减小了不同功能开发与达成时的耦合性,防止出现交叉混乱的现象,进一步提高了嵌入式系统程序代码的简洁性,表现出更高的应用价值。良好的算法必须要能够支持多个不同的应用逻辑模型算法,相应的优秀的功能模块也能够满足不同应用与执行环境的使用需求,从而改善嵌入式系统软件功能模块设计、实施与移植的速度。
3中断服务程序
在某些特定情况下,程序往往需要具备立即终止当下正在运行的程序,转而处理其他情况程序的功能,在这种情况下就需要使用到中断服务程序,可以在其他情况程序处理结束之后,再次返回到之前被终止的程序,并确保其从暂停点出发继续运行。在嵌入式系统中中断服务程序发挥了至关重要的作用,是系统中不可缺失的一部分,由于中断系统能够方便、快速地在系统运行中完成中断操作,转而切换到中断服务程序中,同时能够在第一时间切换回断点并继续保持主程序运行,以此来改善系统的运行速度。此外,中断服务程序在不执行中断任务的情况下,并不会占用系统的运行内存,从而有效避免了系统内存的浪费,提高系统内存的应用率。当下已经产生了较多的依托于标准C语言的延伸中断服务程序,同时产生了一些全新的代表中断函数的中心词语,比如说_interrupt以及#programinterrupt等。在实际开展中断服务程序函数开发过程中,中断现场入栈代码程序以及出栈代码程序均能够通过编码器获得,同时确保开发完成的中断服务程序满足以下三项标准要求,分别是中断服务程序不可以设置返回值;不可以为中断服务程序提供参数;应当最大程度提高中断服务程序的简洁性。
4系统软件开发与设计
4.1基于C语言的面向对象化
种类的概念一般存在于面向对象的语言中[7]。类是针对特定类数据的指定操作的合集。类主要涵盖了两个方面,分别是数据以及操作[8]。通常情况下面向对象涵盖了三种特性,分别是封装、继承以及多态。封装表示为将数据与函数结合起来形成一个共同体,在实际调用过程中能够实现两者的共同调用。继承表示为依托于结构嵌套能够达到对对象属性继承的目的。多态表示在实际进行函数调用过程中,可以忽视数据调用途径。然而在大多数情况下,为了保障软件代码架构简单、操作便捷,往往只进行数据和函数的封装。此外,在一定情况下还会出现C语言编程过程中,数据和函数之间关联性不强以及结构不合理等问题,C语言模拟面向对象的最终目的便是解决该问题。
4.2模块重用设计
通常情况下为了促进C语言代码的重用,主要运用模块化的方式来实现,一般涵盖了头文件以及函数实现文件,换言之既.h文件以及与之相匹配的.c文件。正常来说有两种模式进行函数定义,分别是宏定义以及函数。首先,宏定义的主要优势体现在可以有效节省内存空间,同时和参数类型并没有直接联系,但是其也有着自身的缺陷,表现为部分功能难以依托于宏来实现。其次,函数往往能够实现多种多样的功能,不仅能够重复多次使用,同时也能够有效接受第三方函数的数据,甚至还能够将最终运算结果当成是返回值输入。
5结语
综上所述,嵌入式系统应用不断延伸、更新速度加快,依托于优异的软件设计架构,合理的软件开发流程,达到产品设计的重要,降低重复设计与探究,可以显著改善项目开发速度与品质。结合C语言灵活性特征,开发适宜的软件设计架构,可以有效强化程序设计开发、执行以及移植效率,表现出较高的应用价值。
《嵌入式系统视域下C语言编程软件设计架构》来源:《软件》,作者:孙自立
转载请注明来自:http://www.lunwenhr.com/hrlwfw/hrkjlw/17965.html