546-微型机系统与接口技术自学部分.ppt
《546-微型机系统与接口技术自学部分.ppt》由会员分享,可在线阅读,更多相关《546-微型机系统与接口技术自学部分.ppt(91页珍藏版)》请在三一文库上搜索。
1、1,微型机系统与接口技术自学部分,本电子课件包含2011版第3, 6, 7, 8章自学部分,只作扩展知识用,东南大学计算机科学与工程学院,2,第3章 80x86汇编语言程序设计,3,3.6 宏定义、宏调用与宏展开(自学),宏定义是源程序中一段有独立功能的程序代码。将这一段程序定义为一条宏指令,并具有一个相应的宏指令名,在程序中就可以多次调用它,调用时只需要引用一个宏指令名来代替这一段程序就可以了。在汇编的时候,汇编程序会自动将这个宏指令扩展成整段程序。,4,宏定义 宏定义有两种格式: 1、简单宏定义 宏名 MACRO ;宏体 ;宏体 ENDM,简单宏定义示例 CRLF MACRO MOV AH
2、, 02H MOV DL, 0DH ;回车 INT 21H MOV DL, 0AH ;换行 MOV AH, 02H INT 21H ENDM,5,带形参的宏定义示例 MULTIPLY MACRO OPR1, OPR2, RESULT PUSH DX PUSH AX MOV AX, OPR1 IMUL OPR2 MOV RELUST, AX MOV RESULT+2, DX POP AX POP DX ENDM,2、带形参的宏定义 宏名 MACRO ;宏体 ;宏体 ENDM,6,宏调用 宏调用有两种格式: 1、对简单的宏定义的调用:宏名 2、带形参的宏定义的调用:宏名,宏调用示例 CRLF MU
3、LTIPLY CX, VAR, XYZBX MULTIPLY 240, BX, SAVE,7,宏扩展(宏展开) 宏扩展汇编程序对汇编源程序汇编时将宏体 插入到宏调用处,MULTIPLY宏扩展示例 + PUSH DX + PUSH AX + MOV AX, CX + IMUL VAR + MOV XYZBX,AX ;实参替换形参 + MOV XYZBX+2,DX + POP AX + POP DX 说明: 汇编程序在所展开的指令前加+号以示区别,8,宏指令与子程序的区别 子程序 宏指令 程序执行期间 在汇编期间展开 由主程序调用 它只占有自身 与调用次数有关,每调用一次 大小的空间 就把宏定义体
4、展开一次 执行时需增加时间 直接执行宏体 上的额外开销,9,10,宏定义的进一步讨论: 1、宏定义可以无变元 2、变元可以是操作码,宏定义: FOO MACRO P1, P2, P3 MOV AX, P1 P2 P3 ENDM 宏调用: FOO WORD_VAR, INC, AX 宏展开: + MOV AX, WORD_VAR + INC AX,11,3、变元可以是操作码的一部分,必须用&作为分隔符,宏定义: LEAP MACRO COND, LAB J&COND LAB ENDM 宏调用: LEAP C, THERE 宏展开: + JC THERE,12,4、变元是ASCII串,宏定义: M
5、SGGEN MACRO LAB, NUM, XYZ LAB&NUM DB HELLO MR.&XYZ ENDM 宏调用: MSGGEN MSG, 1, TAYLOR 宏展开: + MSG1 DB HELLO MR.TAYLOR,13,5、宏定义体内允许使用标号, 此时,须使用LOCAL伪操作,宏定义: ABSOL MACRO OPER LOCAL NEXT CMP OPER, 0 JGE NEXT NEG OPER NEXT: ENDM 宏调用: ABSOL VAR ABSOL BX,宏展开: + CMP VAR, 0 + JGE ?0000 + NEG VAR + ?0000: + CMP
6、BX, 0 + JGE ?0001 + NEG BX + ?0001:,14,6、宏定义中可以使用宏调用,(必须先定义后调用),宏定义: DIF MACRO X, Y MOV AX, X SUB AX, Y ENDM DIFSQR MACRO OPR1, OPR2, RESULT PUSH DX PUSH AX DIF OPR1, OPR2 IMUL AX MOV RESULT, AX POP AX POP DX ENDM,15,3.7在VC+中嵌入汇编语言指令(自学),本节类容适合在Visual C+5.0/60中使用,格式1:_asm 汇编语言指令 ,格式2:_asm 汇编语言指令,说明:
7、1)格式1中 内可以是1条也可以是多条汇编指令 2)格式2只能跟一条汇编语言指令 3)有些版本的VC需要使用_asm(两个下划线),16,嵌入汇编示例1 _asm mov eax, 01h mov dx, 0xD007 out dx, eax ,嵌入汇编示例2 _asm mov eax, 01h _asm mov dx, 0xD007 _asm out dx, eax,17,在_asm中使用汇编语言的注意事项: 嵌入式汇编支持80486的全部指令系统。VC+5/6还支持MMX指令集。 对于不支持的指令,VC提供_emit伪指令进行扩展 #define cpi_id _asm _emit 0x0
8、F _asm _emit 0XA2 _asm cpu_id /使用C+的宏 嵌入式汇编代码可以使用MASM的表达式来产生一个数值或地址 嵌入式汇编行可以采用C+或MASM的注释风格 嵌入式汇编可以使用C+的数据类型和数据对象,但是不能使用MASM的伪指令和操作符定义数据,如DB, DW, DUP等,18,嵌入式汇编不支持MASM的宏指令,也不支持大部分MASM伪指令 用汇编语言编写的函数中,不必保存EAX/EBX/ECX/EDX/ESI和EDI寄存器,但是必须保存函数中使用的其他寄存器 嵌入式汇编代码可以使用LENGTH(返回数组元素个数)、 TYPE(返回 C+类型或变量的大小)、 SIZE
9、(LENGTHTYPE)操作符。,对于数据 int iarray8(int类型是32位,4字节),则: LENGTH iarray 返回8 TYPE iarray 返回4 SIZE iarray 返回32,19,在_asm中使用C+语言的注意事项: 嵌入式汇编代码可以使用C+的符号(包括标号、变量、函数名)、常量(包括符号常量、枚举成员)、宏和预处理指令、注释、类型名及结构、联合的成员。 每一个汇编语句只能包含一个C+符号,且不能使用和MASM保留字相同的C+符号,也不识别struct和union关键字 _asm中引用函数前必须在程序说明其原型 嵌入式汇编语句中可以使用汇编语言格式表示整数常量
10、,也可以采用C+的格式(如0x37a),20,嵌入式汇编语言中不能使用C+专用操作符,如,可以使用两种语言都有的操作符 嵌入式汇编中可以引用包含该_asm作用范围内的任何符号(包括变量),它通过使用变量名引用C+的变量 嵌入式会变中的标号的作用范围为定义它的函数中有效,汇编转移指令和C+的goto指令都可以跳到_asm块内或块外的标号 _asm块中定义的标号对大小写不敏感,汇编语言指令跳转到C+中的标号也大小写不敏感,但C+的goto语句跳转的标号大小写敏感,21,int array6 struct first_type char *carray; int same_name; ftype;
11、struct second_type int same_name; stype _asm mov array6, dx mov ebx,OFFSET ftype mov ecx, ebx.carray mov esi, ebxftype.same_name ,使用C+数据举例,22,嵌入式汇编举例:,#include int power2(int, int); void main(void) cout“2的6次方乘5等于:t“; coutpower2(5,6)endl; int power2(int num, int power) _asm mov eax, num ; 取第一个参数 mov
12、ecx, power ; 取第二个参数 shl eax, cl ; 计算EAX=EAX(2CL) / 返回值存于EAX ,23,汇编语言通过参数名就可以引用参数,采用return返回出口参数,也可以不写return,编译时可能有警告。,返回值的约定: 32位的数据扩展到32位,存放在EAX中返回 48字节的返回值存放在EDX.EAX中返回 更大的字节数据将它的地址指针存放在EAX中返回,24,第6章 微机总线标准,25,USB On-The-Go(OTG)是对USB 2.0规范的有益的扩充。这类设备既可以作为USB设备与PC机相连,又可以作为USB主机连接其它USB设备。因此,这类设备可以抛弃
13、PC,直接进行设备与设备之间的点对点(pear to pear)通信。,USB On-The-Go 在USB 规范基础上增加了以下几点 双重功能。设备既可用作主机也可用作外设 主机交流协议HNP 用于转换USB 主机和外设功能 对话请求协议 除小和大功率之外增加了微功率选择 超小连接器,6.3.6 USB2.0的补充OTG技术(自学),26,USB On-The-Go 设备定义了一个新的称之为mini-AB 的袖珍插孔,它能接入mini-A 和mini-B 插头。连接器的不同定义设备的初始功能。,27,两个OTG RTR(主/从双角色)设备相连,可以用主机交流协议(HNP)随时切换主机角色。步
14、骤如下:,A设备发出SET_FEATURE命令后,B设备可请求总线控制权。 A设备挂起总线,通知B设备可占用总线。 B设备发送信号,断开A设备连接。 A设备启动D+线本方的上拉电阻,将D+置高。此时A设备成为外设,B设备成为主机。 B设备完成对总线控制后,启动D+线本方的上拉电阻,放弃对总线的控制。 在以上电平变换的同时,通过软件实现真正的对总线的控制权变化。,28,1.分清开发的设备类型,嵌入式USB主机 USB Hub 基于HID(人机接口设备)的USB设备 USB OTG设备,2.选择合适的控制芯片,内嵌USB模块和嵌入式CPU核的SOC芯片 内嵌单片机内核的USB控制芯片 可与其它嵌入
15、式CPU相连的单独USB控制芯片,6.3.7 开发具有USB功能的设备的先期准备(自学),29,3.一般的开发步骤,根据选择的器件和要实现的功能,设计相关电路。 编制软件(根据不同应用,设计其中部分或全部软件)。 - 设备驱动程序(对USB设备,或OTG设备) - USB主机设备的控制程序(对主机或OTG设备,如完成枚举功能等) - 主机和设备的角色切换驱动(对OTG设备) - 编写相关的PC端软件,4.目前常见的控制芯片,OTG芯片:ISP1362,OTG243 主机/设备芯片: SL811HS,ISP1161 设备芯片:PDIUSBD12,ISP1581 HUB芯片:GL652USB,30
16、,6.3.8 USB 3.0概览(自学),最高速为4.8Gbps 采用全双工传输 接口由4线改成8线 增加的4线路用于数据发送或接收 USB 3.0 的供电力提高到了每个端口900mA 与USB2.0和USB1.1向下兼容,31,6.4.1 PCI-Express总线的主要性能特点,6.4 PCI-Express总线 (自学),PCI Express为互连设备提供高速、高性能、点对点、双/单工、差动信令链路。数据从一组信号线上发送,而在另一组信号线上接收。采用设备间的点对点串行连接。 将两台设备连接在一起的一个PCI Express互连称为一条链路。一条1的链路有一条通道,即每个方向上有一对差
17、动信号,共4个信号。,32,1、串行的点对点互连 2、使用差动信号 3、使用交换器来互连多台设备 4、采用基于数据包的协议 5、具有更高的数据传输速率(2.5Gbit/s的单向单线连接传输速率 ) 6、拥有存储器地址空间、IO地址空间和配置地址空间 7、采用层次结构 8、热插拔支持 9、与PCI兼容的软件模型,33,6.4.2 PCI-Express总线结构,34,35,(1)根联合体 集成了多种控制器,替CPU产生事务请求,它还可以代表CPU发起配置事务请求、生成存储器和I/O请求和锁定事务请求。 根联合体发送数据包离开其端口,或从其端口接收数据并转发至存储器。 根联合体初始化用来形成请求者
18、或完成者的设备ID,通常由总线号、设备号和功能号组成。根联合体的总线、设备及功能号都被初始化全为0。,36,(2)交换器 交换器利用基于存储器、I/O或配置地址的路由方法转发数据包。 交换器根据下面3种路由机制之一转发这些数据包:地址路由、ID路由或隐式路由。 交换器能实现两种仲裁机制:端口仲裁和VC仲裁,并且依据仲裁机制确定将入端口数据包转发至出端口的优先级。交换器支持锁定请求。,37,(3)端点 端点可以作为请求者发起事务,或者作为完成者对事务做出响应。 端点有PCI Express端点和传统端点两种。传统端点支持I/O事务,而且可以作为完成者支持锁定事务语义,还可以利用消息请求产生传统中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 546 微型机 系统 接口 技术 自学 部分
链接地址:https://www.31doc.com/p-3021617.html