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

不抱希望的问下几个驱动开发的问题?

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

    本文导语:  1)phys_to_virt(),ioreamp(),iomap(linux2.6没有了),IO_ADDRESS(),这几个咚咚都是用来把物理地址转换成虚拟地址的,有什么区别呢? 同一个物理地址通过以上方法转换后的地址不一样,转换后的地址有的能不读写,有的不能读写...

1)phys_to_virt(),ioreamp(),iomap(linux2.6没有了),IO_ADDRESS(),这几个咚咚都是用来把物理地址转换成虚拟地址的,有什么区别呢?
同一个物理地址通过以上方法转换后的地址不一样,转换后的地址有的能不读写,有的不能读写。ARM下访问一个硬件里的寄存器(告诉了其物理地址0x00214000),该用哪个函数转化成虚拟地址后访问呢。


2)linux2.4下,devfs_register()用来注册一个设备,可以在/dev目录下看到注册的设备名,
然后通过 mount 就可以读取设备了。linux 2.6 没有了这个函数,只能mknod 在/dev建一个,可是mount 显示没有改设备,有没有其他的函数能取代devfs_register的功能。

3)中断号(如:12)在linux2.4用request_irq下能申请,在linux2.6下却申请不到,可能的原因有哪些呢?

4)怎样把io端口直接映射到linux内核空间?
linux2.4下通过以下方式可以把物理地址0x0020000开始的连续256k的空间映射到0xf0000000的虚拟空间;
static struct map_desc mx1ads_io_desc[] __initdata = {
  { IO_ADDRESS(0x0020000),      0x0020000,        SZ_256K   , DOMAIN_IO, 0, 1}, 
};
以上的IO_ADDRESS(X) 为( (x)|0xf0000000).
在linux2.6下:
static struct map_desc imx_io_desc[] __initdata = {
{
.virtual = IO_ADDRESS(0x0020000),//IO_ADDRESS(X) 为((x)|0xe0000000
.pfn = __phys_to_pfn(0x0020000),
.length = SZ_256K,
.type = MT_DEVICE
}
};
出现的问题是,
在linux2.4下printk("the regiest value=%0xn",((*volatile unsigned long*)0xf0200000));没有问题
在linux2.6下printk("the regiest value=%0xn",((*volatile unsigned long*)0xe0200000));出错。
难道上面的映射的有问题吗?

5)linux2.4下有request_dma(),free_dma(),enable_dma(),来操作DMA,在linux2.6确没有了这些函数,该怎样移植这些函数呢?

6)lwn.net上的driver-transport实在是不能解决上面的问题,有没有其他资料来源?

|
phys_to_virt() 仅仅是内核来直接进行地址转换的,这个函数只是简单加减一个偏移量,比如一个确切的物理地址用来转换成内核可以识别的地址,如果0x00214000 是确切的物理地址,则应该用phys_to_virt,可以用__raw_readx __raw_writex 来访问试试
ioreamp() 会把物理地址映射到内核虚拟地址空间,可能会有页表操作,我觉得可以理解为纯粹的映射,要用readx writex 这样的存取操作
愚见遇见,纯属赚分 :)

|
#define IMX_IO_PHYS 0x00200000
0x00214000 - IMX_IO_PHYS + 0xe0000000

|
vaddr = phys_to_virt(0x00214000); __raw_readb(vaddr ) ; 试试啦

|
IO_ADDRESS(X) 为((x)|0xe0000000 你怎么断定IO地址偏移就是0xe0000000 呢?你的ARM 具体型号是什么的?0x00214000 在imx-arm 上倒是配置好了的

|
不抱希望的进来接几分

|
#define MMCSDR_BASE           IO_ADDRESS(0x00214000)   方法二不行
#define MMCSDR_BASE    __phys_to_virt(0x00214000) 
我觉得LZ这样定义不是很好的,宏第二次执行时,很难保证映射到同一地址

|
真正的高手是为了解决问题而不是为了得分,除了分之外还有很多美好的东西。不要一味着看着分是多少?

|
3) 说明有别的设备占用了这interrupt line.

|
不抱希望的接分

    
 
 

您可能感兴趣的文章:

  • 关于这个驱动规划,希望大家给点建议
  • 我的无线网卡的默认驱动名字为ath0,我希望给他换个名字比如adm1
  • Alsa音频驱动的问题,希望大家给点意见,不甚感激!
  • Linux下编译驱动,出了很多问题,希望各位帮我看看!
  • 做网战后台的开发工具!!希望给点意见,谢谢!
  • 希望大家指教和讨论,在linux下,能用来代替ActiveX控件的技术手段是什么,用什么工具开发?? iis7站长之家
  • JBuilder是很好,但仍希望在大家的帮助下制定便携式开发计划。。。
  • 哪里可以下载JAVA开发工具(除了SDK),希望体积小且好用!谢谢!
  • 希望大家指教和讨论,在linux下,能用来代替ActiveX控件的技术手段是什么,用什么工具开发??
  • Linux下的WEB开发,希望大家多讨论
  • 想学Unix开发,希望给介绍本好书@
  • 我最近学用jbuilder开发工具,不知道怎样把不同的jsp文件放在root directory下的不同的子目录下,希望各路高手多加指点
  • 希望了解java,能推荐一个好的开发工具和一本好的入门书籍吗?我以前直到现在都在用VC,接下来想在C#和java中选一个做为第二语言。
  • 技术大讨论!!为JSP开发上传组件!!!!可是我原创作品哦,希望能对一些人有些帮助,也希望高手指点
  • EJB的问题,希望用EJB做过开发的高手回答。
  • 以后 想从事嵌入式开发方面的工作,不知道前途怎么样啊??欢迎各位讨论,希望高指路
  • Linux开发方式探讨 和现存条件的 选择.我是一个刚从win到linux的门外汉,希望可以找到最合适的方法.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我希望安装linux,不过有些基础问题希望大家指教
  • 关于网络编程,不能达到希望的结果,希望各位高手指正一下!
  • 关于学习的疑问!希望各位给点意见!
  • 给个人提供J2EE培训!也希望大家看看这样的水平可以找到什么样的工作!(希望斑竹给个方便,不要删除我的帖子,绝对不是广告,万分感谢!)
  • 网络咖啡 希望你帮帮忙!
  • 这里有谁玩 U.C. Berkeley 的 NachOS?希望一同交流!
  • 希望能和这里的朋友认识一下!
  • JSP中怎样编写时间戳?希望能有现成的函数!
  • 我叛变了,开始学java了,希望大家多多关照!!
  • 只剩最后30分了,希望不会白问,james问题!
  • 请问PDP11机的体系结构,希望能给一些详细资料
  • 第一次进LINUX,希望大家多多照顾一下下弟!
  • crontab的问题,希望高手指教!谢谢!
  • 关于脚本的问题,希望能解决。
  • 我是个初学者,希望指点明津
  • 我是个菜鸟!有点问题,希望指教!
  • 最近想学linux。希望老鸟们进来提个建议。
  • 用java做mis系统怎么样,用什么软件较好?希望大家讨论,论者有分!
  • opensolaris 安装遇到的问题,希望得到你的帮助
  • 今天刚开了个freeBasic的中文论坛,希望大家一起来捧场,FB很强大支持LINUX的


  • 站内导航:


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

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

    浙ICP备11055608号-3