Open Source in Embedded System Development

Jeremy Bennett

This paper introduces the huge range of free and open source software available to the embedded software developer. Hardware modeling, software tool chains, operating systems (RTOS and Linux), middleware and applications are all covered. Today open source is spreading to the hardware world. The paper addresses the advantages and risks associated with using free and open source software, including the issues of quality, support and licensing.

Arduino Microcontroller Guide

W. Durfee

The Arduino microcontroller is an easy to use yet powerful single board computer that has gained considerable traction in the hobby and professional market. The Arduino is open-source, which means hardware is reasonably priced and development software is free. This guide is for students in ME 2011, or students anywhere who are confronting the Arduino for the first time. For advanced Arduino users, prowl the web; there are lots of resources.

Getting Started with C Programming for the ATMEL AVR Microcontrollers

Son Lam Phung

This tutorial provides information on the tool and the basic steps for programming the Atmel AVR microcontrollers using C. It is aimed at people who are new to this family of microcontrollers. The Atmel STK500 development board and the ATmega16 chip are used in this tutorial; however, it is easy to adopt the information given here for other AVR chips.

Real-Time Operating Systems and Programming Languages for Embedded Systems

Javier D. Orozco, Rodrigo M. Santos

Section 1 describes the main characteristics that a real-time operating system should have.
Section 2 discusses the scope of some of the more well known RTOSs.
Section 3 introduces the languages used for real-time programming and compares the main characteristics.
Section 4 presents and compares different alternatives for the implementation of real-time Java.

Software Development for Parallel and Multi-Core Processing

Kenn R. Luecke

The embedded software industry wants microprocessors with increased computing functionality that maintains or reduces space, weight, and power (SWaP). Single core processors were the key embedded industry solution between 1980 and 2000 when large performance increases were being achieved on a yearly basis and were fulfilling the prophecy of Moore's Law. Moore's Law states that "the number of transistors that can be placed inexpensively on an integrated circuit doubles approximately every two years." With the increased transistors, came microprocessors with greater computing throughput while space, weight and power were decreasing. However, this 'free lunch' did not last forever. The additional power required for greater performance improvements became too great starting in 2000. Hence, single core microprocessors are no longer an optimal solution.

Interrupts, Low Power Modes and Timer A

Erik Cheever

This document contains a lot of what you need to know to get the most out of the MSP430. The MSP430 line is renowned for it's low power usage, and to really utilize it well you have to architect your software to be an interrupt driven device that utilizes the low power modes.

PID Without a PhD

Tim Wescott

PID (proportional, integral, derivative) control is not as complicated as it sounds. Follow these simple implementation steps for quick results.

Memory allocation in C

Leslie Aldridge

This article is about dynamic memory allocation in C in the context of embedded programming. It describes the process of dynamically allocating memory with visual aids. The article concludes with a practical data communications switch example which includes a sample code in C.

CPU Memory - What Every Programmer Should Know About Memory

Ulrich Drepper

As CPU cores become both faster and more numerous, the limiting factor for most programs is now, and will be for some time, memory access. Hardware designers have come up with ever more sophisticated memory handling and acceleration techniques–such as CPU caches–but these cannot work optimally without some help from the programmer. Unfortunately, neither the structure nor the cost of using the memory subsystem of a computer or the caches on CPUs is well understood by most programmers. This paper explains the structure of memory subsystems in use on modern commodity hardware, illustrating why CPU caches were developed, how they work, and what programs should do to achieve optimal performance by utilizing them.

Embedded Systems – Theory and Design Methodology

Kiyofumi Tanaka (Editor)

This book addresses a wide spectrum of research topics on embedded systems, including basic researches, theoretical studies, and practical work.