收藏 分销(赏)

2022年博创嵌入式培训PPT—嵌入式Linux接口设计与驱动程序.ppt

上传人:二*** 文档编号:12600897 上传时间:2025-11-09 格式:PPT 页数:48 大小:685.54KB 下载积分:5 金币
下载 相关 举报
2022年博创嵌入式培训PPT—嵌入式Linux接口设计与驱动程序.ppt_第1页
第1页 / 共48页
本文档共48页,全文阅读请下载到手机保存,查看更方便
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4章 嵌入式Linux接口设计与驱动程序,第四章 嵌入式Linux接口设计与,驱动程序,主要内容,第一节 驱动程序设计基础,第二节,AD,接口驱动程序,第三节 直流电机驱动实验,第四节 触摸屏接口设计与驱动,第五节 显示接口与,Linux,FrameBuffer,(帧缓冲),第六节,V4L,程序设计,第七节,OSS,程序设计,内容:,一、Linux驱动程序简介,二、开发驱动程序的方法,三、设备驱动程序的分类,四、主设备号和次设备号,五、设备文件系统(devfs)与udevfs,第一节 驱动程序设计基础,大多数操作系统都把内核和运行在其上的应用程序分为两个层次进行管理,即“内核态”和“用户态”。内核态有较高的权限,可以控制处理器内存的映射和分配方式,访问外设空间和处理器的特殊状态寄存器,控制中断和DMA等;而用户态则只能运行应用程序。从用户态到内核态的切换通常可通过软件中断实现。,在有MMU的处理器上,Linux系统把内核重新映射在3GB(即0 xC0000000)以上的虚拟地址空间内核空间;每个应用程序或进程都通过MMU建立独立寻址空间用户空间。一个进程不可以(因为有MMU映射的保护)随便修改或访问另一个进程中的数据和代码。进程之间要进行数据交互,或者经过内核传递,或者通过内核映射共享内存。,第一节 驱动程序设计基础 一、Linux驱动程序简介,作为系统内核的一部分,驱动程序工作在内核态,而应用程序工作在用户态。也就是说,不能直接通过指针把用户空间的数据地址传递给内核(因为MMU映射的地址根本不一样)。要想在应用程序和驱动程序之间传递数据(指针),就要经过转换,把用户态“看”到的空间地址转换成内核态可访问的地址。Linux系统提供了一系列函数,可方便地实现这种转换,它们自己负责检查访问权限,使用时不需要考虑更多问题。,设备驱动程序应该只为系统的其他部分提供使用设备的能力,至于使用方法应该由应用程序来提供。也就是说,应用程序通过调用硬件设备对应的驱动程序来完成自己的目的,而调用什么,驱动程序则不需要知道。因此,在编写驱动程序时需要考虑下面三个方面:提供尽量多的选项给用户;提高驱动程序的速度和效率;尽量使驱动程序简单。,第一节 驱动程序设计基础 一、Linux驱动程序简介,一般来说,开发驱动程序有两种方法。一种方法是直接编译到内核,再运行新的内核来测试。这种方法虽然效率较低,但在某些场合是唯一的选择。第二种方法是编译为模块的形式,单独加载、运行、调试。这种方法不需要重新启动内核,只需要通过insmod和rmmod命令进行驱动模块增加和删减操作即可,使得驱动调试效率大大提高。,在编译内核的过程中,如上图所示可以看到编译过程中有三种选项:,M,表示编译成模块方式,,表示将其编译到内核之中,,如果没有选择则表示不编译该功能。,第一节 驱动程序设计基础 二、开发驱动程序的方法,Linux内核一般把驱动程序分为4种类型:字符设备、块设备、网络设备以及不属于这三种设备类型的其它设备类型。其中,字符设备和块设备可以像文件一样被访问。例如,驱动程序通常会实现open、close、read、write或seek等操作。网络设备在Linux系统中是一类比较特殊的设备,它不像字符或块设备那样通过对应的设备文件节点访问,内核也不再通过read或write等调用去访问网络设备。,设备驱动程序是内核代码的一部分,其地址空间是内核的地址空间。应用程序通过操作系统的系统调用执行相应的驱动程序函数,中断则直接执行相应的中断程序代码。当设备驱动程序的file_operations结构体的地址被注册到内核中的设备链表中之后,块设备和字符设备以设备文件的方式建立在文件系统中的/dev目录下,而且每个设备都有一个主设备号和一个次设备号。,第一节 驱动程序设计基础 三、设备驱动程序的分类,在传统方式的设备管理中,除了设备类型外,内核还需要主次设备号两个参数,才能唯一标识某个设备。,如上图所示,在每一行的第一组中,第一个字母如果是c,表示该设备是字符设备;如果是b,表示该设备是块设备;如果是d,则表示是个目录。第一组的其他字母表示该设备的各种权限。第五组的数字表示主设备号,第六组数字表示次设备号。,例如,字符设备audio1和audio的主设备号都是14,而次设备号分别为20和4。Linux系统是靠主次设备号来联系驱动程序和设备文件节点的(而不是设备文件的路径)。系统依靠主设备号标识不同的驱动程序,在同一个系统中,一类设备的主设备号是唯一的,因此上例中audio1和audio使用同一个驱动程序。次设备号只是在驱动程序内部使用,系统内核直接把次设备号传递给驱动程序,由驱动程序管理。为了保证驱动程序的通用性,避免驱动程序移植过程中主设备号冲突,理想的方式是给每个设备驱动动态地分配主设备号。,第一节 驱动程序设计基础 四、主设备号和次设备号,值得注意的是,设备文件系统(devfs)在Linux 2.6 早期内核(Linux 2.6.15 以前的版本)中被标记为舍弃;在Linux 2.6.15 及以后的版本则取消了对它的支持。Linux 2.6 内核引入了系统文件系统(sysfs)为每个系统的硬件树进行分级管理,它提供设备的基本信息。同时使用udev脚本,这是一种Linux 2.6 内核采用的/dev目录管理系统。它能够在用户态动态地维护/dev目录下的设备文件。,第一节 驱动程序设计基础 五、设备文件系统,内容:,一、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,低能耗,AD转换时间:当系统时钟为50MHz,且比例值为49,那么转换全部十位所用时间为:,AD转换器频率=50 MHz/(49+1)=1 MHz,转换时间=1/(1 MHz/5cycles)=1/200 kHz=5 us,14,第二节 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,。预分频值默认为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,目录中,除了总抽象设备文件之外,其设备驱动主要文件之中有所描述。fbmem.c是FrameBuffer机制的驱动程序,也是FrameBuffer机制的核心文件,它为上层的应用程序提供通用的接口,同时也为下一层的特定硬件提供接口。其中的函数操作具体的硬件,设置寄存器,对显示缓冲进行映射。该程序的具体说明如下:,首先,该程序有大量的关于设备的宏定义,之后用中包含的结构体定义了几个变量(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)。,支持多种屏幕尺寸:支持的屏幕尺寸包括640 x480、320 x240、160 x160等。虚拟屏幕最大尺寸为4M。虚拟屏幕在256色下的最大尺寸为 4096x1024、2048x2048、1024x4096等。,(2)TFT(薄膜场效应晶体管)LCD 显示:,支持1、2、4、8位调色板彩色显示模式。,支持16位、24位非调色板真彩色显示模式。,支持最大为16M的24位模式。,支持多种屏幕尺寸。支持的屏幕尺寸包括640 x480、320 x240、160 x160等。虚拟屏幕最大尺寸为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,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转换器进行放音,而向该设备读数据则激活声卡上的A/D转换器进行录音。,第七节 OSS程序设计 一、OSS概述,41,S3C2410采用UDA1341TS音频芯片,与S3C2410芯片的连接如图4-32所示,从图可以看出,在这个体系结构中,为了实现全双工,数据传输使用两个DMA通道。,第七节 OSS程序设计 二、OSS设备的体系结构,42,DSP设备驱动包括的方法主要有open()、release()、read()、write()、poll()、ioctl()。其中,在write()和read()方法中实现对声音的播放和录音。在Linux应用程序中,通过对DSP设备文件节点的写入,就可以实现声音的播放,对应的方法是open()和write()。,第七节 OSS程序设计 三、OSS驱动分析,43,对OSS驱动声卡的编程使用Linux文件接口函数,第七节 OSS程序设计 四、OSS用户空间编程,44,1)打开设备文件/dev/sound/dsp。Linux允许应用程序多次打开或者关闭与声卡对应的设备文件,从而能够方便地在放音状态和录音状态之间进行切换。,2)设置缓冲区大小。运行在Linux内核中的声卡驱动程序专门维护了一个缓冲区,其大小会影响放音和录音时的效果,使用ioctl()系统调用可以对它的尺寸进行恰当的设置。,3)设置声道(channel)数量。根据硬件设备和驱动程序的具体情况,可以设置为单声道或者立体声。,4)设置采样格式和采样频率。在Linux下进行音频编程时使用SNDCTL_DSP_SPEED IO控制命令可以设置采样频率。,5)读写/dev/sound/dsp实现播放或录音。使用write()和read()方法中实现对声音的播放和录音,第七节 OSS程序设计 四、OSS用户空间编程,45,本章主要讲述嵌入式Linux的接口设计以及驱动程序,在虚拟驱动程序的框架基础上,阐述了AD、直流电机、触摸屏、FrameBuffer、视频设备和音频设备多个硬件的驱动程序和相关测试程序,理解驱动程序的框架、阅读与理解相关的代码是本章的重点与难点,本章的驱动程序设计实现是基于Linux内核2.4版本的,对于2.6版本存在差异,读者可以在这些程序的思路上进行修改,从而使用相关代码。,小结,46,1.请列举出开发驱动程序的方法以及驱动程序的分类。,2.请列举出使用devfs和不使用devfs编译驱动程序的区别。,3.请列举出驱动程序和应用程序之间的区别。,4.请列举出驱动程序的结构。,5.请完成使用模数转换设备控制直流电机的实验。,6.请完成使用FrameBuffer机制的实验。,7.请完成使用触摸屏的实验。,8.请完成使用V4L的相关实验。,9.请完成使用OSS的相关实验。,10.请完成本章的综合实验。,习题,47,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服