안녕하세요..

부트로더에서 설정을 수정해 주셔야 할것 같습니다.

0x14000000라면 nCS5번이네요..

부트로더의 include/ez_x5.h에서

297    #define MSC_CS5_RT      ( 0 <<(0 +16))  
298    #define MSC_CS5_RBW     ( 1 <<(3 +16))  // nCS5 Bus Width       0:32-bit   1:16-bit
299    #define MSC_CS5_RDF     (15 <<(4 +16))  
300    #define MSC_CS5_RDN     ( 2 <<(8 +16))  
301    #define MSC_CS5_RRR     ( 2 <<(12+16))  
302    #define MSC_CS5_RBUFF  ( 0 <<(15+16))  

중 298의 MSC_CS5_RBW를 32bit로 바꾸어 주세요..

298    #define MSC_CS5_RBW     ( 0 <<(3 +16))  // nCS5 Bus Width       0:32-bit   1:16-bit

이렇게 하시고 다시 컴파일 하셨어 다운로드하시고 한번 해보세요..

그럼 수고하세요..




>안녕하세요. 질문이 있습니다.
>
>ez-x5보드에 TACT 스위치가 32개가 74_16C245를 통해서 연결되어 있습니다.
>아래 소스는 간단하게 키 스캔한걸 1초에 한번씩 시리얼로 내보내는건데요.
>
>아래 소스는  short 로 선언이 되어있으니깐 당연히  키 16개만 읽혀지는데요.
>
>그래서 32개 키 값을 다 읽기 위해 2번 처럼(long) 바꿨는데요.
>
>역시 16개만 읽혀지네요.
>
>별짓을 여러가지고 바꿀거 바꿔봤는데요 결과는 똑같구요.
>
>간단한 mmap 함수 사용이니깐 특별할것 없는것 같은데 안되네요.
>
>제가 모르는 부분이 있으시면 지적해주세요.
>
>
>
>
>///////////////////////////////////////////////  ------  1 번
>#define ADDR_PUSHBUTTON          0x14000000
>
>int key_scan(void)
>{
>
>  unsigned short  *button;
>
>  button = (volatile short *) mmap(NULL,4,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
>          
>  if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
>  
>  while(1)
>  {        
>        printf("key_value : %08xn",*button);        
>        sleep(1);
>  }
>        
>             return 0;
>}
>
>///////////////////////////////////////   ------------- 2 번
>
>#define ADDR_PUSHBUTTON          0x14000000
>
>int key_scan(void)
>{
>
>  unsigned long  *button;
>
>  button = (volatile long *) mmap(NULL,8,PROT_READ,MAP_SHARED,fd,ADDR_PUSHBUTTON);
>          
>  if((int)button<0){button=NULL; printf("mmap errorn"); return -1; }
>  
>  while(1)
>  {        
>        printf("key_value : %08xn",*button);        
>        sleep(1);
>  }
>        
>             return 0;
>}
>
>원래 16bit 만 읽혀지는건지 아니면 커널에서 16bit 만 access 할 수있게 설정을 되있는 부분이 있다는지
>아니면 제가 뭘 잘못하고 있는지 알고 싶습니다.