ioremap将物理地址映射为虚拟地址问题? 5
void*ioremap(unsignedlongoffset,unsignedlongsize);第一个问题:offset是只物理地址偏移吗,也就是物理地址的低20位,...
void *ioremap(unsigned long offset, unsigned long size);
第一个问题:offset是只物理地址偏移吗,也就是物理地址的低20位,高12位物理叶宽可以不用写是吧
第二个问题:#define rGPBCON (*(volatile unsigned *)0x56000010)这是裸机程序时的地址,这是物理地址吗?,物理地址不是在bank6吗,应该是从0x30000000开始到0x33fffffff
第三个问题:ioremap映射得到的虚拟地址是系统自动分配的吗,不能分配指定的地址吗?那驱动里头GPIO寄存器的的虚拟地址不是从指定了从0xf0e000000开始啊,用的是其他的什么映射函数吗?
第四个问题:模块驱动里头我都没有进行IO内存映射,直接使用s3c2410_gpio_getpin就看配置寄存器。
第五个问题:ARM体系机构没有IO端口是吧,也就是说不能用inb , outb 等指令 展开
第一个问题:offset是只物理地址偏移吗,也就是物理地址的低20位,高12位物理叶宽可以不用写是吧
第二个问题:#define rGPBCON (*(volatile unsigned *)0x56000010)这是裸机程序时的地址,这是物理地址吗?,物理地址不是在bank6吗,应该是从0x30000000开始到0x33fffffff
第三个问题:ioremap映射得到的虚拟地址是系统自动分配的吗,不能分配指定的地址吗?那驱动里头GPIO寄存器的的虚拟地址不是从指定了从0xf0e000000开始啊,用的是其他的什么映射函数吗?
第四个问题:模块驱动里头我都没有进行IO内存映射,直接使用s3c2410_gpio_getpin就看配置寄存器。
第五个问题:ARM体系机构没有IO端口是吧,也就是说不能用inb , outb 等指令 展开
5个回答
展开全部
首先,你的函数参数有点问题,应该是ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) ,或者ioremap(unsigned long phys_addr, unsigned long size); 比如: ioremap(0x70000000, 4);表明物理地址是0x70000000,长度4个字节(即32位).ioremap函数会自动将物理的io地址映射到线形地址,读写的时候可以使用ioread8,ioread16,ioread32,iowrite8iowrite16,iowrite32这样的函数,当然也可以直接使用返回的地址进行操作,但是不推荐,否则不好移植.
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
2012-10-13
展开全部
吉揉轮
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考资料:百度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不好意思。这个问题我帮不了你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-10-21
展开全部
不知道啊 啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询