- The WinCE driver model was pretty hopeless; you could write a simple interrupt handler, but a thread was supposed to do most of the work. There was a ton of context switching involved in any I/O, and the drivers tended to have many useless layers of abstraction, which was probably half architectural and half bad practices followed by the CE culture. (We managed to get about 8 Mbits/second of bulk traffic through USB on WinCE, using 100% of the CPU of our 800Mhz ARM, while a later bare-bones embedded system with a gutted but more functional version of the same driver got 40 Mbits/second with about 5% CPU).
- You could choose what features to build in (this was really baroque and complicated, to say the least). I remember getting WinCE down to 6MB, and this got you an empty app with some drivers. It took 45+ minutes to build (we never got incremental builds working reliably), maybe 20-30 seconds to boot, and did nothing. For 6MB. Yike.
- The BSP (Board Support Package) drivers from vendors were miseries. We found so many bugs in them that we just gave up and wrote our own, which wound up being smaller and way more reliable. Our feedback to the BSP folks was usually ignored (I'm hedging "usually" because I don't know a single case of a bug we reported ever being fixed).
Our decision (inside of MS!) to punt WinCE 6 and do our own thing was one of the best we ever made. It was politically rocky for a while, but if we hadn't done it, we would not have shipped.
> - You could choose what features to build in (this was really baroque and complicated, to say the least). I remember getting WinCE down to 6MB, and this got you an empty app with some drivers. It took 45+ minutes to build (we never got incremental builds working reliably), maybe 20-30 seconds to boot, and did nothing. For 6MB. Yike.
Platform Builder wasn't nice. With full interal source access there were esoteric sets of build parameters that worked much better.
That said, the 6MB image got you a complete OS Kernel and Runtime, as well as the full working C Run time, and also a remoting system that allowed for debugging from halfway across the campus.
Not saying you cannot do better with less, but the OS image scaled pretty far down all things considered.
> The BSP (Board Support Package) drivers from vendors were miseries. We found so many bugs in them that we just gave up and wrote our own, which wound up being smaller and way more reliable. Our feedback to the BSP folks was usually ignored (I'm hedging "usually" because I don't know a single case of a bug we reported ever being fixed).
Many of the BSPs were bad. :(
I don't know much about the driver model, I never touched it!
> Our decision (inside of MS!) to punt WinCE 6 and do our own thing was one of the best we ever made. It was politically rocky for a while, but if we hadn't done it, we would not have shipped.
- The WinCE driver model was pretty hopeless; you could write a simple interrupt handler, but a thread was supposed to do most of the work. There was a ton of context switching involved in any I/O, and the drivers tended to have many useless layers of abstraction, which was probably half architectural and half bad practices followed by the CE culture. (We managed to get about 8 Mbits/second of bulk traffic through USB on WinCE, using 100% of the CPU of our 800Mhz ARM, while a later bare-bones embedded system with a gutted but more functional version of the same driver got 40 Mbits/second with about 5% CPU).
- You could choose what features to build in (this was really baroque and complicated, to say the least). I remember getting WinCE down to 6MB, and this got you an empty app with some drivers. It took 45+ minutes to build (we never got incremental builds working reliably), maybe 20-30 seconds to boot, and did nothing. For 6MB. Yike.
- The BSP (Board Support Package) drivers from vendors were miseries. We found so many bugs in them that we just gave up and wrote our own, which wound up being smaller and way more reliable. Our feedback to the BSP folks was usually ignored (I'm hedging "usually" because I don't know a single case of a bug we reported ever being fixed).
Our decision (inside of MS!) to punt WinCE 6 and do our own thing was one of the best we ever made. It was politically rocky for a while, but if we hadn't done it, we would not have shipped.