|
Quantum Leaps, LLC 103 Cobble Ridge Drive Chapel Hill, NC 27516 www.quantum-leaps.com |
| July 31, 2007 | |
In this issue:
Building Bare-Metal ARM Systems with GNU
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:
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. New Development Kits (QDKs) for ARM with GNU
The following QDKs fore ARM with the GNU toolchain are now available:
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). New QDK-nano for 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... Embedded Software Crisis or Embedded Software Glut?
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... |
|
|||||