嵌入式C语言在系统开发中的代码优化

来源 :光盘技术 | 被引量 : 0次 | 上传用户:xy6905
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:C语言是嵌入式系统开发中常用的一种程序设计语言.本文结合嵌入式系统的特点,从编程规范、存储器分配和算法优化三个方面,阐述了C语言在嵌入式软件开发中的代码优化方法。
  关键词:嵌入式系统;C语言;代码优化
  中图分类号:TP202+.7文献标识码:A
  The Code Optimization in Embedded Systems Programing with C Language
  CHEN Lei,CHEN Zhao-hui
  (LuoYang institute of Science and Technology,Henan Luoyang471023)
  Key words: embedded system;C language;code optimization
  
  1 嵌入式C语言的特点
  
  尽管嵌人式C语言是一种强大而方便的开发工具,但开发人员如果要达到用C语言快速编出高效而易于维护的嵌人式系统程序,首先必须对C语言编程有较透彻的掌握,其次,还应该对实际电子硬件系统有深人的理解,当然在学习嵌人式C之前,较为熟练地掌握用汇编语言编程是十分必要的。
  
  2 C代码在程序设计中的优化
  
  笔者根据实际开发经验,对如何提高嵌入式C语言在系统开发中的效率浅谈几点体会。
  (1)养成良好的、规范化的编程风格,使之符合软件工程的开发要求。使用正规、一致的编程风格十分重要,在变量名的命名规则中,建议使用Hungarian命名法则,再加上模块化的编程方式,详尽的程序说明文档,久而久之,能够大幅度提高编程效率,方便多人分工协作,也适合项目的后期维护,以及重新利用。
  (2)适当的使用宏。在C程序中使用宏代码可以提高程序的执行效率。宏代码本身不是函数,但使用起来像函数。函数调用要使用系统的栈来保存数据,同时CPU在函数调用时需要保存和恢复当前的现场,进行进栈和出栈操作,所以函数调用也需要CPU时间。而宏定义就没有这个问题:宏定义仅仅作为预先写好的代码嵌入到当前程序中,不产生函数调用,所占用的仅仅是一些空间,省去了参数压栈、生成汇编语言的call调用、返回参数、执行return等过程,从而提高了程序的执行速度。虽然宏破坏了程序的可读性,使排错更加麻烦,但对于嵌入式系统,为了达到要求的性能,嵌入代码常常是必须的做法。
  (3)高效分配存储器。由于成本限制,嵌入式系统存储器容量有限。程序中所有的变量、包含的库函数以及堆栈等都使用有限的内存:全局变量在整个程序范围内都有效,程序执行完后才会释放;静态变量的作用范围也是整个程序,只有局部变量中的动态变量在函数执行完后会释放。因此,在程序中应尽量使用局部变量,提高内存使用效率。程序中堆的大小受限于所有全局数据和栈空间都分配后的剩余量,如果堆太小,程序不能够在需要的时候分配内存。因此在使用malloc函数申请内存之后一定要用free函数进行释放,防止内存泄露。为了提高执行效率,对存储器类型的设定,应该根据以下原则:只要条件满足,尽量先使用内部直接寻址存储器(data),其次设定变量为间接寻址存储器(idata),在内部存储器数量不够的情况下,才使用外部存储器,而且在外部存储器中,优先选择(pdata),最后才是(xdata),而且,在内部和外部存储器共同使用的情况下,要合理分配存储器,对经常使用和计算频繁的数据,应该使用内部存储器,其它的则使用外部存储器。要根据它们的数量进行分配,在例程中,因为内部数据存储器的数量足够,我们在例程中将所有变量都申明为直接数据存储器,这样能使程序访问数据存储器的时间最少,从而提高程序运行效率。
  (4)合理设置变量类型以及设置运算模式可以大大减小代码量,提高程序执行效率。
  我们以51系列单片机为例。由于51系列是8位机,它只能直接处理8位无符号数的运算,而对其它类型的数据则需通过额外的算法来实现,因此,在对变量进行类型设置时,要尽可能选用无符号的字符类型,尽量少使用有符号以及多字节类型,因此,在程序设计中,都尽量采用无符号数以提高运算速度,以此避免进行多余运算。
  在运算时,可以进行定点运算的尽量进行定点运算,避免进行浮点运算。如*2或/2,就可以使用移位操作来代替除法运算。这样不仅可以减少代码量,同时,还能大大提高程序执行效率,例如,对直流信号通常采用一滞后滤波法。它的表达式为:Y。二(1-K)Xo+K*Yo,在这个运算式中,如果将K值取为0. 75,则可以通过移位运算代替浮点运算或多字节的算术运算,从而简小编译后的程序模块,提高程序执行效率。而将K值取为0. 75并不会影响数据滤波的效果。
  (5)将汇编程序嵌人嵌人式C程序中,完成实时响应或精确控制任务。
  在一些实时性要求很高,如中断程序处理、数据采集程序、实时控制程序以及一些实时的带符号或多位运算中,建议将汇编语言嵌人C程序中进行处理。在KEILC51的C编译系统中,C程序能够与汇编程序实现方便灵活的接口,在C程序中调用汇编十分方便灵活,对二者调用的主要难度在于:实现数据的准确传输,汇编与C中实现数据传输可通过两种方式,一是利用工作寄存器进行数据传送,这种方式安全,但根据传送数据类型的不同,只能传送1个一3个参数,另外一种方案是指定特定的数据区,二者在特定的工作区内进行数据传输,这种方式,其传递数据量可自行控制,但不安全,需要开发人员仔细控制。
  
  参考文献:
  [1]马忠梅.单片机的C语言应用程序设计[M].北京:北京航天航空大学出版社,1999.
  [2]王东征.嵌入式C语言位操作的移植与优化[J].单片机与嵌入式系统,2007,(2):72-74
