已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章1. 答:接口,是指计算机和其他设备之间的物理和逻辑系统的连接结构。它用于解决计算机和相关设备的硬件连接及信息联通的问题。2. 答:计算机传送控制信息、状态信息和数据信息。传送的方式有无条件传送方式、有条件传送方式、中断传送方式、DMA传送方。3. 答:计算机的硬接口有专门的集成式电路组成,可分为系统内部部件接口芯片、串并行数据传送接口芯片和外部设备接口芯片。它们用于CPU和各种部件或外部设备进行数据交换。7.答:串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。查阅资料:8254的引脚功能8254芯片由数据总线缓冲器、读/写控制逻辑、控制字寄存器和3个计数器通道组成。3个计数器通道和控制字寄存器通过内部总线相连,内部总线再经缓冲器与CPU数据总线相接。控制字寄存器是8位只写寄存器,用于存放由CPU写入芯片的方式选择控制字或命令字,由它来控制8254中各计数器通道的工作方式。3个计数器通道相互间是完全独立的,但结构和功能完全相同。每个通道的内部结构大体如图8.1所示,只是其中的控制字寄存器并非每个通道各有一个,而是3个通道共用一个。当写入控制字时,将同时清除计数初值寄存器的内容。计数工作单元(CE)和计数初值寄存器(CR)、输出锁存器(OL)均为16位,而内部总线的宽度为8位,因此CR的写入和OL的读出都必须分两次进行。若在初始化时只写入CR的一个字节,则另一个字节的内容保持为0。CE是CPU不能直接读/写的,需要修改其初值时,只能通过写入CR实现;需要读CE的当前内容时,必须先写入读回命令,将CE的内容锁存于OL,然后再读出OL内容。经锁存后的OL内容将一直保持至CPU读出时为止。在CPU读出OL之后,OL又跟随CE变化。状态寄存器保持有当前控制字寄存器的内容、输出状态以及CR内容是否已装入CE的指示状态,同样必须先锁存到状态锁存器,才允许CPU读取。(8253中没有状态寄存器和状态锁存器,这是8254和8253的主要区别之一)。OUT、CLK和GATE的作用已在前面说明过,它们是每个通道和外界联系的引脚信号。当某通道用作计数器时,应将要求计数的次数预置到该通道的CR中,被计数的事件应以脉冲方式从CLKi端输入,每输入一个计数脉冲,计数器内容减1,待减至0时,OUTi端将有信号输出,表示计数次数到。当某通道用作定时器时,由CLKi端输入一定周期的时钟脉冲,同时根据定时的时间长短确定所需的计数值,并预置到CR中,每输入一个时钟脉冲,计数器内容减1,待计数值减到0时,OUTi端将有输出,表示定时时间到。可见,任一通道无论作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲(间隔不一定相同)进行减1计数,而后者是由周期一定的时钟脉冲作减1计数。作计数器用时,要求计数的次数可直接作为计数初值预置到减1计数器;8259引脚图引脚功能8259是一种中断控制芯片,在单片机系统中一般用来扩展单片机的中断,pc机中也有这个芯片,8259引脚图8259A的主要功能如下:一片8259A可以接受并管理8级可屏蔽中断请求,通过9片8259A级联可扩展至64级可屏蔽中断优先控制。对每一级中断都可以通过程序来屏蔽或允许。在中断响应周期,8259A可为CPU提供相应的中断类型码。具有多种工作方式,并可通过编程来加以选择。初始化命令字的作用是什么?如何对8259A进行初始化编程?答案:通过初始化编程向8259A写入相应的初始化命令ICW,可以使芯片处于一个规定的基本工作方式,并在此方式下进行工作。8259A的初始化命令字共有4个ICW1-ICW4,进行初始化时要求ICW1-ICW4按一定的顺序写入。举例:VxD程序.386pinclude vmm.incDECLARE_VIRTUAL_DEVICE ;这是一个DDB结构(参数共22个),这个宏用于简化 FIRSTVXD, ;最好用你的VXD的文件名 1, ;主版本号 0, ;副版本号 FIRSTVXD_Control, ;入口模块地址 UNDEFINED_DEVICE_ID,;设备ID UNDEFINED_INIT_ORDER ;初使化顺序Begin_control_dispatch FIRSTVXD ;看看和FIRSTVXD_Control有什么关系?哈哈!;入口,下次说.End_control_dispatch FIRSTVXDEND/*makefile.mak*/NAME=firstvxd$(NAME).vxd:$(NAME).obj link -vxd -def:$(NAME).def $(NAME).obj$(NAME).obj:$(NAME).asm ml -coff -c -Cx-DMASM6 -DBLD_COFF -DIS_32 $(NAME).asm/*firstVxd.def*/VXD FIRSTVXD DYNAMICSEGMENTS_LPTEXTCLASS LCODEPRELOAD NONDISCARDABLE_LTEXTCLASS LCODEPRELOAD NONDISCARDABLE_LDATACLASS LCODEPRELOAD NONDISCARDABLE_TEXT CLASS LCODEPRELOAD NONDISCARDABLE_DATA CLASS LCODEPRELOAD NONDISCARDABLECONST CLASS LCODEPRELOAD NONDISCARDABLE _TLSCLASS LCODEPRELOAD NONDISCARDABLE _BSSCLASS LCODEPRELOAD NONDISCARDABLE_LMGTABLECLASS MCODEPRELOAD NONDISCARDABLE IOPL_LMSGDATACLASS MCODEPRELOAD NONDISCARDABLE IOPL_IMSGTABLE CLASS MCODEPRELOAD DISCARDABLE IOPL_IMSGDATA CLASS MCODEPRELOAD DISCARDABLE IOPL _ITEXT CLASS ICODE DISCARDABLE _IDATA CLASS ICODEDISCARDABLE _PTEXT CLASS PCODENONDISCARDABLE_PMSGTABLECLASS MCODENONDISCARDABLE IOPL_PMSGDATACLASS MCODENONDISCARDABLE IOPL _PDATA CLASS PDATANONDISCARDABLE SHARED _STEXT CLASS SCODERESIDENT _SDATA CLASS SCODERESIDENT_DBOSTARTCLASS DBOCODEPRELOAD NONDISCARDABLE CONFORMING_DBOCODE CLASS DBOCODEPRELOAD NONDISCARDABLE CONFORMING _DBODATACLASS DBOCODEPRELOAD NONDISCARDABLE CONFORMING _16ICODE CLASS 16ICODEPRELOAD DISCARDABLE _RCODE CLASS RCODEEXPORTSFIRSTVXD_DDB1/*make.bat*/nmake/f makefile/*/举例:WDM程序/*函数名称:DriverEntry()功能描述:WDM程序入口*/extern C是必须的,表示“用C链接”。如果你的文件名是HelloWDM.c的话,这句可以省略。extern CNTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)/指定“添加设备”消息由函数“HelloWDMAddDevice()”来处理:DriverObject-DriverExtension-AddDevice = HelloWDMAddDevice;/指定“即插即用”消息由函数“HelloWDMPnp()”来处理:DriverObject-MajorFunctionIRP_MJ_PNP = HelloWDMPnp;/返回一个NTSTATUS值STATUS_SUCCESS。几乎所有的驱动程序例程都必须返回一个NTSTATUS值,这些值在NTSTATUS.H DDK头文件中有详细的定义。return STATUS_SUCCESS;/*函数名称:HelloWDMAddDevice()功能描述:处理“添加设备”消息*/NTSTATUS HelloWDMAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)/定义一个NTSTATUS类型的返回值:NTSTATUS status;/定义一个功能设备对象(Functional Device Object):PDEVICE_OBJECT fdo;/创建我们的功能设备对象,并储存到fdo中:status = IoCreateDevice(DriverObject,/驱动程序对象sizeof(DEVICE_EXTENSION),/要求的设备扩展的大小NULL,/设备名称,这里为NULLFILE_DEVICE_UNKNOWN,/设备的类型,在标准头文件WDM.H或NTDDK.H中列出的FILE_DEVICE_xxx值之一0,/各种常量用OR组合在一起,指示可删除介质、只读等。FALSE,/如果一次只有一个线程可以访问该设备,为TRUE,否则为FALSE&fdo);/返回的设备对象/NT_SUCCESS宏用于测试IoCreateDevice内核是否成功完成。不要忘记检查对内核的所有调用是否成功。NT_ERROR宏不等同于!NT_SUCCESS,最好使用!NT_SUCCESS,因为除了错误外,它还截获警告信息。if( !NT_SUCCESS(status)return status;/创建一个设备扩展对象dx,用于存储指向fdo的指针:PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)fdo-DeviceExtension;dx-fdo = fdo;/用IoAttachDeviceToDeviceStack函数把HelloWDM设备挂接到设备栈:dx-NextStackDevice = IoAttachDeviceToDeviceStack(fdo, PhysicalDeviceObject);/设置fdo的flags。有两个“位”是必须改变的,一个是必须清除DO_DEVICE_INITIALIZING标志,如果在DriverEntry例程中调用IoCreateDevice(),就不需要清除这个标志位。还有一个是必须设置DO_BUFFER_IO标志位:fdo-Flags |= DO_BUFFERED_IO | DO_POWER_PAGABLE;fdo-Flags &= DO_DEVICE_INITIALIZING;/返回值:return STATUS_SUCCESS;/*函数名称:HelloWDMPnp()功能描述:处理“即插即用”消息*/NTSTATUS HelloWDMPnp(IN PDEVICE_OBJECT fdo,IN PIRP Irp)/创建一个设备扩展对象dx,用于存储指向fdo的指针:PDEVICE_EXTENSION dx=(PDEVICE_EXTENSION)fdo-DeviceExtension;/首先要通过函数IoGetCurrentIrpStackLocation()得到当前的IRP,并由此得到Minor Function:PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);ULONG MinorFunction = IrpStack-MinorFunction;/然后把这个Minor Function传递给下一个设备栈:IoSkipCurrentIrpStackLocation(Irp);NTSTATUS status = IoCallDriver( dx-NextStackDevice, Irp);/处理“即插即用”次功能代码:/当Minor Function等于IRP_MN_REMOVE_DEVICE时,说明有设备被拔出或卸下,这时要取消资源分配并删除设备:if( MinorFunction=IRP_MN_REMOVE_DEVICE)/取消设备接口:IoSetDeviceInterfaceState(&dx-ifSymLinkName, FALSE);RtlFreeUnicodeString(&dx-ifSymLinkName);/调用IoDetachDevice()把fdo从设备栈中脱开:if (dx-NextStackDevice)IoDetachDevice(dx-NextStackDevice);/删除fdo:IoDeleteDevice(fdo);/返回值:return status;#ifdef _cplusplusextern C#endif#include ntddk.h#ifdef _cplusplus#endiftypedef struct _DEVICE_EXTENSIONPDEVICE_OBJECTfdo;PDEVICE_OBJECTNextStackDevice;UNICODE_STRINGifSymLinkName; DEVICE_EXTENSION, *PDEVICE_EXTENSION;NTSTATUS HelloWDMAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject);NTSTATUS HelloWDMPnp(IN PDEVICE_OBJECT fdo,IN PIRP Irp);第二章3. 答:总线是一类信号线的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石场开采承包协议书
- 离婚诉讼补写协议书
- 专注力训练幼儿
- 中海大海洋地质学教案
- 神经痛症状分析及神经康复护理指南
- 2026年高端私人影院建设公司施工现场材料堆放管理制度
- 乙肝病毒携带常见症状及护理指导
- 肠外营养临床应用与管理
- 有营养的食物大班
- 2024-2025学年湘豫名校联考高三上学期11月诊断考试地理试题(解析版)
- 一把手讲安全课件:提升全员安全意识
- 中医药文化的日本之旅智慧树知到答案2024年温州医科大学
- 2024土地临时租用协议书
- 选择性必修二《Unit 3 Food and Culture》单元教学设计
- 《养老护理员》-课件:协助老年人转换体位
- 幼儿园中的自然教育对孩子的影响
- 《孙周兴:艺术哲学美是如何诞生的》2021-2022超星尔雅课后测试答案
- 小学英语-I am a robot教学课件设计
- 安全检查验收制度(六篇)
- 汽车维修保养结算单
- 膳食营养指导和疾病预防(卢世琰)课件
评论
0/150
提交评论