阅读:1260回复:0
uClinux的SL811驱动问题求救
编译uClinux时选了USB和SL811,驱动程序运行时发现无法从SL811的256字节空间中读取数据,即hc_sl811.c中的regTest函数总是失败。而且发现所读取的256字节数据全部是一样的,也就无法设置SL811的寄存器。
以下是详细的情况: 1. 硬件电路:硬件电路板是自己做的,是另外一个人做的,用的MPU是S3C4510B。SL811被放在了External I/O Bank1,SL811HST的nCS、A0和INTRQ连接如下: nCS <--> nECS1 A0 <--> ADDR10 INTRQ <--> GPIO10 2. uClinux及驱动修改:我根据硬件电路主要改了以下几个地方: asm/arch/hardware.h中DSX1改为1; 驱动中base_addr改为0x3604000(Ext I/O Bank1),data_reg_addr改为0x3604400,irq改为2,并修改了init_irq; 3. 问题现象:驱动运行到regTest时,发现从SL811数据端口读数据时并没有读到指定偏移处的数据,而是直接读取了0x3604400处的那一个字节。即若运行以下代码: *(volatile unsigned char *)(base_addr) = offset; data = *(volatile unsigned char *)(data_reg_addr); 则无论offset为何值,data得到的是data_reg_addr处真正的那个字节,而每有从SL811空间中offset处读取 这个问题快要把我折腾疯了。不知道是硬件问题呢还是驱动的问题。请大家救救我 |
|