|
你好請教一個問題,就是在s3c6410的patform中, PA與VA的問題....
在s3c6410的spec中,定義register的位置為 0x70000000 開始, IRQ,LCD,...等也有
各自定義的位置, 但是在linux的kernel中,卻定義VA的位置如下....
linux/arch/arm/plat-samsung/include/plat/map-base.h
#define S3C_ADDR_BASE (0xF4000000)
#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 */
#define S3C_VA_LCD S3C_ADDR(0x01100000) /* LCD */
#define S3C_ADDR_CPU(x) S3C_ADDR(0x00500000 + (x))
在以上定義中,
1. #define S3C_ADDR_BASE (0xF4000000), 在kernel中為何定義0xF4000000這裡,如何通知kernel呢??
2. S3C_ADDR(0x00000000), S3C_ADDR(0x00100000), S3C_ADDR(0x00300000)....這些相對的offset是怎麼定義出來的呢?
因為在6410 spec中, UART/LCD/IRQ..等的關係並不是如定義中相同的...
謝謝.... |
|