'RTL8139'에 해당되는 글 2건
- 2008.05.27 LX800에서 이더넷 다운로드 시 리붓되는 문제
- 2008.01.29 펜티엄 3 기계에 Windows Embedded CE 6.0 설치
2008. 5. 27. 12:03
LX800에서 이더넷 다운로드 시 리붓되는 문제
2008. 5. 27. 12:03 in 작업장/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;
}
{
/*
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. 1. 29. 11:51
펜티엄 3 기계에 Windows Embedded CE 6.0 설치
2008. 1. 29. 11:51 in Windows Embedded/Windows Embedded CE 6.0
이젠 별짓을 다해본다.. -_-
기존에 LX800에서 하던 작업을 동일한 클럭을 갖는 펜티엄 III (500MHz)에 올리는 작업을 하게 되었다.
일단 CPU가 Geode LX800이 아니므로.. 프로젝트를 CEPC용으로 다시 만들고...
대략의 설정은 기존의 LX800에 했던 작업과 동일하게 해주었다.
기존에는 usb메모리 스틱을 이용해 DOS 부팅을 해서 NK.bin을 올리는 형식으로 SSD(44핀)에 사용해 간단하게 이미지를 올렸는데.. 현재는 HDD(40핀)에 올리는 작업이라.. USB 젠더를 이용해 이미지를 올리는 약간 더 번거로운 작업을 하게 되었다.
참고로.. IDE로 바로 붙였을 경우는 CE 부팅이 잘 되던데.. USB로 부팅을 하니.. 이상하게 안되었음..
이유는 잘 모름.. -_-
이미지를 HDD에 올리고, 펜티엄 III로 CE를 띄우는 것은 일단 성공..
하지만.. network이 안됨.. 전에 LX800에서 사용하던 RTL8139를 그대로 사용하였는데.. 왜 안될까.. -_-
다른 데스크톱의 RTL8139를 떼어 테스트 하니 또 정상적으로 네트웍이 되는데... 아마도 볼티지 문제이지 않을까?
기존의 LX800에서 사용하던 RTL8139는 3.3V용이고, 정상적으로 인식한 녀석은 5V용이라는 거...
단지 이 이유 때문일까?? -_-
참 모를 세상이다...
남은 작업은 해상도(현재 800X600으로 잡히는 듯...)와 하이브 레지스트리 작업...
'Windows Embedded > Windows Embedded CE 6.0' 카테고리의 다른 글
CE에서의 디버깅 메시지 - RETAILMSG (0) | 2008.05.22 |
---|---|
CEPC 해상도 조절 (0) | 2008.01.30 |
제어판에 네트웍 설정 추가하기 (0) | 2008.01.25 |
RDP를 이용한 Seamless환경.. (0) | 2007.12.24 |
Windows CE해상도 수정.. (0) | 2007.12.24 |