嵌入式系统的课件.ppt

上传人(卖家):三亚风情 文档编号:2823024 上传时间:2022-05-29 格式:PPT 页数:99 大小:2.47MB
下载 相关 举报
嵌入式系统的课件.ppt_第1页
第1页 / 共99页
嵌入式系统的课件.ppt_第2页
第2页 / 共99页
嵌入式系统的课件.ppt_第3页
第3页 / 共99页
嵌入式系统的课件.ppt_第4页
第4页 / 共99页
嵌入式系统的课件.ppt_第5页
第5页 / 共99页
点击查看更多>>
资源描述

1、1嵌入式系统设计与实例开发嵌入式系统设计与实例开发基于基于ARMARM微处理器与实时操作系统微处理器与实时操作系统第二讲第二讲 基本概念及设计方法基本概念及设计方法2本节提要本节提要嵌入式系统硬件知识嵌入式系统硬件知识嵌入式系统软件知识嵌入式系统软件知识嵌入式系统的选择原则和设计嵌入式系统的选择原则和设计工具工具3l嵌入式微处理器简介嵌入式微处理器简介l嵌入式微处理器体系结构嵌入式微处理器体系结构l嵌入式微处理器的分类嵌入式微处理器的分类2.1 嵌入式系统硬件知识嵌入式系统硬件知识4嵌入式微处理器简介嵌入式微处理器简介l嵌入式硬件系统组成:嵌入式硬件系统组成: 嵌入式微处理器:嵌入式微处理器:

