第六章 嵌入式应用程序设计_第1页
第六章 嵌入式应用程序设计_第2页
第六章 嵌入式应用程序设计_第3页
第六章 嵌入式应用程序设计_第4页
第六章 嵌入式应用程序设计_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 l6.2.1 设计范型设计范型l6.3.1 消息消息l6.3.3 绘图函数绘图函数l6.2.2 编程模型编程模型 l6.3.2 任务和任务间同步任务和任务间同步l6.3.4 控件控件l6.4.1 编译过程编译过程l6.4.3 能量优化能量优化l6.4.2 执行时间优化执行时间优化l6.4.4 长度优化长度优化 l6.2.1 设计范型设计范型l6.3.1 消息消息l6.3.3 绘图函数绘图函数l6.2.2 编程模型编程模型 l6.3.2 任务和任务间同步任务和任务间同步l6.3.4 控件控件l6.4.1 编译过程编译过程l6.4.3 能量优化能量优化l6.4.2 执行时间优化执行时间优化l6.

2、4.4 长度优化长度优化 嵌入式系统广泛使用了两种不同类嵌入式系统广泛使用了两种不同类 型的设计范型:型的设计范型:状态机状态机 适合于诸如用户界面这样的反应系统中。适合于诸如用户界面这样的反应系统中。循环缓冲区循环缓冲区 适合于数字信号处理系统中。适合于数字信号处理系统中。 状态机状态机1. 状态机的简介状态机的简介2. 状态机的示例状态机的示例1. 状态机简介状态机简介 对于非周期性输入的系统,根据输入对于非周期性输入的系统,根据输入和当前系统状态,通过有限状态机的方式和当前系统状态,通过有限状态机的方式能够很方便地描述系统的响应。通常,有能够很方便地描述系统的响应。通常,有限状态机在硬件

3、设计时会用到。而编程的限状态机在硬件设计时会用到。而编程的状态机类型也是嵌入式计算的一种有效实状态机类型也是嵌入式计算的一种有效实现现 。2. 状态机示例状态机示例 状态机描述状态机描述 系统工作情况系统工作情况 C语言实现语言实现 工工 作作 流流 程程 图图 C语言代码语言代码 C 语语 言言 代代 码码 循环缓冲区循环缓冲区 1. 循环缓冲区简介循环缓冲区简介 2. 循环缓冲区示例循环缓冲区示例1. 循环缓冲区简介循环缓冲区简介 在嵌入式系统中,程序不仅需要实在嵌入式系统中,程序不仅需要实时输出结果,而且需要尽量少地使用时输出结果,而且需要尽量少地使用内存。因此使用循环缓冲区是处理流内存

4、。因此使用循环缓冲区是处理流数据的有效方式。数据的有效方式。 2. 循环缓冲区示例循环缓冲区示例 工作原理工作原理 C语言实现语言实现 循环缓冲区工作原理循环缓冲区工作原理 以一个以一个FIR过滤器的实现来介绍循环缓过滤器的实现来介绍循环缓冲区的使用。冲区的使用。FIR过滤器要求对每一个样过滤器要求对每一个样本必须产生一个依赖于最后本必须产生一个依赖于最后n个输入值的个输入值的输出输出 。 工工 作作 流流 程程 图图C语言实现语言实现 使用编程模型能够比使用源代码使用编程模型能够比使用源代码更容易地进行更有用的分析。在编程更容易地进行更有用的分析。在编程模型的基础上可以更清晰地使用汇编模型的

5、基础上可以更清晰地使用汇编语言或高级语言编写程序。编程模型语言或高级语言编写程序。编程模型的基础是控制的基础是控制/ /数据流图(数据流图(CDFG)CDFG)。CDFGCDFG 简介简介 l6.2.1 设计范型设计范型l6.3.1 消息消息l6.3.3 绘图函数绘图函数l6.2.2 编程模型编程模型 l6.3.2 任务和任务间同步任务和任务间同步l6.3.4 控件控件l6.4.1 编译过程编译过程l6.4.3 能量优化能量优化l6.4.2 执行时间优化执行时间优化l6.4.4 长度优化长度优化 :OSTaskCreat(Rtc_Disp_Task, (void *)0, (OS_STK *)

6、&Rtc_Disp_StackSTACKSIZE-1, Rtc_disp_Task_prio); 例如:例如: Rtc_Updata_Sem=OSSemCreate(1); PDC pdc;pdc=CreateDC( );SetDrawOrg(pdc, 170, 50, &oldx, &oldy);SetDrawRange(pdc, 800, -1, &oldxrange, &oldyrange); 。 一个通用的系统控件包含了以下的数据结构:一个通用的系统控件包含了以下的数据结构: 控件的控件的ID(CtrlID)是系统唯一的,每是系统唯一的,每个控件

