如果要实现Windows CE的Serial Boot,可以参考CEPC/SRC/BOOTLOADER目录下的SBoot目录中的源码。需要说明的是,这是PC上的SerialBoot,如果要移植到ARM平台的话,这里有一个重要的Bug,其原因就是因为ARM的四字节对齐的因素,位置及改正方法请参考下面的代码。
BOOL SerialSendBlockAck(DWORD uBlockNumber)
{
BYTE buffer[sizeof(SERIAL_PACKET_HEADER) + sizeof(SERIAL_BLOCK_HEADER)];
PSERIAL_PACKET_HEADER pHeader = (PSERIAL_PACKET_HEADER)buffer;
// PSERIAL_BLOCK_HEADER pBlockAck = (PSERIAL_BLOCK_HEADER)(buffer + sizeof (SERIAL_PACKET_HEADER)); // 原代码
LPBYTE pBlockNum = buffer + sizeof(SERIAL_PACKET_HEADER)) ; // 新添加的代码
// pBlockAck->uBlockNum = uBlockNumber; // 原代码
memcpy( pBlockNum, &uBlockNumber, sizeof(DWORD) ); // 新添加的代码
...
}
补充一点:PLATFORM_STRING 一定要是"CEPC“,不能更改。整个下载流程不需更改。
本人在Samsung2410上调试通过。