其他文献
2005年11月18日对于广州市番禺区市桥富都小学来说,是一个永远的痛。当天中午上学时,一名三年级男生在校园里不幸丧生于女教师的车轮之下。这起重大安全事故的发生,犹如一场突如其来的暴风雪,使该校社会形象在一片狂啸舆论中轰然坍塌。家长对学校的信任度瞬间达到冰点,以致2006年春季开学时有的家长连转学手续也不办就把孩子转走,一些骨干教师也以各种借口离开。  就是在这样的背景下,我被调任该校校长。彼时我
期刊
思维导图是表达发散性思维的有效图形工具,它运用图文并茂的技巧,把各级主题的关系用互相隶属于相关的层级图表现出来,把主题关键词与图像、颜色等建立记忆链接,充分运用左右脑的机能,利用记忆、阅读、思维的规律,协助人们在科学与艺术、逻辑与想像之间平和发展,开发人脑的无限潜能。它不但可以协助我们记忆,还能增进我们的创造力。  随着学生对思维导图的认识和掌握,思维导图可以应用在语文单元整体学习之中,帮助学生提
期刊
摘 要:在php+mysql的站点开发时,经常出现程序员编写代码的时候,没有对用户输入数据合法性进行判断,使站点存在安全隐患,本文从php+mysql注入的原理入手,对于使用php+mysql数据库的站点,在sql注入常用的方法和解决办法方面进行了研究。  关键词:Php mySql注入漏洞;分析  中图分类号:TP309.5文献标识码:A    On Analysis and Preventio
期刊
摘 要:数据交换平台是供应链系统的重要组成部分。基于XML技术的数据交换平台采用了四层结构。在平台的实现中通过三个关键技术来保证在供应链范围内异构信息交换和共享的顺利与安全。数据交换平台为企业间进一步开展更广泛的业务奠定了基础。  关键词:XML;数据交换;安全  中图分类号:TP315 文献标识码:A    Application of XML in Supply Chain  WANG Rui
期刊
摘 要:本文展示了Http协议的强大能力,如何定义什么是Restful Web Service架构以及以当今RPC式Web服务的对比,并解析了Restful Web Service架构的四个特征:可寻址性、无状态性、连通性和统一接口。  关键词:HTTP;URL;REST;Web服务  中图分类号:TP393.04文献标识码:A    Analysis of Restful Web Service
期刊
摘 要:安全性和主机移动是Internet研究的热题。HIP是一个能够用简单方式解决主机动、多宿主和安全的新协议,本文详细介绍了HIP协议相关概念及其体系结构、实体与相应标识符的绑定、协议数据包结构和HIP基本交换过程,阐述了HIP对主机移动和多宿主的解决方法、安全性问题等问题。  关键词:主机标识符;体系结构;基本技术   中图分类号:TP393.04文献标识码:A    Technology
期刊
摘 要:WEB数据挖掘技术是一种新兴的信息处理技术,在信息的利用和提取中发挥着非常重要的作用。本文在论述WEB数据挖掘技术的基础上,探讨了数据挖掘在高校图书馆工作中的应用。  关键词:WEB数据挖掘;图书馆;信息处理;个性化服务  中图分类号:TP274文献标识码:A    Application of WEB Data Mining to Academic Library Works  ZHEN
期刊
摘 要:ARP协议存在着很多缺陷,攻击者正是利用这些漏洞实施ARP地址欺骗,对局域网的通信造成威胁。可通过Sniffer嗅探法、命令提示符法、或借助相关软件工具查找定位ARP地址欺骗攻击者。而对于如何防御的问题,则可采用对计算机系统安全加固,利用ARP杀毒软件、ARP攻击探测器等方法解决之。  关键词:ARP地址欺骗;ARP协议;地址解析;ARP攻击与防御  中图分类号:TP393.08文献标识码
期刊
摘 要:嵌入式系统是一个高起点的技术领域,而嵌入式Linux以多方面的优势已成为嵌入式系统领域研究的一个热点.本文首先介绍了嵌入式Linux,然后着重介绍了嵌入式Linux内核的编译过程,并最后描述了嵌入式Linux内核的移植过程。  关键词:Linux内核;编译;移植  中图分类号:TP311文献标识码:A    The Compile and Transplantation of Embedd
期刊
摘 要:介绍了稳压电源中整流电路、滤波电路和稳压电路的构成,通过Multisim软件对电路的电源参数选择、纹波系数和输出波形进行了仿真与分析.结果表明,利用该软件可以分析设计出满足不同要求的电源分配系统,降低设计复杂度,提高设计效率,缩短设计周期.  关键词:电源系统;Multisim仿真  中图分类号:TP391.9文献标识码:A    Simulation Analysis of DC Ele
期刊