'작업장/LX800'에 해당되는 글 4건

  1. 2008.05.27 LX800에서 이더넷 다운로드 시 리붓되는 문제
  2. 2008.02.05 LX800 QVGA(320x240) 해상도 적용
  3. 2007.11.22 LX800(X86) Hive Based Registry 구성..
  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
2008. 2. 5. 14:24

LX800 QVGA(320x240) 해상도 적용



일을 하다보면 자꾸 자꾸 스펙이 바뀌고.. 또 예상치 못한 작업들이 발생한다.. ㅡㅡ;

현재 Windows Embedded CE 6.0에서 LX800으로 하는 작업이 있는데.. 기존에 LCD패널에서 '800x480'로 해상도를 잡으라 하여 잡았더니.. 더 큰 LCD로도 작업을 할 수 있다하여.. '1024x768'로 다시 세팅을 했고, 이번엔.. 3~5인치정도의 LCD도 사용할 수 있을 것 같다 하여.. 'QVGA(320x240)'로 다시 작업하고 있다...

대충 LX800의 해상도는 AMD에서 제공하고 있는 lxvideo라는 디바이스 드라이버에서 몇몇 부분을 수정해 줌으로 해결할 수 있다.
수정 포인트는 대략(지금까지 수정을 하여 LCD혹은 CRT를 통해 정상적으로 이미지를 출력했던 곳) 이 두 파일(lxvideo.reg, cim_modes.c)이었던걸로 기억한다.

처음 lxvideo.reg 파일을 열고 대충 훑어보니... 최저 해상도가 "640x480"으로 되어있어서 LX800은 QVGA가 지원이 되질 않는 줄 알았다. -_-
여기 저기 구글링을 해가며 문서를 뒤지다 보니 LX800제품에도 버젓히 QVGA 해상도의 제품도 있고, 데이터 시트에도 "Supports down to 7.652 MHz Dot Clock (320x240 QVGA)"이란 문구가 딸랑 한줄 있었다.

하기야 embedded용으로 나오는 제품이 QVGA를 제공 안한대서야...ㅡㅡ 쫌 그렇지 않나?

cim_modes.c파일을 보면, 맨 위에 320x240이라는 부분이 있다.
일반적으로 Refresh Rate를 60 Hz로 사용하는 것 같던데.. 여기선 75Hz로 사용 하는 것 같다.
데이터 시트에는 "down to 7.652MHz Dot Clock"라 하여 이부분 맞춰주고 열라 삽질 했었는데... 이리 저리 하다가 기본적으로 제공하는 거(31.2000MHz) 함 써보자 하여, BIOS세팅 대충 맞춰주고, lxvideo.reg 파일 대충 수정해주고 하니.. QVGA로 LCD에 뿌려주더군...ㅡㅡ;

아나... 언제쯤 삽질 안하고 바로 바로 해결할 수 있을지...

QVGA부분은 웹에도 관련 자료가 거의 없고, 대부분 리눅스 자료였는데.. 뭐 어차피 그놈이 그놈이니...
기본적으로  AMD에서 제공하는 내용이 다여서.. 그리 크게 의심이나 심각한 삽질은 안했다고 생각한다.

뭐.. 끝!!!

아... 이런거 사진이라도 찍어서 올려야 하는데... 사진기가 없어서... -_-


2007. 11. 22. 20:48

LX800(X86) Hive Based Registry 구성..



여기 저기 문서 찾고 삽질하다가 갑자기 Hive가 되는 듯 하다..

정말 잘 모르겠는데.. 왜 되지?? ㅡㅡ;
삽질을 하긴 했지만 동작이 되고나니.. 왠지 촘 뿌듯해지기도 하면서.. 조금 짜증이 나긴 하는데..
흠... ㅡㅡ;

ARM이나 다른 것들은 어렵게 하는것 같던데.. 하고 보니 LX800은 이상하리만큼 간단(?)했다.

Hive Registry를 구성한 환경은 다음과 같다.
  • Platform Builder 6.0 R2
  • LX800
  • HDD(20G)
Hive Registry를 구성한 방법(?)
1. Catalog Items View에서 다음 컴포넌트를 추가한다.
  • ROM-only File System
  • Hive-based Registry
  • FAT File System
2. 환경변수를 세팅한다.
  • PRJ_BOOTDEVICE_ATAPI=1
  • PRJ_ENABLE_FSMOUNTASROOT=1
  • PRJ_ENABLE_FSREGHIVE=1
3. .reg파일에 다음과 같은 내용이 포함되어 있어야 한다.
; HIVE BOOT SECTION
IF SYSGEN_FSREGHIVE
[HKEY_LOCAL_MACHINE\init\BootVars]

   "SystemHive"="\\Documents and Settings\\system.hv"
   "ProfileDir"="\\Documents and Settings"

   "RegistryFlags"=dword:1               ; Flush hive on every RegCloseKey call
   "SystemHiveInitialSize"=dword:19000   ; Initial size for hive-registry file is 100K bytes
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles]
    "MountFlags"=dword:2
;[HKEY_LOCAL_MACHINE\System\ObjectStore]
;    "RegistryType"=dword:1
ENDIF ;SYSGEN_FSREGHIVE

[$(PCI_BUS_ROOT)\Template\OHCI]
   "HcdCapability"=dword:0      ;HCD_SUSPEND_ON_REQUEST|HCD_SUSPEND_RESUME

; END HIVE BOOT SECTION

4. 레지스트리에서 Hive를 적용하고자 하는 부분에 다음 부분을 추가한다.
  • ;HIVE BOOT SECTION (시작 부분)
  • ;END HIVE BOOT SECTION (끝 부분)
5. Build!!!!!

테스트...
  • Hive Registry구성을 한 이미지를 보드에 올리고 눈에 보일만한 약간의 수정을 가한다.
  • 재부팅!!
  • 아까 눈에 보일만한 약간의 수정의 상태로 부팅을 하는지를 본다.
환경변수에 대한 참고 : MSDN

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가 부팅하게 된다.