二、嵌入式系统的基本知识

上传人:wt****50 文档编号:50477705 上传时间:2018-08-08 格式:PPT 页数:99 大小:2.47MB
返回 下载 相关 举报
二、嵌入式系统的基本知识_第1页
第1页 / 共99页
二、嵌入式系统的基本知识_第2页
第2页 / 共99页
二、嵌入式系统的基本知识_第3页
第3页 / 共99页
二、嵌入式系统的基本知识_第4页
第4页 / 共99页
二、嵌入式系统的基本知识_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《二、嵌入式系统的基本知识》由会员分享,可在线阅读,更多相关《二、嵌入式系统的基本知识(99页珍藏版)》请在金锄头文库上搜索。

1、1嵌入式系统设计与实例开发 基于ARM微处理器与实时操作系统第二讲 基本概念及设计方法主讲教师:罗子波主讲教师:罗子波 副教授副教授2本节提要1 13 32 2嵌入式系统硬件知识嵌入式系统软件知识嵌入式系统的选择原则和设计 工具3l嵌入式微处理器简介l嵌入式微处理器体系结构l嵌入式微处理器的分类2.1 嵌入式系统硬件知识4嵌入式微处理器简介l嵌入式硬件系统组成:嵌入式微处理器: 控制单元ALU寄存器存储器输入/输出单元5嵌入式处理器的基本结构(1)l微处理器是整个系统的核心,通常由3大部分组成:控 制单元、算术逻辑单元和寄存器。 算术逻辑单元寄存器控制单元微处理器存储器输入输出6嵌入式处理器的

2、基本结构(2)l控制单元:主要负责取指、译码和取操作数等基本动作,并发送 主要的控制指令。控制单元中包括两个重要的寄存器:程序计数 器(PC)和指令寄存器(IR)。程序计数器用于记录下一条程序 指令在内存中的位置,以便控制单元能到正确的内存位置取指; 指令寄存器负责存放被控制单元所取的指令,通过译码,产生必 要的控制信号送到算术逻辑单元进行相关的数据处理工作。l算术逻辑单元:算术逻辑单元分为两部分,一部分是算术运算单 元,主要处理数值型的数据,进行数学运算,如加、减、乘、除 或数值的比较;另一部分是逻辑运算单元,主要处理逻辑运算工 作,如AND、OR、XOR或NOT等运算。l寄存器:用于存储暂

