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

关于ioremap的硬件访问与s2c2410的板级支持包

    来源: 互联网  发布时间:2017-03-02

    本文导语:  刚开始接触驱动 想打算自己从头写一个关于s3c2440的led的程序 对led寄存器进行访问的时候 我用到了ioremap函数 程序:base = ioremap(0x56000000,12); //将物理地址转化为虚拟地址      iowrite8(0xff,base); //写入控制寄存器  ...

刚开始接触驱动 想打算自己从头写一个关于s3c2440的led的程序 对led寄存器进行访问的时候 我用到了ioremap函数
程序:base = ioremap(0x56000000,12); //将物理地址转化为虚拟地址
     iowrite8(0xff,base); //写入控制寄存器
     iowrite8(0x00,base+0x08); //写入使能寄存器(GPFUP)
insmod 加载内核后没有出现问题
但是lsmod的时候 出现错误提示 unable   to   handle   kernel   paging request   at   virtual   address   7427636d (还有一堆指针寄存器数据 我觉得关键是这一句) 实在不知道是什么错误 为什么是在7427636d 跟ioremap有关系么?
1 是我内存请求错误?
2 还是说此地址已经被映射过?第二次映射就会出错(我搜索了有关信息,即使是多次ioremap得到的不同的虚拟地址都可以正确映射物理地址)


还有就是原程序是用板级支持包里附带的函数(s3c2410_gpio_getpin)来对引脚进行读写的 我逐一进入此函数以及相关函数 发现根本没有ioremap的影子 只是单纯的赋值 最后得出来的虚拟地址 比如:#define S3C24XX_VA_GPIO    ((S3C24XX_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)
难道对于ARM来说 IO内存的访问 虚拟地址和物理地址之间的差是一定的?

不知道我有没有讲明白我的问题.....还往各位指点!!

|
申请端口空间之前要调用request_mem_region申请资源,申请成功才能进行映射

|
同意楼上!还有不一定是这儿原因,在驱动中多添加printk,看看驱动哪儿出错了。printk才是最强悍的内核调试工具!

|
地址映射错误。。。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ioremap的使用问题
  • ioremap的问题
  • 请教如何使用ioremap函数
  • arm linux驱动编写中,能否直接进行ioremap?
  • 关于ioremape使用的一个小疑问
  • uclinux中ioremap的使用
  • ioremap()第二个参数怎么确定
  • 请教ioremap之后操作硬件地址的问题
  • USB驱动 OHCI寄存器 ioremap地址映射
  • 关于ioremap
  • 不知道那个ioremap_nocache不知道是作什么用得
  • ioremap内存映射 始终不能访问内存 求解
  • 刚开始学写驱动,请大家帮我看一下,ioremap上后怎么降数据拷贝到用户空间??


  • 站内导航:


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

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

    浙ICP备11055608号-3