- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于 Linux 系统的 PCI 设备 DMA 驱动开发范哲超,
基于 Linux 系统的 PCI 设备 DMA 驱动开发
范哲超,吴永亮
(内蒙古机电职业技术学院,内蒙古 呼和浩特 010070)
摘要:目前 PCI 总线已经成为计算机系统中应用最为广泛最为通用的总线标准,Linux 的内核能较好地支持 PCI 总线。 文章探讨了在 Linux 系统下开发 PCI 主设备 DMA 驱动程序的基本过程。
关键词:Linux;DMA;驱动开发
中图分类号:TP311
文献标识码:A
文章编号:1673-1131(2014)04-0117-02
Linux 驱动程序实现 DMA 操作,涉及内存 I/O 端口操作、
中断操作、内存映射以及 DMA 映射过程等内容。DMA 传输 过程步骤如下:
(1)申请 I/O 资源、中断资源、内存资源,初始化。
(2)分配 DMA 缓冲区,设置 DMA 寄存器。
(3)硬件将数据写入到 DMA 缓冲区,写入完毕产生 PCI
中断。
(4)应答中断、并且唤醒进程读取数据。
I/O 端口是驱动程序与设备之间的通信方式,驱动程序需 要通过 I/O 端口对 DMA 寄存器设置,因此内核允许驱动程序 声明自己需要操作的 I/O 端口。在申请 I/O 端口之前调用 pci_ resource_start 获得 I/O 空间基地址,调用
request_region (unsigned long firstaddress,unsigned long length,const char *name)
在 Linux 系统模块中使用中断前要先申请中断通道(或者 中断请求 IRQ),使用完毕后释放中断,DevEx.irq 是设备中断 号,my_interrupt 是中断服务例程,SA_SHIRQ 中断管理选项 表示可以在设备间共享中断,DRV_NAM 获得中断设备名,PCI 设备结构体。
request_irq (DevEx.irq,my_interrupt,SA_SHIRQ,DRV_ NAME,DevEx)
free_irq(DevEx.irq,DevEx)
如果 request_irq 登记成功,在/proc/interrupts 文件中可以
看到所请求的中断。该文件只显示已经安装了驱动程序的中 断。调用 request_irq 的正确位置是在设备第一次被打开、硬 件被指示产生中断前,也就是在 open( )函数中调用。调用 free_ irq 的位置是设备最后关闭,硬件被通知不再需要中断处理器 的时候在 release( )中调用。
申请中断首先要确定设备使用哪条中断线,驱动程序可 以通过访问中断寄存器获得中断号。中断处理的另一个主 要问题是如何在处理程序中完成比较耗时的任务,Linux 解 决这个问题的方法是将中断处理程序分成两个部分:上半部 是通过 request_irq 函数注册的处理例程,下半部采用 Tasklet 机制处理,将中断服务程序中的任务转化为软中断完成。Tas- klet 机制类似内核定时器,差别在于 Tasklet 执行时间不确 定,依靠内核调度在某个其后的时间来执行确定的函数, DMA 传输中断下半部分通过使用 Tasklet 唤醒休眠进程,把 DMA 缓冲区的数据复制到用户缓冲区当中。与 Windows 中 断机制类似 Linux 下 DMA 中断服务例程(上半部分)判断当 前中断是否是本设备 DMA 中断,若是则表示 DMA 传输完 成,清除中断并撤消流式 DMA 映射缓冲区,调用 Tasklet 执 行中断下半部分。
执行 DMA 传输之前首先应该分配缓冲区。PCI 设备 DMA
传输缓冲的内存空间必须是连续物理内存块,申请物理内存
快捷的服务。
(2)网站查询模块:提供业主通过互联网打印缴款通知书、 查询维修资金的个人账户信息以及相关的政策法规、新闻公 告、办事指南等。
(3)财务管理模块:描述维修资金管理中心财务部门进行 相关财务管理时的业务定义和实现方式,对维修资金日常管 理过程中产生的各种财务数据进行统一管理与核算,最后产 生相应的财务报表。
系统二期建设工作将提供以下 2 个模块:
(1)资金使用模块:根据业主的申请,符合使用条件的小 区拨付维修资金,并按照使用的范围进行灵活方便的分摊计 算。
(2)业主网络投票模块:提供业主通过互联网对所在小区 的公共部位的维修资金的使用申请进行投票的方式,通过投 票决定是否使用维修资金。
系统三期建设工作将重点实现系统与 GIS 的整合,提供 用户基于 GIS 管理维修资金的科学平台。图形化管理模块: 提供用户基于 GIS(地理信息系统)的维修资金查询、管理、分 摊计算和辅助决策支持等功能。
3 结语
物业专项维修资金被称为
文档评论(0)