下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 浅析嵌入式程序设计中的优化问题 崔晓康+高润秋+王芮+袁明芊+仵松颀【摘 要】随着人们对嵌入式应用性能需求的提高,嵌入式程序的运行效率逐渐得到关注。本文根据嵌入式系统的特点与应用环境,从四个方面提出了基于c语言的嵌入式程序设计优化方法,提高了嵌入式程序的性能,对嵌入式程序设计开发人员具有借鉴价值。【关键词】嵌入式系统;程序设计优化;性能随着经济和技术的发展,嵌入式系统得到了快速的发展,低功耗、低成本、低体积,而且高性价比。这些优点使得其得到了广泛应用,大到航天领域,小到智能终端领域。尽管嵌入式系统发展迅速,但嵌入式微处理器相对于桌面级的处理
2、器而言存在一定的差距。这就使得嵌入式系统对运行在嵌入式微处理器上的程序有相对苛刻的要求,特别是运行时间和空间方面的要求。因此,对运行在嵌入式系统中的程序进行优化,可大大降低嵌入式系统的功耗,从而提高运行时间,而且可以提高程序的运行效率,满足嵌入式程序对性能方面的需求。本文将就如何对嵌入式程序进行优化展开讨论。一、嵌入式系统嵌入式系统即控制、监视或者辅助装置、机器和设备运行的装置。根据该定义可知,嵌入式系统是硬件和软件的综合体,而且包含机械等装置。嵌入式系统以微处理器及软件为核心部件,具有方便、灵活地嵌入到其他应用系统的特征,本身也是可执行的独立系统。以微处理器类型划分的化,嵌入式系统可以分为以
3、单片机为核心的嵌入式单片机系统、以工业计算机板为核心的嵌入式计算机系统、以dsp为核心的嵌入式数字信号处理器系统和以fpga及软cpu为核心的嵌入式sopc系统等。嵌入式程序是嵌入式系统软件的组成,包括系统程序和应用程序。系统程序运行在操作系统核心态,应用程序运行在用户态。近年来,为了更加高效地开发嵌入式程序,广泛采用c语言来进行开发。本文将就c语言设计的程序如何进行优化进行论述。二、嵌入式程序设计优化程序优化是指在不改变程序功能的情况下,对程序的结构、代码、算法等进行裁剪、变换、替代等,使得修改后的程序拥有比源程序更优的性能。更优的性能包括两方面的涵义,一是代码量更少、更精简;二是程序运行速
4、度更快,性能开销更低。运行速度优化是通过对程序的结构、算法等进行修改,采用更加高效的结构和算法来实现同一功能,从而使得程序的运行时间得到所短。代码优化指的是在对应用程序功能不影响的情况下,对冗余代码进行删除、部门程序语句进行替换等实现代码量的减少。事实上,这两者是一对矛盾体,为了使得程序运行速度更快,往往需要添加额外的优化代码。但随着存储技术的发展,ram、rom等不在称为限制程序大小的因素。所以,本文只讨论嵌入式程序运行速度优化问题。1.嵌入式程序设计优化原则嵌入式程序设计优化主要遵循的原则包括:(1)等价性原则,优化前后程序的功能是等价的,不能因为代码的变化改变程序的功能;(2)有效性原则
5、,即优化后的程序需要达到预期目的,要么使得程序的运行速度更快,要么使得程序的代码量更少;(3)经济性原则,即对程序优化投入的人力物力要满足以尽量小的代码获得尽量高的收益,即更佳的优化效果。12.通用优化方法通用的优化方法主要从语言角度出发对程序进行优化,即对c程序在嵌入式系统上的优化。(1)循环优化循环是c语言中常用的一种结构。合理的使用循环能够使得程序功能很强大,但是循环带来的开销是很高的。本文对循环的优化主要采用三种策略。一是使用递减循环。变循环变量递加为递减,可以减少循环终止条件测试的开销,特别是在嵌套循环的情况下,可以取得更好的效果。二是优化循环退出条件。如果循环不能够及时退出,将有可
6、能使得程序多执行多次循环甚至造成死循环。三是对相关循环进行合并,减少循环的个数。将相邻的循环进行合并,合并原则是不会出现变量相关。(2)函数优化函数是c程序中最主要的组成,一个程序中包含若干个函数。函数优化从三个方面考虑。一是使用内联函数,减少递归函数的使用。递归虽然使得程序更加简洁,但是递归需要花费更多的时间进行函数调用,而且函数调用时使用堆栈而不是寄存器也使得程序开销更大。二是函数参数的优化设计。这一点是与硬件体系相关的。以arm为例,函数参数传递先通过寄存器实现,然后再通过堆栈。但是寄存器资源有限,一般为4个。所以在进行函数设计时应尽量讓函数参数小于等于4。三是使用函数值表。通过函数值表
7、,可以减少某些耗时的数学函数带来的时间开销。(3)变量优化变量优化主要考虑到全局变量和局部变量2。一般减少全局变量的使用,多使用局部变量。除了性能上的考虑,全局变量对程序自身的安全也存在威胁。过多的全局变量还会带来过度的存储空间开销。(4)内联汇编的使用内联汇编是指在c/c+代码中嵌入的汇编代码,与全部是汇编的汇编源文件不同,它们被嵌入到c/c+的大环境中。由于内联汇编以汇编代码实现,比c代码效率高。因此,适当的使用内联汇编,对程序的运行速度提高具有一定的促进作用。3.基于硬件的优化方法该方法主要使用硬件资源来对程序进行优化。一是使用寄存器变量3。寄存器的存取速度远高于内存的存取速度。对一些经
8、常使用的变量,可以通过分配指定寄存器作为其存储单元的方法,在一定程度上提高程序运行效率。另外,对程序优化时候可以考虑cpu的流水线处理,两者相互结合效果更好。4.基于指令集的优化方法指令集优化指的是从嵌入式系统支持的指令集角度入手,根据指令集的优缺点进行优化。一是对不包含的指令进行优化。比如除法指令,arm结构下的指令集并没有。进行除法运算时通过调用库函数来实现,而库函数实现的除法效率低下。因此,对除法进行优化,改成使用乘法指令来实现。二是条件发的合理使用。arm指令包含有一个条件码,在条件码满足一定条件下执行某种功能。如果要实现的功能与条件码相关,那么利用该条件码可以使得判断更迅速。5.基于
9、编译器的优化方法编译器优化主要用来对代码进行语法检查、语句优化以及安全性方面的检查。但高级的编译器可以对程序的运行效率进行优化。比如程序中有一个常量乘法运算,那么在编译之后程序运行之前该乘法运算的结果已经得出。另外,编译器会对循环做优化,通过循环展开,减少比不要的循环;还可以将一些尾递归转换为循环实现,提高效率。三、结束语嵌入式系统的广泛使用使得运行之上的程序性能要求更高。本文讨论了嵌入式程序设计优化问题。从通用方法、硬件优化、编译器优化、指令集优化等方法进行了探讨,提出了一些相关优化策略,对提高程序的运行效率具有促进作用。【参考文献】1 王磊, 李鑫. 浅析嵌入式程序的优化j. 电脑知识与技术: 学术交流, 2012, 8(1):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 康复技能大赛选拔赛理论试题
- 2025高考化学高三化学大二轮专项专题小题各个击破 题型19 有关电化学的综合考查
- 新疆伊犁哈萨克自治州伊宁县2024-2025学年九年级上学期12月物理检测试卷(无答案)
- 2025年贵州省初中学业水平考试英语模拟试卷试题(含答案)
- 福建省福州市连江县黄如论中学贵安学校2024-2025学年上学期九年级数学期末模拟卷(无答案)
- 医学教材 产褥期感染
- 高一 教科版 信息技术 必修一第三单元《数据编码(第2课时)》课件
- 2025届新高考语文全国各省市联考卷10月 卷五
- FOCUS-PDCA改善案例-优护团队提高人工气道患者吸痰护士操作合格率医院品质管理成果汇报
- 青海省西宁市大通县2023-2024学年高三上学期语文期末考试试卷
- FOCUS-PDCA改善案例-提高术前手术部位皮肤准备合格率医院品质管理成果汇报
- 小家电产品供货服务方案
- 皮肤保湿霜化妆品市场发展预测和趋势分析
- 期末(试题)-2024-2025学年人教PEP版英语六年级上册
- 2024安全生产标准化管理体系新旧版本对比版
- 口腔科消毒隔离知识培训
- GB/T 3488.1-2024硬质合金显微组织的金相测定第1部分:金相照片和描述
- 盐城工学院《数据结构》2022-2023学年期末试卷
- 国家公务员考试(面试)试题及解答参考(2024年)
- 电大本科《西方经济学》期末试题标准题库及答案(试卷号:1026)
- 国开(浙江)2024年秋《中国建筑史(本)》形考作业1-4答案
评论
0/150
提交评论