tengyd 发表于 2005-12-15 17:17:43

关于2410的memory map的外设驱动开发

关于2410的memory map的外设驱动开发



我在一个2410的板上,做一个外设的driver
1。把外设的物理地址映射到2410的memory空间;
2。然后把这个地址作为基地址,加上偏移量,读写外设的寄存器;


目前,读外设的寄存器正常,但是写寄存器一部分正常,没有规律。


请叫各位大老,这么写driver是不是有错误?
请给我出一点注意,谢谢了。

yc200405 发表于 2005-12-21 21:24:01

是不是读写缓存造成的哦,内核是由延迟写的哈!

sanryhwang 发表于 2005-12-27 14:18:23

哈囉!!! 大家好

回應上一篇

可是有的暫存器可以寫入,比如說watchdog

各位有沒有什麼解法的!!!

THX:-D

tengyd 发表于 2005-12-29 10:53:54

我看linux driver的书上说到要把cache关掉

请问2410怎么关cache?需要操作 cp15 的c1寄存器,用C语言怎么操作?是否有已经定义好的宏阿?


谢谢。十分着急。。。。

tengyd 发表于 2005-12-29 11:13:11

外部设备使用的是cs2,16bit宽度。
我现在使用writeb可以把0-255区间的8位写入外部设备,但是高8位也写入了同样的值。
用writew可以把256-65535区间的高8位写入外部设备,但是低8位也写入了同样的值。
如果使用writeb写256-65535区间的数,就写入的都是0。
如果使用writew写0-255区间的数,就写入的也都是0。



急。奇怪。

tengyd 发表于 2006-1-5 14:36:47

已经使用汇编把cache禁止,但是linux报错,

cache Unable to handle kernel paging request at virtual address


在ioremap的时候,怎样做到控制地址map的时候,不使用cache和write buffer?

或是其它的什么原因?

有人知道吗?

lby147612 发表于 2007-10-16 21:41:59

编译时加上参数:-march=armv4 -mtune=arm9tdmi试试
页: [1]
查看完整版本: 关于2410的memory map的外设驱动开发