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

[复制链接]
2397|3
 楼主| imlyi 发表于 2016-4-18 15:33 | 显示全部楼层 |阅读模式
很简单的一个问题,到我这不知道为什么就会出问题了。我目前能使用分数最高只有50,全给你们了。
开发板使用的imx6ul。
我要对weim对应的几个寄存器进行读写操作。
地址映射都没有问题,但是每次涉及到操作的时候,不管是读还是写直接就卡死在那个地方。比如说上面一个寄存器地址为: 21B_8000h
QQ图片20160418150606.png
物理地址映射:
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");

输出结果:
QQ拼音截图未命名.png
不用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

粉丝
快速回复 在线客服 返回列表 返回顶部