io内存的页表访问与非页表访问

    今天看LDD3时发现了这样一段话,破解了我一直以来在驱动编写时io内存的访问中所带来的困惑。

    这段话的内容是这样:根据计算机平台和所使用的总线不同,i/o内存的访问可能是、也可能不是通过页表来访问的,如果访问时经由页表进行的,那么内核必须首先安排物理地址使其对设备驱动程序可见(这就意味着在进行任何i/o之前必须先调用ioremap()函数)。如果访问无需页表,那么i/o内存区域就非常类似于i/o端口,可以使用适当形式的函数来读写他们。

----------------------------------------------------------------------------------

    我之前的疑惑:在编写基于arm开发板的adc驱动时必须这样做:

之后才能对端口进行访问:

可见这个io内存的访问是基于页表访问的,

在我进行蜂鸣器驱动编写的时候,是这样进行,并没有调用ioremap来重新映射io地址。

可见这应该是io内存的非页表访问方式。现在终于明白了~~

 

----------------------------------------------------------------------------------

 

但是问题又来了,我怎样去区分或者是识别,哪些io内存是页表访问,哪些是非页表访问呢????????

 

 

    现在终于明白怎么样来区分io内存是页表访问还是非页表访问了,通过查看源代码,我们可以发现,针对以上的两个io内存(S3C2410_ADCCON与S3C2410_TCON)通过查看源码可以看到:

从代码可以看出原因,你看出了吗??呵呵~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值