1 / 5
文档名称:

基于ARM的字符驱动程序.doc

格式:doc   大小:259KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于ARM的字符驱动程序.doc

上传人:bb21547 2020/5/27 文件大小:259 KB

下载得到文件列表

基于ARM的字符驱动程序.doc

文档介绍

文档介绍:基于Linux的字符设备驱动设计与实现信息工程学院计算机15-3班刘云飞摘要:在基于Linux的嵌入式工业控制系统的开发过程中,针对最常见的字符设备,探索了一种设备驱动程序设计的一般方法。该方法为这一类设备驱动实现提供了整体框架,降低了驱动设计难度。实时时钟模块是典型的字符设备也是工业控制系统中的重要组成部分。作者以基于I2C总线的实时时钟在ARM9平台的驱动实现为例,详细介绍了这一方法在嵌入式系统开发中的具体应用。关键词:Linux;驱动程序;实时时钟;嵌入式系统在工业过程自动化领域,嵌入式技术在稳定性,可扩展性,成本,功耗等许多方面已逐步展现出其与传统控制手段相比的独特优势。对于嵌入式工业控制系统,尽管被控对象和应用场的差异使得外围设备及其接口形式相对丰富复杂,但总可以将它们归结到Linux系统的三设备:字符设备、块设备、网络设备中来,而字符设备是其中最常见的形式。笔者在实际的开发过程中探索和总结了一种针对嵌入式Linux字符设备驱动设计实现的一般办法。并通过讨论RISC目标系统中典型外围设备-基于I2C总线技术的实时时钟设计与实现,阐述了这一方法在实际开发中的具体应用。1Linux设备驱动程序实现关键技术的归纳与总结Linux设备驱动程序是为特定的硬件提供给用户程序的一组标准化接口,它隐藏了设备工作的细节。虽然外部设备差异很大,但设备的驱动程序遵循一定的通用方法。1)基于文件的设备管理方式。在Linux系统里,任何设备都以设备文件的形式来表示,也就是说,通过对设备文件的操作来实现对硬件设备的操作。2)主设备号与次设备号。Linux系统为每一个设备分配了一个主设备号和次设备号,主设备号标识设备对应的驱动程序,次设备号标识具体设备的实例。每一类设备使用的主设备号是独一无二的,系统增加一个驱动程序就要赋予它一个主设备号。这一赋值过程在驱动程序的初始化时进行。3)Linux设备的操作。系统访问设备就像访问文件一样,例如打开设备使用系统调用open(),关闭设备使用系统调用close()。在Linux内核中,字符设备使用structfile_operations结构来定义设备的各种操作集合。编写字符设备驱动程序,主要是实现structfile_operations结构中的各个函数。对于结构中没有实现的操作函数,函数指针变量设置为NULL。sruct_file_operations结构在/include/linux/。4)Linux设备的注册和卸载。设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行注册,以便系统在适当的时候调用。在Linux系统中,通过调用devfs_register向系统注册字符型设备驱动程序。devfs_register()的定义为:#definelinux/(devfs_handle_tdir,constchar*name,unsignedintflags,unsignedintmajor,unsignedintminor,u-mode_tmode,void*ops,void*info);其中,dir为新创建的设备文件的父目录;Name为设备的名称;Flags为devfs标志的位掩码;Major为设备的主设备号;