QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3129|回复: 6

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

[复制链接]
发表于 2005-12-15 17:17:43 | 显示全部楼层 |阅读模式
关于2410的memory map的外设驱动开发



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


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


请叫各位大老,这么写driver是不是有错误?
请给我出一点注意,谢谢了。
发表于 2005-12-21 21:24:01 | 显示全部楼层
是不是读写缓存造成的哦,内核是由延迟写的哈!
回复

使用道具 举报

发表于 2005-12-27 14:18:23 | 显示全部楼层
哈囉!!! 大家好

回應上一篇

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

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

THX  
回复

使用道具 举报

 楼主| 发表于 2005-12-29 10:53:54 | 显示全部楼层

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

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


谢谢。十分着急。。。。
回复

使用道具 举报

 楼主| 发表于 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。



急。奇怪。
回复

使用道具 举报

 楼主| 发表于 2006-1-5 14:36:47 | 显示全部楼层
已经使用汇编把cache禁止,但是linux报错,

cache Unable to handle kernel paging request at virtual address


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

或是其它的什么原因?

有人知道吗?
回复

使用道具 举报

发表于 2007-10-16 21:41:59 | 显示全部楼层
编译时加上参数:-march=armv4 -mtune=arm9tdmi  试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-28 19:06 , Processed in 0.055056 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表