도와주세요!!
글 수 15,339
2006.06.30 17:05:59 (*.141.98.17)
6680
안녕하세요..
혹시 시리얼 포트에 H/W적으로 문제가 발생한것 아닌가요??
일단 Test 프로그램을 올려 놓겠습니다. 이 프로그램을 테스트하여 이상이 있으면 A/S를 보내 주셔야 할것 같습니다.
사용방법은 다음과 같습니다.
1. 다운받은 파일의 tar를 푼다
# tar -xvf ser_test2.tar
2. 풀린 ser_test2 실행파일을 타겟보드에 복사하거나, nfs 디렉토리에 복사한다.
3. 복사한 ser_test2 실행 파일을 타겟보드에서 실행한다.
4. 실행하기전 메뉴얼 P17의 내용을 보고 J9의 ttyS00 의 TXD (1번핀) 과 RXD(3번핀)을 쇼트시킨다.
또는 해당 TXD와 RXD를 시리얼 연결을 한다.
5. 아래의 명령으로 read/write 한다.
$ ./ser_test2 sttyS00 w &
$ ./ser_test2 sttyS00 r
아무런 반응의 없다면 H/W적으로 이상이 있는 것입니다.
A/S를 보내 주시면 TEST를 해 보겠습니다.
그럼 수고하세요..
>해도 해도 안되길래..
>
>메뉴얼 젤 마지막에있는..
>
>시리얼 소스로 테스트 해볼려구 해봤습니다..
>
>소스내용입니다..
>
>#include <stdio.h>
>#include <stdlib.h>
>#include <unistd.h>
>#include <string.h>
>#include <fcntl.h>
>#include <termios.h>
>#include <sys/ioctl.h>
>
>int main(int argc, char **argv)
>{
> int handle;
> struct termios oldtio, newtio;
> char *TitleMessage="Welcome Serial Portn";
> char Buff[255];
> int RxCount, loop, ending;
>
> handle = open("/dev/ttyS00", O_RDWR | O_NOCTTY);
> if(handle < 0)
> {
> printf("Serial Open Failn");
> exit(0);
> }
> tcgetattr(handle, &oldtio);
> memset(&newtio, 0, sizeof(newtio));
> newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
> newtio.c_iflag = IGNPAR;
> newtio.c_oflag = 0;
> // newtio.c_lflag = ICANON;
> newtio.c_lflag = 0;
> newtio.c_cc[VTIME] = 30;
> newtio.c_cc[VMIN] = 0;
>
> tcflush(handle, TCIFLUSH);
> tcsetattr(handle, TCSANOW, &newtio);
>
> write(handle,TitleMessage,strlen(TitleMessage));
>
> ending=0;
> while(!ending)
> {
> RxCount = read(handle,Buff,1);
> if(RxCount==0)
> {
> printf("Time outn");
> continue;
> }
> if(RxCount < 0)
> {
> printf("Read Errorn");
> break;
> }
> for(loop=0; loop<RxCount; loop++)
> {
> printf("Read Data [%c]n",Buff[loop]);
> if(Buff[loop]==0x1b)ending=1;
> }
> write(handle, Buff, RxCount);
> }
> tcsetattr(handle, TCSANOW, &oldtio);
> close(handle);
> return 0;
>}
>
>보드에서 실행시키면..
>
>계속 Time out만 나옵니다..
>
>이걸로 봐서는 포트는 열리는데
>
>전송이 안되는것 같은데요...
>
>어떻게 테스트해볼수도 없고..
>
>계속 소스만 이리고치고 저리 고쳐서 삽질만 하고잇습니다..ㅠ.ㅠ
혹시 시리얼 포트에 H/W적으로 문제가 발생한것 아닌가요??
일단 Test 프로그램을 올려 놓겠습니다. 이 프로그램을 테스트하여 이상이 있으면 A/S를 보내 주셔야 할것 같습니다.
사용방법은 다음과 같습니다.
1. 다운받은 파일의 tar를 푼다
# tar -xvf ser_test2.tar
2. 풀린 ser_test2 실행파일을 타겟보드에 복사하거나, nfs 디렉토리에 복사한다.
3. 복사한 ser_test2 실행 파일을 타겟보드에서 실행한다.
4. 실행하기전 메뉴얼 P17의 내용을 보고 J9의 ttyS00 의 TXD (1번핀) 과 RXD(3번핀)을 쇼트시킨다.
또는 해당 TXD와 RXD를 시리얼 연결을 한다.
5. 아래의 명령으로 read/write 한다.
$ ./ser_test2 sttyS00 w &
$ ./ser_test2 sttyS00 r
아무런 반응의 없다면 H/W적으로 이상이 있는 것입니다.
A/S를 보내 주시면 TEST를 해 보겠습니다.
그럼 수고하세요..
>해도 해도 안되길래..
>
>메뉴얼 젤 마지막에있는..
>
>시리얼 소스로 테스트 해볼려구 해봤습니다..
>
>소스내용입니다..
>
>#include <stdio.h>
>#include <stdlib.h>
>#include <unistd.h>
>#include <string.h>
>#include <fcntl.h>
>#include <termios.h>
>#include <sys/ioctl.h>
>
>int main(int argc, char **argv)
>{
> int handle;
> struct termios oldtio, newtio;
> char *TitleMessage="Welcome Serial Portn";
> char Buff[255];
> int RxCount, loop, ending;
>
> handle = open("/dev/ttyS00", O_RDWR | O_NOCTTY);
> if(handle < 0)
> {
> printf("Serial Open Failn");
> exit(0);
> }
> tcgetattr(handle, &oldtio);
> memset(&newtio, 0, sizeof(newtio));
> newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
> newtio.c_iflag = IGNPAR;
> newtio.c_oflag = 0;
> // newtio.c_lflag = ICANON;
> newtio.c_lflag = 0;
> newtio.c_cc[VTIME] = 30;
> newtio.c_cc[VMIN] = 0;
>
> tcflush(handle, TCIFLUSH);
> tcsetattr(handle, TCSANOW, &newtio);
>
> write(handle,TitleMessage,strlen(TitleMessage));
>
> ending=0;
> while(!ending)
> {
> RxCount = read(handle,Buff,1);
> if(RxCount==0)
> {
> printf("Time outn");
> continue;
> }
> if(RxCount < 0)
> {
> printf("Read Errorn");
> break;
> }
> for(loop=0; loop<RxCount; loop++)
> {
> printf("Read Data [%c]n",Buff[loop]);
> if(Buff[loop]==0x1b)ending=1;
> }
> write(handle, Buff, RxCount);
> }
> tcsetattr(handle, TCSANOW, &oldtio);
> close(handle);
> return 0;
>}
>
>보드에서 실행시키면..
>
>계속 Time out만 나옵니다..
>
>이걸로 봐서는 포트는 열리는데
>
>전송이 안되는것 같은데요...
>
>어떻게 테스트해볼수도 없고..
>
>계속 소스만 이리고치고 저리 고쳐서 삽질만 하고잇습니다..ㅠ.ㅠ