基于模块化的嵌入式软件设计研究

来源 :科技风 | 被引量 : 0次 | 上传用户:ArchrSaber
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文对嵌入式软件编程语言及软件模块化设计的概念进行概述,并给出应用C语言进行模块化代码编写的方法及要点,希望给软件开发人员以借鉴,提高代码编写效率,降低程序出错概率,缩短软件开发周期。
  关键词:模块化;嵌入式;软件设计
  伴随着科学发展,互联网的兴起,人们对软件的应用需求越来越大,软件功能越来越多,实现复杂度也随之增加。嵌入式软件编程成为软件编程人员要进行学习及应用的技能,进行模块化编写,以解决软件编制复杂度的难题。
  一、什么是嵌入式软件编程语言
  嵌入式软件编程在行业内通常应用汇编、C和C++三种语言编写,这三种编程语言虽然都能够用作嵌入式软件编程,但在部分特性上存在着差异,实时性汇编最快、C++最慢,代码移植性与维护性的便捷性比较,C++最简单,汇编最难,最为繁琐。业内常用C语言进行嵌入式软件的编程,这由C语言的特性决定的,C语言在编程时更加侧重过程,所编程的代码在移植、共享方面较为容易;其次,大部分的软件编程环境都支持C和汇编语言,少部分支持C++语言编译器;最后C语言掌握及应用最为简单。由于嵌入式软件大多都应用C语言进行编写,因此文章重点讲解用C语言进行模块化编程的方法、要点[1]。
  二、什么是软件模块化设计
  软件开发工程在近年来难度不断加大,当编写出现漏洞时就会受到步骤、功能增加的制约,再修改起来难度、工作量极大,为此计算机领域专业人员提供各种软件设计模型为编程人员服务。根据用户需求,将功能较多、规模较大的软件划分为多个小模块进行编写,分工合作提升编写效率,减少失误。模块化下的软件编写,每个模块的编写工作量小且工作独立、互不影响,结构独立及功能独立,将软件的开发分工化。
  三、应用C语言进行模块化代码编写
  应用模块化代码编写的软件是由被加工对象及其在此软件上实现的相关功能构成。在软件的实际开发阶段,通常应用两种代码编写方法,基于功能的程序设计,要在其功能的实现中考虑到编写过程以及人工操作的疏漏,这个疏漏是不确定且不可控的。程序的整体结构依赖于前期规划好的程序功能,在后期的功能扩展、删除和修改环节的难度都会不同程度的提升。在此模式下的软件,其功能较为集中且耦合度也大,整个软件结构可以定义为脆弱,经常会在编程上出现漏洞,且这个漏洞处理上也会非常的繁琐,在未来使用中,难以满足用户的功能扩展需求,软件可复用性差。
  基于对象的程序设计中,要考虑的对象及数据结构、软件结构都是相对稳定的,易于控制和管理,尽管会对软件的功能有一定的要求,要在使用中进行不断的完善、演进,但在同一问题空间中的对象,都能够保持对象本身的稳定性、可控性,在此情况下围绕对象进行的软件编译,编译成型的软件系统也同样具备优良的稳定性和可控性。在实际代码编制时,将属性及服务封装在对象中,当需要对软件功能、编程细节进行修改时,这种封装操作能够有效的对对象结构的稳定性、可控性进行维持,将进行的改动、漏洞修改锁定在同一对象的内部,降低因为改动而导致的系统崩溃或是结构混乱。因此面向对象方法开发的软件,必须具备一定的继承性、封装性,并且能够支撑软件代码的重复使用,在日后的软件完善、扩展等操作中,能够良好的适应复杂系统变化的要求。
  C++语言拥有面向对象的特性,因此应用C++语言能够方便、快捷的完成软件模块化设计。C语言是面向过程的语言,因此缺少C++语言在面向对象上的优势,因此模块化编程相对C语言而言实现较为困难。应用C语言以实现C++语言面向对象的特征,举例对比描述转换过程。
  C++通过类定义一个对象,类用于封装对象所能够应用到的数据及方法,C语言中没有类的定义,但有结构体,在C语言中应用结构体,用于定义一个对象。
  如在数据结构中常用的栈类型,应用C++语言以及C语言分别对栈软件模块进行编写及对比,能够明显看出C++语言与C语言在实现模块功能编写时存在一定的共同点,从而能够解释C语言完成模块化编程的原理。C++语言进行模块化编程时有多种书写方法,此代码虽然不是C++语言应用的最佳实现方法,但是与C语言更加接近,更为容易理解,应用C++语言能够进行,其代码编写为:
  #define MaxStackSize 50 //常数
  typedef int DataType;//定义数据类型
  class Stack
  {
  private:
  DataType list[MaxStackSize]; //栈数组及栈顶指针
  int top;
  public:
  void Init(void); //初始化
  void Push(DataType item);//入栈
  DataType Pop(void);//出栈
  }
  Stack::Init(void)
  {}//这里仅例述一个方法实现
  在上述叙述的代码编写样本中,Stack定义了栈对象,它包含对象数据如list和top,同时也包括对象方法,初始化栈Init()、入栈Push()和出栈Pop()操作。
  在嵌入式软件中,其各个模块的设计,必然会涉及到编写语言、编写对象、编写方法,所以,明确以上几点,借助相应的对象编写方法参考模板,完成相关代碼的编写,可以说是目前一项较为合理、有效的方法。C++语言对象实例化方法就能够实现Stack的方便应用,因为可以定义Stack s,并方便对象的调用,如s.Init()、s.Push()、s.Pop()等。
  应用C语言如下编写:
  typedef struct
  {
  DataType list[MaxStackSize]; //栈数组及栈顶指针
  int top;
  void (*Init)(void *pStack); //初始化
  void (*Push)(void *pStack ,DataType item);//入栈
  DataType (*Pop)(void *pStack);//出栈
  } Stack;
  void StackInit(void *pStack)
  {}//这里仅例述一个方法实现
  #define StackDefault {\\
  {0,},\\
  {1},\\
  {StackInit},\\
  {StackPush},\\
  {StackPop},\\
  } //初始化宏
  C语言通过结构体定义一个新类型Stack,这种既带有数据又有方法的抽象数据类型已具有面向对象的特征。C语言实现对象方式的编写,也必须要遵循一定的要求,具体如下:
  C语言定义Stack,虽然可以定义为Stack s,但不能像C++一样调用,即使编译器不会报错,但也无法执行,错误体现为C语言方法需要传递对象指针,而Stack的函数指针没有被初始化,所以不能执行,因此要在声明对象时,将Stack函数指针初始化,设定为默认值。
  C语言代码编制期间,在对默认值的设定进行具体划分时,也应当遵循相应的原则,在利用Stack函数指针的基础上,确保相关数值能够处于初始化的状态,以此来保证默认值设定的科学性和合理性。C语言应用Stack数据类型,就要声明对象实例,并进行初始化操作,不同于C++,如Stack s=StackDefault,声明对象实例,并且指针恢复初始。
  四、总结
  本文所述的模块化代码编写的方法及要点,能够满足C语言的模块化设计需求,极大的降低了模块化程序编写的难度,建议在软件编程领域进行推广。
  参考文献:
  [1]文武,任鹏,王灵军,等.模块化嵌入式软件开发平台研究[J].家电科技,2016(6):8385.
