打印
[i.MX]

imx6物理地址映射之后读写操作死机,无法理解。在线等大...

[复制链接]
2076|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
imlyi|  楼主 | 2016-4-18 15:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
很简单的一个问题,到我这不知道为什么就会出问题了。我目前能使用分数最高只有50,全给你们了。
开发板使用的imx6ul。
我要对weim对应的几个寄存器进行读写操作。
地址映射都没有问题,但是每次涉及到操作的时候,不管是读还是写直接就卡死在那个地方。比如说上面一个寄存器地址为: 21B_8000h

物理地址映射:
void __iomem        *plx_membase;
    plx_membase = ioremap(0x21B8000, 0x80);        //物理地址映射
    if(NULL == plx_membase){
            printk("ioremap error\n");
    }
    printk("addr=%lx\n",(u_long)plx_membase);       //打印虚拟地址
    printk("shit: %d\n",readl(plx_membase));         //输出寄存器值,就是这这个地方卡死
    printk("+++++++++++++++++++++\n");

输出结果:

不用readl函数,直接使用输出 (*plx_membase) 也会卡死。
readw也会卡死。
以前用的335x的板子与三星的板子一直都这么用的,现在这个最基本的都没办法使用。
最开始怀疑是函数错了,去官方gpio驱动里面看了下别人也是这么用的:
        void __iomem *reg = port->base;
        u32  val;
        reg += GPIO_ICR1 + ((gpio & 0x10) >> 2); /* lower or upper register */
        val = readl(reg);

楼主现在整个人都不好了。
楼主换了好几个做测试结果发现有的地址可以,有的地址就不可以:
比如说:
021B_4000、0210_0000地址就可以。
但是唯独楼主要配置的这个寄存器不可以。
整个人都不好了,有知道怎么回事的大神吗,搞了好几天了,在线等!!!
万分感谢!










相关帖子

沙发
imlyi|  楼主 | 2016-4-26 10:41 | 只看该作者
果然没什么人回复,还是官方论坛好。。

使用特权

评论回复
板凳
kris_fei| | 2016-4-28 08:46 | 只看该作者
加个屏障试试

使用特权

评论回复
地板
mini1986| | 2016-5-9 15:39 | 只看该作者
楼主,搞定了没有?......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

0

粉丝