7、的个控件的ID都不同都不同 l6.2.1 设计范型设计范型l6.3.1 消息消息l6.3.3 绘图函数绘图函数l6.2.2 编程模型编程模型 l6.3.2 任务和任务间同步任务和任务间同步l6.3.4 控件控件l6.4.1 编译过程编译过程l6.4.3 能量优化能量优化l6.4.2 执行时间优化执行时间优化l6.4.4 长度优化长度优化 程序: 编译结合了翻译和优化的过程编译结合了翻译和优化的过程 : 编译翻译优化编译翻译优化 程序: 首先,决定每一目标文件开端的绝对地首先,决定每一目标文件开端的绝对地址。址。 “目标文件被载入的顺序由用户给定,目标文件被载入的顺序由用户给定,或者通过装入程序

8、运行时指明参数或者通过或者通过装入程序运行时指明参数或者通过创建装入映像文件产生文件置入内存顺序。创建装入映像文件产生文件置入内存顺序。给出文件载入内存的顺序和每一目标文件的给出文件载入内存的顺序和每一目标文件的长度后,就很容易计算出每个文件的起始地长度后,就很容易计算出每个文件的起始地址。址。 ” ” 其次,决定每一目标文件开端的绝对地其次,决定每一目标文件开端的绝对地址址装入程序把所有目标文件符号表合并装入程序把所有目标文件符号表合并为单独的一个大表。接着编辑目标文件为单独的一个大表。接着编辑目标文件变相对地址为绝对地址变相对地址为绝对地址 。 “装入程序将附加位写入目标文件是标装入程序将

