Beruflich Dokumente
Kultur Dokumente
com/print/book/export/html/51676
By allankliu
Created 05/03/2008 - 04:10
RESOURCES Electronics
Today, the boundaries between the general purpose PCs, the servers and the embedded
systems are more blurred. These computers are sharing same platforms, same peripherals.
For example, an x86/Mac PC can be used as a server, an x86/PowerPC CPU can be used in
an embedded system like portable navigation device (PND). On the other way, the popular
embedded processor StrongARM was a powerful desktop PC processor for the DEC
workstation, and the embedded systems often also act servers, like NAS (Network Attached
Storage). As same as the hardware suppliers, the OS suppliers port their products into the
desktop PCs, servers and embedded systems.
Nothing cuts to the heart of a development project like the choice of OS. Whether it's a tiny
scheduler or kernel, an open-source distribution, a tightly wound real-time operating system,
a fully featured commercial RTOS, or no OS at all, it drives all downstream software
decisions and many hardware decisions as well.
A survey shows us what's important to those who get a say in the choice of OS. The criteria
are:
1. Real-time performance
2. Processor compatibility
3. Software tools
4. No royalties
5. Price
6. Memory footprint
7. Simplicity
8. Middelware
9. Compatibility
10. Services & Features
11. Open-source
12. Familiarity
13. Hardware suppport
14. Customization
15. Supplier's reputation
16. Support
17. Popularity
18. Other products
Reference
[2]
[3]
[1]
01 Non RTOS
According to a survey in Embedded System Design, more than a quarter of embedded
systems now in development won't have an OS at all. None. a little over 28% of all our
survey-takers said the system they're designing now won't have so much as a tiny scheduler
or task switcher.
In this design, the software simply has a loop. The loop calls subroutines, each of which
manages a part of the hardware or software. This method is called round-robin. The
round-robin method is very popular in small microcontrollers.
Some embedded systems are predominantly interrupt controlled. This means that tasks
performed by the system are triggered by different kinds of events. An interrupt could be
generated for example by a timer in a predefined frequency, or by a serial port controller
receiving a byte.
These kinds of systems are used if event handlers need low latency and the event handlers
are short and simple. Usually these kinds of systems run a simple task in a main loop also,
but this task is not very sensitive to unexpected delays.
Sometimes the interrupt handler will add longer tasks to a queue structure. Later, after the
interrupt handler has finished, these tasks are executed by the main loop. This method brings
the system close to a multitasking kernel with discrete processes.
Most of above shedulers or kernels are developed in house. They are simple and
easy-to-use. They are not RTOS because they are only sheduler part of an OS. A complete
OS includes scheduler, task switching and resource allocation, memory management.
Not every embedded operation systems are designed for real-time, for example, Windows
CE is not a real-time OS, but it is a multi-tasking OS. But you know, as time goes by, things
change a lot. These OSes are improved by using real-time kernels or patches.
A lot of similiar OSes have already faded out. Such as PPSM from Motorola (for its 68K/ARM
DragonBall CPU), Zaurus from Sharp. The propertiary OS for TX MIPS micro from Toshiba
(Sorry I forgot name of OS, but it was popular in Toshiba's Taiwanese customers)...
[4]
[5]
02 RTOS
Commercial
[7]
[10]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
8051/ARM/AVR/M68HC11/MSP430/PIC12/PIC24/PIC32/TMS320 DSP.
[21]
[16]
[22]
Open Source
[23]
[25]
[27]
[28]
MIPS, NEC v8xx, PowerPC, SPARC, SuperH. Detail list please check their web page for
hardware [30].
[31]
[33]
[34]
Distributions
Most of the major players in Linux distribution have embedded versions. These distributions
are a bundle of software components, the specific distribution will bring a lof of application
specific software module with the Linux kernel.
[35]
Linux/RT, by TimeSys
[36]
[37]
[38]
[39]
[40]
[41]
[42]
[43]
[44]
[45]
UNIX
Because the relationship between UNIX and Linux, we put embedded UNIX in this section as
well.
[47]
[48]
[49]
[50]
Embedded OpenBSD
MAC
[51]
References
[52]
[53]
Its run time price is USD3-16.In order to develop Windows Embedded CE, you must
download following software packages from Microsoft's website.Visual Studio 2005 Trial,
Team Suite SP1 for developing application software, Windows Embedded CE 6.0 Evaluation
Edition and update ReleasesWindows Embedded CE 6.0 Platform Builder for porting OS to
your hardware.
[56]
[58]
[59]
Because Microsoft discontinued DOS support long time ago. A lot of OS suppliers start to
port this legacy OS in embedded system. Most of these DOS-like OSes are free, even open
source solutions. Since DOS is not a real time OS, there are some RT extensions for these
OSes.
[61]
[62]
JK microsystems, Inc.
[63]
[64] eRTOS
[65]
2net
Development tools
[66]
05 Java Approach
Usually developers consider Java as a programming language, but Java is a complete
operating enviornment including some parts belong to OS. If you have experience of porting
Java runtime to embedded system. You will find that RTOS is not a necessary requirement
for porting Java.
[67]
[68]
[69]
space separation. Protection in JX is solely based on the type safety of the intermediate
code, the Java bytecode.
[71]
[72]
[74]
[75]
Sparc, m68k, StrongARM, MIPS, Alpha, PowerPC and PARisc. Memory footprint is small, the
VM can be used for embedded systems. The exact Java version is not specified, for a
reference see the Kaffe Datasheet (PDF, 96 KB).
KaffePC is a virtual machine for DOS, based on Kaffe.
There is also a port of Kaffe to AtheOS (no AWT available).
[77]
[78]
[79]
[80]
[81]
[82]
[83]
06 Multi-Core OS
Most multiprocessing systems can be classified as either symmetric multiprocessing (SMP) or
asymmetric multiprocessing (AMP). AMP involves the use of interprocessor communication to
combine the efforts of multiple processors, each with its own local operating system and
hardware resources. Also, AMP involves less OS overhead for each individual processor and
a more traditional execution environment for applications. AMP seems like distributed system.
The number of peripherals that are supported in today's multicore processors is quickly
increasing. Symmetric-multiprocessing (SMP) software is expected to be quickly available to
support these peripherals. Basically any OS can be ported to a SMP platform, but the
developers must take care of following issues for SMP OS.
[86]
[87]
automotive markets, this embedded solution addresses the performance, power consumption
and radio noise emission requirements of today’s advanced systems.
[89]
Resources
[90]
[91]
Multicore Association.
[92]
07 DSP oriented OS
DSPOS, Motorola 56800E DSPs, StarCore, BlackFin DSPs,
ARM7/9, features VoIP reference design and Unicoi Fusion
Suite.
[93]
[94]
[95]
[97]
08 Middleware
What is middleware?
For example, uC/OS-II is popular in embedded applications. This OS has many middleware
for embedded systems, such as uC/TCP-IP, uC/FS, uC/GUI, uC/USB-device, uC/USB-host,
uC/FL, uC/Modbus, uC/CAN, uC/Probe and uC/BuildingBlocks, its OS components tool.
I don't want to duplicate all middleware suites for mentioned OSes individually. I only list
some important open source middleware for your reference.
GUI
[99]
[100]
[101]
File System
Most of the embedded File systems are ported from Linux distribution. Other file systems are
tailor-made for specific RTOS.
[103]
[104]
USB
[105]
[106]
[107]
TCP/IP
It is interesting to know there are two TCP/IP stacks for embedded systems available from
Swedish Institute of Computer Science.
[108]
[109]
[110]
[111]
Database System
[112]
Others
[113]
[114]
[115]
09 Resources
This open courseware from MIT provides an overview of
robot mechanisms, dynamics, and intelligent controls. Topics
include planar and spatial kinematics, and motion planning;
mechanism design for manipulators and mobile robots,
multi-rigid-body dynamics, 3D graphic simulation; control
design, actuators, and sensors; wireless networking, task
modeling, human-machine interface, and embedded
software. Weekly laboratories provide experience with servo
[116] drives, real-time control, and embedded software.
[117]
SlideShare
Video Resources
This example shows the Femto OS without additional tasks (only idle process).
This is a simple GUI written in C without a RTOS ( WinCE, Linux, .. ). The entire GUI library is
less then 32K of code. Written for the FreeScale iMXS.
Video from the European research project RUNES http://www.ist-runes.org/ [123] showing a
road fire incident in 2012 where embedded wireless sensor network technology assists the
rescue mission. Really nice video, you can check out the video list of the uploader, you will
see some people who are really famous in open source embedded world. Such as the
founders of uIP/LwIP......
topic. I collection some resources for your references. In case you have any questions about
it, you'd better to consult a lawyer for intelligent properties.
[124]
[125]
[126]
GNU GPL
[127]
[128]
[129]
BSD licese
[130]
Trademarks
Links:
[1] http://en.wikipedia.org/wiki/Category:Embedded_systems
[2] http://electronicdesign.com/HotSpot/Index.cfm?AD=1&HotSpotUrl=embedded"target="_blank
[3] http://www.embedded.com/1999/9903/9903sr.htm"target="_blank
[4] http://pdn.palm.com/regac/pdn/index.jsp
[5] http://www.symbian.com/developer/index.html
[6] http://www.cmx.com/
[7] http://www.quadros.com/
[8] http://www.ghs.com/products.html
[9] http://www.keil.com/rtos/
[10] http://www.kadak.com/html/indexamx.htm
[11] http://www.segger.com/embos.html
[12] http://www.tenasys.com/products/irmx.php
[13] http://www.mentor.com/products/embedded_software/nucleus_rtos/
[14] http://www.microware.com/
[15] http://www.enea.com/templates/Extension____12767.aspx
[16] http://www.windriver.com/
[17] http://www.phoenix-rtos.org/
[18] http://www.qnx.com/
[19] http://www.pumpkininc.com/
[20] http://www.rtos.com/txtech.asp
[21] http://www.mentor.com/products/
[22] http://www.shift-right.com/xmk/xmk/overview.htm
[23] http://www.osek-vdx.org/
[24] http://www.sakamura-lab.org/TRON/
[25] http://www.freertos.org/
[26] http://www.micrium.com/
[27] http://www.embeddedartists.com/
[28] http://www.tinyos.net/
[29] http://ecos.sourceware.org/
[30] http://ecos.sourceware.org/hardware.html
[31] http://www.ethernut.de/en/software/index.html
[32] http://www.barello.net/avrx/
[33] http://www.uclinux.org/
[34] http://www.arm.linux.org.uk/developer/
[35] http://www.timesys.com/"target="_blank
[36] http://www.redhat.com/services/focus/embedded/
[37] http://www.lynuxworks.com/embedded-linux/embedded-linux.php
[38] http://www.mvista.com/
[39] http://www.emdebian.org/
[40] http://www.lineo.co.jp/eng/index.html
[41] http://emknoppix.sarovar.org/
[42] http://picolinux.sourceforge.net/
[43] http://www.geexbox.org/en/index.html
[44] http://www.lynuxworks.com/
[45] https://www.rtai.org/
[46] http://code.google.com/android/what-is-android.html
[47] http://www.embeddedfreebsd.org/
[48] http://www.netbsd.org/Misc/embed.html
[49] http://freshmeat.net/projects/polybsd/
[50] http://www.kernel-panic.it/openbsd/embedded/"target="_blank
[51] http://developer.apple.com/macosx/
[52] http://www.celinuxforum.org/
[53] http://www.microsoft.com/windows/embedded/
[54] http://www.microsoft.com/windows/embedded/eval/wince/default.mspx
[55] http://www.microsoft.com/windows/embedded/eval/xpe/default.mspx
[56] http://www.microsoft.com/windows/embedded/wepos/default.mspx
[57] http://www.microsoft.com/windows/embedded/eval/vista/default.mspx
[58] http://www.microsoft.com/windowsautomotive/wa5/default.mspx
[59] http://www.microsoft.com/windowsautomotive/ma/default.mspx
[60] http://media.ford.com/article_display.cfm?article_id=25169
[61] http://www.drdos.com/
[62] http://www.on-time.com/
[63] http://www.jkmicro.com/downloads/downloads.html
[64] http://www.ertos.com/"target="_blank
[65] http://www.2net.co.uk/dos.html"target="_blank
[66] http://www.jungo.com/st/win_ce.html
[67] http://java.sun.com/javame/index.jsp
[68] http://java.sun.com/javase/embedded/
[69] https://javaos.dev.java.net/
[70] http://www4.informatik.uni-erlangen.de/Projects/JX/
[71] http://www.aplixcorp.com/en/products/jb_series/overview.html
[72] http://www.aonix.com/perc.html"target="_blank
[73] http://www.rtjcom.com
[74] http://www.ibutton.com/TINI/
[75] http://www.jbed.com/"target="_blank
[76] http://www.kaffe.org
[77] http://www-4.ibm.com/software/ad/embedded/
[78] http://www.wabasoft.com/
[79] http://www.javalobby.org/forums/thread.jspa?threadID=15960
[80] http://code.google.com/android/intro/index.html
[81] http://lejos.sourceforge.net/
[82] https://embeddedjava.dev.java.net/
[83] http://java-virtual-machine.net/other.html
[84] http://www.rtems.com/wiki/index.php/RTEMSFeatures
[85] http://www.symbian-freak.com/news/007/10/symbian_and_arm_cooperate.htm
[86] http://www.esol.co.jp/english/embedded/et-kernel_multicore-edition.html
[87] http://www.rtos.com/news/detail/?prid=79
[88] http://www.toppers.jp/en/index.html
[89] http://www.polycoresoftware.com/
[90] http://www.embeddedintel.com/special_features.php?feature=240
[91] http://www.embedded.com/columns/technicalinsights/173402824?_requestid=278602
[92] http://www.multicore-association.org/
[93] http://www.dspos.com/
[94] http://www.rowebots.com/
[95] http://www.vinjey.com/index.html
[96] http://focus.ti.com/docs/toolsw/folders/print/dspbios.html
[97] http://www.analog.com/processors/blackfin/gettingStarted/operatingSystems/index.html
[98] http://www.tara-systems.de/emwi/index.html
[99] http://www.minigui.org/
[100] http://picogui.org/
[101] http://www.trolltech.com/
[102] http://microwindows.org/
[103] http://www.scalingweb.com/embedded_file_system.php
[104] http://prex.sourceforge.net/index.html
[105] http://www.hcc-embedded.com/site.php?mid=120
[106] http://libusb-win32.sourceforge.net/
[107] http://porus.berlios.de/
[108] http://www.sics.se/~adam/uip/index.php/Main_Page
[109] http://www.sics.se/~adam/lwip/
[110] http://ucip.sourceforge.net/
[111] http://www.unusualresearch.com/tinytcp/tinytcp.htm
[112] http://www.equi4.com/metakit/
[113] http://www.ezhometech.com/software_ssp.htm
[114] http://www.rockbox.org/
[115] http://developer.mozilla.org/en/docs/Main_Page
[116] http://ocw.mit.edu/OcwWeb/Mechanical-Engineering/2-12Fall-2005/CourseHome/index.htm
[117] http://www.femtoos.org/index.html
[118] http://www.slideshare.net/?src=embed
[119] http://www.slideshare.net/allankliu/lecture24-multiprocessor?src=embed
[120] http://www.slideshare.net/upload?src=embed
[121] http://www.slideshare.net/allankliu/mp-os-survey?src=embed
[122] http://www.slideshare.net/allankliu/embedded-systems-design-embedded?src=embed
[123] http://www.ist-runes.org/
[124] http://www.softwarefreedom.org/resources/2008/foss-primer.html
[125] http://www.oreilly.com/catalog/opensources/book/brian.html
[126] http://alumni.cse.ucsc.edu/~brucem/open_source_license.htm
[127] http://www.gnu.org/licenses/gpl.html
[128] http://www.mozilla.org/MPL/
[129] http://www.freebsd.org/copyright/license.html
[130] http://www.micrium.com/products/rtos/kernel/licensing.html