- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章嵌入式系统软件体系结构
第五章 嵌入式系统软件基础 问题1 进程与线程之间的区别? 问题2 5.1 嵌入式软件体系结构 5.1.1无操作系统的情形 前后台系统(后台循环、前台中断) 5.1.2有操作系统的情形 第2节 设备驱动程序 5.2 设备驱动程序 为什么要有设备驱动程序? 嵌入式硬件设备本身无法工作,需要软件来驱动,如初始化、控制、数据读写等。 什么是设备驱动程序? 直接与硬件打交道、对硬件进行控制和管理的软件。 在一个嵌入式系统中,设备驱动程序是必不可少的。 5.3 嵌入式操作系统 嵌入式操作系统包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统、嵌入式GUI系统和电源管理等部分; 嵌入式内核是基础和核心,其他部分要根据嵌入式系统的需要来确定。 5.4 嵌入式中间件 中间件(Middleware):在OS内核、设备驱动程序和应用软件之外的所有系统软件; 中间件的基本思路:把原本属于应用软件层的一些通用的功能模块抽取出来,形成独立的一层软件,从而为运行在其上的各个应用软件提供一个灵活、安全、移植性好、相互通信、协同工作的平台; 优点:实现软件的可重用,降低应用软件的复杂性,降低开发成本。 第5节 进程、线程和任务 5.5.1 多道程序技术 5.5.2 关于进程 (1)什么是进程? (2)进程的特性 5.5.3 什么是线程? (1)为什么需要线程? 单进程的实现方法 多进程的实现方法 怎么办? (2)线程定义 (3)线程所需的资源 5.5.4 什么是任务? (1)vxWorks的例子 源文件1.c 源文件2.c 5.5.5 任务的实现 (1)任务的层次结构 (2)任务的创建 5.5.6 任务的描述 (1)任务控制块的内容 (2)任务的状态 (2)任务的状态及其转换 (3)两个任务的状态转换过程 (3)状态队列 第6节 嵌入式C程序设计 5.6 嵌入式C程序设计 嵌入式软件的目标 函数必须正确; 源代码简洁、可读性好、可维护; 实时性要求较高的代码能够运行得足够快; 目标代码小且高效。 总之,要优化对以下三种资源的使用: 执行时间; 存储空间; 开发/维护时间。 5.6.1 数据类型与运算符 小实验1 小实验2 应用案例 6.6.2 分支语句 if-then-else语句的汇编代码 switch语句的汇编代码-1 switch语句的汇编代码-2 5.6.3 函数 (1)主函数的执行过程 (2)控制流与数据流 结论: 尽量使用整数(char、short、int和long)的加法和减法; 如果没有硬件支持,尽量避免使用乘法; 尽量避免使用除法; 如果没有硬件支持,尽量避免使用浮点数; 数学库函数使用得越少越好。 重复10700次,右边需要1毫秒,左边需要2.13毫秒! struct { int a; char b; int c; } foo[10]; int i; for(i=0; i10; ++i) { foo[i].a = 77; foo[i].b = 88; foo[i].c = 99; } struct { int a; char b; int c; } *fp, *fend, foo[10]; fend = foo + 10; for(fp=foo; fp!=fend;++fp) { fp-a = 77; fp-b = 88; fp-c = 99; } (4)位运算 C语言有很多位操作运算符: 与操作; | 或操作; ^ 异或操作; ~ 取反操作; 右移操作; 左移操作。 a |= 0x4 b = ~0x4 c = ~(1 3) d ^= (1 5) e = 2 // 把第2位设置为1 // 把第2位设置为0 // 把第3位设置为0 // 把第5位反转 // 把 e 除以4 int x, num = 99, count = 0; x = num; while(x) { count ++; x = x (x ? 1); } printf(result: %d, count); result: 4 if (a == 1) ant(); else if (a == 2) bar(); else if (a == 3) cee(); else if (a == 4) due(); else if (a == 5) eat(); else if (a == 6) foo(); switch (a) { case 1: ant(); break; case 2: bar(); break; case 3: cee(); break; case 4
文档评论(0)