我在一个2410的板上,做一个外设的driver, 外部设备使用的是cs2,16bit宽度。
1。把外设的物理地址映射到2410的memory空间;
2。然后把这个地址作为基地址,加上偏移量,读写外设的寄存器;
目前,读外设的寄存器正常,
我现在使用writeb可以把0-255区间的8位写入外部设备,但是高8位也写入了同样的值。
用writew可以把256-65535区间的高8位写入外部设备,但是低8位也写入了同样的值。
如果使用writeb写256-65535区间的数,就写入的都是0。
如果使用writew写0-255区间的数,就写入的也都是0。
怀疑cache和write buffer在捣怪,已经使用汇编把cache禁止,但是linux报错:
cache Unable to handle kernel paging request at virtual address 0x
在ioremap的时候,怎样做到控制地址map的时候,不使用cache和write buffer?
或是其它的什么原因?
有高人能指点一下迷津。不胜感激
急急急。