S3C2440 访问IDE硬盘,为何读回的数据都是0?
韦东山
深圳百问网科技有限公司企业官方账号 2007-10-19 12:33:02 平台:S32440,linux 2.6.22,
硬盘连线:
CPU的 nGCS1/nGCS2 - 硬盘CS0/CS1
CPU的 Addr3~1 - 硬盘DA2~0
在linux内核中调试硬盘未成功,转到U-Boot下使一个个地操作寄存器。
发现如下问题:
1. 设置硬盘的跳线,作为从盘
2. 直接读取硬盘的Device/Head寄存器(linux中称为IDE_SELECT_REG),值为0x68
3. 往硬盘的Device/Head寄存器中写入0xa0,再回读,值为0x68
4. 往硬盘的Device/Head寄存器中写入0xb0,再回读,值为0x00
这证明硬盘是可以被选中的,但是为什么它的值为0?正确的应该是0xb0。
我又做了一个实验:
1. 设置硬盘的跳线,作为主盘
2. 直接读取硬盘的Device/Head寄存器,值为0x00
3. 往硬盘的Device/Head寄存器中写入0xa0,再回读,值为0x00
4. 往硬盘的Device/Head寄存器中写入0xb0,再回读,值为0x00
我每根信号线都量过了,连接没问题。
请问,为什么读回的值是0呢?
我只有一个万用表,不能进行太复杂的测试。