이것저것/My_Work

[WinCE] EMDK-4000 시리얼 포트 제어

우담바라 2007. 3. 23. 17:58

EMDK-4000 보드는, 3개의 시리얼 포트가있다
초기에는 UART0는  디버그 메시지가 출력,
             UART1는 EXT/TTL 스위치를 이용하여 각각 다른기능을 구현할수있다.
             UART12는 적외선 통신용으로 사용된다.

기본 설정
=> UART0 port 에서 Debug 메시지 출력


참고1> UART0를 타 보드와 시리얼로 테스트를 하고자 할때는, Debug 출력을 uart1 변경을 하고,
           Registry 에서 UART0을 사용하도록 셋팅해야한다.
참고2> UART1을 통신용 포트로 사용하기위해서는 하드웨어적으로 아마 0옴 저항을 추가적으로
          연결해줘야 할것이며, Debug 출력을 uart0 변경을 하고, Registry 에서 UART1을 사용하도록 셋팅해야
          한다. 스위치는 TTL 모드로 두고 테스트를 해야할것이다.

                               WinCE에서 시리얼 통신 테스트 할수 있는 프로그램을 첨부한다.

 
시리얼 관련 셋팅을 확인 해야 할 곳.
C:\WINCE500\PLATFORM\SMDK2440A\Src\Kernel\Oal\debug.c   [디버그 메시지 출력 관련]
C:\WINCE500\PLATFORM\SMDK2440A\Files\platfrom.reg               [레지 스터]
C:\WINCE500\PLATFORM\SMDK2440A\Src\Drivers\Serial             [셋팅 소스]




ex) EMDK-4000 에서 'COM0'를 PC와 시리얼 통신으로 사용가능하게 하기
1> C:\WINCE500\PLATFORM\SMDK2440A\Src\Kernel\Oal\debug.c 파일 오픈
 
   #define DEBUGSERIAL 0 => #define DEBUGSERIAL 1  변경
  
2> C:\WINCE500\PLATFORM\SMDK2440A\Files\platfrom.reg 파일 오픈,
     아래와 같은 부분을 찾을수 있다.

;=============== UART1 (physical COM1 connector P1) (Serial) ===============
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
   "DeviceArrayIndex"=dword:0
;   "Irq"=dword:1c ; for UART0
   "Irq"=dword:17 ; for UART1
;   "MemBase"=dword:50000000 ; for UART0
   "MemBase"=dword:50004000 ; for UART1
   "MemLen"=dword:2C
;   "InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit.
   "InterruptBitsShift"=dword:3 ; UART 1 Interrupt Sub Register shift bit.
   "ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.
   "Prefix"="COM"
   "Index"=dword:1
   "Dll"="serial_smdk2440.dll"
   "Order"=dword:0
   "Priority"=dword:0
   "Port"="COM1:"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_DISPLAYNAME_COM1
   "Tsp"="unimodem.dll"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00
;================================================================================================

여기에서 ';'로 주석 처리 되어 있는 UART0 을 풀어주고, UART1 을 주석 처리한다.

결과....

;=============== UART1 (physical COM1 connector P1) (Serial) ===============
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
   "DeviceArrayIndex"=dword:0
   "Irq"=dword:1c ; for UART0
;   "Irq"=dword:17 ; for UART1
   "MemBase"=dword:50000000 ; for UART0
;   "MemBase"=dword:50004000 ; for UART1
   "MemLen"=dword:2C
   "InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit.
;   "InterruptBitsShift"=dword:3 ; UART 1 Interrupt Sub Register shift bit.
   "ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.
   "Prefix"="COM"
   "Index"=dword:1
   "Dll"="serial_smdk2440.dll"
   "Order"=dword:0
   "Priority"=dword:0
   "Port"="COM1:"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_DISPLAYNAME_COM1
   "Tsp"="unimodem.dll"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

'이것저것 > My_Work' 카테고리의 다른 글

[자 작] - Microsofr Visual SourceSafe2005 / Microsofr Visual Studio2005 설치  (0) 2007.03.28
vss  (0) 2007.03.28
What is Virtual Memory?  (0) 2007.03.23
Bluetooth Stack Architecture  (0) 2007.03.21
[EMDK-4000] - u-boot 설치  (0) 2007.03.09