검색결과

'Boot Loader/Serial'에 해당되는 글 1건

시리얼 포트란?

2010. 10. 9. 14:29

시리얼 포트란?

시리얼 포트는 입/출력이 모두 가능합니다.

입력일 경우 : 호스트 피씨에서 타켓보드로 바이너리를 전송합니다. 즉, 시리얼 통신을 통해 타겟의 플래시 메모리에 전송해서 프로그램이 동작하게끔 해줍니다.

출력일 경우 : 디버깅용으로 사용하며 메시지가 타겟에서 호스트 피시로 출력을 시켜줍니다.


하드웨어 구성


망고보드에서는 rs-232c규격의 sp3232c 시러얼 전용칩을 사용했습니다.

RS-232C와 같은 규격의 시리얼 통신에서는 기본적으로 3개의 선이 사용됩니다.

데이터 전송을 위한 RxD, 수신을 위한 TxD, 그리고 GND로 이루어져있습니다.

추가적으로 RTS(Ready To Send)는 호스트가 받을 준비가 됐음을 나타내는 신호선,

CTS(Clear To Send)는 타겟보드가 받을 준비가 됐음을 나타내는 신호선을 뜻합니다.

RTS와 CTS는 주고 받을 때 동기식으로 통신하기 위해 사용하지만, 디버깅용으로 단순히 메시지 출력을 할땐 비동기식을 사용하므로 디버깅용으로 사용할때는 RTS,CTS는 사용하지 않는다고 봐도 무관합니다.

디버깅용으로는 CON307단자를 사용했습니다. 위 회로도를 보면 CON307단자는 SP3232c칩의 7,8핀에 연결되어 9,10번 핀에서 나옵니다.

sp3232c에서 나온 라인은 MCU(S5PC100)의 4개의 UART중 UART1번에 연결된 것을 볼 수 있습니다.

UART1_xxx가 GPA4, 5에 할당된 것을 알수 있습니다.

S5PC100의 datasheet를 통해 확인해보면

GPA4, 5는 UART1을 가리키는 것을 확인 할 수 있었습니다.

여기서 실제 소스 부분을 살펴보도록 하겠습니다.

../include/s5pc100.h

 

1430 #define ELFIN_UART_BASE 0XEC000000

1432 #define ELFIN_UART0_OFFSET 0x0000

1433 #define ELFIN_UART1_OFFSET 0x0400

1434 #define ELFIN_UART2_OFFSET 0x0800

1435 #define ELFIN_UART3_OFFSET 0x0c00

1437 #if defined(CONFIG_SERIAL1)

1438 #define ELFIN_UART_CONSOLE_BASE (ELFIN_UART_BASE + ELFIN_UART0_OFFSET)

1439 #elif defined(CONFIG_SERIAL2)

1440 #define ELFIN_UART_CONSOLE_BASE (ELFIN_UART_BASE + ELFIN_UART1_OFFSET)

1441 #elif defined(CONFIG_SERIAL3)

1442 #define ELFIN_UART_CONSOLE_BASE (ELFIN_UART_BASE + ELFIN_UART2_OFFSET)

1443 #elif defined(CONFIG_SERIAL4)

1444 #define ELFIN_UART_CONSOLE_BASE (ELFIN_UART_BASE + ELFIN_UART3_OFFSET)

1445 #else

1446 #define ELFIN_UART_CONSOLE_BASE (ELFIN_UART_BASE + ELFIN_UART0_OFFSET)

1447 #endif

위와 같이 s5pc100.h 부분을 보면 UART0는 CONFIG_SERIAL1이고, UART1은 CONFIG_SERIAL2 임을 알 수 있습니다.

../include/configs/smdkc100.h

#define CONFIG_SERIAL11 -> #define CONFIG_SERIAL2              1

망고보드는 UART1을 사용하기 때문에 CONFIG_SERIAL2를 define해주어야 합니다.

위와 같이 CONFIG_SERIAL2를 1로 설정해주도록 변경했습니다.


참고 : http://cafe.naver.com/embeddedcrazyboys/5271

 

New Post