当前位置:  技术问答>linux和unix

请教2.6内核下的pci卡的驱动写法,分数绝对不是问题,要多少有多少。

    来源: 互联网  发布时间:2015-11-03

    本文导语:  小弟我才学linux和他的驱动,有好多问题搞不清楚,向大家请教。 我为一块pci卡写驱动,这块卡是视频直播编码器,定期产生编完码的数据,存在卡上的内存里。然后我写的驱动定期把数据读给用户进程。 假设最简...

小弟我才学linux和他的驱动,有好多问题搞不清楚,向大家请教。

我为一块pci卡写驱动,这块卡是视频直播编码器,定期产生编完码的数据,存在卡上的内存里。然后我写的驱动定期把数据读给用户进程。

假设最简单的情况,一个主机上插2块卡,每块卡支持两路,每路2个通道,一个音频,一个视频。每块卡上有32m内存用于存储产生的音视频数据。

请问我的驱动应该怎么个框架?我的设想如下:

首先,初始化,找到机器上插的这些卡。然后为每块卡调用pci_enable_device。然后再设置dma。

接着用户进程调用我的open。这里有俩个做法。1,给编码器下命令,再启动一个定时器,定期把卡上的数据读到主机的内核空间。2,给编码器下命令,然后什么也不做。

接着用户进程调用我的read,把数据读走,用dma方式。如果open采用方式1,那么用户从内核空间读走那些数据。如果open采用方式2,那么从pci卡直接读到用户进程空间。

读的时候分成两步,第一步发现是否有新数据,没有的话直接跳过,有的话启动一个dma,然后退出。第二步是有一个dma中断服务程序得到数据已经传送完毕的信号,做下一步处理。

整个情况就这么简单。
=====================================================================================
我有以下问题。
1,这两种情况哪种更好?

2,怎么在设备内存和主机内存作映射?
我知道要调用pci_resource_start和pci_resource_len得到pci卡上地址的起始,然后使用request_mem_region和ioremap和mmap或者别的什么函数。我对这个不明白,谁能写个很简单纳的例子说明?

3,怎么实现dma?我也不明白。

4,怎么响应dma的中断?

请大家给出简单的例子,谢谢。

|
问题1:
答:采用方法2较好。如果采用方法1,用户长时间没有读数据,那么卡产生的大量数据会占用大量的内存空间,迟早会把整个内存空间吃光。

问题2、3、4
建议你读一读《Linux 设备驱动程序》这本书。第二版有中文版,主要针对2.4内核。第三版有英文版,针对2.6内核。虽然我没看第三版,但在2.4内核中对pci总线已经有很好的支持,相信这几个问题的解决办法差别不大。

    
 
 

您可能感兴趣的文章:

  • make 文件的写法,请教大家 iis7站长之家
  • 请教一个bash脚本的写法
  • 请教一个SHELL的写法
  • 请教一个SH脚本的写法(在线等)
  • 请教一个正则表达式的写法。
  • make 文件的写法,请教大家
  • 请教3个问题:1.setleds设置numlock 2./dev/null写法的作用 3.关于path打通
  • 高分请教Makefile.am的写法
  • 请教一个Shell的写法,很简单的,但急急急
  • 工程化的makefile文件 写法 请教下
  • 请教一个makefile的写法和makedepend的问题
  • 请教含多个文件联编的makefile文件写法模板
  • JSP页面之间如何进行对象序列化传递???请教代码写法.I am online now。
  • 请教一个能自动登录FTP 服务器的脚本的 写法? ———— 搞定立刻给分。
  • 请教:这个makefile的写法
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • 请教一个linux进程内核栈的问题
  • 【请教】怎么修改linux内核参数
  • 请教,linux内核协议栈中,从内核往驱动发送的报文(注意是下行,不是上行),如何从sk_buff判断是组播数据报文还是组播协议报文????
  • 万能的CSDN啊,100分请教高手一个编译内核传参的问题!
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 80分请教关于内核的module机制
  • 请教内核ppp代码的内容——在线等
  • 请教高手:如何学习内核编程?
  • 请教内核编译的问题!
  • 请教Linux内核编译的问题
  • 初学Linux内核编译,几个问题请教一下
  • 请教:想学LINUX内核编程,请指点
  • 内核安装错误,请教!
  • 请教内核树的问题
  • 请教部分内核参数的意义
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 分数不封顶!请教!
  • 数字签名请教!!分数不够可以在加!!
  • 我不懂linux编程,但我还要拿出我所有的分数,请教大家一个问题?
  • 请教:使用java.net中httpURLConnection类模拟post方法?、、全部分数送上!
  • ?请教:十万火急使用java.net中httpURLConnection类模拟post方法?、、全部分数送
  • 请教, 关于session安全的问题! 分数多多!
  • (奉上所有分数)请教web server架设及实现web server后台程序交互。
  • 路由器问题,请教各位大侠。分数不是问题
  • 各位大侠:俺老王这厢有礼了 ,有个问题请教一下(关于unix下的多进程编程),分数好商量 呵呵
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3