'WEEG'에 해당되는 글 4건

  1. 2008.05.27 LX800에서 이더넷 다운로드 시 리붓되는 문제
  2. 2007.12.06 Debug port, UART, Serial, COM에 대한 간단한 정리..
  3. 2007.11.30 Windows CE Ship Build
  4. 2007.11.15 X86 보드에서 HDD로 바로 부팅하기!
2008. 5. 27. 12:03

LX800에서 이더넷 다운로드 시 리붓되는 문제



LX800을 가지고 Windows Embedded CE 6.0작업을 했었고.. 요즘도 틈틈히 작업을 하고 있는데... ^^;
계속 USB를 가지고 Nk.bin 이미지를 HDD또는 SSD에 하드카피해서 부팅하는 방식을 사용했었다.

그러다 문득.. 하드카피 말고.. eboot를 사용해 이더넷으로 다운로드를 해야할 상황이 발생해 버린것..
여기 저기 자료도 찾고, 아는 분을 통해 질문도 하고 해서 정상적으로 다운로드를 할 수 있게 되었다. 하는 도중 몇가지 팁이랄까? 그런게 있어서 일단 포스팅!!

기억력의 감퇴로.. 다음에 하면.. 해결을 하지 못할 듯 해서.. -_-;;

아... 이것도 대략 두 주 전에 했던 작업이라.. 기억이 ㄷㄷㄷ

음..
아... 이더넷으로 다운로드 할 때 문제점 중 하나가 다운로드 중 자꾸 죽는 현상이 발생했다. 리붓되고,  또 리붓되고... -_-

이에 대한 문제점은 RTL8139의 소스를 약간 손을 보는 것으로 해결을 했다. 물론.. 검색의 힘으로.. ^^;
아.. 참고로 이더넷 다운로드를 하려면.. RTL8139를 사용하는게 가장 나을 듯 하다.. 아니면.. 다른 CE Platform Builder가 제공하는 이더넷 카드를 사용하던지..
이에 대한 부분은 "..\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG" 이 부분을 참조하면 될 듯 하다. CE에서 제공하는 이더넷 드라이버들인듯...

아.. 다시 원점으로 돌아가서.. 다운로드 시 리붓되는 현상을 막기 위해서는..
"..\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\RTL8139\rtl8139.c"
에서 RTL8139GetFrame()이라는 함수를 수정해 주면 된다... 된다고 한다.. ^^;

RTL8139GetFrame()에서 다음의 부분을 찾아서 주석처리를 해주자!!
if (PacketHeader.usPacketHeader & BAD_RX_PACKET)
{
 /*   
            PRINTF (1, ("Bad RX packet [Header: 0x%x -- Length : [%d]]...\r\n",
                PacketHeader.usPacketHeader,
                PacketHeader.usPacketLength));

            // ack the interrupt so we can get interrupted again
            WRITE_PORT_USHORT(
                RTL_ISR,
                dwISR & 5 );
   
            pucRxBuffer = ExtractData(
                            pucRxBuffer,
                            sRTL8139.pucRxBuffer,
                            sRTL8139.puLastRxAddress,
                            pbData,
                            PacketHeader.usPacketLength);

            sRTL8139.dwCurrentRxOffset =
                (pucRxBuffer - sRTL8139.pucRxBuffer + 3) & ~3;

            WRITE_PORT_USHORT(
                RTL_CAPR,
                (USHORT)(sRTL8139.dwCurrentRxOffset - 0x10));

*/
            return 0x00;
}

다시 빌드하고 이더넷 다운로드를 해보면, 기존의 다운로드 중 리붓되는 현상을 보지 않아도 될 것이다.
괜히 기분이 좋아진다. ㅋ

출처 : WEEG

WEEG 사이트는 CE를 하면서 많은 도움을 받는 곳 중 하나이다. 그것두.. 한글로 되어있다 ㅋㅋ
다만... X86계열의 자료가... -_-;;


'작업장 > LX800' 카테고리의 다른 글

LX800 QVGA(320x240) 해상도 적용  (0) 2008.02.05
LX800(X86) Hive Based Registry 구성..  (0) 2007.11.22
X86 보드에서 HDD로 바로 부팅하기!  (0) 2007.11.15
2007. 12. 6. 20:53

Debug port, UART, Serial, COM에 대한 간단한 정리..



