嵌入式系统设计与实例开发—基于32位微处理器与实时操作系课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式系统设计与实例开发—基于32位微处理器与实时操作系课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 设计 实例 开发 基于 32 微处理器 实时 操作 课件
- 资源描述:
-
1、1嵌入式系统设计与实例开发嵌入式系统设计与实例开发基于位微处理器与实时操作基于位微处理器与实时操作系统系统讲指令集与编程讲指令集与编程2指令长度l指令集可以是以下任一种指令集可以是以下任一种l 长长 (状态状态)l 长长 (状态状态)l 支持种数据类型支持种数据类型l字节字节 ()()l半字半字 ()()l字字 ()()l字必须被排成个字节边界对齐字必须被排成个字节边界对齐,半字必须被排列成个字节边界对半字必须被排列成个字节边界对齐齐 3 指令集的特点l向后兼容:新版本增加指令,并保持指令向后兼容;向后兼容:新版本增加指令,并保持指令向后兼容;l 结构结构*l 从存储器中读某个值从存储器中读某
2、个值,操作完后再将其放回存储器中操作完后再将其放回存储器中l只对存放在寄存器的数据进行处理;只对存放在寄存器的数据进行处理;l对于存储器中的数据,只能使用指令进行存取对于存储器中的数据,只能使用指令进行存取4指令格式l指令格式指令格式l 地址指令格式地址指令格式 l在状态中使用在状态中使用l例例指令语法指令语法目标寄存器(目标寄存器()源寄存器源寄存器()源寄存器源寄存器()5 指令分类l数据处理指令数据处理指令 使用和改变寄存器的值使用和改变寄存器的值l数据传送指令数据传送指令 把存储器的值拷贝到寄存器中把存储器的值拷贝到寄存器中 ()()把寄存器中的值拷贝到存储器中把寄存器中的值拷贝到存储
3、器中()()l控制流指令控制流指令 l分支分支l分支和链接分支和链接,保存返回的地址保存返回的地址,以恢复最先的次序以恢复最先的次序l软件中断指令软件中断指令l程序状态寄存器指令程序状态寄存器指令l协处理器指令协处理器指令6指令编码格式l说明说明l指令执行的条件编码指令执行的条件编码l指令操作符编码指令操作符编码l决定指令的操作是否影响的值决定指令的操作是否影响的值l操作目标寄存器编码操作目标寄存器编码l包含第一操作数的寄存器编码包含第一操作数的寄存器编码l表示第二操作数表示第二操作数 7指令集8数据处理指令 l数据处理指令的类别数据处理指令的类别l算术操作算术操作l按位逻辑操作按位逻辑操作l
4、寄存器移位操作寄存器移位操作l比较操作比较操作l操作数操作数:宽宽;有种指定操作数的方式有种指定操作数的方式l来自寄存器来自寄存器l第二操作数可以是常数第二操作数可以是常数(立即数立即数)l移位寄存器操作数移位寄存器操作数l结果结果:宽宽,放在寄存器中放在寄存器中l长乘法产生位结果长乘法产生位结果9数据处理指令 *cond0 0operand 2#opcodeSRnRd3128 27 26 25 2421 20 1916 1512 110目的寄存器第一操作寄存器设置操作码算术/逻辑功能8-bit 立即数125118 70#rotRm11765 430#shiftRm025118 765 430
5、RsSh010Shimmediate alignmentimmediate shift lengthshift typesecond operand register移位寄存器长度10数据处理指令 Opcode24:21MnemonicMeaningEffect0000ANDLogical bit-wise ANDRd:=Rn AND Op20001EORLogical bit-wise exclusive ORRd:=Rn EOR Op20010SUBSubtractRd:=Rn-Op20011RSBReverse subtractRd:=Op2-Rn0100ADDAddRd:=Rn+Op2
6、0101ADCAdd with carryRd:=Rn+Op2+C0110SBCSubtract with carryRd:=Rn-Op2+C-10111RSCReverse subtract with carryRd:=Op2-Rn+C-11000TSTTestScc on Rn AND Op21001TEQTest equivalenceScc on Rn EOR Op21010CMPCompareScc on Rn-Op21011CMNCompare negatedScc on Rn+Op21100ORRLogical bit-wise ORRd:=Rn OR Op21101MOVMov
7、eRd:=Op21110BICBit clearRd:=Rn AND NOT Op21111MVNMove negatedRd:=NOT Op211数据处理指令 ,算术操作算术操作按位逻辑操作按位逻辑操作,()寄存器移位寄存器移位,比较操作比较操作,12数据处理指令 l指令是把一个数送到目标寄存器中,可以是寄存器,也可以是指令是把一个数送到目标寄存器中,可以是寄存器,也可以是立即数。立即数。l指令语法:指令语法:l 指令指令 ,l例:例:,l ,l ,13桶形移位器桶形移位器Rd结果N预处理未预处理RmRn14桶形移位器的使用l ,l ,(逻辑左移两位:(逻辑左移两位:);l l使用条件比较指
8、令使用条件比较指令l();l 23条件执行l所有的指令都可以所有的指令都可以条条件件执执行行l指令的指令的执执行行与与否取否取决决于寄存器的于寄存器的,标标志位志位l所有的指令都可以解所有的指令都可以解压压成全部成全部条条件指令件指令l l ()l ()l ()l ()l ()l ()l ()l ()l ()l ()l ,()l ,()l ,()l ,()l l 31 27 0 Cond 24乘法指令集l在寄存器在寄存器产产生位生位值值cond0 0 0 0R m3128 2724 2321 20 1916 1512 118 74301 0 0 1R sR n/R dLoR d/R dH im
9、 ulS25乘法l例子例子 (乘法乘法,乘法累加器乘法累加器)l注意注意l最低最低 置于结果寄存器中置于结果寄存器中,其余被忽略其余被忽略 l不支持第二立即操作数不支持第二立即操作数l结果寄存器与源寄存器必须不同结果寄存器与源寄存器必须不同 l ,26数据传送指令 l单指令传送单指令传送 (,)(,)l单字单字(),(),半字半字()()以及字节以及字节()()传送传送l寻址寻址l寄存器偏移寄存器偏移l地址地址 基址基址 寄存器偏移寄存器偏移l立即数偏移立即数偏移l地址地址 基址基址 立即数常数立即数常数l后变址后变址:l前变址前变址:l回写回写l如果可能如果可能,更新基址寄存器更新基址寄存器
10、27单寄存器传送指令把一个字装入一个寄存器把一个字装入一个寄存器从一个寄存器保存一个字或者一个字节从一个寄存器保存一个字或者一个字节把一个字节装入一个寄存器把一个字节装入一个寄存器从一个寄存器保存一个字节从一个寄存器保存一个字节把一个半字节装入一个寄存器把一个半字节装入一个寄存器从一个寄存器保存一个半字从一个寄存器保存一个半字把一个有符号字节装入寄存器把一个有符号字节装入寄存器()把一个有符号半字装入寄存器把一个有符号半字装入寄存器()28寻址方式变址模式变址模式数据数据基址寄存器基址寄存器示例示例回写前变址回写前变址基址寄存器加上偏基址寄存器加上偏移移,!前变址前变址不变不变,后变址后变址基
11、址寄存器加上偏基址寄存器加上偏移移,29例子l ,l l l回写型前变址寻址:回写型前变址寻址:,!l ,l前变址寻址:前变址寻址:,l,l后变址寻址:后变址寻址:,l,30数据传送指令 :,;,;:,.:.:.:,;,;:,.:.:.31多寄存器数据传送指令 l多数据传送指令多数据传送指令 (,)(,)l()()或或 ()()当前可访问寄存器的任意子集当前可访问寄存器的任意子集l 使用使用l堆栈堆栈:l上下文切换上下文切换:保存或重新存储工作寄存器保存或重新存储工作寄存器l块拷贝块拷贝:在主存储器中移动大数据块在主存储器中移动大数据块l寻址寻址l l l回写到基址寄存器回写到基址寄存器 32
12、多寄存器数据传送指令的要点l多寄存器指令会增加中断的延迟,因为不会打断正在执行的指令多寄存器指令会增加中断的延迟,因为不会打断正在执行的指令去响应中断,而必须等到指令执行完成;去响应中断,而必须等到指令执行完成;l一般编译器将提供一个选项以控制指令可以传送的最大寄存器数一般编译器将提供一个选项以控制指令可以传送的最大寄存器数目,以限制最大中断延迟。目,以限制最大中断延迟。33多寄存器传送指令的寻址模式寻址模式寻址模式描述描述起始地址起始地址结束地址结束地址!执行后增加执行后增加*执行前增加执行前增加*执行后减少执行后减少*执行前减少执行前减少*注:!决定的值是否随着传送而改变34例子要求:保存
13、到内存地址,并且更新基址寄存器要求:保存到内存地址,并且更新基址寄存器:,执行操作:执行操作:!,(执行后增加执行后增加):35多寄存器传送寻址模式!,!,!,!,36例:将存储器中的连续数据装载到寄存器l ,l ,l ,l ,l执行指令:执行指令:!,l ,l ,l ,l 地址指针 存储地址 数据37例:完成一个存储器数据块拷贝l注:注:存放源数据的起始地址存放源数据的起始地址l 存放目标起始地址存放目标起始地址l 存放源结束地址存放源结束地址l l !,;装载字节并更新指针装载字节并更新指针l !,;存储字节并更新指针存储字节并更新指针l ,;是否到达结束地址是否到达结束地址l ;不相等跳
14、转不相等跳转目的目的源源高地址低地址拷贝存储地址r9r11r1038堆栈操作l使用多寄存器指令来完成堆栈操作;使用多寄存器指令来完成堆栈操作;l使用堆栈时,需要确定堆栈在存储空间中是向上生长(使用堆栈时,需要确定堆栈在存储空间中是向上生长(递增的递增的“”“”)还是向下生长(递减的)还是向下生长(递减的“”“”););l满堆栈(满堆栈(“”“”)是指堆栈指针指向堆栈的最后一个已使)是指堆栈指针指向堆栈的最后一个已使用的地址或满位置;相反,空堆栈(用的地址或满位置;相反,空堆栈(“”“”)是指指向堆)是指指向堆栈的第一个没有使用的地址或空位置;栈的第一个没有使用的地址或空位置;39堆栈操作寻址方
15、式寻址方式寻址方式说明说明递增满递增满递减满递减满递增空递增空递减空递减空40LDMFD sp!,r4-r7,pcSP100FF1234AOBE80341010123484209753r41r5 14544r60r712lr9048pc9020r4100100FFr5FF1234r61234A0BEr7A0BE8034pc8034堆栈r4100r5FFr61234r7A0BElr8034ABCD8765102E16FFFF1010123484209753存储器顶存储器顶SPSPSPOld SP100FF1234A0BE8034l堆栈操作通过块传送指令来完成堆栈操作通过块传送指令来完成:l()块
16、存储块存储 l()块装载块装载 !,41例:把寄存器内容放入堆栈,更新 地址 数据 地址 数据:,执行指令:执行指令:!,:,42单数据交换指令 l单数据交换单数据交换 ()()l在寄存器和外部存储器之间交换字节或字在寄存器和外部存储器之间交换字节或字l读存储器和写存储器是是放在一起的读存储器和写存储器是是放在一起的l原子指令原子指令l执行时不能中断执行时不能中断l当当 信号输出操作时信号输出操作时,外部存储器管理单元被锁定外部存储器管理单元被锁定,当当l多线程操作时使程序同步多线程操作时使程序同步(支持支持)l锁定锁定l信号量信号量43l在寄存器和存储器之间,由一次存储器读和一次存储器写组成
17、的原子操作。完成在寄存器和存储器之间,由一次存储器读和一次存储器写组成的原子操作。完成一个字节或字的交换。一个字节或字的交换。l语法:语法:l ,l可用作信号量可用作信号量l不能由编译产生,必须使用汇编器。不能由编译产生,必须使用汇编器。321存储器存储器44指令的用法l ,l ,l执行操作:执行操作:,l:l ,l ,l交换指令多用于实现操作系统中的信号量和互斥操作,该指令有交换指令多用于实现操作系统中的信号量和互斥操作,该指令有修饰符,即有字交换和字节交换两种形式;修饰符,即有字交换和字节交换两种形式;45指令应用示例 ,注:信号量指向的单元是或,如果为,则表示该服务被另一个过程注:信号量
18、指向的单元是或,如果为,则表示该服务被另一个过程使用,程序继续循环,直至为使用,程序继续循环,直至为46软件中断()l产生一个异常陷阱,跳转到产生一个异常陷阱,跳转到 硬件向量。硬件向量。l 处理程序可以检测号,从而决定采取何种操作。处理程序可以检测号,从而决定采取何种操作。l通过机制,运行在用户模式下的应用程序,可请求操作系统执行通过机制,运行在用户模式下的应用程序,可请求操作系统执行一系列特权操作。一系列特权操作。l语法:语法:l 47软件中断()执行的操作指令指令名称名称执行操作执行操作软件中断软件中断指令后面的指令地址指令后面的指令地址模式模式(屏蔽中断)屏蔽中断)48中断处理程序l处
19、理软件中断的代码段称为中断处理程序(处理软件中断的代码段称为中断处理程序(),中断处理程序是通中断处理程序是通过执行指令的地址获取软件中断号,指令地址是从计算出来的;过执行指令的地址获取软件中断号,指令地址是从计算出来的;l号的确定方法:号的确定方法:l ()()条件域条件域49处理程序应用示例l ;保存寄存器和保存寄存器和l l !,l l ,l l ,l ;l l l !,50控制和分支指令l控制指令控制指令l分支和分支连接分支和分支连接l跳到希望的指令中跳到希望的指令中l保存当前的并返回保存当前的并返回 ()()l分支和交换分支和交换l跳到期望的指令中与指令集交换跳到期望的指令中与指令集
20、交换l :.:.l :.:.cond1 0 1L24-bit signed word offset3128 2725 24 230condRm0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 03128276 5 4 301L51l:l :l处理器把偏移量左移两位,进行符号扩展后再与相加处理器把偏移量左移两位,进行符号扩展后再与相加 l跳转范围:跳转范围:?l如何执行长跳转?如何执行长跳转?偏移量偏移量 条件码区域条件码区域 分支指令52控制流指令Branch Interpretation Normal uses B BAL Unconditional Alw
21、ays Always take this branch Always take this branch BEQ Equal Comparison equal or zero result BNE Not equal Comparison not equal or non-zero result BPL Plus Result positive or zero BMI Minus Result minus or negative BCC BLO Carry clear Lower Arithmetic operation did not give carry-out Unsigned compa
22、rison gave lower BCS BHS Carry set Higher or same Arithmetic operation gave carry-out Unsigned comparison gave higher or same BVC Overflow clear Signed integer operation;no overflow occurred BVS Overflow set Signed integer operation;overflow occurred BGT Greater than Signed integer comparison gave g
展开阅读全文