在当前计算机技术高度发展的今天CONTROL ENGINEERING China版权所有,嵌入式系统已经广泛地应用于工业控制、信息家电、办公自动化、移动通信、仪器仪表、医疗电子以及国防等领域。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密结合。
嵌入式系统一般指非PC系统,通常完成一种或多种特定的计算机功能。它是以应用为中心,软硬件可裁减的www.cechina.cn,适应应用系统对功能,可靠性,成本,体积,功耗等综合性要求的专用计算机系统。简单的说类似于PC中的BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点。 特别适合于要求实时和多任务的应用体系。嵌入式实时系统是目前蓬勃发展的行业之一。但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加上运行环境复杂www.cechina.cn,使得嵌入式系统软件的开发变得异常困难。 为了设计一个满足功能、性能和时间要求的安全可靠的高性能嵌入式系统,编程语言的选择十分重要。
1、嵌入式系统中编程语言的选择
因为汇编语言编写的代码难懂,从而不好维护和难于调试,且只能针对特定的体系结构和处理器移植性差, 所以既不宜在复杂系统中使用,又不便于实现软件重用;而高级语言具有良好的通用性和丰
2、实时程序设计中代码的优化
在嵌入式的系统开发中,出于对低价产品的需求, 硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力。所以在嵌入式软件设计的最后一个阶段则变成了对代码的优化。
代码优化的目标是体积小和速度快,可以从算法、数据和指令流三方面来考虑。
算法优化
大多数情况下,速度同内存(或者是性能,比如说压缩性能)是不可兼得的。目前程序加速的常用算法一个大方面就是利用查表来避免计算(比如在jpg有huffman码表,在YUV到RGB变换也有变换表)这样原来的复杂计算现在仅仅查表就可以了,虽然浪费了内存,不过速度显著提升。此外在编写程序时还要注意提高效率,例如:
Switch语句中根据发生频率来进行case排序
switch语句是一个普通的编程技术,编译器会产生if-else-if的嵌套代码,并按照顺序进行比较,发现匹配时,就跳转到满足条件的语句执行。使用时需要注意。每一个由机器语言实现的测试和跳转仅仅是为了决定下一步要做什么,就把宝贵的处理器时间耗尽。为了提高速度,设法根据具体的情况按照它们发生的相对频率排序。换句话说,把最可能发生的情况放在第一位,最不可能的情况放在最后。
将大的switch语句转为嵌套switch语句
当switch语句中的case标号很多时CONTROL ENGINEERING China版权所有,为了减少比较的次数,明智的做法是把大switch语句转为嵌套switch语句。把发生频率高的case 标号放在一个switch语句中,并且是嵌套switch语句的最外层,发生相对频率相对低的case标号放在另一个switch语句中。 如果switch中每一种情况下都有很多的工作要做,那么把整个switch语句用一个指向函数指针的表来替换会更加有效。
用指针代替数组
在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。
数组索引指针运算
For(;;){ p="array"
A=array[r++]; for(;;){
a=*(p++);
...... ......
} }
指针方法的优点是,array的地址每次装入地址p后,在每次循环中只需对p增量操作。在数组索引方法中,每次循环中都必须进行基于r值求数组下标的复杂运算。
使用