我们买的开发板是YLP2440,我们准备自己编写camera的的驱动,用的摄像头是开发板自带的OV9650。
但控制camera寄存器的时候遇到很奇怪的问题,对camera的寄存器操作无效,除此之外对lcd之类的寄存器都好用。 简单的代码如下:
unsigned long test; static void *CIGCTRL;
CIGCTRL = ioremap(0x4F000008,0x4); writel(0x80000000,CIGCTRL); test = readl(CIGCTRL); printk("CIGCTRL-----%x
",CIGCTRL);
最终串口打印信息显示CIGCTRL是0,也就是说我想输入的值0x80000000没有写入寄存器0x4F000008中。
但如果我向其它的寄存器写入此值,比如把0x4F000008换成lcd的一个寄存器0x4D000020,0x8000000就能够顺利的写入该寄存器。 我又试验了一下,好像camera所有的寄存器都不好用。 请问是不是在内核中与什么地方冲突了?
如果不用linux操作系统,在arm上裸跑的话,lcd和摄像头的操作都正常,这说明这些寄存器都是好用并能够读写的。
寄存器还能够屏蔽吗? 大家有没有遇到过此类的问题?请大家指点。 |