OS building, emulator, and some device model in WINCE
1 modifying the OS
In WinCE4.0, there is a standalone suit to build the OS. In version later than 5.0, it is a plugin in VS2005 called "Platform Builder". Basically you can configure the high level components in a GUI there, such as USB functionality, kernel service. For different hardware you need to write drivers to make hardware cooperate with high level components. Something often modified are that memory layout, register table, boot-up programs. They are done in the configuration files in the Platform Builder. Register table is something special for Windows system unlike Linux system, it works like the files stored in /etc directory in Linux. In PB there are 4 separate register files which would be merged into one register file at the OS building procedure, and the final register file could be write into device Flash or Memory, resulting a w/r or read only file.
2 some device model:
USB port which is used to connect the device to another host, could be model as a network port or a serial cable, it depends on your settings in PB. In version below WinCE5.0, USB slave port which was used to connect to development PC, more specific ActiveSync software, works as serial cable model, I mean at OS level it is a serial port. The ActiveSync added a protocol on that making it looks like a network port, so the device would have network access through the path: USB->host->host NIC->network. Unfortunately I see no way to make the USB port works as network card without ActiveSync client running. In WinCE6.0 or later, the port works as network port as default, and ActiveSync using it as network directly.
in WinCE4.0, the emulator runs fast because it emulate target device at API and OS level, so the binary is actually x86 instructions. The setup of it is done as a package in EVC4 automatically.
in WinCE5.0 and later (vs2005), the emulator is true one runing ARM RISC instructions, emulating target device at binary level, so the execution is very slow but more like the real use case. To install it you need to rebuild a SDK and an emulator image in platform builder where kernel is built, according to the real configuration for target device. It is just like building another version of kernel and have many options such as memory size, serial port settings.