嵌入式系统程序可移植性设计及性能优化.doc

嵌入式系统程序可移植性设计及性能优化.doc

ID:59426483

大小:201.00 KB

页数:42页

时间:2020-05-25

嵌入式系统程序可移植性设计及性能优化.doc_第1页
嵌入式系统程序可移植性设计及性能优化.doc_第2页
嵌入式系统程序可移植性设计及性能优化.doc_第3页
嵌入式系统程序可移植性设计及性能优化.doc_第4页
嵌入式系统程序可移植性设计及性能优化.doc_第5页
资源描述:

《嵌入式系统程序可移植性设计及性能优化.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、嵌入式系统程序可移植性设计及性能优化【摘要】在嵌入式系统的程序设计中,由于软硬件平台的多变性,对程序的可移植性、可扩充性、可裁减性及可维护性等有更严格的要求。本文从宏定义设计、数据结构设计及函数设计等方面,简单介绍了可移植性的设计问题。在嵌入式应用中非常注重代码的时空效率,即产生的代码运行时间和占用的存储空间尽可能少。程序设计一章介绍了如何提高程序的运行效率的相关技巧。【关键词】嵌入式,可移植性,可维护,可裁减,宏定义设计,数据结构设计,时空效率目录1宏定义设计-1-1.1为何要采用宏定义?-1-1.2宏定义的基本规则-1-1.3依赖关系定义宏改善移

2、植性-1-1.4通过偏移量和掩码进行位操作-2-2数据结构设计-4-2.1结构体中成员对齐规则-4-2.1.1自然对界-4-2.1.2指定对界-4-2.2合理设计成员顺序-5-2.2.1减少结构体存储空间-5-2.2.2填充部分域,避免字节对齐问题-6-2.2.3字节对齐问题实例-7-2.3采用位域构造结构体-8-2.3.1位域设计传输协议-8-2.3.2位域的可移植性问题-9-2.3.3位域设计硬件配置字-10-2.4通过union和struct传递不同格式报文-11-2.5将相关功能变量封装为结构体-13-3函数设计-15-3.1避免过多函数参数

3、,提高调用性能-15-3.2合理设计模块,减小耦合度-16-3.3用宏函数提高时间效率-18-3.3.1宏参数的基本规则-18-3.3.2宏语句的基本规则-18-3.3.3宏的副作用-20-3.4Const修饰输入指针参数-21-4程序设计-22-4.1循环转置-22-4.2减小运算强度-23-4.2.1位操作实现求余运算-23-4.2.2用移位实现乘除法运算-23-4.2.3将循环体内的乘法运算改成循环自加运算-23-4.3减少不变计算-24-4.3.1循环内部避免恒定式-24-4.3.2避免结构体深度访问-25-4.4减少存储访问指令周期和个数-

4、26-4.5查表-28-4.6使用自加、自减指令-28-4.7根据频率进行case排序-29-4.8函数指针表替代switch-case-30-嵌入式系统程序可移植性设计及性能优化之一――――宏定义设计【摘要】本节介绍了嵌入式系统程序设计中采用宏定义进行常量定义的必要性。说明了宏常量定义的基本规则以及如何采用依赖关系定义宏常量来保证其可移植性和裁减性。最后介绍了如何利用宏定义实现掩码偏移量等来高效的进行位操作。【关键词】嵌入式,可移植性,宏定义,依赖关系,掩码,偏移量,位操作1宏定义设计-1-1.1为何要采用宏定义?-1-1.2宏定义的基本规则-1-

5、1.3依赖关系定义宏改善移植性-1-1.4通过偏移量和掩码进行位操作-2-1      宏定义设计1.1   为何要采用宏定义?在程序设计过程中,对于经常使用的一些常量,如果将它直接写到程序中去,一旦常量的数值发生变化,就必须逐个找出程序中所有的常量,并逐一进行修改,这样必然会降低程序的可维护性。因此,应尽量通过预处理命令方式将常量定义为特定的字符,这样常量就有了统一的表现形式,不会出现输入错误导致的不一致性。另外宏常量意义明确,大大改善了代码的可读性。只读的变量也可以实现上述宏常量所带来的可移植性、可靠性及可读性等特点,但其要占据存储空间,需要访问

6、内存,相比宏常量的立即数寻址而言效率要低。在C++中提倡用const只读变量来定义常量,是因为这样可以提供更严格的类型安全检查。但由于C中const只读变量不能用于某些场合,因此在嵌入式C中仍多数采用宏来定义常量。1.2   宏定义的基本规则下面以一个实例来说明宏定义的基本规则,如用预处理指令#define声明一个常量,用以表明1年中有多少秒,不考虑润年#defineC_SECONDS_PER_YEAR(60*60*24*365)ULa)      命名风格,为了与普通变量区分开来,宏定义通常全部大写,多个单元之间用下划线隔开;b)      整个表

7、达式应括起来,若有参数则应将每个参数都括起来,防止替换扩展后可能带来的异常问题;c)      常量表达式先合并后再替换。预处理器将为你计算常量表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有运行性能代价的。d)      为常量添加类型信息。宏的不足之一在于缺乏类型安全检查,人为的提供类型信息可以有效检查出此类问题。UL告诉编译器这个常量是无符号长整型数,因此将其赋值给u16型变量会出现告警。1.3   依赖关系定义宏改善移植性嵌入式系统程序的最大特点是硬件平台的多变性,因此需要根据具体的应用情况更改大量配置

8、,而这些配置基本都是由宏定义来实现的,放在特定的头文件中,与其他的代码隔离,在一定程度上改善了代码的可移植性

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。