도와주세요!!
글 수 15,339
2006.01.16 09:42:22 (*.141.91.201)
6668
안녕하세요..
부트로더에서 설정을 수정해 주셔야 할것 같습니다.
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 할 수있게 설정을 되있는 부분이 있다는지
>아니면 제가 뭘 잘못하고 있는지 알고 싶습니다.
부트로더에서 설정을 수정해 주셔야 할것 같습니다.
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 할 수있게 설정을 되있는 부분이 있다는지
>아니면 제가 뭘 잘못하고 있는지 알고 싶습니다.