读写某个设备上的寄存器的过程


  以2.6.22为例, 访问某个设备上的寄存器的一般步骤为(假设该寄存器的物理地址为 phy_addr,要访问的大小为个4字节, 这可从datasheet上查到):
1 res_mem = request_mem_resouce(phy_addr, 4, "name");
    这个函数检查以phy_addr开始的4个字节是否在系统的资源树中可用, 如可用则申请它, 如不可用则返回失败.

2 vir_addr = ioremap(res_mem->start, res_mem->end - res_start + 1, "name")
   这个函数把我们需要访问的物理地址转换成虚拟地址,以后在程序中就可以直接访问这个虚拟地址了,  注意:
   如果步骤1成功的话,这里的res_mem 就等于 phy_addr, res_mem->end - res_start + 1 就等于 4

3 ioread32(vir_addr)  / iowrite32(vir_addr)
   这里就可以直接访问这个寄存器了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值