版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NeusoftInstituteofInformation嵌入式系统工程系--嵌入式Linux设备驱动开发目录一ARM体系结构三Linux板级LED驱动程序二GPIO访问作品简介Linux内核访问外设I/O资源的方式一、动态映射(ioremap)方式对I/O内存的操作需按如下步骤完成:
1.申请structresource*request_mem_region(unsignedlongstart,unsignedlonglen,char*name)
2.映射void*ioremap(unsignedlongphys_addr,unsignedlongsize)
3.访问unsignedioread8(void*addr)voidiowrite8(u8value,void*addr)
4.释放voidiounmap(void*addr)Linux内核访问外设I/O资源的方式一、动态映射(ioremap)方式定义#defineS3C2410_PA_IIS (0x55000000)映射our_card->regs=ioremap(S3C2410_PA_IIS,0x100);
访问readl(our_card->regs)writel(value,our_card->regs)Linux内核访问外设I/O资源的方式二、静态映射(map_desc)方式
通过map_desc结构体静态创建I/O资源映射表
内核或驱动中访问该I/O资源时则无需再进行ioreamp动态映射,可以直接通过映射后的I/O虚拟地址去访问./*include/asm-arm/mach/map.h*/
structmap_desc{
unsignedlongvirtual;
/*映射后的虚拟地址*/
unsignedlongpfn;
/*I/O资源物理地址所在的页帧号*/
unsignedlonglength;
/*I/O资源长度*/
unsignedinttype;
/*I/O资源类型*/
};二、静态映射(map_desc)方式staticstructmap_descs3c2410_iodesc[]__initdata={
{
.virtual
=
(unsignedlong)S3C24XX_VA_LCD),
.pfn
=
__phys_to_pfn(S3C24XX_PA_LCD),
.length
=
S3C24XX_SZ_LCD,
.type
=
MT_DEVICE
},
……
};Map_io成员函数会在系统初始化过程中被调用,流程如下:Start_kernel->setup_arch()-->paging_init()-->devicemaps_init()中被调用.
自动创建设备文件
创建设备文件的方法:
1.mknod手工创建
2.?自动创建(2.4内核)devfs_register(devfs_handle_tdir,constchar *name,unsignedintflags,unsignedint major,unsignedintminor,umode_tmode,void*ops, void*info)在指定的目录中创建设备文件。dir:目录名,为空表示在/dev/目录下创建;name:文件名;flags:创建标志;major:主设备号;minor:次设备号;mode:创建模式;ops:操作函数集;info:通常为空
自动创建(2.6内核)从Linux2.6.13开始,devfs不复存在,udev成为devfs的替代。相比devfs,udev(mdev)存在于应用层。利用udev(mdev)来实现设备文件的自动创建很简单,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用device_create创建对应的设备。自动创建(2.6内核)例:structclass*myclass=class_create(THIS_MODULE, “my_device_driver”);class_device_create(myclass,NULL,MKDEV(major_num,0),NULL, “my_device”);当驱动被加载时,udev(mdev)就会自动在/dev下创建my_device设备文件。staticstructclass*led_class;if(LED_MAJOR){ dev=MKDEV(LED_MAJOR,LED_MINOR); result=register_chrdev_region(dev,scull_nr_devs,"DEVICE_NAME
"); }else{ result=alloc_chrdev_region(&dev,LED_MINOR,scull_nr_devs,"DEVICE_NAME
"); LED_MAJOR=MAJOR(dev); }//注册一个类,使mdev可以在"/dev/"目录下面建立设备节点
led_class=class_create(THIS_MODULE,DEVICE_NAME); if(IS_ERR(led_class)) { printk("Err:failedinNeusoft-ledsclass.\n"); return-1; } //创建一个设备节点,节点名为DEVICE_NAME
class_device_create(led_class,NULL,MKDEV(LED_MAJOR,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学校服采购合同
- 2024补偿贸易借款合同范例
- 2024至2030年营养米项目投资价值分析报告
- 2024至2030年气流上料机项目投资价值分析报告
- 2024至2030年凹版塑料印刷油墨项目投资价值分析报告
- 2024年焊接机配件项目可行性研究报告
- IT技术服务合同
- 2024年单面保安刀片项目可行性研究报告
- 2024年光纤皮肤毛发显微放大成像系统项目可行性研究报告
- 2024至2030年中国聚四氟乙烯电器配件数据监测研究报告
- 《化工设备检维修实训》课程标准(煤炭清洁利用技术)
- 乳房下垂个案护理
- AI在航空航天领域中的应用
- 《果树嫁接技术》课件
- 餐饮员工心态培训课件
- 2024年注册消防工程师题库及参考答案【完整版】
- 维护儿童心理健康的案例分析
- 中考英语一模作文-征集“文化自信类”写作
- 打破性别刻板印象 课件-2023-2024学年高中下学期心理健康
- 中医合理膳食
- 早产儿脑出血预防
评论
0/150
提交评论