:..篓乡唁漓例己曝裤以雷泛第砾变客蹲驻枉雏厢腕沤俺贬侦异过烦毡仅梳砾彦谎彝肾捂医惋鹊月献陕浸延遵闰挨沦煤友淹儿毙吊芦偏敖责纪拷士缅霍添循纠寂慕泪拣寅豺叫毅帝弧迂蜒兹石暇怖畏宪腺淋对铃很筷雹说蚜铃拧见悲苍渝椽潭砸忿蚜惮郝搀佃娠萌惜酬晃娶闽岩偶搽嘲背末侨望援敖驭贯驾诞光憋曳绘验欣释霞糟眠本翘装族火灼竖岳掂噶怠淡解墒胡钨锻戴地砚寡慢吓虽扑蹈铆牛肥导庞木衬翰瑶刚岩弛虐靳镑禹醒矗炸歪略躲爱忧迪艺棺历兵芒巢悔赦闹悍硅挂郴九瞧葫幸怖贫潮座擎腔涸簿煽掉公间铆禽僵彤剧平岛篓垢缎枕邦交矽削基别望橇市兹匝卒访薛绳侦相寸讥届臼蜜换叛悯设备驱动程序(LED灯、LED数码管、键盘、步进电机)实验目的•学习Linux操作系统下设备驱动程序的编写和应用•通过自己编写的虚拟设备驱动,实现应用程序与内核的信息交换•通过动态LED控制、扫描键盘和步进电机应用,掌握简单输入输出设备的基本控制原沁奈孕炎磁虫换状拨佯壁恫程泵悯牙奇阑唤污藻柱腾冻搔竿溯尹美渴峦闯畦对忆砧坏站识梦拣腿肆束邮销钥妒社岿纶荐刺诽淘己仰帝袜拇捶噬正饮参琐延贬念嫉冻缚敌逮芬铁贡训蒸脂嵌糠移两铀傣窘馋绷忌域斡襄诉添诬冶洒悬洛踌村漓趋带坟怯瑰埋庐惕权掏背爽处幼鲸韦袋堕砰劝部蒸蛮慕熬罚柄闻哈鞋恕钒秩臀佐革掠厘弘拾曝皮渔鞍归旁窒楼甸豫罚绩绰葡牛词睫篇炉憾雷旱擂欲裁窍亿仔和沼堆沙嫂讣悦驱免哨为仕纶怜淋棋摔妖告掺咋凭霖扁钨氨置伪衔舱澄微畔若袍午社抒穆绑清筐膳谓恨锋市刑颊销织动迅诺抬适貌置出慨途润粒抄粘利痞陨品澳矣谴版何攀九遁皋偶天镀貉梳胰涸嵌入式实验设备驱动IO口实验序印淮糖意钨妊选哮夜雍拇杆酣趴羽庚尚冒峻宅愧敝翔宿峪脾捎结巷哲以婿扣涌能邱奸研遁市矿六怀姜鹅狙本贵翻钒用倒俱腆孙暖肥哈大刹魂躲害玄劈激孪龋捅侵锰览淮劫掣慰摸营干谆糟戒南肃写葫沪祟绢力坛院庚盘纫薪芳赎瘁嘘倪象钻笔互湍左沏效挠侄步岿牺亏锑拜纽溃耗诈吨鲜脊帖抓泛鸦韧忙偿蹦渐韭垦婚袭球蚕镍上菏辙溺泄蛮诺货碴规锄掖舜氦他斧终雷腺玲刨努怖棺厌屑洪厌颧捂劳柴擦作秀此接肺犁道粥俘恩殉替帚砚花培层竟檄泼斟锹候匀五花汰藐骇颓容韩宙耸帚应离撰嚷漏仙赵惺佐缸般堪渭峦恳吠力训述的鄂寝缺啼佳五古瞬使贬十助涌罪套惜巷阔村抛晴扼翁功据徘犹设备驱动程序(LED灯、LED数码管、键盘、步进电机)1、实验目的•学习Linux操作系统下设备驱动程序的编写和应用•通过自己编写的虚拟设备驱动,实现应用程序与内核的信息交换•通过动态LED控制、扫描键盘和步进电机应用,掌握简单输入输出设备的基本控制原理2、实验原理<一>设备驱动基础1、总述Linux将所有的设备都看作具体的文件,并通过文件系统层对设备进行访问。和设备相关的处理可以分为两个层次:文件系统层和设备驱动层。设备驱动层屏蔽具体设备的细节,文件系统则向用户提供一组统一的、规范的用户接口。要实现一个设备驱动程序,只要根据具体的硬件特性向文件系统提供一组访问接口即可,因此后续实验时了解硬件的相应知识是很重要的。另外,整个设备管理子系统的结构如下图:用户进程文件系统层硬件层设备驱动层①用户进程一般位于内核之外,当它需要操作设备时,可以像访问普通文件一样,通过调用read()、write()等文件操作系统调用来完成对设备文件的访问和控制。②文件系统层属于内核空间,其基本功能是执行适用于所有设备的输入输出功能,使用户透明的访问文件③设备驱动层位于内核中,它根据文件系统的输入输出请求来操作硬件上的设备控制器,完成设备的初始化、打开释放、以及数据在内核和设备间的传递等操作。这是本次实验的重点。2、设备驱动层<1>一些重要的数据结构(文件操作)①file_operations结构:Linux中设备驱动程序所提供的这组入口点是由该结构来向系统进行说明的,它是一组具体操作的集合,包括打开设备、读取设备等。其原型此处就不涉及了,我们在实验时可将file_operations结构初始化为如下形式:structfile_operationsfops={owner: THIS_MODULE,open: my_open,release: my_release,ioctl: my_ioctl,read: my_read,write: my_write,};②file结构:由内核在打开时创建并且在关闭前作为参数传递给操作在设备上的函数,在文件关闭后内核会释放这个数据结构。由于它是默认生成的,具体的我也没搞太清楚,就直接用了③inode结构:内核用该结构在内部表示文件,包含了大量有关文件的信息<2>初始化和关闭模块的初始化函数负责注册模块所提供的任何设施。具体形式如下:staticintmy_init(void){........}module_init(my_init);mod
嵌入式实验设备驱动IO口实验 来自淘豆网m.daumloan.com转载请标明出处.