static int __devinit iis0_test_init(void)
{
unsigned char *virt;
virt = ioremap_nocache(0x7f002000, 0x100);
printk("IISCON a = 0x%x\n", *((unsigned int*)(virt)) );
*((unsigned int*)(virt)) = (1<<2)|1;
printk("IISCON b = 0x%x\n", *((unsigned int*)(virt)) );
printk("IISCON d = 0x%x\n", *((unsigned int*)(virt)) );
iounmap(virt);
return 0;
}
static void __exit iis0_test_exit(void)
{
}
module_init(iis0_test_init);
module_exit(iis0_test_exit);
MODULE_LICENSE("GPL");
编译加载进去运行,发现 register 写不进去,运行的结果是:
IISCON a=0xe00
IISCON b=0x5
IISCON d=0xe00
IISCON 的寄存器默认值是 0xe00, 也就是说,写没有生效。
这个问题只是在 linux 中运行有问题,在 u-boot 中我测试过是可以写进去的,没有问题的,不知道原因是什么,
哪位高手能帮帮忙啊,谢了!
5 个解决方案
#1
自己解决了
#2
怎么解决的?
#3
PCLK的时钟需要打开,系统默认没有打开,打开了就OK了
#4
?????
#5
是啊,外部端口都用到PCLK分频的。
#1
自己解决了
#2
怎么解决的?
#3
PCLK的时钟需要打开,系统默认没有打开,打开了就OK了
#4
?????
#5
是啊,外部端口都用到PCLK分频的。