版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型活动场馆亮化施工方案
- 科技公司党支部换届选举方案
- 工业厂房金属门设计与安装方案
- 电子商务平台信息化建设方案
- 医院安全文化建设实施方案
- 市政公用工程造价咨询实施方案
- 生态民宿建设方案与运营策略
- 教育机构采购内部控制制度的合规要求
- 《五石之瓠》教学设计
- 国际文化交流阅读活动方案
- Unit 3 My friends Part C Story time(教学设计)-2024-2025学年人教PEP版英语四年级上册
- 2024中国海油校园招聘2024人(高频重点提升专题训练)共500题附带答案详解
- 2024八年级数学上册第十五章分式检测题含解析新版新人教版
- 孙中山诞辰纪念日主题班会主题班会
- 2024国开大学《经济学基础》形考任务2答案
- 八年级地理上册 4.1《交通运输》教案 (新版)新人教版
- 2024-2025学年新教材高中生物 第五章 细胞的能量供应和利用 第2节 1 细胞的能量“货币”ATP教案 新人教版必修1
- 2024年团务附有答案
- 2024年安徽省合肥市中考语文题卷(含答案)
- 比赛中的行为经济学
- G -B- 43630-2023 塔式和机架式服务器能效限定值及能效等级(正式版)
评论
0/150
提交评论