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 |