- 1、本文档共86页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 嵌入式应用程序设计
嵌入式系统原理与开发 6.1 引言 6.2.1 设计范型 设计范性是解决一类特定问题的方法的通用描述。 究竟什么是嵌入式系统设计范型呢? 嵌入式系统广泛使用了两种不同类 型的设计范型: C状态机的示例 状态机描述 设想一个座椅安全带控制器,实现的功能是当乘客坐在座位上一定时间内如果没有系牢安全带则蜂鸣器告警。 输入分别为感知乘客坐下的座位传感器、检查安全带是否系牢的安全带传感器和对限定时间计时的计时器 。 输出是蜂鸣器 。 系统工作情况 当座位上无人时,Idle状态被激活。 当有人坐下时进入Seated状态并打开计时器。 如果计时器在安全带系牢之前关闭(即超时),则转入Buzzer状态,反之进入Belted状态。 当人离开座位时,回到Idle状态。 C语言实现 假设已经将三个输入(seat,belt,timer)的当前值载入变量。 临时保持输出到变(timer_on,buzzer_on)中。 变量state用来保持当前状态。 使用switch语句来决定每个状态所采取的行动 。 6.2.2 编程模型 CDFG用来构造模型的数据操作(计算)和控制操作(条件)。 CDFG的特征是将控制和数据结构进行结合 。 CDFG使用数据流图作为其元素,包含两个基本的节点:判定节点和数据流节点 控制/控制数据流图 控制结构的C代码 while循环的控制/数据流图 6.3.1 消息 多任务系统中,消息是任务间相互通信的常用手段 。 在系统的主任务中可以使用以下代码来实现消息循环。 代 码 分 析 WaitMessage函数用来实现等待消息 。 参数()表示等待的超时时间为无穷,即除非主任务接收到消息,否则此函数不会返回。 WaitMessage函数返回的是一个指向系统的消息结构的指针。 DeleteMessage函数用来在系统得到消息并完成相应功能之后,删除得到的消息,以释放相应的内存资源。 6.3.2 任务和任务间同步 任务的定义和创建 多任务间的协调 任务的定义和创建 uC/OS-II允许同时运行64个任务,每个任务都要有独立的栈空间和唯一的任务优先级。在应用程序中创建新任务时,必须先为任务定义自己的栈空间,选定一个系统唯一的任务优先级。 任务的定义举例 任务的创建举例 多任务间的协调 系统信号量的定义 6.3.3 绘图函数 绘图时通常使用绘图设备上下文DC,这样可保证不同任务绘图的参数相互独立,不会相互影响。 DC的定义 DC的创建 DC的应用 6.3.4 控件 使用控件可以加速GUI图形界面 的建立。 控件的数据结构 列表框控件 6.4.1 编译过程 1 编译 2 汇编 3 链接 首先,决定每一目标文件开端的绝对地址。 “目标文件被载入的顺序由用户给定,或者通过装入程序运行时指明参数或者通过创建装入映像文件产生文件置入内存顺序。给出文件载入内存的顺序和每一目标文件的长度后,就很容易计算出每个文件的起始地址。 ” 其次,决定每一目标文件开端的绝对地址装入程序把所有目标文件符号表合并为单独的一个大表。接着编辑目标文件变相对地址为绝对地址 。 “装入程序将附加位写入目标文件是标识引用标记的指令和域的典型操作。如果一个标记不能在合并的符号表中找到,那它就是未定义的并将出错消息发送给用户。” 6.4.2 执行时间优化 1 程序执行时间 2 程序性能 3 程序性能分析 程序路径 指令耗时 4 优化执行速度 6.4.3 能量优化 6.4.4 长度优化 数据的最小化 指令的最小化 1 程序的变换 2 指令的选择 小 结 6.4.2 执行时间优化 程序性能的某些方面可以通过直接查看C程序来估计。 “如果一个程序包含了一个大的固定的迭代范围或如果一个条件分支比另一个分支更长,那么我们至少可以得到一个粗略的概念就是,这些程序段将消耗更多的时间。” 以下的例子解释了数据依赖的程序路径。 6.4.2 执行优化时间 if(a||b){/*test1*/ if(c)/*test2*/ {x=r*s+t;/*assignmen
文档评论(0)