안녕하세요
임베디드 리눅스 드라이버를 보다가 궁금한점이 있어서 이렇게 글을 올림니다.
Physical address를 Virtual address로 변환하는 방법이 궁금한데요..
WINCE 같은경우에는 oemaddrtab_cfg.inc 파일이 있어서 Phycal address가 어디로 맵핑되는지 알수가 있었는데..
찾아보니 리눅스에서는 아래과 같이 변경을 하던데 0xF4000000 가 왜 더해지고 x 값은 어떠한 근거로 저런 값들이 더해지는지 이해가 되지 않습니다. 제가 ROM메모리의 physical address 0x30000000을 virtual address로 바꾸고 싶은데 어떤식으로 바꿔야 하는 알수가 없습니다.
이 부분에 관련하여 아시는 분은 답변좀 부탁드립니다.
감사합니다. ^^
#define S3C_ADDR(x) (0xF4000000 + (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) /* system 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 S3C64XX_VA_GPIO S3C_ADDR(0x00500000)