网站大量收购独家精品文档,联系QQ:2885784924

九C语言在嵌入式中的应用.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
九C语言在嵌入式中的应用

9.1 C语言在嵌入式系统中的地位 C语言背景 嵌入式系统编程 C语言的嵌入应用 与汇编语言编程相比的优势 C语言的嵌入式应用发展 9.1.1 C语言背景 C语言的特点 C 中蕴含的OO,GP 强大的语言功能 灵活的语言机制 9.1.2 嵌入式系统编程 嵌入式系统有三个特点 嵌入性 专用性 计算性 资源受限的环境 9.1.2 嵌入式系统编程 嵌入式系统有三个特点 嵌入性 表示系统通常需要嵌入到其他对象系统中 专用性 表示系统的软件和硬件要有可裁剪性 计算性 表示嵌入式系统必须是能满足对象系统控制需要的电脑系统 9.1.2 嵌入式系统编程 嵌入式系统运行环境 资源受限的环境 嵌入式应用种类繁多 9.1.2 嵌入式系统编程 C语言在嵌入式系统的不足 ISO C 的语法特性会导致代码体积膨胀和执行效率的低下 C 有可能会对嵌入式软件带来额外的开销 C语言的改造 1998年,Embedded C 规范正式出炉 (EC) EC 是标准C 语言的一个子集 剔除了一些实现复杂和会导致额外负担语法元素。例如:多重继承和虚基类、RTTI、异常处理、模版、命名空间等等 在标准库方面,EC 规范也做了删减,STL和Stream等被剔除了 9.1.3 C语言的嵌入应用 常见的嵌入式操作系统 VxWorks 嵌入式Linux Windows CE C语言嵌入式应用 科泰世纪公司自主研发的和欣(Elastos) BrickOS Symbian OS Windows CE 9.1.3 与汇编语言编程相比的优势 C语言相比汇编语言的优势 编程调试灵活方便 生成的代码编译效率高 完全模块化 可移植性好 便于项目维护管理 9.2 嵌入式C编程 嵌入式编程环境 模块划分 多任务与单任务 中断服务程序 硬件驱动模块 9.2.1嵌入式编程的环境 理解全貌 检查环境 存储器映射 I/O映射 指针与地址 通讯过程 中断映射 接触硬件 9.2.2模块划分 概念:合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求 一个嵌入式系统通常包括两类模块 硬件驱动模块,一种特定硬件对应一个模块 软件功能模块,其模块的划分应满足低偶合、高内聚的要求 9.2.3 多任务与单任务 概念 该系统不能支持多任务并发操作,宏观串行地执行一个任务 可以宏观并行地“同时”执行多个任务堆栈溢出 多任务特点 依赖于一个多任务操作系统(OS) 嵌入式多任务OS Vxworks ucLinux 9.2.3 多任务与单任务 单任务程序典型架构 从CPU 复位时的指定地址开始执行; 跳转至汇编代码startup 处执行; 跳转至用户主程序main 执行,在main 中完成: 初试化各硬件设备; 初始化各软件模块; 进入死循环(无限循环),调用各模块的处理函数 9.2.3 多任务与单任务 循坏模式 9.2.4 中断服务程序 中断服务程序的要求 不能返回值; 不能向ISR 传递参数; ISR 应该尽可能的短小精悍 函数不能带来重入和性能问题 9.2.5 硬件驱动模块 硬件驱动模块通常应包括如下函数 中断服务程序ISR 硬件初始化 修改寄存器,设置硬件参数 将中断服务程序入口地址写入中断向量表: 设置CPU 针对该硬件的控制线 设置CPU 内部对应寄存器使其作为控制信号; 设置CPU 内部的针对该设备的中断屏蔽位,设置中断方式 提供一系列针对该设备的操作接口函数 阶段小节 嵌入式系统编程软件架构方面的知识 模块划分、多任务还是单任务选取 中断服务程序、硬件驱动模块设计 单任务程序典型架构 9.3 嵌入式系统编程的特点 C语言语法优化 字节对齐详解 关键字volatile 中断程序 利用硬件特性 活用位操作 内嵌汇编 使用寄存器变量 9.3.1 C语言语法优化 数据类型 关于局部变量 函数操作 语法结构优化 9.3.1.1 数据类型 9.3.1.1 数据类型 结构体数据的优化规则 小的元素放在结构体的开始,大的元素放在结构体的最后; 避免使用过大的结构体,用层次话的小结构体代替; 人工对API的结构体增加填充位以提高移植性; 枚举类型要慎用,因为它的大小与编译器相关; 9.3.1.2 关于局部变量 局部变量的数据类型最好有系统操作位一致 比如:ARM数据处理操作都是32位的,局部变量应尽可能使用32位的数据类型(int或long) 分析 9.3.1.2 关于局部变量 程序分

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档