도와주세요!!
글 수 15,339
2002.12.21 11:41:38 (*.186.48.184)
6753
안녕하세요...
데이터를 받는(RX) PC의 속도를 조절하여 보세요...
B4800 일때 9600
B9600 일때 19200
B19200 일때 38400
B57600 일때 115200
만약 위와 같이 속도조절을 하여 정상적으로 수신이 되면
커널에서 아래 부분의 패치가 잘못된것 같습니다..
커널의 include/asm-arm/arch-sa1100/serial.h 의 내용
===============================================================================
* include/asm-arm/arch-sa1100/serial.h
* (C) 1999 Nicolas Pitre
*
* All this is intended to be used with a 16550-like UART on the SA1100's
* PCMCIA bus. It has nothing to do with the SA1100's internal serial ports.
* This is included by serial.c -- serial_sa1100.c makes no use of it.
*/
/*
* This assumes you have a 1.8432 MHz clock for your UART.
*
* It'd be nice if someone built a serial card with a 24.576 MHz
* clock, since the 16550A is capable of handling a top speed of 1.5
* megabits/second; but this requires the faster clock.
*/
#define BASE_BAUD ( 3686400/16 ) <<<<====== [수정 부분]
/* Standard COM flags */
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
#define RS_TABLE_SIZE 16
/*
* Rather empty table...
* Hardwired serial ports should be defined here.
* PCMCIA will fill it dynamically.
*/
#define STD_SERIAL_PORT_DEFNS
/* UART CLK PORT IRQ FLAGS */
{ 0, BASE_BAUD, 0xf0200100, IRQ_GPIO3, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200000, IRQ_GPIO7, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200300, IRQ_GPIO11, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200200, IRQ_GPIO15, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200500, IRQ_GPIO4, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200400, IRQ_GPIO8, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200700, IRQ_GPIO12, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200600, IRQ_GPIO16, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200900, IRQ_GPIO5, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200800, IRQ_GPIO9, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200b00, IRQ_GPIO13, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200a00, IRQ_GPIO17, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200d00, IRQ_GPIO2, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200c00, IRQ_GPIO6, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200f00, IRQ_GPIO10, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200e00, IRQ_GPIO14, STD_COM_FLAGS }
#define EXTRA_SERIAL_PORT_DEFNS
===============================================================================
#define BASE_BAUD ( 1843200/16 ) ==>> #define BASE_BAUD ( 3686400/16 )
또는 아래와 같이 되어 있으면..
#define BASE_BAUD ( 3686400/32 ) ==>> #define BASE_BAUD ( 3686400/16 )
수정해주세요...
성명제 wrote..
: 속도 : 9600BPS, 포트번호 : PORT0
: 구입한 test 프로그램으로 테스트. (./test w )
: 이지보드에서 보낸 데이터를 PC 에서 수신하려 했습니다. 하지만
: 보낸 데이터가 제대로 수신되지 않더군요. PC는 리눅스가 설치된 PC와
: 윈도우즈가 설치된 노트북 두개를 이용했지만 모두 이상한 데이터만 들어오더
: 군요.
: 결국 멀티포트의 각 핀을 스코프로 확인하였습니다. 위에서 보기에 가장 오
: 른쪽 위에 있는 핀이 TX 핀이 맞지요? 이 핀을 통해서 데이터가 나오더라고
: 요.
: 그런데 이 TX 핀을 PC의 RX 핀에 연결하면 데이터가 깨집니다. 일반적으로 정
: 상이라면 구형파의 형태를 보여야 하지만 RX핀을 연결하면 데이터가 거의 산
: 모양으로 깨지기 시작합니다.
: 이 현상은 멀티포트의 RX와 TX를 쇼트시켰을 경우에도 발생합니다. 결국 자
: 기가 보낸 데이터도 자신이 받지 못하게 됩니다.
: 어떻게 해결해야 하나요????
: 물론 구입한 멀티포트에 사용되는 케이블을 이용하였습니다.
데이터를 받는(RX) PC의 속도를 조절하여 보세요...
B4800 일때 9600
B9600 일때 19200
B19200 일때 38400
B57600 일때 115200
만약 위와 같이 속도조절을 하여 정상적으로 수신이 되면
커널에서 아래 부분의 패치가 잘못된것 같습니다..
커널의 include/asm-arm/arch-sa1100/serial.h 의 내용
===============================================================================
* include/asm-arm/arch-sa1100/serial.h
* (C) 1999 Nicolas Pitre
*
* All this is intended to be used with a 16550-like UART on the SA1100's
* PCMCIA bus. It has nothing to do with the SA1100's internal serial ports.
* This is included by serial.c -- serial_sa1100.c makes no use of it.
*/
/*
* This assumes you have a 1.8432 MHz clock for your UART.
*
* It'd be nice if someone built a serial card with a 24.576 MHz
* clock, since the 16550A is capable of handling a top speed of 1.5
* megabits/second; but this requires the faster clock.
*/
#define BASE_BAUD ( 3686400/16 ) <<<<====== [수정 부분]
/* Standard COM flags */
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
#define RS_TABLE_SIZE 16
/*
* Rather empty table...
* Hardwired serial ports should be defined here.
* PCMCIA will fill it dynamically.
*/
#define STD_SERIAL_PORT_DEFNS
/* UART CLK PORT IRQ FLAGS */
{ 0, BASE_BAUD, 0xf0200100, IRQ_GPIO3, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200000, IRQ_GPIO7, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200300, IRQ_GPIO11, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200200, IRQ_GPIO15, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200500, IRQ_GPIO4, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200400, IRQ_GPIO8, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200700, IRQ_GPIO12, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200600, IRQ_GPIO16, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200900, IRQ_GPIO5, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200800, IRQ_GPIO9, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200b00, IRQ_GPIO13, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200a00, IRQ_GPIO17, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200d00, IRQ_GPIO2, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200c00, IRQ_GPIO6, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200f00, IRQ_GPIO10, STD_COM_FLAGS },
{ 0, BASE_BAUD, 0xf0200e00, IRQ_GPIO14, STD_COM_FLAGS }
#define EXTRA_SERIAL_PORT_DEFNS
===============================================================================
#define BASE_BAUD ( 1843200/16 ) ==>> #define BASE_BAUD ( 3686400/16 )
또는 아래와 같이 되어 있으면..
#define BASE_BAUD ( 3686400/32 ) ==>> #define BASE_BAUD ( 3686400/16 )
수정해주세요...
성명제 wrote..
: 속도 : 9600BPS, 포트번호 : PORT0
: 구입한 test 프로그램으로 테스트. (./test w )
: 이지보드에서 보낸 데이터를 PC 에서 수신하려 했습니다. 하지만
: 보낸 데이터가 제대로 수신되지 않더군요. PC는 리눅스가 설치된 PC와
: 윈도우즈가 설치된 노트북 두개를 이용했지만 모두 이상한 데이터만 들어오더
: 군요.
: 결국 멀티포트의 각 핀을 스코프로 확인하였습니다. 위에서 보기에 가장 오
: 른쪽 위에 있는 핀이 TX 핀이 맞지요? 이 핀을 통해서 데이터가 나오더라고
: 요.
: 그런데 이 TX 핀을 PC의 RX 핀에 연결하면 데이터가 깨집니다. 일반적으로 정
: 상이라면 구형파의 형태를 보여야 하지만 RX핀을 연결하면 데이터가 거의 산
: 모양으로 깨지기 시작합니다.
: 이 현상은 멀티포트의 RX와 TX를 쇼트시켰을 경우에도 발생합니다. 결국 자
: 기가 보낸 데이터도 자신이 받지 못하게 됩니다.
: 어떻게 해결해야 하나요????
: 물론 구입한 멀티포트에 사용되는 케이블을 이용하였습니다.