July 31, 2007
In this issue:
  • Building Bare-Metal ARM Systems with GNU
  • New Development Kits (QDKs) for ARM with GNU
  • New QDK-nano for Cypress PSoC
  • "Embedded Software Crisis or Embedded Software Glut?"

Building Bare-Metal ARM Systems with GNU

Chapel Hill

The Embedded.com website is currently publishing a series of 10 technical articles contributed by Quantum Leaps, LLC about using the GNU toolchain for building real-life systems based on the ubiquitous ARM microcontrollers. This article demonstrates Quantum Leaps' expertise in the ARM processor architecture as well as our ongoing commitment to open source. The article is the recommended reading for the recently released QP and QP-nano ports to the ARM processor with GNU.

The installments of the article are posted online to the Embedded.com Technical Insights article collection on a weekly basis (typically on Monday). The episodes published so far include:

The upcoming installments are:

  • Part 7: Interrupt Locking and Unlocking
  • Part 8: Low-level Interrupt Wrapper Functions
  • Part 9: C-Level ISRs and Other ARM Exceptions
  • Part 10: Example Application and Testing Strategies

You can also download the C and C++ source code accompanying this article series, which is available at Embedded.com's Downloadable Code page.

Perhaps the most interesting aspect of the interrupt handling implementation presented in the article is the close compatibility with the new ARM v7-M architecture (e.g., Cortex-M3). Specifically, the low-level interrupt wrapper functions deal with all the ARM-magic internally, so that the interrupt service routines (ISRs) that you hook to the interrupt controller can be regular C-functions. The C-level ISRs run in the same processor mode (SYSTEM) as the code called from main() (task-level). Also, the assembler wrapper functions expressly avoid using the IRQ/FIQ stacks and instead nest interrupts of all types (IRQs and FIQs) on the SYSTEM/USER stack. The interrupt context saved to the stack is optimized for high-level languages and just like in the ARM v7-M specification, the wrapper functions save only the 8 registers clobbered in the ARM Architecture Procedure Calling Standard (AAPCS). In fact, the interrupt wrapper functions generate in software the exact same interrupt stack frame (PSR, PC, LR, R12, R3, R2, R1, R0) as the ARM v7-M processors generate in hardware.


Download the source code for the article
from the Embedded.com code archive »


New Development Kits (QDKs) for ARM with GNU

QDK

The following QDKs fore ARM with the GNU toolchain are now available:

  • QDK/C ARM-GNU AT91SAM7S
  • QDK/C ARM-GNU LPC213X
  • QDK/C++ ARM-GNU AT91SAM7S
  • QDK/C++ ARM-GNU LPC213X
  • QDK-nano ARM-GNU AT91SAM7S
  • QDK-nano ARM-GNU LPC213X

The QDKs go several steps beyond the basic "superloop" described in the aforementioned Embedded.com article. You get the entire event-driven platform for developing ARM systems that can rival any commercial RTOS. Each QDK contains options to use either a non-preemptive scheduler (Vanilla) and a fully preemptive, priority-based kernel (QK).

Download the new QDKs  for ARM »


New QDK-nano for Cypress PSoC

Cypress PSoC

The first QDK-nano for the Cypress Programmable System on Chip (PSoC) mixed signal array with the Imagecraft C M8C compiler has been released. Currently, the QDK-nano supports only the non-hierarchical state machines (FSMs), due to buggy implementation of pointers-to-functions in the ICCM8C compiler.

Quantum Leaps is also involved in the Beta testing of the HI-TECH pro PSoC compiler, which should support hierarchical state machines, and even perhaps the fully-preemptive kernel (QK-nano). The HI-TECH implementation of pointers-to-function is much better and the new C compiler for PSoC looks very promising. Stay tunded...

Download new QDK-nano for PSoC »


Embedded Software Crisis or Embedded Software Glut?

Blog

Check out the state-space blog on EmbeddedGurus.net. While the ESD magazine editors lament about the overwhelming amount of embedded code to be created in the future, this post offers a different perspective...

Check out the state-space blog »

SUBSCRIPTION INFORMATION: You have received this emal because you have contacted Quantum Leaps or specifically elected to receive news from Quantum Leaps. To make sure you continue to receive this Newsletter in your e-mail inbox, and that it is not sent to bulk or junk folders, please add news@quantum-leaps.com to your address book.

If you no longer wish to receive e-mail from Quantum Leaps, please unsubscribe at: quantum-leaps.com/news or reply to this e-mail with the word "unsubscribe" in the subject or body of the message.

If you have been forwarded this newsletter and would like to receive it directly, please also visit quantum-leaps.com/news to subscribe.