'serial'에 해당되는 글 2건
- 2007.12.06 Debug port, UART, Serial, COM에 대한 간단한 정리..
- 2007.12.06 Windows CE에서 Debug Port 설정
2007. 12. 6. 20:53
Debug port, UART, Serial, COM에 대한 간단한 정리..
2007. 12. 6. 20:53 in Windows Embedded/Windows Embedded CE 6.0
시리얼 관련해 흔히 혼동하는 부분('Debug Port', 'UART', 'Serial', 'COM')에 대해서 자료를 찾다가 좋은 문서가 있어서..
먼저 UART는 Universal Asynchronous Receiver/Transmitter로서 CPU에 붙어있는 interface이다.
URAT0, UART1, ...등으로 얘기를 많이 하고, Data 통신을 RS232와 같이 RX/TX serial하게 하기 때문에 보통 시리얼 포트라고 한다.
RS-232는 보통 컴퓨터에 붙어있는 connector이름이다.
시리얼(Serial)은 응용프로그램과 드라이버간의 인터페이스를 이야기하는 것으로, 시리얼 디바이스 드라이버라고 한다. UART 포트를 사용할 수 있는 드라이버..
응용프로그램은 UART포트가 0인지 1인지2인지를 알 수가 없다. 그래서 *.reg파일에 index를 할당하여COM의 번호를 할당해 준다.
COM은 UART의 Driver가 OS로 올라갈 때 COM이라는 이름으로 올라가는 것이다.
디버그 포트(Debug Port)는 OS에서 Debug용도(개발 보드에서 디버깅을 하기 위한 용도)로 사용하기 위해 설정하는 것이다. 흔히 하이퍼 터미널과 같은 것으로 부팅이나 프로그램 실행시 메시지를 확인하는 것이 디버깅 포트이다.
디버그 포트는 디바이스 드라이버가 올라가기 전부터 통신을 해야한다. 그래서 디버그 포트와 관련된 구현은 EBOOT, KERNEL쪽에 구현이 되어있다.
중요한 점은 Debug port와 UART의 driver가 같은 포트를 사용하게 되면 충돌이 일어나게 된다.
Debug port로 사용할 경우 UART를 사용할 수 없다는 말이다.
네이버 'WEEG 카페'에서 참고한 글임!!
'Windows Embedded > Windows Embedded CE 6.0' 카테고리의 다른 글
Windows CE BiosLoader에서 로고 바꾸기! (0) | 2007.12.17 |
---|---|
Windows CE Screen Rotation (0) | 2007.12.10 |
Windows CE에서 Debug Port 설정 (0) | 2007.12.06 |
Windows CE Boot Loader의 흐름 (0) | 2007.12.05 |
LDAP란.. 무엇일까요? (0) | 2007.12.04 |
2007. 12. 6. 15:13
Windows CE에서 Debug Port 설정
2007. 12. 6. 15:13 in Windows Embedded/Windows Embedded CE 6.0
Windows CE에서 부팅 시 어떠한 일들이 벌어지는지 혹은 부팅 이후에 어떤 작업을 할 시에 무슨 일이 일어나는지에 대한 내용을 호스트 PC에서 '하이퍼터미널'과 같은 콘솔을 이용하여 확인할 수 있다.
이러한 것들을 확인하기 위해서는 'Debug Port'가 활성화 되어 있어야 한다.
일반적으로 이러한 내용들은 'OAL의 함수들'이 처리를 하게 된다.
디버깅 포트에 관련된 부분들은 'Debug.c'라는 파일을 참고하면 된다.
이 파일에서 'Debug Port'를 초기화 하는 함수를 볼 수 있다.
void OEMInitDebugSerial(void)
{
InitBootInfo ((BOOT_ARGS *) ((ULONG)(*(PBYTE *)BOOT_ARG_PTR_LOCATION) | 0x80000000));
switch ( g_pX86Info->ucComPort ) {
case 1:
IoPortBase = (PUCHAR)COM1_BASE;
break;
case 2:
IoPortBase = (PUCHAR)COM2_BASE;
break;
case 3:
IoPortBase = (PUCHAR)COM3_BASE;
break;
case 4:
IoPortBase = (PUCHAR)COM4_BASE;
break;
default:
IoPortBase = 0;
break;
}
if ( IoPortBase ) {
WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x80);
WRITE_PORT_UCHAR(IoPortBase+comDivisorLow, g_pX86Info->ucBaudDivisor);
WRITE_PORT_UCHAR(IoPortBase+comDivisorHigh, 0x00);
WRITE_PORT_UCHAR(IoPortBase+comFIFOControl, 0x01);
WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x03);
WRITE_PORT_UCHAR(IoPortBase+comIntEnable, 0x00);
WRITE_PORT_UCHAR(IoPortBase+comModemControl, 0x03);
}
OEMWriteDebugString(TEXT("Debug Serial Init\r\n"));
}
Debug.c파일의 OEMInitDebugSerial()함수
시리얼로 사용될 수 있는 4개의 포트 중 하나의 포트를 선택하여 디버깅 포트로 사용한다는 내용이다.
현재 COM1을 디버깅 포트로 사용하고 있는데 이를 COM2로 수정하고자 한다면,
...와 같이 Port를 수정하여 설정을 바꾸어 주면 된다.
}
IoPortBase = (PUCHAR)COM2_BASE;
if(IoPortBase) {
...
디버깅 포트를 막고자 한다면.. IOPortBase = 0으로 세팅해 주면 된다.
...
}
IoPortBase = 0;
if(IoPortBase) {
...
물론 registry에서의 설정도 사용할려는 시리얼에 관련된 내용을 포함하고 있어야 한다.
'Windows Embedded > Windows Embedded CE 6.0' 카테고리의 다른 글
Windows CE Screen Rotation (0) | 2007.12.10 |
---|---|
Debug port, UART, Serial, COM에 대한 간단한 정리.. (0) | 2007.12.06 |
Windows CE Boot Loader의 흐름 (0) | 2007.12.05 |
LDAP란.. 무엇일까요? (0) | 2007.12.04 |
Windows CE Ship Build (0) | 2007.11.30 |