免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4245 | 回复: 4
打印 上一主题 下一主题

iowrite32和at91_sys_write的区别? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-14 10:15 |只看该作者 |倒序浏览
at91_sys_write(AT91_PIOC+PIO_IDR,(uint32)0xff<<19);
iowrite32(31040, (at91tc0_base + AT91_TC_RC));
我发现这2个函数都可以向某个寄存器写入数据,那这2个有什么区别吗?

论坛徽章:
0
2 [报告]
发表于 2013-08-14 11:03 |只看该作者
static inline void at91_sys_write(unsigned int reg_offset, unsigned long value)
{
        void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS;

        __raw_writel(value, addr + reg_offset);
}

#define writel(b,addr) __raw_writel(__cpu_to_le32(b),addr)

#define iowrite32(v, addr)      writel((v), (addr))

没什么大区别, iowrite32有小端转换,如果cpu就是小端,那就真没区别了
还有的形式上的区别,就是iowrite32是linux系统提供的

at91_sys_write是at91平台提供的



论坛徽章:
0
3 [报告]
发表于 2013-08-14 15:12 |只看该作者
本帖最后由 xifanlover 于 2013-08-14 15:20 编辑

谢谢大哥的回答,哥,我顺着这个问题再问下:
iowrite32(31040, (at91tc0_base + AT91_TC_RC));这个命令里的参数(at91tc0_base + AT91_TC_RC)我知道是虚拟地址,但是
at91_sys_write(AT91_PIOC+PIO_IDR,(uint32)0xff<<19); 这个命令里的参数AT91_PIOC+PIO_IDR我怎么感觉是物理地址呀!
AT91_PIOC头文件是这么定义的:#define AT91_BASE_SYS  0xffffe800  #define AT91_PIOC        (0xfffff800 - AT91_BASE_SYS);
PIO_IDR头文件是这么定义的:#define PIO_IDR                0x44        /* Interrupt Disable Register */
不知道我这个理解对不对?(感觉是错的,哈哈,linux都是处理虚拟地址的。)
另外,这个定义#define AT91_PIOC        (0xfffff800 - AT91_BASE_SYS);AT91_PIOC是取多少?是0x1000吗?











回复 2# wwxxxxll


   

论坛徽章:
0
4 [报告]
发表于 2013-08-14 15:55 |只看该作者
1 首先我说一下,虚拟地址和物理地址,不是从值来区分的,它们可能是一样的值。一般寄存器是一样的
让你看个mmu的映射实例
我们群的一位同志用的,mmu映射表,0xE000_0000 -- 0xFFFF_FFFF寄存器地址,虚拟地址和物理地址值一样
* MMU Table for SMDKC110
* 0x0000_0000 -- 0xBFFF_FFFF => Not Allowed
* 0xB000_0000 -- 0xB7FF_FFFF => A:0xB000_0000 -- 0xB7FF_FFFF        --->128M
* 0xC000_0000 -- 0xC7FF_FFFF => A:0x3000_0000 -- 0x37FF_FFFF        --->128M
* 0xC800_0000 -- 0xDFFF_FFFF => Not Allowed
* 0xE000_0000 -- 0xFFFF_FFFF => A:0xE000_0000 -- 0XFFFF_FFFF         --->512M

2 0xfffff800 - 0xffffe800 = 0x1000,有什么问题

可以加入我们群,问题会更快得到回复!
群号:163617970

论坛徽章:
0
5 [报告]
发表于 2013-08-14 16:02 |只看该作者
了解了,十分感谢!qq群肯定是要加的哦,哈哈!回复 4# wwxxxxll


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP