今天是: 设为首页  |  添加到收藏夹

热烈庆祝芯慧嵌入式之家正式成立! 欢迎登陆芯慧企业网 HTTP://WWW.TJXHKJ.COM

   

| 网站首页 | 商城首页芯慧文化芯慧大学计划 | 技术文章 | 嵌入式之家产品导航 | 软件下载 | 特价商品 | 人才招聘 客服中心留言板联系我们
   
    企业网站——芯慧鸿业欢迎您的光临!
 

天津芯慧鸿业科技发展有限公司是集科工贸于一体的专业从事开发、生产、销售和技术服务的高新技术企业。公司坐落在天津信息产业基地--华苑产业园区海泰火炬大厦;销售部坐落在天津的硅谷--南开鞍山西道科技一条街。公司依托其区域、信息、政策和产品优势,发扬国内外先进技术,为用户提供优质的产品及服务。
公司以生产仿真器、开发板、教学实验箱、教学实训台、工作台及产品检测设备等系列产品为主。并代理销售国内外知名厂家的单片机、仿真器、编程器、AVR、PIC、32位嵌入式ARM系统、DSP数字信号处理系统、EDA、SMT线路板生产线工艺设备、移动通信教学设备和电工电子、计算机网络通信类、汽车示教系统、过控变频类、TINALab教学系统软件等产品;承揽相关技术项目的研发与加工。

 
     返回首页
企业网站:HTTP://WWW.TJXHKJ.COM

点击这里给我发消息
点击这里给我发消息
点击图标与我联系
  sw  技术文章
嵌入式实时程序设计C/C++的代码优化(一)
 
1、引言
计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用。?嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体。具有软件代码小、高度自动化、响应速度快等特点。?特别适合于要求实时和多任务的应用体系。嵌入式实时系统是目前蓬勃发展的行业之一。?但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难。?为了设计一个满足功能、性能和死线要求的系统,为了开发出安全可靠的高性能嵌入式系统,开发语言的选择十分重要。?
2、嵌入式实时程序设计中语言的选择?
随着嵌入式系统应用范围的不断扩大和嵌入式实时操作系统RTOS(Real?Time?Operating?System)的广泛使用,高级语言编程已是嵌入式系统设计的必然趋势。因为汇编语言和具体的微处理器的硬件结构密切相关,移植性较差,既不宜在复杂系统中使用,又不便于实现软件重用;而高级语言具有良好的通用性和丰富的软件支持,便于推广、易于维护,因此高级语言编程具有许多优势目前,在嵌入式系统开发过程中使用的语言种类很多,但仅有少数几种语言得到了比较广泛的应用。其中C和C++是应用最广泛的C++在支持现代软件工程、?OOP(Object?Oriented?Programming,面向对象的程序设计)、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、?程序复杂程度等方面比C语言程序性能差一些。由于C语言既有低级语言的直接控制硬件的能力,又有高级语言的灵活性,是目前在嵌入式系统中应用最广泛的编程语言。随着网络技术和嵌入式技术的不断发展,Java的应用也得到广泛应用。
3、C/C++代码在实时程序设计中的优化
虽然使软件正确是一个工程合乎逻辑的最后一个步骤,但是在嵌入式的系统开发中,情况并不总是这样的。出于对低价产品的需求,?硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力。所以在嵌入式软件设计的最后一个阶段则变成了对代码的优化。?现代的C和C++编译器都提供了一定程度上的代码优化。然而,大部分由编译器执行的优化仅涉及执行速度和代码大小的一个平衡你的程序能够变得更快或者更小,但是不可能又变快又变小。经过本人在嵌入式系统设计和实现过程中实践,下面介绍几种简单且行之有效的C/C++代码的优化方法。
(1)?Inline函数
在C++中,关键字Inline可以被加入到任何函数的声明中。这个关键字请求编译器用函数内部的代码替换所有对于指出的函数的调用?这样做在两个方面快于函数调用。这样做在两个方面快于函数调用:第一,省去了调用指令需要的执行时间;第二,省去了传递变元和传递过程需要的时间。但是使用这种方法在优化程序速度的同时,程序长度变大了,因此需要更多的ROM。使用这种优化在Inline函数频繁调用并且只包含几行代码的时候是最有效的。
(2)用指针代替数组
在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。数组索引?指针运算
For(;;){ p=array?
A=array[t++]; for(;;){
a=*(p++);
...... ......
} }
指针方法的优点是,array的地址每次装入地址p后,在每次循环中只需对p增量操作。在数组索引方法中,每次循环中都必须进行基于t值求数组下标的复杂运算。
(3)不定义不使用的返回值
function函数定义并不知道函数返回值是否被使用,假如返回值从来不会被用到,应该使用void来明确声明函数不返回任何值。
(4)手动编写汇编
在嵌入式软件开发中,一些软件模块最好用汇编语言来写,这可以使程序更加有效。虽然C/C++编译器对代码进行了优化,但是适当的使用内联汇编指令可以有效的提高整个系统运行的效率。
(5)使用寄存器变量
在声明局部变量的时候可以使用register关键字。这就使得编译器把变量放入一个多用途的寄存器中,而不是在堆栈中,合理使用这种方法可以提高执行速度。函数调用越是频繁,越是可能提高代码的速度。
(6)使用增量和减量操作符
在使用到加一和减一操作时尽量使用增量和减量操作符,因为增量符语句比赋值语句更快,原因在于对大多数CPU来说,对内存字的增、减量操作不必明显地使用取内存和写内存的指令,比如下面这条语句:
x=x+1;
模仿大多数微机汇编语言为例,产生的代码类似于:
move A,x;把x从内存取出存入累加器A
add A,1;累加器A加1
storex;把新值存回x
如果使用增量操作符,生成的代码如下:
incrx;x加1
 
