hui_se0 发表于 2011-08-02 15:26

ARM GPIO物理地址与虚拟地址映射的问题

今天在阅读一个GPIO驱动程序的时候 遇到了寄存器映射的问题,后追踪到最底层的函数S3C_ADDR(x) 函数 在源代码中有如下 一些宏定义:
我现在的问题是:
#define S3C_VA_IRQ        S3C_ADDR(0x00000000)        /* irq controller(s) */
#define S3C_VA_SYS        S3C_ADDR(0x00100000)        /* system control */
#define S3C_VA_MEM        S3C_ADDR(0x00200000)        /* memory control */
#define S3C_VA_TIMER        S3C_ADDR(0x00300000)        /* timer block */
#define S3C_VA_WATCHDOG        S3C_ADDR(0x00400000)        /* watchdog */
#define S3C_VA_UART        S3C_ADDR(0x01000000)        /* UART */
这些宏定义中国的0x0x00000000,0x00100000。。。。是依据什么得出来的?
    请高手解答谢谢!

zcc8607 发表于 2011-08-05 09:55

我也感觉很迷糊

kinger1172 发表于 2011-08-14 07:43

这个你应该去看你芯片的寄存器的SPEC,最终都是去写的某个控制寄存器的位。

rqzrqh 发表于 2011-08-15 17:44

首先设定一个基准地址A(物理地址),这些寄存器在A中的偏移就是你所说的数值。
这些宏定义的都是虚拟地址,并且表示一个模块的控制器的起始地址,S3C_ADDR的值是0x30000000与基准地址进行线性计算的结果。

gongping11 发表于 2011-12-25 12:24

我刚开始也觉得很迷糊,但是经过仔细的分析,我得到了下面的分布图C:\Documents and Settings\lenovo\桌面\11.jpg

gongping11 发表于 2011-12-25 12:26

我大概画了画分布图

2012拾忆 发表于 2012-03-20 17:27

ding

yoveldf 发表于 2012-03-21 14:57

不懂,想了解,帮顶:victory:

anderson5198 发表于 2012-10-27 16:09

不错啊!就是要深入下去
页: [1]
查看完整版本: ARM GPIO物理地址与虚拟地址映射的问题