Michael is a developer for Eclipse International. He can be reached at [email protected]
Microsoft held Windows CE DevCon in San Jose, California on April 6-8, 1998. Michael Fitzpatrick, a DDJ contributor, had the opportunity to chat with Tony Barbagallo, Microsoft's Lead Product Manager, and Don Chouinard, Microsoft's Product Manager, about Windows CE. Here is an excerpt from that conversation. For more details about the conference itself, read Al Stevens' account in the July 1998 issue of DDJ.
DDJ: There's been some talk about bringing COM to WinCE. What are Microsoft plans?
DC: COM's in there now. It is InProc only. It doesn't marshal parameters across process boundaries or across the wire...yet. That will ship in our next major release. All of our compilers support COM today.
DDJ: Microsoft has put a lot of work into Windows CE, and it recently bought WebTV. Microsoft already makes mice and keyboards, but those are passive devices. A lot of folks are worried that Microsoft will start selling computer hardware now.
TB: I can't speak for the WebTV group because I'm tasked with marketing Windows CE, and I don't really know what is going on with WebTV. I don't believe that Microsoft has any intention of building and selling computers that run any of our OSes, with the exception of WebTV. We're mainly interested in developing relationships with technology partners who can provide solutions for the embedded market. That's kind of an expensive platform, so we go beyond that and also support an emulation of specific targeted devices, such as handheld PCs, Palm PCs and Auto PCs. You can write a lot of code and test it against the emulated device. This is a good solution for routines that don't require the presence of physical hardware.
DDJ: Windows CE looks a lot like a desktop system when it is installed in a Handheld PC (HPC). If I want to add a new peripheral device, does Windows CE have installable device drivers?
DC: Yes. In fact, it is very elegant. You take your installable device driver, load it into the object store, and put an entry into the registry. Upon boot, we scan the registry and load each of the installable device drivers in turn. You can even control the order in which the device drivers are loaded, in case you're relying on another device driver being there.
DDJ: But, if I want to go all the way down to the hardware and trap an IRQ, don't I need to link the Interrupt Service Routine (ISR) binary with the operating system code when I compile it?
TB: The drivers that go all the way down to the hardware -- they're loaded at compile time.
DC: The person who builds the operating system for a specific hardware platform does include built-in device drivers for certain devices such as the display and keyboard. But most of the device drivers they provide are written as installable drivers. In Windows CE, interrupts (IRQs) go into the kernel and, in just a few machine instructions, the kernel passes control directly to the ISR. This is how an installable device driver is tied to an IRQ.
DDJ: At the Embedded Systems Conference last October, no one claimed that Windows CE had hard real time. Now, at this conference (Windows CE DevCon), you're saying that WinCE is hard real time. Okay, so the interrupts are not reentrant, but you're claiming to be hard real time. You're talking about "jitter" now, not reentrancy and nested interrupts.
TB: Well, Windows CE interrupts are reentrant at the thread level. The mechanism we use is, the kernel calls an interrupt service routine (ISR) usually within one to eight microseconds from when interrupt occurs. At that point, INTs are still disabled. We expect the ISR to be coded in assembly language and to execute very quickly. The ISR runs in privileged mode and has full access to system resources. When it is done, the ISR returns to the kernel, which schedules an interrupt service thread (IST) that does most of the work. The IST is reentrant, and can be nested if it is coded properly. The IST runs in user mode, just as any other application does, but at a higher priority.
DDJ: But this is not truly hard real time.
TB: No, not yet, but we're committed to true hard real time in a future release, version 3.0 due in the second quarter of 1999. Even though we're already below 10 microseconds latency, we're going to support nested interrupts. It's not just the speed. We're going to add support for a larger number of interrupt lines and semaphores.
DDJ: Well, with Windows CE, it looks like everything that was old is new again. After years of getting comfortable with multi-meg RAM and multi-gig hard drives in OSes, Microsoft is back to counting bytes and CPU cycles again. Aren't you afraid that feature creep will take you out of the embedded system space? When you start adding things like Java, which adds 2 MB to the system ROM and 2 MB to system RAM, aren't you taking away the incentive to use Windows CE?
TB: Well, Windows CE is componentized, and it is a deterministic OS, unlike the other Microsoft OSes. We clearly define what our upper bound for event response is. And if you don't want Java or a GUI or any other feature, you can leave it out.
DDJ: What about network and Internet connectivity? What direction is Microsoft looking at? Right now, it seems that Microsoft is pushing Ethernet and NDIS drivers for connectivity.
TB: The market will dictate where we go with that. We have to be responsive to our customers needs.
DDJ: Yes, but if I'm a developer, I'm going to pick the connectivity solution that comes with Windows CE. Microsoft has a vested interest in promoting some connectivity options over others. You have WebTV, which implies cable modems, an ADSL deal in the works, and sometime in the future, you'll be selling satellite connections. If I make an ATM switch, how can I get Microsoft to add support?
TB: We try to keep the system very modular. If you were building one of those boxes, you would go to someone with a background in the technology and convince them to port it over to Windows CE for your device.
DDJ: Well, where do you think that the technology will go? Is the future in ADSL?
TB: That's a real possibility. Part of my role is to work with technology partners and help them decide whether it makes sense to port their technology and offer it as a third party. We have a base set of enabling technology, but beyond that, we really want to foster third-party business and a third-party market.
DDJ: Well that brings up an interesting point. A year ago, there was only a handful of Windows CE distributors. Since then, the story from Microsoft has been changing a lot. Every month it is a different story. Seems like now, there are just too many vendors offering Windows CE, and the vendors are competing with each other.
TB: Absolutely. When I came into this business, I looked at the landscape and looked for distribution channels that had differentiation from the current distributors. That's where Applied Microsystems and Microtec come from, that's where Integrated Systems Design comes from. It's hard to beat their expertise in the real-time embedded systems space. You may say it looks like these guys raised the bar on the people that were there. Maybe we have. We have very objective criteria that basically comes down to units shipped.
DDJ: When you first started to work with technology partners Microsoft had very strict licensing requirements. Now you're giving away the development tools. I got a copy -- three CDs -- in a recent issue of Embedded Systems Programming.
TB: Yes. That all changed as well. The decision was to make it widely available. Our goal is to make a huge third party network of system integrators and supply the tools and technology, because that's how we think the market is going to grow in this space.
DDJ: So, if I have a new CPU that I want to offer to the world, who is going to port it over to Windows CE?
TB: We do the ports for new processor architectures, but only based on customer demand or based on a customer relationship with a semiconductor partner.
DDJ: The last issue that I'm interested in is the legal issue, the FTC/DOJ, trade issue. Now that you're entering a new region of the marketplace, are you taking any action to prevent any conflicts with the government?
TB: We're only concerned with developing a product that is right for the market.
DDJ: Are you ignoring the reality of the government?
TB: On my list of tasks, one of them is not to take into consideration ramifications, the potential of monopolistic products that you may build. That is not one of my objectives. It is not one of my manager's objective either. It's just not a consideration for us. We are concerned only with making Windows CE a success in the embedded system space. You know, we're not the only big player entering the embedded system space either. Sun is getting into the RTOS business in a big way.
And some of the big RTOS vendors like WindRiver make a majority of their money in setup costs for their tools. So Microsoft's business model is that we collect a royalty for each unit that goes into production. The cost for our tools is very low compared to other RTOS vendors. We charge $500 to get started compared to $25,000 for some other RTOS tools. We aren't looking to make much money on the tools and startup expenses. A lot of embedded systems never make it into production. In that case, the other RTOS vendors are ahead. They've sold their tools, they've sold their services. They didn't get the run-time royalty, but they've sold the tools and made 80 percent of what they would have if the customer had gone into production. It's the same for our systems integrators such as Microtec, AMC, and ISI. They receive the revenue from their tools and their services, but Microsoft would receive no run-time royalties.
These op/eds do not necessarily reflect the opinions of the author's employer or of Dr. Dobb's Journal. If you have comments, questions, or would like to contribute your own opinions, please contact us at [email protected].