Understanding the Concepts of Embedded Systems, Part 1

BitMan
An Embedded System is a special computer (designed to a specific scope) that interacts with the real world through sensing and actuation. Almost any computer that is not a PC can be an embedded system. The core of any this kind of system is the microprocessor. For embedded systems the term used is microcontroller - a system on chip that contains extra support. Special peripherals are used for interfacing with external environment: analog to digital and digital to analog converters, i2c, spi, usb, can, serial, interrupts, pwm. The application domains is very wide from wireless, music, medical, radars, to automotive and automation control.

In most of the cases the design process should respect a list of requirements: functional requirements (basically describe the scope, interfaces, communication channels, etc) and nonfunctional requirements, that are not directly related to what the system does. Examples of the last category are energy efficiency (system must to run with a battery a couple of years or must to be energy independent), real time (if the actions are critical some time constraints need to be respected), safety (if something is wrong need to prevent a total damage or a catastrophic situation), upgrade-ability (some new properties must be supported by new changes in the system), cost of money, tolerance to defects, temperature range conditions (automotive often require to have a normal behavior between -25C and 85C), security and the list can go on.

Threads are methods used in computer programs for splitting a program into more concurrently tasks. Threads execution is based on events. Internal execution of a thread can be stopped by another with a higher priority or by an interrupt. The main advantages of using threads (do not confuse with processes - the difference can be smaller or bigger, depending by application and domain of implementation) is: the performance, the shared resource principle, the functionality is modularized and can help for a future upgrade.

On the beginning we talk about CPU (Central Processing Unit). The selection process must be coordinated by the analysis of the following factors: size, cost, pins I/O, performance, memory, workload, RTOS, efficiency, portability, tools, etc. You can select from a simple PIC microcontroller from Microchip (8 bits architecture) to a complex PowerPC architecture from Freescale (32 bits architecture). It's up to you the decision of using any model.

Regarding the programming language the selection is limited to just a few alternatives: Assembler (non portable and hard to debug and to redesign), ANSI C (partial portable, backed by a lot of tools), C++ (time overhead and sometimes considered more complex than C). Parts of developers are using also Basic, Pascal and sometimes Java.

The operating system, OS, is one of the many things that must be selected for an embedded system. Selection is done by considering the efficiency, predictability, portability and debuggability. The most used OSs are uC/OS-II, QNX, Osek, uClinux, Salvo, VxWorks, Posix, Windows CE.

...to be continued.

Published by BitMan

View profile

To comment, please sign in to your Yahoo! account, or sign up for a new account.