QP-nano  6.9.0
Real-Time Embedded Framework
DPP on EK-TM4C123GXL

This example implements the Dining Philosophers Problem sample application on the EK-TM4C123GLX board (ARM Cortex-M4F).

EK-TM4C123GXL board

The DPP example is located in the directory qpc/examples/arm-cm/dpp_ek-tm4c123gxl, which is organized as follows:

qpn/ - QP-nano installation directory
+-examples/ - QP-nano examples directory (applications)
| +-arm-cm/ - QP-nano examples for ARM Cortex-M
| | +-dpp_ek-tm4c123gxl/ - DPP example on the EK-TM4C123GLX board
| | | +-lint/ - PC-Lint version (static analysis of the application code)
| | | | +-lin.bat - batch file for running the PC-Lint
| | | | +-options.lnt - PC-Lint options file for the DPP application code
| | | +-qk/ - QK version
| | | | +-arm/ - ARM-KEIL toolchain
| | | | | +-dpp-qk.uvprojx - uVision project
| | | | +-gnu/ - GNU-ARM toolchain
| | | | | +-Makefile - Makefile for building the project
| | | | +-iar/ - IAR-ARM toolchain
| | | | | +-dpp-qk.eww - IAR EW-ARM workspace
| | | | +-ti/ - TI-ARM toolchain (CCS)
| | | | | +-.ccsproject - CCS project
| | | | | +-.cproject - C Eclipse project
| | | | | +-.project - Eclipse project
| | | | +-bsp.c - BSP for the QK-nano kernel
| | | | +-main.c - main() for the QK-nano kernel
| | | +-qv/ - QV version
| | | | +-arm/ - ARM-KEIL toolchain
| | | | | +-dpp-qk.uvprojx - uVision project
| | | | +-gnu/ - GNU-ARM toolchain
| | | | | +-Makefile - Makefile for building the project with GNU-ARM
| | | | +-iar/ - IAR-ARM toolchain
| | | | | +-blinky-qk.eww - IAR EW-ARM workspace
| | | | +-bsp.c - BSP for the QV-nano kernel
| | | | +-main.c - main() for the QV-nano kernel

Features Demonstrated

  • cooperative QV-nano kernel
    • with ARM-KEIL toolchain
    • with GNU-ARM toolchain
    • with IAR-ARM toolchain
    • with TI-ARM toolchain (CCS)
  • preemptive run-to-completion QK-nano kernel
    • with ARM-KEIL toolchain
    • with GNU-ARM toolchain
    • with IAR-ARM toolchain
    • with TI-ARM toolchain (CCS)
  • Windows emulation with GUI (single threaded, win32-qv)

Running the Example

Once programmed into the board, the example rapidly toggles the Blue LED from the idle loop (blue LED glows) and toggles the Red and Green LEDs as the Philosophers change their state. Additionally, you can depress and hold the SW1 button (left) to PAUSE the application (Table transitions into the "paused" state). Releasing the SW1 button causes transition back to the "serving" state.