3、时性的数据。主要是从存储器中所得到的数 据(这些数据被送到算术逻辑单元中进行处理)和算术逻辑单元 中处理好的数据(再进行算术逻辑运行或存入到存储器中。 7l冯诺依曼体系结构和哈佛体系结构lCISC与RISCl信息存储的字节顺序lIP 核l流水线l存储器系统2.1.2 嵌入式微处理器体系结构8冯诺依曼体系结构模型指令寄存器控制器数据通道 输入输出中央处理器存储器程序指令0 指令1 指令2 指令3 指令4数据数据0 数据1 数据29哈佛体系结构指令寄存器控制器数据通道 输入输出中央处理器程序存储器指令0 指令1 指令2数据存储器数据0 数据1 数据2地址指令地址数据10CISC和RISCCISC:

4、复杂指令集(Complex Instruction Set Computer)具有大量的指令和寻址方式8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。RISC:精简指令集(Reduced Instruction Set Computer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单11CISC与RISC的数据通道IFIDREGALUMEM开始退出IFIDALUMEMREG微操作通道开始退出单通数据通道12CISC的背景和特点 l背景:存储资源紧缺, 强调编译优化l增强指令功能,设置一些功能复杂的指令,把一些原来由 软件

5、实现的、常用的功能改用硬件的(微程序)指令系统 来实现l为节省存储空间,强调高代码密度,指令格式不固定,指 令可长可短,操作数可多可少l寻址方式复杂多样,操作数可来自寄存器,也可来自存储 器l采用微程序控制,执行每条指令均需完成一个微指令序列 (微程序)lCPI ,指令越复杂,CPI越大。13CISC的主要缺点l指令使用频度不均衡。l高频度使用的指令占据了绝大部分的执行时间,扩充 的复杂指令往往是低频度指令。l大量复杂指令的控制逻辑不规整,不适于VLSI工艺lVLSI的出现,使单芯片处理机希望采用规整的硬联逻 辑实现,而不希望用微程序,因为微程序的使用反而制 约了速度提高。(微码的存控速度比C

6、PU慢5-10倍)。l软硬功能分配l复杂指令增加硬件的复杂度,使指令执行周期大大加 长,直接访存次数增多,降低了CPU性能。l不利于先进指令级并行技术的采用l流水线技术14RISC基本设计思想l减小CPI: CPUtime=Instr_Count * CPI * Clock_cyclel精简指令集:保留最基本的,去掉复杂、使用频度不高 的指令l采用Load/Store结构,有助于减少指令格式,统一存 储器访问方式l采用硬接线控制代替微程序控制15典型的高性能RISC处理器lSUN公司的SPARC(1987)lMIPS公司的SGI:MIPS(1986)lHP公司的PA-RISC,lIBM, Mo

7、torola公司的PowerPClDEC、Compac公司的Alpha AXPlIBM的RS6000(1990)第一台Superscalar RISC机16CISC与RISC的对比类别CISCRISC指令系统指令数量很多较少,通常少于100执行时间有些指令执行时间很长,如 整块的存储器内容拷贝;或 将多个寄存器的内容拷贝到 存贮器没有较长执行时间的指令编码长度编码长度可变,1-15字节编码长度固定,通常为4个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行 算术和逻辑操作只能对寄存器对行算术和逻辑 操作,Load/Store体系结构编译难以用优化编译器生成高效 的目标代码程序 采用

8、优化编译技术,生成高效 的目标代码程序 17for (i = 0; i 80.0 ) myShoes +;myMoney = myMoney 80.0; #define COST_OF_SHOES 80.0 if(myMoney COST_OF_SHOES) myShoes +;myMoney = myMoney COST_OF_SHOES; 不用 此法一次 定义多次 使用53(2)const常量 常量数据:整数(12)、字符(a)、字符串(“hello”)和实数(3.14)等; 以变量的形式来定义的一个量,并且通过使用关键字const,来表明这个变量的值不能被改变。如:const int x

9、 = 1。54(3)算术运算整数的算术运算最快 带有硬件支持的浮点运算较慢 用软件来实现的浮点运算非常慢,快 sin, log, sqrt, etc慢55结论: 尽量使用整数(char、short、int和long)的加 法和减法; 如果没有硬件支持,尽量避免使用乘法; 尽量避免使用除法; 如果没有硬件支持,尽量避免使用浮点数; 数学库函数使用得越少越好。56(4)位运算C语言有很多位操作运算符:x = num;while(x)count +;x = x printf(“result: %d“, count);result: 459分支语句if (a = 1)ant(); else if (a

10、 = 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: due(); break;case 5: eat(); break;case 6: foo(); break; Any Differences?60if-then-else语句的汇编代码$L1:cmp dword ptrebp-4, 1

11、#把a与常量1进行比较jne $L2 #如果不相同,跳到$L2继续比较下一个值call _ant #如果相同,调用ant()函数jmp $END #跳转到这段代码的末尾 $L2:cmp dword ptrebp-4, 2 #把a与常量2进行比较jne $L3 #如果不相同,跳到$L3继续比较下一个值call _bar #如果相同,调用bar()函数jmp $END #跳转到这段代码的末尾 $L3:. $END:61switch语句的汇编代码-1JmpTable dword $L1,$L2,$L3,$L4,$L5,$L6 mov eax,dword ptr ebp-4 #取出变量a的值mov d

12、word ptr ebp-8,eax #保存在临时变量中mov ecx,dword ptr ebp-8 #取出,放在ecx中sub ecx,1 #减1mov dword ptr ebp-8,ecx #保存回去cmp dword ptr ebp-8,5 #与5进行比较ja $END #若大于5,结束mov edx,dword ptr ebp-8 #取出该值,放edxjmp dword ptr edx*4+JmpTable#跳转到相应的#case标记62switch语句的汇编代码-2$L1:# case 1call _antjmp $END $L2:# case 2call _barjmp $EN

13、D$L5:# case 5call _eatjmp $END $L6:# case 6call _foo $END:63结论: 假设a的取值个数为n,对于if-then-else语句, 时间复杂度为O(n),而对于switch语句,时间复 杂度为O(1); 如果n的值较小,两种语句均可; 如果n的值较大,则switch语句更佳。64函数函数原型main ( ) 函数调调用 函数定义义函数的使用模式声明该函数定义一个函数使用该函数65操作系统代码栈帧2栈帧1全局变量内存分布状况全局变量区域静态分配栈自动分配堆动态分配66主函数的执行过程int z;void main( ) int x, y;x

14、= 1;y = 2;z = x + y; main( ) z = 0全局变量区域栈帧(main)x = y =程序12367控制流与数据流控制流:程序当前执行位置的流向;数据流:函数调用发生及结束时,数据在函数之间流转的过程。68当一个函数被调用时:1. 在内存的栈空间当中为其分配一个栈帧,用 来存放该函数的形参和局部变量;2. 把实参变量的值复制到相应的形参变量;3. 控制转移到该函数的起始位置;4. 该函数开始执行;5. 控制流和返回值返回到函数调用点。函数调用过程69控制流的变化void main( ) double x, y, z;y = 6.0;x = Area( y / 3.0 )

15、;.z = 3.4 * Area(7.88);./* 给给定半径,计计算一 个圆圆的面积积 */ double Area(double r) return(3.14 * r * r); 70一个简单的例子 int Times2(int value); main ( ) int number; printf(“请输入一个整数:”);scanf(“%d”, printf(“该数的两倍是:%d”, Times2(number); int Times2(int value) return(2 * value); mainnumber 371int Times2(int value); main ( ) int number; printf(“请输入一个整数:”);scanf(“%d”, printf(“该数的两倍是:%d”, Times2(number); int Times2(int value) return(2 * value); mainnumber 3Times2valueTimes2也得到一个栈帧, 它的参数看成局部变变量72int Times2(int value); main ( ) int number; printf(“请输入一个整

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号