2、 控制单元控制单元 ALU 寄存器寄存器 存储器存储器 输入输入/输出单元输出单元5嵌入式处理器的基本结构(嵌入式处理器的基本结构(1)l微处理器是整个系统的核心,通常由微处理器是整个系统的核心,通常由3大部分组成:控大部分组成:控制单元、算术逻辑单元和寄存器。制单元、算术逻辑单元和寄存器。 算术逻辑单元算术逻辑单元寄存器寄存器控制单元控制单元微处理器微处理器存储器存储器输入输入输出输出6嵌入式处理器的基本结构(嵌入式处理器的基本结构(2)l控制单元:主要负责取指、译码和取操作数等基本动作,并发送控制单元:主要负责取指、译码和取操作数等基本动作,并发送主要的控制指令。控制单元中包括两个重要的寄

3、存器:程序计数主要的控制指令。控制单元中包括两个重要的寄存器:程序计数器(器(PC)和指令寄存器()和指令寄存器(IR)。程序计数器用于记录下一条程序)。程序计数器用于记录下一条程序指令在内存中的位置,以便控制单元能到正确的内存位置取指;指令在内存中的位置,以便控制单元能到正确的内存位置取指;指令寄存器负责存放被控制单元所取的指令,通过译码,产生必指令寄存器负责存放被控制单元所取的指令,通过译码,产生必要的控制信号送到算术逻辑单元进行相关的数据处理工作。要的控制信号送到算术逻辑单元进行相关的数据处理工作。l算术逻辑单元:算术逻辑单元分为两部分,一部分是算术运算单算术逻辑单元:算术逻辑单元分为两

4、部分,一部分是算术运算单元,主要处理数值型的数据,进行数学运算,如加、减、乘、除元,主要处理数值型的数据,进行数学运算,如加、减、乘、除或数值的比较;另一部分是逻辑运算单元,主要处理逻辑运算工或数值的比较;另一部分是逻辑运算单元,主要处理逻辑运算工作,如作,如AND、OR、XOR或或NOT等运算。等运算。l寄存器:用于存储暂时性的数据。主要是从存储器中所得到的数寄存器:用于存储暂时性的数据。主要是从存储器中所得到的数据(这些数据被送到算术逻辑单元中进行处理)和算术逻辑单元据(这些数据被送到算术逻辑单元中进行处理)和算术逻辑单元中处理好的数据(再进行算术逻辑运行或存入到存储器中。中处理好的数据(

5、再进行算术逻辑运行或存入到存储器中。 7l冯冯诺依曼体系结构和哈佛体系结构诺依曼体系结构和哈佛体系结构lCISCCISC与与RISCRISCl信息存储的字节顺序信息存储的字节顺序lIP IP 核核l流水线流水线l存储器系统存储器系统2.1.2 嵌入式微处理器体系结构嵌入式微处理器体系结构8冯冯诺依曼体系结构模型诺依曼体系结构模型指令寄存器指令寄存器控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器存储器存储器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4数据数据数据数据0 0数据数据1 1数据数据2 29哈佛体系结构哈佛体系结构指令寄存器指令寄存器

6、控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器程序存储器程序存储器指令指令0指令指令1指令指令2数据存储器数据存储器数据数据0数据数据1数据数据2地址地址指令指令地址地址数据数据10CISC和和RISCCISCCISC:复杂指令集(:复杂指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和寻址方式具有大量的指令和寻址方式8/28/2原则:原则:80%80%的程序只使用的程序只使用20%20%的指令的指令大多数程序只使用少量的指令就能够运行。大多数程序只使用少量的指令就能够运行

7、。RISCRISC:精简指令集(:精简指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)在通道中只包含最有用的指令在通道中只包含最有用的指令确保数据通道快速执行每一条指令确保数据通道快速执行每一条指令使使CPUCPU硬件结构设计变得更为简单硬件结构设计变得更为简单 11CISC与与RISC的数据通道的数据通道IFIDREGALUMEM开始退出IFIDALUMEMREG微操作通道开始退出单通数据通道12CISC的背景和特点的背景和特点 l背景背景: :存储资源紧缺存储资源紧缺, , 强调编译优化强调编译优化

8、l增强指令功能,设置一些功能复杂的指令,把一些原来由增强指令功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的(微程序)指令系统软件实现的、常用的功能改用硬件的(微程序)指令系统来实现来实现l为节省存储空间,强调高代码密度,指令格式不固定,指为节省存储空间,强调高代码密度,指令格式不固定,指令可长可短,操作数可多可少令可长可短,操作数可多可少l寻址方式复杂多样,操作数可来自寄存器,也可来自存储寻址方式复杂多样,操作数可来自寄存器,也可来自存储器器l采用微程序控制,执行每条指令均需完成一个微指令序列采用微程序控制,执行每条指令均需完成一个微指令序列(微程序)(微程序)lC

9、PI CPI ,指令越复杂,指令越复杂,CPICPI越大。越大。13CISC的主要缺点的主要缺点l指令使用频度不均衡。指令使用频度不均衡。l高频度使用的指令占据了绝大部分的执行时间,扩充的高频度使用的指令占据了绝大部分的执行时间,扩充的复杂指令往往是低频度指令。复杂指令往往是低频度指令。l大量复杂指令的控制逻辑不规整,不适于大量复杂指令的控制逻辑不规整,不适于VLSIVLSI工艺工艺lVLSIVLSI的出现,使单芯片处理机希望采用规整的硬联逻辑的出现,使单芯片处理机希望采用规整的硬联逻辑实现,而不希望用微程序,因为微程序的使用反而制约实现,而不希望用微程序,因为微程序的使用反而制约了速度提高。

10、了速度提高。( (微码的存控速度比微码的存控速度比CPUCPU慢慢5-105-10倍倍) )。l软硬功能分配软硬功能分配l复杂指令增加硬件的复杂度,使指令执行周期大大加长复杂指令增加硬件的复杂度,使指令执行周期大大加长,直接访存次数增多,降低了,直接访存次数增多,降低了CPUCPU性能。性能。l不利于先进指令级并行技术的采用不利于先进指令级并行技术的采用l流水线技术流水线技术14RISC基本设计思想基本设计思想l减小减小CPI: CPUtime=Instr_CountCPI: CPUtime=Instr_Count * * CPI CPI * * Clock_cycleClock_cyclel

11、精简指令集:保留最基本的精简指令集:保留最基本的, ,去掉复杂、使用频度不高去掉复杂、使用频度不高的指令的指令l采用采用Load/StoreLoad/Store结构,有助于减少指令格式,统一存结构,有助于减少指令格式,统一存储器访问方式储器访问方式l采用硬接线控制代替微程序控制采用硬接线控制代替微程序控制15典型的高性能典型的高性能RISC处理器处理器lSUNSUN公司的公司的SPARC(1987)SPARC(1987)lMIPSMIPS公司的公司的SGI:MIPS(1986)SGI:MIPS(1986)lHPHP公司的公司的PA-RISC,PA-RISC,lIBM, MotorolaIBM,

12、 Motorola公司的公司的PowerPCPowerPClDECDEC、CompacCompac公司的公司的Alpha AXPAlpha AXPlIBMIBM的的RS6000(1990)RS6000(1990)第一台第一台Superscalar RISCSuperscalar RISC机机 16CISC与与RISC的对比的对比类别类别CISCCISCRISCRISC指令系统指令系统指令数量很多指令数量很多较少,通常少于较少,通常少于100100执行时间执行时间有些指令执行时间很长,如有些指令执行时间很长,如整块的存储器内容拷贝;或整块的存储器内容拷贝;或将多个寄存器的内容拷贝到将多个寄存器的

13、内容拷贝到存贮器存贮器没有较长执行时间的指令没有较长执行时间的指令编码长度编码长度编码长度可变,编码长度可变,1-151-15字节字节编码长度固定,通常为编码长度固定,通常为4 4个字节个字节寻址方式寻址方式寻址方式多样寻址方式多样简单寻址简单寻址操作操作可以对存储器和寄存器进行可以对存储器和寄存器进行算术和逻辑操作算术和逻辑操作只能对寄存器对行算术和逻辑只能对寄存器对行算术和逻辑操作,操作,Load/StoreLoad/Store体系结构体系结构编译编译难以用优化编译器生成高效难以用优化编译器生成高效的目标代码程序的目标代码程序 采用优化编译技术,生成高效采用优化编译技术,生成高效的目标代码

14、程序的目标代码程序 17for (i = 0; i 10000; +i)/* 各种算术运算操作各种算术运算操作 */实验平台:桌面实验平台:桌面Intel Pentium4,带硬件浮点支持,带硬件浮点支持OperatorTimeOperatorTime+ (int)1+ (double) 5* (int)5* (double) 5/ (int)12/ (double) 10 80.0 ) myShoes +; myMoney = myMoney 80.0;#define COST_OF_SHOES 80.0if(myMoney COST_OF_SHOES) myShoes +; myMoney

15、 = myMoney COST_OF_SHOES;不用不用此法此法一次一次定义定义多次多次使用使用53(2)const常量常量 常量数据:整数(常量数据:整数(12)、字符()、字符(a)、)、 字符串(字符串(“hello”)和实数()和实数(3.14)等;)等; 以变量的形式来定义的一个量,并且通以变量的形式来定义的一个量,并且通 过使用关键字过使用关键字const,来表明这个变量的,来表明这个变量的 值不能被改变。如:值不能被改变。如:const int x = 1。54(3)算术运算)算术运算整数的算术运算整数的算术运算最快最快带有硬件支持的浮点运算带有硬件支持的浮点运算较慢较慢用软件

16、来实现的浮点运算用软件来实现的浮点运算非常慢非常慢,快快 sin, log, sqrt, etc慢慢55结论:结论: 尽量使用整数(尽量使用整数(char、short、int和和long)的加)的加法和减法;法和减法; 如果没有硬件支持,尽量避免使用乘法;如果没有硬件支持,尽量避免使用乘法; 尽量避免使用除法;尽量避免使用除法; 如果没有硬件支持,尽量避免使用浮点数;如果没有硬件支持,尽量避免使用浮点数; 数学库函数使用得越少越好。数学库函数使用得越少越好。56(4)位运算)位运算C语言有很多位操作运算符:语言有很多位操作运算符:&与操作;与操作;|或操作;或操作;异或操作;异或操作;取反操作

17、;取反操作;右移操作;右移操作;左移操作。左移操作。57a |= 0 x4b &= 0 x4c &= (1 3)d = (1 = 2/ 把第把第2位设置为位设置为1/ 把第把第2位设置为位设置为0/ 把第把第3位设置为位设置为0/ 把第把第5位反转位反转/ 把把 e 除以除以458int x, num = 99, count = 0;x = num;while(x) count +; x = x & (x 1);printf(result: %d, count);result: 459分支语句分支语句if (a = 1) ant();else if (a = 2) bar();else if

18、(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 #把把a与常量

19、与常量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语

20、句的汇编代码语句的汇编代码-1 JmpTable dword $L1,$L2,$L3,$L4,$L5,$L6 mov eax,dword ptr ebp-4 #取出变量取出变量a的值的值 mov dword ptr ebp-8,eax #保存在临时变量中保存在临时变量中 mov ecx,dword ptr ebp-8 #取出,放在取出,放在ecx中中 sub ecx,1 #减减1 mov dword ptr ebp-8,ecx #保存回去保存回去 cmp dword ptr ebp-8,5 #与与5进行比较进行比较 ja $END #若大于若大于5,结束,结束 mov edx,dword pt

21、r ebp-8 #取出该值,放取出该值,放edx jmp dword ptr edx*4+JmpTable#跳转到相应的跳转到相应的 #case标记标记62switch语句的汇编代码语句的汇编代码-2$L1:# case 1 call _ant jmp $END$L2:# case 2 call _bar jmp $END.$L5:# case 5 call _eat jmp $END$L6:# case 6 call _foo$END:63结论:结论: 假设假设a的取值个数为的取值个数为n,对于,对于if-then-else语句,语句,时间复杂度为时间复杂度为O(n),而对于,而对于swit

22、ch语句,时间复语句,时间复杂度为杂度为O(1); 如果如果n的值较小,两种语句均可;的值较小,两种语句均可; 如果如果n的值较大,则的值较大,则switch语句更佳。语句更佳。64函数函数函数原型函数原型main ( ) 函数调用函数调用 函数定义函数定义函数的使用模式函数的使用模式声明该函数声明该函数定义一个函数定义一个函数使用该函数使用该函数65操作系统操作系统代码代码栈帧栈帧2栈帧栈帧1全局变量全局变量内存分布状况内存分布状况全局变量区全局变量区域域静态分配静态分配栈栈自动分配自动分配堆堆动态分配动态分配66主函数的执行过程主函数的执行过程int z;void main( ) int

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

24、变量的值复制到相应的形参变量;3. 控制转移到该函数的起始位置;控制转移到该函数的起始位置;4. 该函数开始执行;该函数开始执行;5. 控制流和返回值返回到函数调用点。控制流和返回值返回到函数调用点。函数调用过程函数调用过程69控制流的变化控制流的变化void main( ) double x, y, z; y = 6.0; x = Area( y / 3.0 ); . z = 3.4 * Area(7.88); ./* 给定半径,计算一给定半径,计算一个圆的面积个圆的面积 */double Area(double r) return(3.14 * r * r);70一个简单的例子一个简单的例

25、子int Times2(int value);int Times2(int value);main ( )main ( ) int number; int number; printf printf(“(“请输入一个整数:请输入一个整数:”);); scanf(“%d”, &number); scanf(“%d”, &number); printf printf(“(“该数的两倍是:该数的两倍是:%d”, %d”, Times2(number)Times2(number);); intint Times2(int value) Times2(int value) return(2 return

26、(2 * * value); value); mainnumber371int Times2(int value);int Times2(int value);main ( )main ( ) int number; int number; printf printf(“(“请输入一个整数:请输入一个整数:”);); scanf(“%d”, &number); scanf(“%d”, &number); printf printf(“(“该数的两倍是:该数的两倍是:%d”, Times2(number);%d”, Times2(number); intint Times2(int value)

27、 Times2(int value) return(2 return(2 * * value); value); mainnumber3Times2valueTimes2也得到一也得到一个栈帧个栈帧,它的参数看成局部变量它的参数看成局部变量72int Times2(int value);int Times2(int value);main ( )main ( ) int number; int number; printf printf(“(“请输入一个整数:请输入一个整数:”);); scanf(“%d”, &number); scanf(“%d”, &number); printf pri

28、ntf(“(“该数的两倍是:该数的两倍是:%d”, Times2(number);%d”, Times2(number); intint Times2(int value) Times2(int value) return(2 return(2 * * value); value); mainnumber3Times2value3“值传递值传递”, 把实参的值把实参的值传给形参。传给形参。73int Times2(int value);int Times2(int value);main ( )main ( ) int number; int number; printf printf(“(“

29、请输入一个整数:请输入一个整数:”);); scanf(“%d”, &number); scanf(“%d”, &number); printf printf(“(“该数的两倍是:该数的两倍是:%d”, Times2(number);%d”, Times2(number); intint Times2(int value) Times2(int value) return(2 return(2 * * value); value); main3把把Times2的的栈帧栈帧叠在主叠在主函数的函数的栈帧栈帧之上,说明之上,说明在执行在执行Times2函数时,函数时,主函数中的变量是不可主函数中的变

30、量是不可见的。见的。Times2value374int Times2(int value);int Times2(int value);main ( )main ( ) int number; int number; printf printf(“(“请输入一个整数:请输入一个整数:”);); scanf(“%d”, &number); scanf(“%d”, &number); printf printf(“(“该数的两倍是:该数的两倍是:%d”, Times2(number);%d”, Times2(number); intint Times2(int value) Times2(int

31、value) return(2 return(2 * * value); value); mainnumber36Times2函数的返回值被函数的返回值被放在函数的调用位置上,放在函数的调用位置上,然后,分配给然后,分配给Times2函函数的堆栈区域被释放。数的堆栈区域被释放。75变量的存储与作用域变量的存储与作用域/* 全局变量,固定地址,其他源文件可见全局变量,固定地址,其他源文件可见 */int global_static;/* 静态全局变量,固定地址,但只在本文件中可见静态全局变量,固定地址,但只在本文件中可见 */static int file_static;/* 函数参数:位于栈帧

32、当中,动态创建,动态释放函数参数:位于栈帧当中,动态创建,动态释放 */int foo(int auto_param) /*静态局部变量,固定地址,只在本函数中可见静态局部变量,固定地址,只在本函数中可见 */ static int func_static; /* 普通局部变量,位于栈帧当中,只在本函数可见普通局部变量,位于栈帧当中,只在本函数可见 */ int auto_i, auto_a10; /* 动态申请的内存空间,位于堆当中动态申请的内存空间,位于堆当中 */ double *auto_d = malloc(sizeof(double)*5); return auto_i;76可重入

33、函数可重入函数-1可以被一个以上的任务调用,而不必担心数据的破坏。可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数只使用局部以运行,而相应数据不会丢失。可重入型函数只使用局部变量,即变量保存在变量,即变量保存在CPUCPU寄存器或栈中。寄存器或栈中。一个不可重入型函数的例子一个不可重入型函数的例子int temp;void swap(int *x, int *y) temp = *x; *x = *y; *y = temp;77可重入函数可重入函数-2一个

34、可重入型函数的例子一个可重入型函数的例子void swap(int *x, int *y) int temp; temp = *x; *x = *y; *y = temp;78不可重入函数被中断破坏79本节提要本节提要嵌入式系统硬件基础嵌入式系统硬件基础嵌入式系统软件基础嵌入式系统软件基础嵌入式系统的选型选择嵌入式系统的选型选择原则和设计工具原则和设计工具802.3.1 嵌入式系统的选型原则嵌入式系统的选型原则1.硬件平台的选择硬件平台的选择 内核的选择内核的选择: 取决于应用的领域、用户的需求、取决于应用的领域、用户的需求、成本、开发的难易程度等成本、开发的难易程度等 外围设备的选择外围设备

35、的选择:812.3.1 嵌入式系统的选型原则嵌入式系统的选型原则2.操作系统的选型原则操作系统的选型原则 操作系统的硬件支持操作系统的硬件支持 开发工具的支持程度开发工具的支持程度 能否满足应用需求能否满足应用需求 自建操作系统自建操作系统 822.3.2 嵌入式系统的设计工具嵌入式系统的设计工具l嵌入式系统的设计方法嵌入式系统的设计方法83嵌入式系统的设计方法嵌入式系统的设计方法系统需求分析系统集成系统测试产品硬件设计软件设计执行装置设计体系结构设计842.3.3 嵌入式系统开发模式嵌入式系统开发模式l宿主机宿主机l目标机目标机l宿主机与目标机的连接宿主机与目标机的连接85嵌入式开发工具与开

36、发环境嵌入式开发工具与开发环境86开始新工程编辑源代码交叉编译连接仿真调试程序下载台式/笔记本式PC机并口JTAG仿真器网络接口JTAG接口USB接口串口0ARM300开发板串口USB接口以太网口ARMSDTDebugArmDvkARM7处理器执行监测结果超级终端ARM300开发板实验流程结束嵌入式软件开发流程嵌入式软件开发流程87桌面应用程序的编译和加载过程桌面应用程序的编译和加载过程88嵌入式应用程序的编译和加载过程嵌入式应用程序的编译和加载过程892.3.4 嵌入式软件开发工具嵌入式软件开发工具设计生产编译器链接器调试器IDE操作系统软件测试评估板仿真器逻辑分析仪边界扫描测试仪编程器90

37、开发环境开发环境l什么是嵌入式开发环境:什么是嵌入式开发环境:源程序编译器目标文件链接器可重定位程序定位器可执行文件u编译器/汇编器/链接定位器u调试器/仿真器u主机(Host)及其工作平台u实时操作系统(可选)u目标评估系统(可选)u测试工具(软件/硬件/协议等,可选)u其他辅助设备(可选)n 典型的开发环境91ARM的编译器(1)lADS1.2lARM公司出品公司出品lIDE环境,包括环境,包括lARM/Thumb汇编器:汇编器:armasmlANSI C 编译器编译器 - armcc 和和 tcclISO / Embedded C+ 编译器编译器 - armcpp and tcppl链接

38、器链接器 armlinklWindows 集成开发环境集成开发环境 CodeWarriorl格式转换器格式转换器 fromelfl库管理器库管理器 - armarl调试器调试器l模拟调试器:模拟调试器:ARMulatorlJTAG调试:调试:AXD(与(与Multi-ICE配合)配合)l支持所有支持所有ARM内核,最新版本:内核,最新版本:RealView2.092ARM的编译器(2)lEW-ARMl瑞典瑞典IAR公司出品公司出品l著名的嵌入式工具提供商,以提供编译器著名的嵌入式工具提供商,以提供编译器/协议栈协议栈/统一建模工具著称统一建模工具著称l主要产品:主要产品:Embeded Wor

39、kbench(EW)、Make APP、Visual State等等lEW-ARM:针对:针对ARM的集成开发环境:的集成开发环境:lC/C+编译器编译器lC-SPY 模拟调试器模拟调试器lROM-Monitorl多种级别代码优化方法,满足用户在速度、文件大小方面的要求多种级别代码优化方法,满足用户在速度、文件大小方面的要求l内建内建ARM特性优化器特性优化器l支持多种断点模式支持多种断点模式l支持支持Nucleus, VxWorks等等RTOSlGreenhillslGNU93嵌入式系统的调试(1)嵌入式系统的调试的几种基本方法:嵌入式系统的调试的几种基本方法: l直接测试法直接测试法l调试

40、监控器法调试监控器法lROM 仿真器法仿真器法l在线仿真器法在线仿真器法l片上调试法片上调试法l模拟调试(模拟调试(Simulator)94调试监控器法调试监控器法 主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,待调试软件下载到目标板上运行。,待调试软件下载到目标板上运行。 这种方式的先决条件是要在这种方式的先决条件是要在Host和和Target之间建立起通信联系(目标板之间建立起通信联系(目标板上称为监控程序上称为监控程序Monitor)l优点:优点:纯软件,价格较低,简单,软件调试能力较强纯软件,价格较低,简单

41、,软件调试能力较强l缺点:缺点:需要事先烧制需要事先烧制Monitor(往往需多次试验才能成功)且目标板(往往需多次试验才能成功)且目标板工作正常,功能有限,特别是硬件调试能力较差。工作正常,功能有限,特别是硬件调试能力较差。PCTargetMonitor串口95片上调试法片上调试法lBDM/JTAGBDM/JTAG调试调试 这种方式有一个硬件调试体。该硬件调试体与目标板通过这种方式有一个硬件调试体。该硬件调试体与目标板通过BDM、JTAG等等调试接口相连,与主机通过串口、并口、网口或调试接口相连,与主机通过串口、并口、网口或USB口相连。待调试软口相连。待调试软件通过件通过BDM/JTAG调

42、试器下载到目标板上运行。调试器下载到目标板上运行。l优点:优点:方便、简单,无须制作方便、简单,无须制作Monitor,软硬件均可调试,软硬件均可调试l缺点:缺点:需要目标板,且目标板工作基本正常(至少需要目标板,且目标板工作基本正常(至少MCU工作正常)工作正常),仅适用于有调试接口的芯片,仅适用于有调试接口的芯片TargetPC接口BDM/JTAG Debugger96在线仿真器法在线仿真器法l全仿真调试全仿真调试(Emulator) 这种方式用仿真器完全取代目标板上的这种方式用仿真器完全取代目标板上的MCU,因而目标系统对开发者来,因而目标系统对开发者来说完全是透明的、可控的。仿真器与目

43、标板通过仿真头连接,与主机有说完全是透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、网口或串口、并口、网口或USB口等连接方式。由于仿真器自成体系,调试时口等连接方式。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板(既可以连接目标板,也可以不连接目标板(Stand alone)。)。l优点:优点:功能非常强大,软硬件均可做到完全实时在线调试功能非常强大,软硬件均可做到完全实时在线调试l缺点:缺点:价格昂贵。价格昂贵。97ARM的调试方式l模拟调试模拟调试lSDT2.52: ARMulatorlADS1.2:ARMulatorlTrace32:SimulatorlEW-ARM:C-spyl软件调试软件调试lADS1.2:Angel(串口)(串口)lSDT2.52 Angel(串口)(串口)lJTAG调试调试lARM:Multi-ICE,简易型仿真器简易型仿真器lTrace32-ICD for ARMlHitex:Tanto for ARMl全仿真调试全仿真调试lTrace32-FIRE/ICE98ARM调试工具lMulti-ICElARM公司出品公司出品l与与ADS配套使用配套使用l支持不同的支持不同的ARM内核内核l另有另有Multi-trace模块可选模块可选99

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(嵌入式系统的课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|