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。。。。是依据什么得出来的?
请高手解答谢谢! 我也感觉很迷糊 这个你应该去看你芯片的寄存器的SPEC,最终都是去写的某个控制寄存器的位。 首先设定一个基准地址A(物理地址),这些寄存器在A中的偏移就是你所说的数值。
这些宏定义的都是虚拟地址,并且表示一个模块的控制器的起始地址,S3C_ADDR的值是0x30000000与基准地址进行线性计算的结果。 我刚开始也觉得很迷糊,但是经过仔细的分析,我得到了下面的分布图C:\Documents and Settings\lenovo\桌面\11.jpg 我大概画了画分布图 ding 不懂,想了解,帮顶:victory: 不错啊!就是要深入下去
页:
[1]