其他文献
身在东方的我们承受了太多的不应该:丝绸之路引进了胡萝卜后运走的却是敦煌的文物;发明了火药却被别人用来敲开了国门;敞开国门第一个进来的却是令人沉迷的鸦片;盲目的狂热使
摘 要:通过对于城市综合管廊中国现代以来城市综合管廊建设实践中的主要问题进行归纳分析,同时与外国城市管廊建设进行横向比较,并从国家和地方层面对于综合管廊建设提供一些参考。  关键词:城市建设;综合管廊;对策  一、综合管廊定义  城市综合管廊,指的是通过在城市地下建造一个隧道空间,将多种工程管线集合在其中,如电力、通讯、燃气、供热等工程管线,它是一项十分重要的城市地下用于铺设市政公用管线的市政工程
正当交换技术和路由技术难分仲伯的时候,很多厂商又推出了第三层交换ASIC(特定用途集成电路)。该技术采用了很多路由技术的优点,必将对未来如何建造网络有很大的影响。 一般
国内PC机市场近几年来发展迅速,市场增长持续超过30%。1997年,国内PC机市场已经达到300万台以上的年销量。PC机市场的这一环境给主板厂商创造了极好的经营空间,促使诸多板卡厂
内镜直视下诊断胃、十二指肠消化性溃疡的价值早已得到广泛肯定.但临床上因种种因素,内镜下肉眼不能肯定诊断性质的报告屡见不鲜.现仅从本院1980年3月~1991年3月胃镜检查11116
原发性肝癌(以下称肝癌)的治疗方法目前有①手术切除;②放射治疗,③化疗(局部化疗和全身化疗);④免疫治疗;⑤中医治疗等方法,其中手术切除是肝癌最好的治疗方法.据资料统计,
据一熟知IBM公司计划的人士透露,该公司的智能存储服务器——Tarpon的面纱将很快被揭开,从而IBM公司发展跨多平台存储器的计划也将日渐明了。 Tarpon是在IBM的Seascape结构下
很明显,目前我国的航运综合成本高于国际平均水平,很重要的原因是经营者很难通过既有的数据分析未来的市场,保证已有的常旅客,这需要一整套对庞大的旅客数据库进行分析、辅助
摘 要:本文探讨了农村防雷科普宣传的重要性,分析农村防雷科普宣传工作中存在的问题,提出农村防雷科普宣传工作对策。  关键词:农村;防雷科;宣传;问题;对策  农村是雷电灾害高发区,农民是雷灾主要受害群体。雷击事故在农村住宅、窝棚、凉亭、庙宇、候车厅、教室等建筑物内或者周边出现的概率较大。根据相关资料统计表明,在雷电造成的伤亡事故中,中国城市人员因雷电造成伤亡的比例只有4.3%,而农村却占据了59.
近年来有许多学者都把胎儿发育与微量元素的变化作为优生优育、了解胎儿发育情况的一个重要方面指标,尤以铜、锌两种元素为主。作者调查了208例兰州地区不同孕期孕妇血清铜、