嵌入式系统原理及应用(基于Cortex-A8处理器)第5章 嵌入式驱动开发.pptx

嵌入式系统原理及应用(基于Cortex-A8处理器)第5章 嵌入式驱动开发.pptx

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式处理器及接口技术 第5章 嵌入式系统底层驱动开发淮阴工学院 电子信息工程学院嵌入式处理器及接口技术本章内容5.1 嵌入式 C语言程序设计5.2 Eclipse集成开发环境5.5 S5PV210应用电路设计5.4 S5PV210驱动仿真调试实验淮阴工学院 电子信息工程学院5.1 嵌入式C语言程序设计 在2016年6月排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算的TIOBE 编程语言社区排行榜上,Java、C和C++仍然稳定保持在前三甲。 前 10 名编程语言长期走势图淮阴工学院 电子信息工程学院嵌入式处理器及接口技术嵌入式处理器及接口技术5.1.1 C语言C语言的优点是运行速度快、编译效率高、移植性好和可读性强。C语言支持模块化程序设计,支持自顶向下的结构化程序设计方法。因此在嵌入式程序设计中经常会用到C语言程序设计。嵌入式C语言程序设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。也就是说它首先是C语言程序设计,因此必须符合C语言基本语法,只是它是面向嵌入式的应用而设计的程序。淮阴工学院 电子信息工程学院嵌入式处理器及接口技术 C语言特性“=”和“==” 复合赋值运算符 其它容易误写 数组下标 break关键字 八进制数 增量运算符“++”和减 量运算符“--” 逻辑与’&&’和逻辑或’||’的陷阱 结构体的填充淮阴工学院 电子信息工程学院5.1.2编译器?嵌入式处理器及接口技术对编译器应有如下认识:· 嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存器、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。· 汇编可以很轻易的读写指定RAM地址、可以将代码段放入指定的Flash地址、可以精确的设置变量在RAM中分布等等,所有这些操作,在深入了解编译器后,也可以使用C语言实现。· C语言标准并非完美,有着数目繁多的未定义行为,这些未定义行为完全由编译器自主决定,了解你所用的编译器对这些未定义行为的处理,是必要的。· 嵌入式编译器对调试做了优化,会提供一些工具,可以分析代码性能,查看外设组件等,了解编译器的这些特性有助于提高在线调试的效率。· 此外,堆栈操作、代码优化、数据类型的范围等等,都是要深入了解编译器的理由。淮阴工学院 电子信息工程学院嵌入式处理器及接口技术5.1.5 未定义行为 C语言标准特别的规定某些行为是未定义的,编写未定义行为的代码,其输出结果由编译器决定。 C语言的未定义行为,使得C极度高效灵活并且给编译器实现带来了方便,但这并不利于优质嵌入式C程序的编写。因为许多 C 语言中看起来有意义的东西都是未定义的,并且这也容易使你的代码埋下隐患,并且不利于跨编译器移植。淮阴工学院 电子信息工程学院嵌入式处理器及接口技术5.1.4 进一步了解编译器 1) 默认情况下,char类型的数据项是无符号的,所以它的取值范围是0~255; 2) 在所有的内部和外部标识符中,大写和小写字符不同; 5)通常局部变量保存在寄存器中,但当局部变量太多放到栈里的时候,它们总是字对齐的。 4)压缩类型的自然对齐方式为1。使用关键字__packed来压缩特定结构,将所有有效类型的对齐边界设置为1; 5)整数以二进制补码形式表示;浮点量按IEEE格式存储; 6)整数除法的余数的符号于被除数相同,由ISO C90标准得出; 7)如果整型值被截断为短的有符号整型,则通过放弃适当数目的最高有效位来得到结果。如果原始数是太大的正或负数,对于新的类型,无法保证结果的符号将于原始数相同。淮阴工学院 电子信息工程学院嵌入式处理器及接口技术5.1.4 进一步了解编译器 8) 整型数超界不引发异常;像unsigned char test; test=1000;这类是不会报错的; 9)在严格C中,枚举值必须被表示为整型。 10)对于结构体填充,根据定义结构的方式,keil MDK编译器用以下方式的一种来填充结构:定义为static或者extern的结构用零填充;栈或堆上的结构。 11)编译器不对声明为volatile类型的数据进行优化; 12) __nop():延时一个指令周期,编译器绝不会优化它。 15)__align(n):指示编译器在n 字节边界上对齐变量。对于局部变量,n的值为1、2、4、8; 14)__attribute__((at(address))):可以使用此变量属性指定变量的绝对地址; 15)__inline:提示编译器在合理的情况下内联编译C或C++ 函数。淮阴工学院 电子信息工程学院5.1.5 防御性编程嵌入式处理器及接口技术 嵌入式产品的可靠性自然与

文档评论(0)

别样风华 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档