主题 : 请教ioremap问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
楼主  发表于: 2010-01-08 16:19

 请教ioremap问题

如果我将一个物理地址通过ioremap之后产生一个虚地址,对该虚地址进行读写的话,那么在总线上,送出的地址是物理地址呢,还是虚拟地址呢?
具体程序如下:
addr_sdram=ioremap(0x29000000,2);
iowrite16(data,addr_sdram);
我只摘出了这两行,提供的信息是否够用?谢谢高手们~

因为我之前做的程序测试出,地址总线送出的是29000000,但又不是很确定。
我将物理地址改为29000002之后,送出的地址为29000003(大概是的)。
求大侠指点
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-08 16:36
如果我将一个物理地址通过ioremap之后产生一个虚地址,对该虚地址进行读写的话,那么在总线上,送出的地址是物理地址呢,还是虚拟地址呢?

准确的说,在Memory Controller的地址总线上送出的永远是物理地址。当MMU开启时,是虚拟地址经过映射的物理地址;MMU没有开启式,物理地址等于虚拟地址
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
2楼  发表于: 2010-01-08 16:48
引用第1楼kasim于2010-01-08 16:36发表的  :

准确的说,在Memory Controller的地址总线上送出的永远是物理地址。当MMU开启时,是虚拟地址经过映射的物理地址;MMU没有开启式,物理地址等于虚拟地址

谢谢~
那为什么会出现29000002映射之后,送出29000003呢?