现在的位置: 首页 > 综合 > 正文

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

2013年03月08日 ⁄ 综合 ⁄ 共 1186字 ⁄ 字号 评论关闭

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

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

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

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

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

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

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

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

 

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

 

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

 

 

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

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

抱歉!评论已关闭.