안녕하세요.
보드는 EZ-EP9312 사용하구요.
커널은 2.6.13.5-ez-ep931x 입니다.

memory mapping 을 하여 GPIO_PADR 데이터를 읽고자 합니다.
아래와 같은 테스트 코드를 작성했습니다.

     26 #include <termios.h>    /* getch */
     27 #include <unistd.h>
     28 #include <sys/mman.h>
     29 #include <asm/io.h>
     30 #include <asm/arch/regmap.h>
     31
     32 #define DEF_DEV_FILE    "/dev/mem"
     33 #define DEF_SIZE        4096    //0xF4
     34
     35 int     main( int argc, char **argv )
     36 {
     37     int fd;
     38     void *baseaddr ;
     39
     40     unsigned int *padr;
     41
     42     if( (fd = open( DEF_DEV_FILE, O_RDWR | O_SYNC)) < 0 )
     43     {
     44         perror( DEF_DEV_FILE" open : error ") ;
     45         exit(0);
     46     }
     47
     48     if( (baseaddr = (char *)mmap( 0, DEF_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIO_PADR) ) <= 0 )
     49     {
     50         perror( DEF_DEV_FILE" mmap: error ") ;
     51         exit(0);
     52     }
     53
     54 #if 0
     55
     56 #define IO_BASE_VIRT        0xE0000000  /* Virtual address of IO */
     57 #define IO_BASE_PHYS        0x80000000  /* Physical address of IO */
     58 #define GPIO_OFFSET         0x040000
     59
     60 #define EP93XX_APB_BASE     (IO_BASE_VIRT | 0x00800000)
     61 #define GPIO_BASE           (EP93XX_APB_BASE|GPIO_OFFSET)
     62 #define GPIO_PADR           (GPIO_BASE+0x00)    /* GPIO port A Aata register */
     63
     64
     65 cat /proc/iomem
     66 e0830000-e0830fff : 0x80830000:security
     67 e0840000-e0840fff : 0x80840000:gpio
     68 e0880000-e0880fff : 0x80880000:ac97
     69
     70 #endif
     71
     72     padr = (unsigned int*) (baseaddr) ;
     73
     74     printf("value   [0x%x] %xrn",*padr, GPIO_PADR) ;
     75
     76     if( baseaddr != NULL )  munmap(baseaddr,  DEF_SIZE) ;
     77
     78     close( fd ) ;
     79
     80     return 0 ;
     81 }

실행하면 생각한 값과 다른값을 가져옵니다.

[root@falinux mem-gpio-ex]$ ./mem-gpio-ex
value   [0x0] e0840000
[root@falinux mem-gpio-ex]$

32bit 레지스터 GPIO_PADR 의 경우 하위 8bit모두 HIGH 상태여 0xFF를 가져와야 할꺼같은데
그런데 0x0 으로 읽어지는군요.

코드에 뭔가 실수한게 있는지요? 조언부탁드립니다.