Embedded Systems Programming Magazine (ESP) is "the" magazine in embedded systems development.
Embedded Systems Europe is the european version of ESP.
EDN is a magazine covering electronic development in general, including embedded systems. Recommended.
Electronic Design is a magazine coveringe electronic development, including embedded systems.
Circuit Cellar Inc is a magazine for
Computer Applications
(as they state themselves) and is focused on the needs of hands-on
designers, engineers, and programmers of microcomputer hardware and
software. A highly recommended magazine with lots of hands-on projects.
» www.circuitcellar.comEE Times Network is rather a portal to a number of quality magazines (both printed and on-line).
Chipcenter is also a portal with a special section for embedded systems.
C/C++ Users Journal is a general programming magazine covering C/C++ programming. Recommended.
» www.cuj.comDr. Dobb抯 Journal is also a general programming magazine. Recommended.
Embedded Systems Conference (ESC) is "the" conference if you are working with embedded systems development. It's held in San Francisco and Boston.
Embedded Systems Conference Europe is the european version of ESC and is held in Munich.
Embedded Systems Show (ESS) is a large show/conference in the UK.
Developing Embedded Systems - A Tools Introduction gives newbies an excellent introduction to embedded systems development
The same site also contains a list of web resources.
Embedded Systems Internet Resources is a very comprehensive list of "embedded" resources.
» www.compapp.dcu.ie/~cdaly/embed/embedsys.htmlEmbedded.com
is the web site for Embedded Systems Programming Magazine (ESP) and
contains a lot of information; buyer's guide, current and old articles
from the magazine, and demo code.
eg3.com
is a portal to the "best of the web" for embedded systems (as they
state themselves). Contains a lot of links to: dsp, real-time/rtos,
board-level computing, SoC, and more.
Circuit Cellar Inc is a magazine for
Computer Applications
(as they state themselves) and is focused on the needs of hands-on
designers, engineers, and programmers of microcomputer hardware and
software. A highly recommended magazine with lots of hands-on projects.
» www.circuitcellar.comWebring: Embedded covering microprocessors, controllers, RTOS, Networking/Communication Protocols, and Embedded technology related sites.
The Embedded Muse is a newsletter from Jack Ganssle containing of tips to help embedded designers. Highly recommended.
His site also contains other interesting resources.
TechOnLine contains a number of e-Learning and educational resources for the electronics community.
Embedded Systems Academy contains high-quality online classes covering TCP/IP, C for embedded systems, CAN, Bluetooth, etc. Highly recommended.
Philip Koopman
is an associate professor at Department of Electrical and Computer
Engineering (ECE), Carnegie Mellon University. There are two excellent
courses and many other interesting (high-quality) material.
Course: 18-549 Distributed Embedded Systems
Course: 18-749 Dependable Embedded Systems
Paper: Embedded System Design Issues (the Rest of the Story)
Recurring topics in comp.arch.embeddedOther good stuff:
ICS 212: Introduction to Embedded Computer Systems is another really good course.
The Netrino™ Consultants Network
publish a number of articles in order to share technical expertise
regarding embedded systems. Michael Barr is active on this site and he
is also the editor-in-chief at Embedded Systems Programming Magazine.
Embedded Systems Conference (ESC)
is "the" conference if you are working with embedded systems
development. This web site also contains a huge collection of
conference papers from past events. Highly recommended! (you have to
register to get access to the archive)
Realtime Mantra highlights a number of issues in real-time system design, presented in a number of short articles. Recommended reading.
quantum programming (qp)
is a programming paradigm that extends traditional object-oriented
programming (OOP) with two additional fundamental concepts:
hierarchical state machines (statecharts) and active object-based
computing. These two concepts beautifully complement encapsulation,
inheritance, and polymorphism 梩he famous tripartite mantra of OOP梐nd
are just as fundamental.
The web site accompanies the book: Practical Statecharts in C/C++, Quantum Programming for Embedded Systems by Miro Samek.
Recommended reading!
Comp.software-eng FAQ
- comp.software-eng, a newsgroup for discussion of software engineering
and related topics. This five part FAQ contains a lot of relevant
information, especially part 4.
Part 0: periodic postings and archives
Part 1: questions and answers
Part 2: CASE tools summary
Part 3: readings
Part 4: CASE tool vendors
Watchdog Timers presents a way to incorporate sanity checks in your system.
Chip Directory
contains numerically and functionally ordered chip lists, chip pinouts,
and lists of manufacturers, electronics books, CDROM's, magazines, WWW
sites and much more.
Great Microprocessors of the Past and Present gives an interesting historical insight in microprocessors.
Transistorized!
gives the story behind the most important invention of the 20th Century
- the Transistor. (At least computer engineers tent to think that it is
themost important invention.)
Embedded Processor and Microcontroller primer and FAQ
is a primer and general FAQ about embedded processors and
microcontrollers. Although slightly outdated, it contains valuable
information.
Introduction to Priority Inversion presents the problem, when it occurs and how to handle/avoid it.
Introduction to Rate Monotonic Scheduling presents how different priorities can be assigned to different processes/tasks in order to meet deadlines.
Cheddar
is a free (graphical) real-time scheduling simulator. It's designed for
checking process/task temporal constraints of a real time
application/system, and it is possibly to quickly prototye different
real-time scheduling algorithms.
University Course: Real-Time Systems gives a good introduction to real-time operating systems.
Comp.realtime: Frequently Asked Questions (FAQs) gives a good overview of the different topics within the real-time field.
uCos-II
is a excellent pre-emptive real-time operating system, which is free
for non-commercial use. It is also exceptionally well-documented, since
it is bought in the form of a book (written by Jean Labrosse). There
are ports to a large number of processors.
Liquorice
is an open source pre-emptive real-time operating system with a
built-in TCP/IP protocol stack (including support for PPP). The project
has not been updated for some years, but is a really high-quality
design and implementation. Currently supports the AVR, MegaAVR
processor family as well as X86 processor family.
freeRTOS is yet another open source pre-emptive real-time operating system. Currently supports the MegaAVR and x86 processor families.
eCos is an open source, royalty-free, real-time operating system intended for embedded applications.
SST: A Single Stack Tasker
is a very small footprint, very simply implemented, prioritized,
preemptive scheduler appropriate for small embedded projects on almost
any conventional processor.
PORTOS
is an experimental real time operating system based on the concepts of
priority functions and priority objects. PORTOS is essentially a
library of routines that can be either used stand-alone or integrated
in any existing Real Time Operating System. A license is required for
any commercial use.
Introduction to TCP/IP - Commonly used Implementations, Protocols and Applications, presented by Embedded Systems Academy.
W. Richard Stevens' Home Page - Author of TCP/IP Illustrated.
SLIP/PPP Homepage presents the protocols SLIP and PPP, which can be used to transport IP frames over a network.
Internet connectivity - "The time is right and the technology is ready for you", by Olaf Pfeiffer and John Rodrigues at Embedded Systems Academy.
Shareware DHCP/BOOTP Server. The same site also contains a DNS Server and a TFTP Server/Client.
Implementation notes and Docs for an Ethernet solution usable for embedded systems using the RTL8019(AS) chipIEEE802™ - get the documentation of the standard.
What is Ethernet? a presentation from EDTP Electronics.
Ethereal
is a free network protocol analyzer for Unix and Windows. It allows you
to examine data from a live network or from a capture file on disk.
Very useful!
Chip: RTL8019AS from Realtek Semiconductor Corp. the manufacturer of a low-cost NE2000 compatible
Ethernet Controller (10 Mbps).
Chip: "NE2000" a LINUX driver for the generic chip interface standard.
Chip: CS8900 from Cirrus Logic the manufacturer of a 10Base-T
Ethernet Controller.
Chip: CS8900 from Cirrus Logic a prototyping board.
Chip: CS8900 from Cirrus Logic a software driver.
Chip: CS8900 from Cirrus Logic a prototyping board.
Chip: CS8900 from Cirrus Logic implmentation with the board above.
Chip: CS8900 from Cirrus Logic a prototyping board.
Chip: CS8900 from Cirrus Logic a prototyping board.
Chip: CS8900 from Cirrus Logic a prototyping board in SimmStick format for HC11 and 8051.
Chip: LAN91Cxxx from Standard Microsystems Corp. the manufacturer (LAN91C96(I), LAN91C100FD, LAN91C110, LAN91C111).
The LAN91C111 is a 10/100 Mbps
Ethernet Controller with ISA Interface, available for industrial temperature ranges. But beware, it is power hungry.
Chip: AX88796L from Asix Corp. the manufacturer of a NE2000 compatible
Ethernet Controller that supports 100 Mbps.
EDTP Electronics manufacturer of a number of prototyping boards (CS8900A, RTL8019AS, ASIX88796L).
uC/IP is a free TCP/IP/PPP stack developed for uC/OS, by Guy Lancaster. The code is based on BSD code and carries the BSD licence.
uIP
is a free TCP/IP implementation for 8- and 16-bit microcontrollers. Has
been ported to a number of processors, such as 8051, Zilog, Lego's,
etc..
uIP-AVR is a port of uIP to the Atmel AVR series of microcontrollers.
Liquorice
is an open source pre-emptive real-time operating system with a
built-in TCP/IP protocol stack (including support for PPP). The project
has not been updated for some years, but is a really high-quality
design and implementation. Currently supports the AVR, MegaAVR
processor family as well as X86 processor family.
lwIP - a LightWeight TCP/IP Stack.
Free software tools for embedded systems, contains a list of free assemblers, C-compilers, debuggers, simulators, etc.
Chip: PIC family - GNU PIC Utilities, GPUTILS is a collection of tools for the PIC microcontrollers. It includes gpasm, gplink, and gplib.
Chip: 68HC11&68HC12 - GNU Development Chain for 68HC11&68HC12.
Chip: 8051/Z80 SDCC - Small Device C Compiler is freeware.
Chip: AVR
- AVR Freaks™ contains a wealth of information regarding the AVR
processor family from ATMEL, especially the AVR-GCC GNU compiler.
Chip: H8/300 - GNU Development Tools for the Renesas H8/300[HS] Series.
Chip: ARMARM Development
Building an ARM development environment
Guide to Building the ARM Linux Toolchain Kernel
Chip: x86Open Watcom C/C++ and Fortran compiler - open source.
Chip: MSP430The GCC toolchain for the Texas Instruments MSP430 MCUs.
A variety of software tools for the MSP430.
Imagecraft MSP430 C compiler, fully functional demo (30 day time limit).
» www.imagecraft.com/softwareBuilding a toolchain for use with eCos - instructions for: ARM (including StrongARM, XScale), Intel x86, MIPS32, PowerPC, Renesas SuperH.
CrossGCC Frequently Asked Questions discusses issues regarding using GCC as a cross-compiler.
GNU utilities for Win32Cygwin is a Linux-like environment for Windows.
MinGW - Minimalist GNU For Windows.
eclipse project
is an open extensible Integrated Development Enviroment (IDE), and the
subproject CDT provides a set of plugins that implement a C/C++ IDE.
VIDE - The V Integrated Development Environment.
Source-Navigator
is a source code analysis tool. With it, you can edit your source code,
display relationships between classes and functions and members, and
display call trees. You can also build your projects, either with your
own makefile, or by using Source-Navigator's build system to
automatically generate a makefile.
Source-Navigator works with the Insight GUI interface for GDB.
Quick reference cards contains some valuable quick reference cards for ANSI-C, Emacs, and GDB.
Robust programming, also called bomb-proof programming, is a style of programming that prevents abnormal termination or unexpected actions.
Highly recommended reading!
Slide presentation: Writing Safe Setuid Programs.
Literate programming is a software development method that increases the understanding and maintainability.
CASE tool index
See book reviews...
The Development of the C Language - a historical insight.
The International Obfuscated C Code Contest - How NOT to write programs :-)
Part 2 ?Using C in an Embedded Environment.
A Considered Response To "Nuts To OOP!" And The Last Word.
Object Oriented Programming Oversold! contains OOP criticism and OOP problems.
Object Oriented Programming in C
presents some programming techniques that allow large projects based on
ANSI-C to get the benefits of object oriented design. Contains links to
other relevant sources of information.
Online book: Reusable Software Components by Truman T. Van Sickle.
quantum programming (qp)
is a programming paradigm that extends traditional object-oriented
programming (OOP) with two additional fundamental concepts:
hierarchical state machines (statecharts) and active object-based
computing. These two concepts beautifully complement encapsulation,
inheritance, and polymorphism 梩he famous tripartite mantra of OOP梐nd
are just as fundamental.
The web site accompanies the book: Practical Statecharts in C/C++, Quantum Programming for Embedded Systems by Miro Samek.
Recommended reading!
Destruction aids memory management in object-oriented C
is an article in Embedded Systems Programming (ESP) arguing that
"proper memory management is a key component of any successful
object-oriented application.". Recommended reading.
CEXCEPT exception handling in C.
Paper: Dynamic Storage Allocation: A Survey and Critical Review by Paul R. Wilson, Mark S. Johnstone, Michael Neely, and David Boles.
This
excellent paper gives an in-depth, but yet easy to understand,
discussion about allocators. The paper also contains over 150
references and is a highly recommended reading; especially chapters 1
and 3.5.
Paper: Garbage Collection - A Real Time Garbage Collector Based On The Lifetimes of Objects.
GC FAQ - a very good source of information.
A garbage collector for C and C++the Garbage Collection page is a comprehensive resource for automatic dynamic memory management a.k.a garbage collection.
NIST - Dictionary of Algorithms and Data Structures a dictionary of algorithms, algorithmic techniques, data structures, archetypical problems, and related definitions.
Queueing Theory Books On Line lists books (and course notes) with a major queueing component that are available for free online.
Priority queues/heaps - an entire web site devoted to priority queues.
Skiplists - a list alternative to binary trees.
Paper: Skip Lists vs. B-Trees
Treaps are minor modifications of randomized binary search trees.
Paper: Adaptive Heuristics for Binary Search Trees and Constant Linkage Cost
FAT File System - contains information about this commonly used file system.
File Systems - an extensive collection of links, covering EXT/2, FAT/VFAT/FAT32, HPFS, and CD-ROM file systems.
See book reviews...
See book reviews...
Course notes: Communication Networks for Process ControlThe Grid Connect Fieldbus Comparison ChartFieldbus: Modbus
- the MODBUS® protocol is a messaging structure developed by Modicon in
1979, used to establish master-slave/client-server communication
between intelligent devices. It is a de-facto standard in industrial
applications. A Modbus TCP version exist.
An Introduction into Fieldbus Networks - presents Fieldbus systems from the beginner's point of view.
Profibus Overview - presents the Fieldbus and it's different specifications (Profibus-DP, Profibus-PA, Profibus-FMS, and PROFInet).
See book reviews...
» Book Reviews: Communication SecurityBook: Digital Evidence and Computer Crime by Eoghan Casey, ISBN: 012162885X
OpenSSL
is a project implementing the Secure Sockets Layer (SSL v2/v3) and
Transport Layer Security (TLS v1) protocols as well as a full-strength
general purpose cryptography library.
How SSL works is an introduction to key cryptography.
» developer.netscape.com/tech/security/basics/index.htmlOpenSSH is a free version of the SSH protocol suite of network connectivity tools.
Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications.
» www.mozilla.org/projects/security/pki/nssCrypto++™ Library 5.1 is a free C++ class library of cryptographic schemes.
cryptlib
is a powerful security toolkit which allows even inexperienced crypto
programmers to easily add encryption and authentication services to
their software.
Course: Algorithms in the Real WorldMD5 Homepage (unofficial)The Tiny Encryption Algorithm (TEA)Counterpane: The Blowfish Encryption AlgorithmCounterpane: Twofish: A New Block CipherCounterpane: Why Cryptography Is Harder Than It LooksCounterpane Labs Publications
simpleRTJ
- a virtual machine with a small memory footprint aimed at embedded
systems and real-time operating systems. Only a subset of Java is
supported (e.g. no double type). The following processors are supported
(according to the site): MC68302, MC68376/332, 68HC11, 68HC16, 8051,
8051XA, various ARM derivatives, H8S/2241, STi5512 (RISC set-top-box),
DSP56300, and others.
It's a commercial product, but is free for evaluation, educational and private use.
TinyVm
is a small virtual machine to run as a replacement firmware on the Lego
Mindstorm RCX microcontroller. It only offers a very small subset of
the runtime library but limits itself to about 10 KB of memory.
Javelin Stamp is a 24-pin DIP module programmed in a subset of the Sun Microsystems Java language.
JStamp is 1.00 x 2.00 inches, with 40 DIP leads, an execute java byte codes directly in silicon.
Programming Languages for the Java Virtual Machine. Once you have a virtual machine running, you can program in many more languages than java.