9、附加位写入目标文件是标识引用标记的指令和域的典型操作。如果一识引用标记的指令和域的典型操作。如果一个标记不能在合并的符号表中找到,那它就个标记不能在合并的符号表中找到,那它就是未定义的并将出错消息发送给用户是未定义的并将出错消息发送给用户。” ” 嵌入式系统实时性的特点,要嵌入式系统实时性的特点,要求了解程序的执行时间,并能做出求了解程序的执行时间,并能做出优化。分析程序执行时间也有助于优化。分析程序执行时间也有助于分析功耗的特性。分析功耗的特性。 程序执行时间可表示为:程序执行时间可表示为:执行时间程序路径指令耗时执行时间程序路径指令耗时 举举 例(例(1)程序: 程序:程序:解释:解释:

10、举举 例(例(2)程序: 通过前面通过前面FIR过滤器的例子来解释如何通过滤器的例子来解释如何通过固定迭代过固定迭代for循环来枚举路径。循环代码重循环来枚举路径。循环代码重新编码如下:新编码如下: 举举 例(例(2)程序: 通过检查代码的通过检查代码的CDFG,可以更容易地确定变量语,可以更容易地确定变量语句被执行的次数。句被执行的次数。指令耗时的计量方法指令耗时的计量方法计量方法的缺陷计量方法的缺陷 一旦我们知道程序的执行路径,就一旦我们知道程序的执行路径,就必须测量沿着该路径执行指令的执行时间。必须测量沿着该路径执行指令的执行时间。最简单的估计就是假定每一个指令消耗相最简单的估计就是假定

11、每一个指令消耗相同数目的时钟周期,这意味着只要通过对同数目的时钟周期,这意味着只要通过对指令计数,并与每条指令执行时间相乘,指令计数,并与每条指令执行时间相乘,即可获得程序的总执行时间。即可获得程序的总执行时间。 指令耗时的计量方法指令耗时的计量方法不是所有的指令均消耗相同的时间。不是所有的指令均消耗相同的时间。 指令的执行次数不是独立的。指令的执行次数不是独立的。 一条指令的执行时间可能依赖于操作数的值。一条指令的执行时间可能依赖于操作数的值。计量方法的缺陷计量方法的缺陷 要想提高程序的执行速度,可从以下要想提高程序的执行速度,可从以下几个方面进行考虑。几个方面进行考虑。 程序: “例如,在

12、处理一个大程序时,使用了大例如,在处理一个大程序时,使用了大量运行时间的那部分代码可能并不明显。当系量运行时间的那部分代码可能并不明显。当系统由多个程序构筑而成时,程序的运行通过进统由多个程序构筑而成时,程序的运行通过进程间通信来协同工作。一个慢一些的程序不一程间通信来协同工作。一个慢一些的程序不一定会降低系统的总体性能。通常可以先了解一定会降低系统的总体性能。通常可以先了解一下程序的轮廓来帮助发现一些热点问题。下程序的轮廓来帮助发现一些热点问题。” 程序: “例如,一个使用动态存储的复杂算法在例如,一个使用动态存储的复杂算法在实际运行时,可能比使用静态分配内存执行较实际运行时,可能比使用静态

13、分配内存执行较多操作的算法要慢。通常通过检查渐近性能来多操作的算法要慢。通常通过检查渐近性能来达到执行较少的操作是提高性能的关键达到执行较少的操作是提高性能的关键。” 程序: 尽可能有效地使用寄存器尽可能有效地使用寄存器。 在任何可能的情况下,使用分页模式访问内在任何可能的情况下,使用分页模式访问内存系统。存系统。 分析高速缓存的行为来发现主要的高速缓存分析高速缓存的行为来发现主要的高速缓存冲突冲突 。 对于电池供电的计算机系统而言,功对于电池供电的计算机系统而言,功耗是一个非常重要的设计指标。耗是一个非常重要的设计指标。 能量功耗能量功耗 的计算的计算能量功耗的能量功耗的 优化优化能量功耗的

14、计算方法(能量功耗的计算方法(1) 首先,我们需要了解程序究竟消耗了多少能量。测首先,我们需要了解程序究竟消耗了多少能量。测试一条指令或一小段代码的功耗是可能的。我们可以通试一条指令或一小段代码的功耗是可能的。我们可以通过测量流过过测量流过CPU的电流,计算出整个循环包括循环体和的电流,计算出整个循环包括循环体和其他代码的功耗其他代码的功耗; 然后,通过单独测量没有循环体的空循环的功耗;然后,通过单独测量没有循环体的空循环的功耗; 最后,计算全部循环的功耗和空循环的功耗之差可以最后,计算全部循环的功耗和空循环的功耗之差可以确定循环体代码的功耗。确定循环体代码的功耗。能量功耗的计算方法(能量功耗

15、的计算方法(2)程序的能量消耗取决于以下几方面的因素:程序的能量消耗取决于以下几方面的因素:程序能量消耗随指令的不同而不同。程序能量消耗随指令的不同而不同。指令次序对能量消耗有影响。指令次序对能量消耗有影响。操作码以及操作数的位置也有影响。操作码以及操作数的位置也有影响。能量功耗的计算方法(能量功耗的计算方法(3)使用工作效率高而且省电的算法来取代现使用工作效率高而且省电的算法来取代现 有有 的算法。的算法。优化内存访问可以显著地降低功耗优化内存访问可以显著地降低功耗 。在不需要时关闭系统的一部分,如在不需要时关闭系统的一部分,如CPU的子的子 系统、外围芯片等等,以此来节省功耗。系统、外围芯

16、片等等,以此来节省功耗。 节约功耗的方法:节约功耗的方法:能量功耗的优化能量功耗的优化1.存储器效果存储器效果2.量优化量优化1 存储器效果(存储器效果(1) 在许多应用程序中,致力于内存系统会带在许多应用程序中,致力于内存系统会带来最大的节能效益。如图所示,内存传输是迄来最大的节能效益。如图所示,内存传输是迄今为止今为止CPU完成的操作中能量代价最高昂的操完成的操作中能量代价最高昂的操作。一次内存传输操作耗费的能量是一次加法作。一次内存传输操作耗费的能量是一次加法运算的运算的33倍多。因此,优化能量消耗的最大收倍多。因此,优化能量消耗的最大收益来源于合理组织内存中的数据和指令。访问益来源于合

17、理组织内存中的数据和指令。访问寄存器是节能效益最高的;缓存访问比大多数寄存器是节能效益最高的;缓存访问比大多数的主存访问效率要高。的主存访问效率要高。1 存储器效果(存储器效果(2)2 能量优化能量优化 尽量有效地使用寄存器。成组访问一个变量尽量有效地使用寄存器。成组访问一个变量 值以值以 便使这个值被写入寄存器并保存起来便使这个值被写入寄存器并保存起来 。 分析高速缓存行为来发现主要的高速缓存冲突。分析高速缓存行为来发现主要的高速缓存冲突。 重构该代码,尽可能消除这些冲突。重构该代码,尽可能消除这些冲突。 在任何可能的情况下,使用分页模式访问内存系在任何可能的情况下,使用分页模式访问内存系 统。统。 一个程序的长度由程序的数据和指令的大小一个程序的长度由程序的数据和指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论