Top Banner

Click here to load reader

AN QP-nano and ARM7/9 with GNU - state- · PDF fileQP-nano™ and ARM7/9 with GNU ... which typically cannot fit into available RAM of low-end MCUs. Figure 2 QP-nano components and

Jul 10, 2018

ReportDownload

Documents

duongque

  • QP state machine frameworks for ARM7/ARM9

    Application NoteQP-nano and ARM7/9 with GNU

    Document Revision QOctober 2012

    Copyright Quantum Leaps, LLC

    www.quantum-leaps.com www.state-machine.com

    http://www.state-machine.com/http://www.quantum-leaps.com/

  • Copyright Quantum Leaps, LLC. All Rights Reserved.

    Table of Contents

    1 Introduction ..................................................................................................................................................... 1 1.1 About QP-nano ....................................................................................................................................... 2 1.2 About QM ............................................................................................................................................... 3 1.3 About the QP-nano Port to ARM7/9 ........................................................................................................ 4 1.4 Licensing QP-nano ................................................................................................................................. 4 1.5 Licensing QM .......................................................................................................................................... 4

    2 Directories and Files ....................................................................................................................................... 5 2.1 Building the Examples ................................................................................................................................ 6 2.2 Downloading to Flash and Debugging the Examples ................................................................................. 9 2.3 Running the Examples ............................................................................................................................... 13

    3 The Linker Script ............................................................................................................................................. 14 3.1 Linker Options ............................................................................................................................................ 17

    4 Non-Preemptive Configuration of QP-nano .................................................................................................. 19 4.1 Configuration and Customizing QP-nano (qpn_port.h) ............................................................................... 19 4.2 ARM-Specific QF-nano Port (qfn_port.s) .................................................................................................... 21

    5 Preemptive Configuration with QK-nano ...................................................................................................... 34 5.1 Configuration and Customizing QP-nano ................................................................................................... 34 5.2 Handling Interrupts in QK-nano .................................................................................................................. 35 5.3 Idle Loop Customization in the QK Port ..................................................................................................... 39

    6 Related Documents and References ............................................................................................................. 40

    7 Contact Information ........................................................................................................................................ 41

    i

  • Copyright Quantum Leaps, LLC. All Rights Reserved.

    1 IntroductionThis Application Note describes how to use the QP-nano state machine framework version 4 or higher with the ARM7 or ARM9 processors. This document describes the following two main implementation options:

    1. The cooperative Vanilla kernel available in the QF-nano real-time framework; and

    2. The preemptive run-to-completion QK-nano kernel.

    The provided application examples illustrate also using the QM modeling tool for designing QP applications graphically and generating code automatically.

    Figure 1: AT91SAM7S-EK evaluation board from Atmel and the J-Link pod

    To focus the discussion, this Application Note uses the AT91SAM7S-EK development board from Atmel as an example hardware platform. The actual hardware/software used is as follows:

    1 of 41

    J-LinkJ-TAG pod

    4 LEDs

    AtmelAT91SAM7S64

    device

    external power

    QSPY output(NULL-modemcable to PC)

    Standard 20-pinJ-TAG connector

    Push ButtonPB1

  • Copyright Quantum Leaps, LLC. All Rights Reserved.

    Application NoteQP-nano and ARM7/9 with GNU

    www.state-machine.com/arm

    1. QP-nano version 4.5.02 or higher available from www.state-machine.com/downloads.

    2. The devkitARM GNU-ARM toolset available from SourceForge.net at https://sourceforge.net/projects/devkitpro/files/devkitARM [devkitARM]

    3. The GNU make 3.82 and related UNIX-file utilities for Windows available from the Qtools collection at http://www.state-machine.com/downloads [Qtools for Windows]

    4. Insight GDB frontend available from SourceForge.net at https://sourceforge.net/projects/devkitpro/files/Insight [Insight-GDB].

    5. Eclipse IDE for C/C++ Developers available from http://www.eclipse.org/downloads [Eclipse].

    6. Zylin Embedded CDT plugin available from http://opensource.zylin.com/embeddedcdt.html [Zylin-pugin] to improve support for the GDB embedded debugging with Eclipse.

    7. AT91SAM7S-EK evaluation board from Atmel (AT91SAM7S64 MCU)

    8. SEGGER J-Link ARM J-TAG pod available from www.segger.com.

    9. SEGGER J-Link GDB Server software v4.08l available for download from segger.com/cms/downloads.html

    1.1 About QP-nanoQP-nano is a generic, portable, ultra-lightweight, event-driven framework signed specifically for low-end 8- and 16-bit MCU. As shown in Figure 2, QP-nano consists of a universal UML-compliant event processor (QEP-nano), a portable real-time framework (QF-nano), and a tiny run-to-completion kernel (QK-nano). The ultra-lightweight QP-nano requires only 1-2KB of code and just several bytes of RAM.

    QP-nano facilitates building well-structured embedded applications as a set of concurrently executing hierarchical state machines (UML statecharts) directly in C. QP-nano is described in the book Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems [PSiCC2] (Newnes, 2008). QP-nano runs on a bare-metal MCU, completely replacing a conventional RTOS, which typically cannot fit into available RAM of low-end MCUs.

    Figure 2 QP-nano components and their relationship with the target hardware, board support package (BSP), and the application

    2 of 41

    QEP-nano UML-Compliant Event Processor

    Application(Your code)Active

    ObjectActiveObject

    ActiveObject

    ActiveObject

    QF-nano Event-Driven Framework

    BSP

    QK-nano Preemptive Kernelor Cooperative Kernel

    Target

    http://www.state-machine.com/armhttp://www.segger.com/cms/downloads.htmlhttp://www.segger.com/http://opensource.zylin.com/embeddedcdt.htmlhttp://www.eclipse.org/downloads/https://sourcefo

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.