Today I had an opportunity to attend a formal session from my fellow colleague Vignesh Doraiswamy (EMBEDDED DEVELOPER EVANGELIST) from Microsoft. This was like a primer to this space of Embedded world which has been greek-latin to me till date. Must admit this was surely an eye opener. So I took the liberty of taking some notes from the presentation. Must admit he did his best to get some basics for us. I learnt a lot myself on this unexplored domain … Atleast the jargons were made clear and I have some level 50 understanding of this space now :). Thanks Vignesh …
Some random notes & bit-n-pieces from the presentation:
- Planet has more processors than the number of people.
- Installed base of micro processors are huge at the base of 8-16-32 bit processors are close to ~10 billion (2001 data). Currently can be around the 30-50 billion as we are moving at atleast ~30% growth YoY in this space.
- Large number of device exists but these are mostly similar. A typical discussion we had was like a device like a phone but these will be manufactured in millions and hence replicated. Going forward this will change because we will be connected all-through. And dream in not in distant future all your devices will start talking to each-other.
- Since these are non-standard, this is build on custom hardware and hence “looks” very niche and hard.
- Reality Vs Perception battle: I thought it is difficult to write code in this world. But after I saw the VS2005 tools. I understand that reality is far beyond the wrong perception I had. Esp. with the managed world is kewl !!!
- New Technologies are able to handle the complexity
- Powerful RTOS technologies
- IDE’s richer and smarter
- Pre-Tested reusable software and hardware
- Great support for test & debugging
- Interactive software development methods
- What are Embedded System?
- Embedded system is a special purpose computer controlled electro-mechanical system in which the computer is completely encapsulated by the device it controls. – From Wikipedia
- Typical for real life example that I have seen at the local day-today life of what a embedded system are: Karnataka Electricity Board devices – used to make your bills of electricity. Another KSRTC implementation of giving commuters their tickets printed.
- So when we talk of embedded system – fundamentally it is a computer-controlled system. On a broad base almost everything from robotic arms, ATM machines, digital phone equipments, in-house security systems, mobile phones, car chips etc are wonderful examples where embedded have a play.
- Next we moved into understanding Real-time Operating Systems
- Characteristics – Real Time system
- Responds to a physical external stimuli in a given period of time
- Means it is deterministic with response time
- High-performing system maybe real-time
- Expecting 100% from a system is called “hard” real-time. There can be systems that expect these high-performance like stimuli in a reactor which needs to be sensitive to the heat or pressure or steam generated etc. So if this does get to a critical value it can be fatal. So these are typically mission-critical.
- A “soft” real-time system might be deterministic to about 90 or 95% or even 80%. These can be cases like a counting piece of a biscuits manufacturing plant puts 11 biscuits instead of 10 in a lot of 1 in 1 lakh. This by itself is not that critical to warrant that criticality as a reactor example.
- RTOS – Real time Operating System is a class of operating system intended for real-time applications – From Wikipedia
- RTOSes are preemptively scheduled
- Since preemptive then you have priority and ranges. Priority 0 to 255 for CE.
- RTOSes have lowest latencies.
- XP kernel is not real-time while CE kernel is real-time.
- What is Windows CE – 32 bit embedded, portable and mature
- More than 500+ modules.
- CE is not a OS. It is like a bucket of lego blocks for building an OS and hence modular
- Completely deterministic – using the bounded ‘K’ call.
- API layer of CE is compatible with other OS (Win98 onwards). Hence stuff from desktop can start running in CE with some minor changes. This is because we willnot have all the instruction sets as a full fledged x86 architecture.
- CE has broad hardware support- RISC (SH, MIPs, ARM), x86
- Windows Embedded CE has an easy development story with VS2005 and Windows Embedded CE 6.0
- Windows Embedded CE support for test and debugging
- CE Test Kit (CETK)
- Kernel Tracker
- Process viewer
- Heap Walker
- Call Profiler
- What is in-it for me as an ISV, Windows Embedded CE has more than 2000+ third party supports.
- Platform Builder
- BSP – Board Support package : to get you started write applications on the board. This is a low level software that binds the hardware to an core software (here BSP).
- OS Design
- Apps written by third party software
For more information, visit the CE website
Windows Embedded at MSDN
Get the Windows Embedded Introductory Kit