C语言嵌入式系统编程软件设计架构研究

时间:2018-02-02 编辑整理:张智慧 来源:早发表网

摘要:针对C语言嵌入式系统开发,阐述了系统软件的编程思路,给出了基于分层设计的功能模块划分,明确了软件开发过程中的项目组织、程序框架设计、模块重用设计等实现方法,用来解决 C 语言灵活性和应用开发工程化之间的矛盾, 为利用 C 语言进行嵌入式系统开发提供参考解决方案,有利于提高嵌入式应用软件开发的重用性、拓展性和可靠性。

关键词:C语言;嵌入式系统;软件设计;程序框架

C 语言是嵌入式软件开发使用最多的语言,主要是由于C语言兼具高低级语 言的特性,简洁高效、灵活方便,支持对硬件的直接操作,但其灵活性也往往会带来复杂的代码管理和维护问题。不同于一般形式的软件编程, 嵌入式系统编程建立在特定的硬件平台上,面向的是一种专用的计算机系统,既有对硬件操作的杂性,也有应用层次上的通用性。因此,在软件开发过程中,采用良好的软件框架和设计方法,对项目进行工程化管理,能够更好地指导软件开发的层次划分和能模块设计。既能提高软件系统的开发、执行和维护效率,又有利于提高程序代码的重用性、拓展性和可靠性。本文在当前流行的软件工程思想基础上,将面向对象设计技术、分层技术应用到C语言嵌入式系统编程中,探讨在C语言嵌入式系统开发中的系统设计思路、分层实际、程序架构以及模块重用等问题。

1 系统设计思路

无论是面向过程思想,还是面向对象思想,都是为了更好地将开发需求转变成软件模块划分,进而转变成能够用代码实现的程序功能。在实际系统开发中,不是说一 定要用C++Java等面向对象语言才能进行面向对象程序设计,C语言也一样可以实现程序模块的封装、继承等特性,关键是如何体现模块划分的高内聚、低耦合特点,提高代码的重用性和拓展性。随着嵌入式软件系统的规模和复杂度日益增长,如何更好地进行模块划分,开发出可正确工作的复杂软件,成为系统设计面临的主要问题。

1 .1 自顶向下与自底向上

在进行模块化的过程中,通常采用分层技术对应用需求问题进行梳理,抽象出不同层次的模块结构,界定各层次之间的依赖关系,最终将应用需求转变为软件设计。一个方向是自顶向下,从抽象到具体,从最顶层的程序或者逻辑整体描述规范出发向下到具体的操作模块,这是目前嵌入式系统应用层开发常用的方法。比如,液晶屏幕显示控制,可以细化到对点阵的一些操作,点亮一个点点灭一个点等。另一个方向是自底向上,从具体到抽象,从某个应用对象的操作出发分析常用的操作方法,这 是在硬件驱动开发中常常采用的方法。比如,设计液晶屏幕的驱动,可以分析设计出一些操作原语,置一个点位亮置一个点位灭,供上层开发调用。 在嵌入式系统设计过程中,可以将两种方法结合使用,针对硬件的操作采用自底向上,尽可能抽象出所有的元操作,应对不同上层应用的重用要求;在逻辑应用上,则采用自顶向下,对应用逻辑表达进行抽象规范,尽量使得模块划分便于开发实现、重用和维护。

1 .2 最优模块化

功能模块是独立实现某一特定功能的最小代码集。软件模块实现的功能应该简单明了,方便理解和应用,而且对外依赖关系越少越好,能够更好地组织程序开发、集成和重用。在操作模块的设计过程中,应该遵循两个原则:一是紧凑性,封装良好的模块决不互相暴露内部信息,也不去调用其他模块的操作实现,而是过函数接口来相互通信;二是正交性,任何模块的功能点应当是唯一的、无歧义的,在系统中以确定无疑的方式存在。在纯正交的模块设计中,每一个操作行动只限于该项功能,系统的每一属性只有一条途径改变,不影响其他功能,这有助于将复 杂的设计紧凑化。比如,显示器功能设计的正交性,在调节明暗时不会影响到饱和度,色彩平衡的控制也彼此独立,否则将会对显示方式的调整带来很大的麻烦。对于有些太复杂的问题域,可能无法实现模块完全的紧凑设计,但要尽可能地保持模块封装的安全可靠。

本文提出了基于FPGA+DSP架构的数字话音处理系统,系统由模拟音频部分和数字音频部分组成。其中模拟音频部分包括音频接口电路、A/DD/A电路,完成模拟音频小信号的匹配、滤波、放大和A/DD/A转换;数字音频部分由 FPGA DSP功能电路组成,利用FPGA的优越并行处理能力和DSP强大的浮点计算功能,实现了话音活动检测VAD算法、自适应噪声抑制算法、自动增益控制算法的嵌入式平台移植。最后通过仿真和实物平台验证,该系统能够有效抑制机载环境下飞行员通话的噪声。该系统可推广应用于航天、船舶、车载等领域的话音通信系统,具有广阔的应用前景。


职称
论文

期刊
发表

加急
见刊

写作
咨询

课题
专答

编辑
顾问

关注
我们

返回
顶部