First, embedded systems are by their nature quite diverse, both in scope and in function. Typical embedded systems can range from 4- and 8-bit microcontrollers, with hundreds or a few thousand bytes of storage, to full-edged high-end processors with multiple cores and gigabytes of storage. Systemrequirements can range from low-power, event-driven operation, to gigabit-speed hard real-time deadlines, and can include everything in between. In short, the diversity of embedded systems dwarfs the variation found in desktop and server computing, and this enormous divergence can impact every aspect of system development.
Second, embedded systems traditionally cannot make use of the most powerful compilation, debugging and automated testing tools available for production desktop systems. Their input/output channels are comparatively narrow, they often lack sucient spare resources to support costly proling or instrumentation, and their design budgets cannot support large virtual machines or elaborate software runtimes.
Third, computer science and engineering degree programs are already well-established at many institutions, and often do not have room for entirely new courses in the core.
Finally, many schools lack the nancial resources, laboratory space, or faculty expertise to commit to dedicated embedded instructional equipment. With a few notable exceptions, many of the most popular commercial embedded platforms do not provide inexpensive evaluation boards, are supported only by proprietary development tools, and lack the kinds of useful peripherals that would naturally lead to a body of general purpose laboratory assignments.
Next>>