시리얼 관련해 흔히 혼동하는 부분('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 카페'에서 참고한 글임!!


2007. 11. 30. 20:03

Windows CE Ship Build



'Platform Builder'에는 'Ship Build'라는 옵션이 있다.

이 옵션은 Windows Embedded CE 6.0을 기반으로 했을 때
Project -> XXX Properties -> Configuration Properties -> Build Option -> Enable Ship Build (WINCESHIP=1)
에 있는 것으로, 개발이나 디버깅 단계가 아닌 '양산'단계에서 Debug Message를 출력하지 않도록 해주는 옵션이다.

사용자 삽입 이미지
Windows Embedded CE 6.0 의 Ship Build Option

이 옵션은 'PUBLIC\COMMON\OAK\MISC\makefile.def'에 정의되어 있다.
##<Variable PlatformBuilderSettingsPage="General" SettingsPageItemNumber="0">
##<VariableName>WINCESHIP</VariableName>
##<FriendlyName>Ship Build</FriendlyName>
##<Description>Specifies whether to remove debug messages and provide limited support for debugging. To enable a ship build, the environment variable WINCEDEBUG must also be set to RETAIL.</Description>
##<Settings>
##<Setting>
##<SettingValue Default="Y"></SettingValue>
##<FriendlyName>No</FriendlyName>
##</Setting>
##<Setting>
##<SettingValue>1</SettingValue>
##<FriendlyName>Yes</FriendlyName>
##</Setting>
##</Settings>
##</Variable>
!IF "$(WINCESHIP)" != ""
CDEBUG_DEFINES=$(CDEBUG_DEFINES) -DSHIP_BUILD
!ENDIF
makefile.def파일은 모든 파일에 적용된다.

이렇게 설정을 하게 되면, 컴파일단계에서 SHIP_BUILD라는 정의에 의해 조건부 컴파일을 하게되어, Debug Message가 출력되지 않게 되는 것이다.

Ship Build환경변수는 Release 모드에서만 설정할 수 가 있고, Debug 모드에서는 할 수 없다.

'지연아빠'님의 블로그와 'WEEG'에서 참고한 문서임!
2007. 11. 15. 19:59

X86 보드에서 HDD로 바로 부팅하기!



현재 LX800(x86)보드로 Windows Embedded CE 6.0 포팅 작업을 진행하고 있다.
지금까지 했던 작업들은 죄다 USB를 이용하여 DOS로 부팅하고, loadcepc를 이용해 NK.bin을 올려 CE를 부팅하는 형식이었다.

이 방식(loadcepc)을 사용할 경우 정상적으로 이미지가 올라가기는 하지만 해본사람들은 알것이다. 이미지를 올리는데 걸리는 엄청난 시간의 압박을... ㅡㅡ;

디버깅 모드로 빌드한 NK.bin(30~40M)의 이미지를 위의 방법으로 올리는데 걸리는 시간은 총 2~3분 이상이 걸린다. 같은 이미지로 HDD로 바로 부팅한 결과 대략 40초 정도의 시간이 걸리는 것을 확인했다.
엄청난 수확이 아닐 수 없다.

방법은 의외로 간단했다.

항상 CE작업을 하면서 도움을 받는 WEEG사이트의 이 문서를 참고로 해서 진행을 했다.

필요한 유틸리티는 'andro78'님이 올려주신 UTILITIES, DISKIMAGES이다.

사용법은 다음과 같다.

1. UTILITIES.zip와 DISKIMAGES.zip파일의 압축을 해제한다.
2. UTILIEIES폴더의 websetup.exe를 실행한다.
3. DISKIMAGES폴더의 setupdisk.144를 실행한다. 이것은 부팅디스켓(floppy)을 만   들어주는 작업이다.
4. X86 보드에 HDD를 연결하고, floppy로 부팅을 한다.
5. A:> fdisk/mbr
6. A:> fdisk 를 이용해 HDD의 파티션을 없앤 후 새로운 파티션을 만든다.
7. 재부팅 후 A:> fatmat c:를 하여 포맷을 한다.
8. A:> mkdisk c: 를 실행한다. (mkdisk하기전에 파티션이 activate가 되어있어야 한다!!!)

이로서 HDD로 부팅하는 환경을 갖춘것이다.

부팅디스크를 빼고 HDD로 부팅을 했을 시 검정화면에 WINDOWS CE 로고가 보이면 성공한 것이다.

 HDD에 Window CE 6.0 NK.bin 이미지를 넣고 부팅을 하게되면 Windows CE가 부팅하게 된다.