C语言在嵌入式中的应用.ppt
《C语言在嵌入式中的应用.ppt》由会员分享,可在线阅读,更多相关《C语言在嵌入式中的应用.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上章回顾上章回顾编码的规范和程序版式版权管理和申明头文件结构和作用程序命名程序注释和代码布局规范Assert断言函数的应用与0或NULL值的比较内存的分配和释放细节,避免内存泄露常量特性C C语言在嵌入式中的应用语言在嵌入式中的应用语言在嵌入式中的应用语言在嵌入式中的应用 第九章第九章第九章第九章预习检查预习检查const比#define有哪些优势简单说出const几种常见的用法内存分配方式有几种常见的内存错误有哪些课程目标课程目标本章概述本章概述以实例说明C在嵌入式中的应用,以及注意事项。本章目标本章目标了解C语言在嵌入式系统中的重要性熟悉嵌入式C语言编程的特点和环境了解如何优化C语言嵌入式
2、编程的性能重点重点了解嵌入式平台的特点,针对性编程难点难点嵌入式C语言嵌入编程的性能优化本章结构本章结构C语言在嵌入式系统地位C C语言在嵌入式中的应用语言在嵌入式中的应用嵌入式C编码嵌入式系统编程性能优化9 C语言在嵌入式中的应用语言在嵌入式中的应用 C语言在嵌入式系统中的地位嵌入式系统编程的特点嵌入式C编程的性能优化9.1 C语言在嵌入式系统中的地位语言在嵌入式系统中的地位 C语言背景嵌入式系统编程C语言的嵌入应用与汇编语言编程相比的优势C语言的嵌入式应用发展9.1.1 C语言背景语言背景 C语言的特点C中蕴含的OO,GP强大的语言功能灵活的语言机制9.1.2 嵌入式系统编程嵌入式系统编程
3、 嵌入式系统有三个特点嵌入性专用性计算性资源受限的环境9.1.2 嵌入式系统编程嵌入式系统编程 嵌入式系统有三个特点嵌入性表示系统通常需要嵌入到其他对象系统中专用性表示系统的软件和硬件要有可裁剪性计算性表示嵌入式系统必须是能满足对象系统控制需要的电脑系统9.1.2 嵌入式系统编程嵌入式系统编程 嵌入式系统运行环境资源受限的环境嵌入式应用种类繁多9.1.2 嵌入式系统编程嵌入式系统编程 C语言在嵌入式系统的不足ISOC的语法特性会导致代码体积膨胀和执行效率的低下C有可能会对嵌入式软件带来额外的开销C语言的改造1998年,EmbeddedC规范正式出炉(EC)EC是标准C语言的一个子集剔除了一些实
4、现复杂和会导致额外负担语法元素。例如:多重继承和虚基类、RTTI、异常处理、模版、命名空间等等在标准库方面,EC规范也做了删减,STL和Stream等被剔除了9.1.3 C语言的嵌入应用语言的嵌入应用 常见的嵌入式操作系统VxWorks嵌入式LinuxWindowsCEC语言嵌入式应用科泰世纪公司自主研发的和欣(Elastos)BrickOSSymbianOSWindowsCE9.1.3 与汇编语言编程相比的优势与汇编语言编程相比的优势 C语言相比汇编语言的优势编程调试灵活方便生成的代码编译效率高完全模块化可移植性好便于项目维护管理9.2 嵌入式嵌入式C编程编程 嵌入式编程环境模块划分多任务与
5、单任务中断服务程序硬件驱动模块9.2.1嵌入式编程的环境嵌入式编程的环境 理解全貌检查环境存储器映射I/O映射指针与地址通讯过程中断映射接触硬件9.2.2模块划分模块划分 概念:合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求一个嵌入式系统通常包括两类模块硬件驱动模块,一种特定硬件对应一个模块软件功能模块,其模块的划分应满足低偶合、高内聚的要求9.2.3 多任务与单任务多任务与单任务 概念该系统不能支持多任务并发操作,宏观串行地执行一个任务可以宏观并行地“同时”执行多个任务堆栈溢出多任务特点依赖于一个多任务操作系统(OS)嵌入式多任务OSVxworksucLinux9.2.3
6、 多任务与单任务多任务与单任务 单任务程序典型架构从CPU复位时的指定地址开始执行;跳转至汇编代码startup处执行;跳转至用户主程序main执行,在main中完成:初试化各硬件设备;初始化各软件模块;进入死循环(无限循环),调用各模块的处理函数9.2.3 多任务与单任务多任务与单任务 循坏模式死循坏例子操作系统是死循环;WIN32程序是死循环;嵌入式系统软件是死循环;多线程程序的线程处理函数是死循环。循坏模式循坏模式while(1)for(;)9.2.4 中断服务程序中断服务程序 中断服务程序的要求不能返回值;不能向ISR传递参数;ISR应该尽可能的短小精悍函数不能带来重入和性能问题9.2
7、.5 硬件驱动模块硬件驱动模块 硬件驱动模块通常应包括如下函数中断服务程序ISR硬件初始化修改寄存器,设置硬件参数将中断服务程序入口地址写入中断向量表:设置CPU针对该硬件的控制线设置CPU内部对应寄存器使其作为控制信号;设置CPU内部的针对该设备的中断屏蔽位,设置中断方式提供一系列针对该设备的操作接口函数阶段小节阶段小节嵌入式系统编程软件架构方面的知识模块划分、多任务还是单任务选取中断服务程序、硬件驱动模块设计单任务程序典型架构9.3 嵌入式系统编程的特点嵌入式系统编程的特点 C语言语法优化字节对齐详解关键字volatile中断程序利用硬件特性活用位操作内嵌汇编使用寄存器变量9.3.1 C语
8、言语法优化语言语法优化数据类型关于局部变量函数操作语法结构优化9.3.1.1 数据类型数据类型C语言性能编译器编译器 硬件系统硬件系统 设置某些编译器选项设置某些编译器选项 9.3.1.1 数据类型数据类型 结构体数据的优化规则小的元素放在结构体的开始,大的元素放在结构体的最后;避免使用过大的结构体,用层次话的小结构体代替;人工对API的结构体增加填充位以提高移植性;枚举类型要慎用,因为它的大小与编译器相关;9.3.1.2 关于局部变量关于局部变量 局部变量的数据类型最好有系统操作位一致比如:ARM数据处理操作都是32位的,局部变量应尽可能使用32位的数据类型(int或long)分析short
9、shortint降低程序的效率降低程序的效率 short checksum_v3(short*data)unsigned int i;short sum=0;for(i=0;i 64;i+)sum=(short)(sum+datai);return sum;9.3.1.2 关于局部变量关于局部变量 程序分析提高性能提高性能short checksum_v3(short*data)unsigned int i;int sum=0;for(i=0;i 0 x0000%1=0-0X000-0X000a-0 x0004%4=0-0X004-0X007c-0 x0008%2=0-0X008-0X009结
10、构体的有效对齐值结构体的有效对齐值MAX(1,4,2)-4B-(10+2)%40-0X000-0X00B假定运行在32位系统结果sizeof(structB)的值是?12struct B char b;int a;short c;9.3.1.7编译器是按照什么样的原则进行对齐的编译器是按照什么样的原则进行对齐的 例C例C分析假定假定B起始地址为起始地址为0X0000b-0 x0000%1=0-0X000-0X000b有效对齐值有效对齐值-MIN(2,4)-2a-0 x0004%2=0-0X002-0X003a-0 x0006%2=0-0X004-0X005c-0 x0008%2=0-0X006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 嵌入式 中的 应用
限制150内