+ -
当前位置:首页 → 问答吧 → 看看这个代码?

看看这个代码?

时间:2006-08-11

来源:互联网

#define IMX_IO_PHYS  0x00200000
#define IMX_IO_SIZE  0x00100000
#define IMX_IO_BASE  0xe0000000

#define IO_ADDRESS(x) ((x) | IMX_IO_BASE)

以上是arm内核中的代码

为什么我的驱动,读写物理地址0x00210000的寄存器会出错

printk("the reg value=%d",*((u32*)0xe0210000) ) //出错
#define DBMX1_GIUS_B     ioremap(0x0021c120,4) //

*(u32 *)DBMX1_GIUS_B &= 0xFFFFC0FF;

printk(the value =%0x\n",*(u32 *)DBMX1_GIUS_B))     // 为什么这句会使系统崩溃      

作者: wuiiszsu   发布时间: 2006-08-11

#define IMX_IO_PHYS  0x00200000
#define IMX_IO_SIZE  0x00100000
#define IMX_IO_BASE  0xe0000000
  
#define IO_ADDRESS(x) ((x) | IMX_IO_BASE)
  
以上是arm内核中的代码
  
为什么我的驱动,读写物理地址0x00210000的寄存器会出错
  
printk("the reg value=%d",*((u32*)0xe0210000) ) //出错
#define DBMX1_GIUS_B     ioremap(0x0021c120,4) //
  
*(u32 *)DBMX1_GIUS_B &= 0xFFFFC0FF;
  
printk(the value =%0x\n",*(u32 *)DBMX1_GIUS_B))     // 为什么这句会使系统崩溃


/////////////////////////////////////
首先ioremap是没有类型返回的。在 *(u32 *)DBMX1_GIUS_B &= 0xFFFFC0FF;中得到的地址是不确定的。在printk中用到的地址有可能就可能访问了内核的空间地址。      

作者: xiaofeiwenzi   发布时间: 2006-08-15

热门下载

更多