LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1413|回复: 1

如何设置物理虚拟地址映射?

[复制链接]
发表于 2005-7-27 20:11:32 | 显示全部楼层 |阅读模式
平台:s3c2410 mizi Linux2.4.18
有一芯片接到BANK4上,物理地址可知,为0x2000,0000。为了在驱动程序里面使用inw,outw进行访问,需要设置虚拟地址。
现在的问题是:
1、虚拟地址应该设为多少,为了防止冲突,如何查看已占有的虚拟地址范围?
2、如何进行映射啊?
发表于 2005-10-9 10:15:11 | 显示全部楼层
void *vaddr;
if (check_mem_region(0x20000000, SIZE)){
                printk(KERN_ERR"Memory already in use\n");
                goto ERROR;
}
request_mem_region(0x20000000, SIZE, "driver name");
vaddr = ioremap(0x20000000, SIZE);

value = readb(vaddr); /* 8 bit */
writeb(value, vaddr);
value = readw(vaddr);
writew(value, vaddr);
value = readl(vaddr); /* 32 bit */
writel(value, vaddr);

arm端口是内存映射的像是这样的用法也可以
value = *((unsigned long *)vaddr);
*((unsigned long *)vaddr) = value;

这样在/proc/meminfo中可以看到你所请求的mem region

io region mem region我也搞不清楚有什么具体差别
我们一起讨论吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

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