已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 嵌入式Linux接口设计与驱动程序,第四章 嵌入式Linux接口设计与 驱动程序,主要内容 第一节 驱动程序设计基础 第二节 AD接口驱动程序 第三节 直流电机驱动实验 第四节 触摸屏接口设计与驱动 第五节 显示接口与Linux FrameBuffer(帧缓冲) 第六节 V4L程序设计 第七节 OSS程序设计,1,内容: 一、Linux驱动程序简介 二、开发驱动程序的方法 三、设备驱动程序的分类 四、主设备号和次设备号 五、设备文件系统(devfs)与udevfs,第一节 驱动程序设计基础,2,大多数操作系统都把内核和运行在其上的应用程序分为两个层次进行管理,即“内核态”和“用户态”。内核态有较高的权限,可以控制处理器内存的映射和分配方式,访问外设空间和处理器的特殊状态寄存器,控制中断和DMA等;而用户态则只能运行应用程序。从用户态到内核态的切换通常可通过软件中断实现。 在有MMU 的处理器上,Linux系统把内核重新映射在3GB(即0xC0000000)以上的虚拟地址空间内核空间;每个应用程序或进程都通过MMU建立独立寻址空间用户空间。一个进程不可以(因为有MMU映射的保护)随便修改或访问另一个进程中的数据和代码。进程之间要进行数据交互,或者经过内核传递,或者通过内核映射共享内存。,3,第一节 驱动程序设计基础 一、Linux驱动程序简介,作为系统内核的一部分,驱动程序工作在内核态,而应用程序工作在用户态。也就是说,不能直接通过指针把用户空间的数据地址传递给内核(因为MMU映射的地址根本不一样)。要想在应用程序和驱动程序之间传递数据(指针),就要经过转换,把用户态“看”到的空间地址转换成内核态可访问的地址。Linux系统提供了一系列函数,可方便地实现这种转换,它们自己负责检查访问权限,使用时不需要考虑更多问题。 设备驱动程序应该只为系统的其他部分提供使用设备的能力,至于使用方法应该由应用程序来提供。也就是说,应用程序通过调用硬件设备对应的驱动程序来完成自己的目的,而调用什么,驱动程序则不需要知道。因此,在编写驱动程序时需要考虑下面三个方面:提供尽量多的选项给用户;提高驱动程序的速度和效率;尽量使驱动程序简单。,4,第一节 驱动程序设计基础 一、Linux驱动程序简介,一般来说,开发驱动程序有两种方法。一种方法是直接编译到内核,再运行新的内核来测试。这种方法虽然效率较低,但在某些场合是唯一的选择。第二种方法是编译为模块的形式,单独加载、运行、调试。这种方法不需要重新启动内核,只需要通过insmod和rmmod命令进行驱动模块增加和删减操作即可,使得驱动调试效率大大提高。 在编译内核的过程中,如上图所示可以看到编译过程中有三种选项: M 表示编译成模块方式, 表示将其编译到内核之中, 如果没有选择则表示不编译该功能。,5,第一节 驱动程序设计基础 二、开发驱动程序的方法,Linux内核一般把驱动程序分为4种类型:字符设备、块设备、网络设备以及不属于这三种设备类型的其它设备类型。其中,字符设备和块设备可以像文件一样被访问。例如,驱动程序通常会实现open、close、read、write或seek等操作。网络设备在Linux系统中是一类比较特殊的设备,它不像字符或块设备那样通过对应的设备文件节点访问,内核也不再通过read或write等调用去访问网络设备。 设备驱动程序是内核代码的一部分,其地址空间是内核的地址空间。应用程序通过操作系统的系统调用执行相应的驱动程序函数,中断则直接执行相应的中断程序代码。当设备驱动程序的file_operations结构体的地址被注册到内核中的设备链表中之后,块设备和字符设备以设备文件的方式建立在文件系统中的/dev目录下,而且每个设备都有一个主设备号和一个次设备号。,6,第一节 驱动程序设计基础 三、设备驱动程序的分类,在传统方式的设备管理中,除了设备类型外,内核还需要主次设备号两个参数,才能唯一标识某个设备。 如上图所示,在每一行的第一组中,第一个字母如果是c,表示该设备是字符设备;如果是b,表示该设备是块设备;如果是d,则表示是个目录。第一组的其他字母表示该设备的各种权限。第五组的数字表示主设备号,第六组数字表示次设备号。 例如,字符设备audio1和audio的主设备号都是14,而次设备号分别为20和4。Linux系统是靠主次设备号来联系驱动程序和设备文件节点的(而不是设备文件的路径)。系统依靠主设备号标识不同的驱动程序,在同一个系统中,一类设备的主设备号是唯一的,因此上例中audio1和audio使用同一个驱动程序。次设备号只是在驱动程序内部使用,系统内核直接把次设备号传递给驱动程序,由驱动程序管理。为了保证驱动程序的通用性,避免驱动程序移植过程中主设备号冲突,理想的方式是给每个设备驱动动态地分配主设备号。,7,第一节 驱动程序设计基础 四、主设备号和次设备号,设备类型、主次设备号是内核与设备驱动程序通信时所使用的,但是对于开发应用程序的用户来说难于理解和记忆,所以Linux 使用设备文件的概念来统一对设备的访问接口。在引入设备文件系统(devfs)之前,Linux 将设备文件放在/dev 目录下,设备的命名一般为“设备文件名数字或字母表示的子类”,例如/dev/hda1、/dev/hda2 等。 在Linux 2.4 内核中引入了设备文件系统(devfs),所有的设备文件可以挂载到一个文件系统之中,这样就可以被文件系统进行统一管理 。同时,命名规则也发生了变化,一般为主设备建立一个目录,再将具体的子设备文件建立在此目录下。,8,第一节 驱动程序设计基础 五、设备文件系统,值得注意的是,设备文件系统(devfs)在Linux 2.6 早期内核(Linux 2.6.15 以前的版本)中被标记为舍弃;在Linux 2.6.15 及以后的版本则取消了对它的支持。Linux 2.6 内核引入了系统文件系统(sysfs)为每个系统的硬件树进行分级管理,它提供设备的基本信息。同时使用udev脚本,这是一种Linux 2.6 内核采用的/dev目录管理系统。它能够在用户态动态地维护/dev目录下的设备文件。,9,第一节 驱动程序设计基础 五、设备文件系统,内容: 一、AD转换器 二、AD转换有关参数 三、ARM自带的AD转换装置,第二节 AD接口驱动程序,10,AD转换器的功能是将输入的模拟电压转换为数字信号输出。一个完整的AD转换过程必须包括采样、保持、量化、编码四部分。在具体实施时,常把这四个步骤合并进行。例如,采样和保持是利用同一电路连续完成的,量化和编码是在转换过程中同步实现的。,11,第二节 AD接口驱动程序 一、AD转换器,模拟信号采样,为了使采样得到的离散模拟量与n 位有限的2n个数字量进行对应 ,还必须选取一个量化单位,将采样后离散的模拟量归并到2n个离散电平中的某一个电平上,这个过程称为量化。量化后的值再按数制要求进行编码,作为转换完成后输出的数字代码。量化和编码是所有AD转换器不可缺少的核心部分之一。 按转换过程,AD转换器可分为直接型AD转换器和间接型AD转换器。直接型AD转换器能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。 间接型AD转换器把待转换的输入模拟电压先转换为一个中间变量,然后再对中间变量量化编码,得出转换结果。,12,第二节 AD接口驱动程序 一、AD转换器,AD 转换器的转换精度 在AD转换器中,经常用分辨率和转换误差来描述转换精度。分辨率是指引起输出二进制数字量最低有效位变动一个数码时,输入模拟量的最小变化量。输入模拟电压小于此最小变化量时,将不会引起输出数字量的变化。也就是说,AD转换器的分辨率反映了它对输入模拟量微小变化的分辨能力。显然,分辨率与输出的二进制数的位数有关,输出二进制数的位数越多,分辨率越小,分辨能力越高。 转换误差通常以相对误差的形式给出,它表示AD转换器实际输出的数字量与理想输出的数字量之间的差别,并用最低有效位(LSB)的倍数来表示。 AD 转换器的转换时间 转换时间表示完成一次从模拟量到数字量之间的转换所需要的时间,它反映了AD转换器的转换速度。 电源灵敏度 电源灵敏度表示AD转换芯片的供电电源的电压发生变化时所产生的转换误差。 量程 量程是所能转换的模拟输入电压范围。,13,第二节 AD接口驱动程序 二、AD转换有关参数,ARM S3C2410芯片自带一个8路10位AD转换器,并且支持触摸屏功能。ARM2410开发板只用了三路AD,通过查阅其数据手册,技术参数如下: 分辨率:10位 最大转换速率:500k 非线性度:1.5位 低能耗 电源电压:3.3V 模拟输入范围:03.3V AD转换时间:当系统时钟为50MHz,且比例值为49,那么转换全部十位所用时间为: AD转换器频率 = 50 MHz/(49+1) = 1 MHz 转换时间 = 1/(1 MHz / 5cycles) = 1/200 kHz = 5 us,14,第二节 AD接口驱动程序 三、ARM自带的AD转换装置,AD转换器在扩展板的连接,15,第二节 AD接口驱动程序 三、ARM自带的AD转换装置,内容: 一、直流电机PWM介绍 二、直流电机的PWM原理 三、PWM TIMER结构 四、基于ARM的PWM相关寄存器 五、关于程序实现,第三节 直流电机驱动实验,16,随着社会的发展,各种智能化的产品走入寻常百姓家。为了实现产品的便携性、低成本以及对电源的限制 ,小型直流电机应用相当广泛。我们可以采用多种办法调节直流电机的速度。本节在给出直流电机调整和PWM实现方法的基础上,提供一种用软件实现PWM 调速的方法。,第三节 直流电机驱动实验 一、直流电机PWM介绍,17,晶体管的导通时间也被称为导通角。改变调制晶体管的开关时间,即通过改变导通角的大小,则可以改变负载上平均电压的大小,即因此改变对电机的变速控制(如图4-11所示),这种方法被称为脉宽调制变速控制(PWM)。在PWM变速控制中,系统采用直流电源,而且放大器的频率是固定的,变速控制只需要通过调节脉宽即可实现。,第三节 直流电机驱动实验 二、直流电机的PWM原理,18,定时器输入时钟频率 = PCLK/(预分频值+1)/(除值),第三节 直流电机驱动实验 三、PWM TIMER结构,19,S3C2410X有五个16位的定时器。定时器0、1、2、3具有PWM功能,定时器4没有输出引脚。其中,定时器0有一个死区发生器。定时器0和定时器1使用一个8位的预分频值,定时器2、3、4使用另外一个8位的预分频值。每个定时器都拥有一个时钟除法器,其中包括五个不同的除值信号(1/2、1/4、1/8、1/16和TCLK)。每个定时器都可以从时钟除法器中接收它的时钟信号,而时钟除法器则从8位的预刻度器中接收时钟。8位的预刻度器可以编程,并且通过装载的数值对PCLK进行除操作。这些信息都保存在TCFG0和TCFG1寄存器中。,第三节 直流电机驱动实验 四、基于ARM的PWM相关寄存器,20,程序首先初始化系统时钟。使用TCON打开定时器0,PCLK=FCLK/4=203M/4=50.7MHz。预分频值默认为0,调整到2。除法器的默认值为0,即表示1/2。此时定时器时钟输入频率为PCLK/(预分频值+1)/(除值)。PCLK是s3c2410的唯一时钟信号源,之后根据PCLK和预分频值,Clock Select会产生一个属于自己的工作周期。 按照上述的工作频率,计时器0的初始值TCNTB0设为16384(低于10ms),TCMPB0的默认值为TCNTB0/2。依靠两者之间的比值,改变电机的转速。,第三节 直流电机驱动实验 五、关于程序实现,21,内容: 一、触摸屏的工作原理 二、触摸屏驱动芯片ADS7843 三、关于S3C2410芯片的触摸屏相关配置寄存器,第四节 触摸屏接口设计与驱动,22,在开发平台UP-NETARM2410S上使用的是电阻式触摸屏。电阻式触摸屏通常采用薄膜加上玻璃的结构。当触摸屏薄膜下层的ITO(纳米铟锡金属氧化物,一种导电物质)接触到玻璃上层的ITO时,相应的感应器就会传出一个信息,再从控制器送到计算机端,之后再通过驱动程序转化为屏幕上对应的坐标值。 一般来说,电阻触摸屏分为四线电阻和五线电阻触摸屏。在该开发板上使用的是四线触摸屏。四线电阻模拟量技术的两层透明金属层工作时每层均增加 5V恒定电压:一个竖直方向,一个水平方向,总共需四根电缆。,23,第四节 触摸屏接口设计与驱动 一、触摸屏的工作原理,接触屏幕时,两个ITO导电层出现一个接触点,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零。控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比,即可得触摸点的Y轴坐标,同理得出X轴的坐标,这就是电阻技术触摸屏的基本工作原理,24,第四节 触摸屏接口设计与驱动 一、触摸屏的工作原理,在该实验平台UP-NETARM2410S上所使用的触摸屏芯片是触摸屏驱动芯片ADS7843。ADS7843是专用于4线电阻式触摸屏的12位模/数采样转换器,它具有一个串口接口,以及面向连接触摸屏的相关接口。 ADS7843具有单一电源供电、完全降功耗模式、转换速度快的特点。 ADS7843的工作电压Vcc为2.75V,参考电压Vref在1V至Vcc之间均可。转换器有4路模拟信号输入通道和独特的在线低阻开关,它允许由未选中的输入通道为外部线路提供电源和地。这样的输入结构能够极大地消除内部开关电阻带来的转换误差,而这种误差是这类转换器的主要误差来源。,25,第四节 触摸屏接口设计与驱动 二、触摸屏驱动芯片ADS7843,S3C2410内置1个8信道的10位模数转换器(ADC),该ADC能以500KSPS的采样速率将外部的模拟信号转换为具有10位分辨率的数字量。同时ADC部分能与CPU的触摸屏控制器协同工作,完成对触摸屏绝对地址的测量。,26,第四节 触摸屏接口设计与驱动 三、关于S3C2410芯片的触摸屏相关配置寄存器,内容: 一、FrameBuffer机制介绍 二、LCD简介,第五节 显示接口与Linux FrameBuffer(帧缓冲),27,FrameBuffer是出现在2.2.xx之后版本的内核的一种驱动程序接口,是一种用来供用户态进程实现直接写屏的抽象设备。FrameBuffer可以看成是显存的一个映像,映射到进程地址空间中,不仅能够直接写屏,而且写操作可以立即在屏幕上显示出来。 FrameBuffer操作是抽象的,其中物理显存和硬件结构都对用户透明,用户只需要通过应用程序直接读写FrameBuffer内容就可以完成对屏幕的显示控制。因此,FrameBuffer不具有运算和处理数据的能力,只负责进行数据传递。 可见,FrameBuffer不是一个图形系统,只是一种机制的实现可以简单地把内存中的数值映射到屏幕上去。也正因为如此,基于FrameBuffer的GUI具有高度的可移植性,第五节 显示接口与Linux FrameBuffer(帧缓冲) 一、FrameBuffer机制介绍,28,1,FrameBuffer的实现 FrameBuffer对应的源文件位于linux/drivers/video目录中,除了总抽象设备文件fbcon.c之外,其设备驱动主要fbmem.c文件之中有所描述 。fbmem.c是FrameBuffer机制的驱动程序,也是FrameBuffer机制的核心文件,它为上层的应用程序提供通用的接口,同时也为下一层的特定硬件提供接口。其中的函数操作具体的硬件,设置寄存器,对显示缓冲进行映射。该程序的具体说明如下: 首先,该程序有大量的关于设备的宏定义,之后用fb.h中包含的结构体定义了几个变量(fb.h位于/opt/host/armv4l/include/linux目录中)。涉及的主要结构体包括: fb_var_screeninfo:记录帧缓冲设备和指定显示模式的可修改记录,包括屏幕的分辨率、像素信息和一些时序变量。 fb_fix_screeninfo:记录帧缓冲设备和指定显示模式的不可修改记录,包含屏幕缓冲区的物理地址和长度。 fb_info:linux为帧缓冲设备定义的驱动层接口。 fb_cmap:调色板信息。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 一、FrameBuffer机制介绍,29,从缓冲帧操作集可以看到,关于FB的操作包括open、close、read、write、ioctl等,这些在之前的驱动程序中都做过介绍。内核通过fb_open()打开/dev/fb设备文件,之后通过fb_ioctl操作获得LCD的分辨率长宽和bpp等信息,并且通过mmap操作将其映射到用户空间之中。在这个过程中,可以通过fb_read和fb_write操作直接对FrameBuffer进行读写。在这里简单介绍一下mmap映射操作。 mmap映射操作可以将设备内存直接映射到用户空间。对于帧缓冲设备,可以通过映射操作直接将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址之中。之后用户就可以通过读写这段虚拟地址来直接在屏幕上绘图。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 一、FrameBuffer机制介绍,30,FrameBuffer的体系结构 集成了LCD控制器的嵌入式处理器体系结构 S3C2410芯片设备将LCD控制器直接嵌入到处理器系统之中,也就是说,通过处理器通往外面的接口可以直接连接SDRAM和LCD。这为嵌入式系统开发板关于显示功能的扩展提供了直接接口,非常方便,第五节 显示接口与Linux FrameBuffer(帧缓冲) 一、FrameBuffer机制介绍,31,液晶显示器(Liquid Crystal Display )也简称为LCD,其构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。 1、背光选择 液晶显示器为被动发光型显示器,必须有外界光源,液晶显示器才会有显示。一般将液晶显示器分成透射式显示器、反射式显示器、半反半透式显示器三类。透射式液晶显示器必须加上背景光,反射式液晶显示器需要较强的环境光线,半反半透式液晶要求环境光线较强或加背光。 2、LCD的驱动方式 LCD的驱动方式有两种:使用LCD扫描芯片的LCD模块进行驱动,或者是通过LCD控制器直接扫描LCD屏幕。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 二、LCD简介,32,3、S3C2410的LCD参数 (1)STN LCD 显示 支持三种LCD扫描模式:4位双扫描模式,4位单扫描模式,8位单扫描模式。 支持单色, 4级灰度和16级灰度。 支持256色和4096色的彩色STN LCD(cstn)。 支持多种屏幕尺寸:支持的屏幕尺寸包括640x480、320x240、160x160等。虚拟屏幕最大尺寸为4M。虚拟屏幕在256色下的最大尺寸为 4096x1024、2048x2048、1024x4096等。 (2)TFT (薄膜场效应晶体管) LCD 显示: 支持1、2、4、8位调色板彩色显示模式。 支持16位、24位非调色板真彩色显示模式。 支持最大为16M的24位模式。 支持多种屏幕尺寸。支持的屏幕尺寸包括640x480、 320x240、160x160等。虚拟屏幕最大尺寸为4M。虚拟屏幕在64K颜色下的最大尺寸: 2048x1024 等。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 二、LCD简介,33,S3C2410的LCD体系结构 S3C2410自带的LCD控制器,用于传输视频数据(VD23:0)和一些控制信号(VFRAME、VLINE、VCLK、VM等)。其中,VCLK表示像素时钟信号,VD23:0表示LCD像素输出端口,VM/VDEN/TP表示LCD驱动器的ac偏置信号,VSYNC表示帧同步信号,HSYNC表示行同步信号。在转换器中,REGBANK是LCD的寄存器组,用来设置LCD的各个参数。LCDCDMA是LCD的DMA通道,能够从系统总线取得视频资料。之后它通过VIDPRCS从VD端口向LCD屏发送数据。另外,TIMEGEN和LPC3600用来产生LCD屏所需要的各种控制时序,包括VSYNC、HSYNC、VCLK、VDEN等,然后通过VIDEO MUX把控制信息发送给LCD屏。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 二、LCD简介,34,4,S3C2410的LCD扫描模式 S3C2410有多种扫描方式,我们在本章的样例程序里面所用的是16位的565扫描方式. 如图可知,某一点的颜色是使用16位进行表示的,其中红绿蓝分别占用5、6、5位。按照这16位颜色进行组合,得到该点的颜色值,对于32位,可能为8、8、8、 结构,不同的彩色空间与颜色深度存在一些转换上的差异。 在头文件S3c2410fb.h(driver/video)中,定义了几个相关的结构体。其中,s3c2410fb_rgb表示像素点的颜色值;s3c2410fb_lcd_reg用来提供LCD的相关寄存器值来控制LCD;s3c2410fb_mach_info和s3c2410fb_info则提供了LCD的相关信息。以上这几个结构体用来辅助同目录下的程序S3c2410fb.c(driver/video)。在该程序中定义了_initdata结构体,这个结构体表征了LCD初始化的各种信息 。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 二、LCD简介,35,5,关于LCD寄存器 S3C2410关于LCD的寄存器主要包括5个控制寄存器以及3个缓冲帧始地址寄存器 LCD寄存器的配置信息如下: lcdcon1 : LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(1) , lcdcon2 : LCD2_VBPD(32) | LCD2_VFPD(9) | LCD2_VSPW(1), lcdcon3 : LCD3_HBPD(47) | LCD3_HFPD(15), lcdcon4 : LCD4_HSPW(95) | LCD4_MVAL(13), lcdcon5 : LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN, 因此在LCD的以上配置选项当中,我们可以知道lcdcon都进行了哪些配置。其中大量的宏定义都在S3C2410.H中定义好了,通过该头文件,可以比较清晰地了解配置的含义,简化了相应的位操作。,第五节 显示接口与Linux FrameBuffer(帧缓冲) 二、LCD简介,36,内容: 一、V4L概述 二、V4L设备的体系结构,第六节 V4L程序设计,37,V4L( Video for Linux)是Linux下提供的一个音视频接口规范,所有的音视频设备的驱动编写都要用到这些接口。V4L的驱动程序videodev.c所在路径为内核存在目录的drivers/media/video路径下,而其依赖的头文件videodev.h位于内核存在目录的include/linux目录下。 需要注意的是,v4l在2.6内核里同时支持两种版本,使用时需要区分开来。 V4L所要用到的数据结构都在videodev.h中有定义,主要的数据结构如下所示: video_capability:包含摄像头的基本信息。 video_window:包含设备采集窗口的各种信息。 video_channel:视频通道信息。 struct video_picture:包含设备采集图像的各种属性。 video_audio : 音频数据结构 video_mmap:用于内存映射。 video_mbuf:利用mmap进行映射的帧信息。,第六节 V4L程序设计 一、V4L概述,38,2410核心板外接USB摄像头,通过OV511的感光芯片获取视频数据,并在16bit的LCD显示屏上显示采集到的视频,不同摄像头和LCD,其颜色深度和分辨率需要值得注意。,第六节 V4L程序设计 二、V4L设备的体系结构,39,内容: 一、OSS概述 二、OSS设备的体系结构 三、OSS驱动分析 四、OSS用户空间编程,第七节 OSS程序设计,40,OSS(Open Sound System)是Linux上的音频编程接口,它由一套完整的内核驱动程序模块组成,可为大多数声卡提供统一的编程接口。 OSS标准中有2个基本的音频设备:Mixer(混音器)和DSP(数字信号处理器)。Mixer的作用是将多个信号组合叠加在一起,其最简单的功能就是控制输入/输出音量的大小。在OSS驱动中,/dev/sound/mixer设备文件是应用程序对mixer进行操作的软件接口。 DSP也称为编解码器,用于实现录音和放音,其对应的设备文件是/dev/sound/dsp。OSS声卡驱动程序提供的/dev/sound/dsp是用于数字采样和数字录音的设备文件,向该设备写数据则激活D/A转换器进行放音,而向该设备读数据则激活声卡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西省江投路桥投资有限公司本部招聘1人考试模拟卷附答案解析
- 2025年湖南常德津市市第一中学招聘教师4人备考题库带答案解析
- 索道运输机械操作工冲突管理水平考核试卷含答案
- 员工离职面谈技巧与要点
- 信息通信网络机务员安全规程评优考核试卷含答案
- 合成碳膜电位器制造工复测水平考核试卷含答案
- 眼镜验光师班组考核竞赛考核试卷含答案
- 南通卫校面试实战指南各行各业真实案例分析
- 动车组装调师岗前客户关系管理考核试卷含答案
- 教师职业规划与小学面试准备全攻略
- DB34T 2127.7-2014 区域地球化学调查样品分析方法 第7部分:原子荧光光谱法砷、锑、铋、汞含量的测定
- 工程概预算课程设计任务书(结构)2011
- DLT 836.1-2016 供电系统供电可靠性评价规程 第1部分:通.用要求
- 我的家乡江西-课件
- 2024全国职业院校技能大赛ZZ060母婴照护赛项规程+赛题
- 学生反邪教知识讲座
- 中班数学 数字找朋友课件
- 中式烹调菜肴培训教材
- 发展汉语初级口语(Ⅰ)第21课PPT
- 张汉熙《高级英语》第二册课文英语原文
- 机械振动学习题解答(三)
评论
0/150
提交评论