上一篇:
下一篇:
   天气预报  
温度: 8℃~15℃
晚上: 晴天
明天: 晴天
北京
   站内公告
站 内 新 闻

通知:

为了答谢芯慧单片机俱乐部的会员,在过去的一年中对芯慧科技的支持与厚爱,芯慧俱乐部准备了七彩水晶杯送给会员朋友,希望您在新的一年中生活像七彩水晶杯一样丰富多彩!
(此次活动截止日期为2007年元月一日前)

祝贺:

天津芯慧科技正式开通单片机直通车绿色通道(学生专区)!这里是展示您的才华的好地方!可以看到您好朋友的作品,只要在这里注册,您就是芯慧科技的尊贵会员,并可以以成本价得到一款性价比极高的好作品!天津芯慧科技可以为作品设计者提供推荐信。

祝贺:

天津芯慧科技成为深圳市英蓓特信息技术有限公司地区总代理!深圳市英蓓特信息技术有限公司(简称英蓓特,英文简称Embest)成立于2000年初,是一家为全球嵌入式系统开发人员提供软硬件开发工具和嵌入式系统完整解决方案及技术信息服务的高科技企业。本着前瞻的视野,公司以尽快提升中国高科技嵌入式系统开发应用水平为己任,专业服务于嵌入式在线CPU/MCU开发工具(IDE & ICD)、实时多任务操作系统(RTOS)、嵌入式控制板(Embedded Board)等应用领域。
公司的目标是:"让高端处理器的开发象8051一样容易,象8051一样便宜!"

英蓓特公司依托自己的核心技术和产品,并通过与国内外厂商建立广泛的合作关系为客户提供系统完整解决方案。英蓓特公司已先后同TERN公司、ARM公司、Samsung公司及其销售商、Hynix公司及其销售商、OKI公司建立合作关系。

如需了解产品请与天津芯慧科技联系索取详细资料。

祝贺:

天津芯慧科技成为天津启东计算机厂地区总代理!说道单片机就要提到启东,提道启东单片机就不得不讲到启东教学实验箱最早的生产厂家启东计算机厂。启东计算机厂有限公司创建于1984年,依托复旦大学雄厚的师资力量和具有超前理念的服务营销方式合作推广单片机技术。凌环商标我想老的用户朋友都记得,仿真器、编程器、最小系统、微机电源、擦除器、教学实验箱等等产品应有尽有几乎遍及全国各大专院校实验室,首先获电子工业部生产许可证,同时公司被认定为单片计算机产品定点生产企业。现在启东计算机厂将多年积累出来的经验全部汇集到新一代的产品中,公司借鉴和复旦大学成功合作的经验,先后又和上海华东师大、东南大学、南京通讯兵工程学院携手合作,在原有产品的基础上又推出了新一代单片机/十六位微机仿真实验系统、智能数字/模拟/EDA实验系统、计算机组成原理实验系统、通讯原理/自控原理实验系统、DSP实验系统、ARM仿真器/实验系统、ARM评估板等产品。如需了解产品请与天津芯慧科技联系索取详细资料。

   经典推荐 更多>> 

utu2440-F

RealView MDK
   
SW-AVR仿真器
SW-CPLD&AVR
 
TEL:022-27376292
FAX:022-27471810
E-mail:tjxhkj@163.com
天津嵌入式开发网  | http://www.tjqrs.com

Emai:tjqrs@163.com | tjqrs@126.com | TEL:022-237439126 | QQ:495364769

主营单片机、仿真器、编程器、AVR、PIC、ARM、DSP、EDA、SOPC、LCD、开关电源、凌阳大学计划、教学实训装置、单片机书籍等相关配套产品