제가 작업하고 있는 kernel source를 확인 했더니
[~/asm/arch/haware.h]
........
#define CONFIG_HDD_START 0x50000000
.........
#define HDD_BASE 0xE2000000 // VA of HDD
#define HDD_SIZE SZ_16M
#define HDD_START CONFIG_HDD_START // PA of HDD registers
로 정의 되어 있고
위의 값을 struct map_desc에 아래와 같이
[~/arch/arm/mach-dm320/core.c]
static struct map_desc itdm320_io_desc[] __initdata = {
..........
{ HDD_BASE, __phys_to_pfn(HDD_START), HDD_SIZE, MT_DEVICE },
............
};
저장 했을때
kernel에서 physical memory를 virtual로 mapping한 거라면
driver에서 접근 하는 memory 0x50400000 를 I/O memory로 mapping해서 사용하지 않고
0xE2400000에 직접 data를 쓰도록 고처서 했는데... 신호는 나가는데 그게 좀 이상해서...
device driver 에서 위와 같이
mapping된 virtual address를 사용하면 physical address에 접근이 가능하지 궁금합니다.
MMU 세팅 옵션중에 non-cache로 되어 있는지만 확인해 보시기 바랍니다.
2.6은 옵션이 있었나 없었나 가물하네요...ㅎㅎ
2.4는 확실히 있었습니다만
HDD_SIZE는 16메가까지 필요없을겁니다. pio mode일 경우는 몇개 접근하지 않거든요...대략 1M정도면 아마도 될겁니다.