# cheriwen/mspm0g3507_freertos architecture

> Architecture diagram of the GitHub repository cheriwen/mspm0g3507_freertos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cheriwen/mspm0g3507_freertos
- Repository: https://github.com/cheriwen/mspm0g3507_freertos

## Overview

This is an MSPM0 embedded FreeRTOS example, not a substantial application product: the README describes an otherwise empty DriverLib project, while `empty.c` supplies a static LED-blink task and a periodic debug-print task. The runtime flow initializes SysConfig and UART, creates both tasks, and starts the scheduler. The tree also includes FreeRTOS synchronization and timing facilities; those are represented as available subsystems, but their wiring into this demo is not established by the sampled excerpts.

Main entry points: [`keil/FreeRTOS/src/tasks.c`](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/tasks.c) (Task scheduler), [`empty.c`](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c) (Startup and tasks), [`keil/USER/Module/Board_Driver/UART0_Debug.c`](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Driver/UART0_Debug.c) (Debug UART driver), [`keil/USER/Module/Board_Device/board_led.c`](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Device/board_led.c) (Board LED driver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Demo application"]
  node_main["Startup and tasks<br/>[empty.c]"]
  node_led_task["LED blink task<br/>[empty.c]"]
  node_print_task["Debug print task<br/>[empty.c]"]
end

subgraph group_kernel["FreeRTOS kernel"]
  node_tasks["Task scheduler<br/>[tasks.c]"]
  node_port["ARM Cortex-M0 port<br/>[port.c]"]
  node_heap["Heap allocation<br/>[heap_4.c]"]
  node_lists["Kernel lists<br/>[list.c]"]
end

subgraph group_communication["Kernel communication"]
  node_queues["Queues and semaphores<br/>[queue.c]"]
  node_events["Event groups<br/>[event_groups.c]"]
  node_streams["Stream buffers<br/>[stream_buffer.c]"]
  node_timers["Software timers<br/>[timers.c]"]
  node_coroutines["Co-routines<br/>[croutine.c]"]
end

subgraph group_platform["Hardware platform"]
  node_led_driver["Board LED driver<br/>[board_led.c]"]
  node_uart_driver["Debug UART driver<br/>[UART0_Debug.c]"]
  node_delay_driver["Timer delay driver<br/>[tim_delay.c]"]
  node_sysconfig["SysConfig initialization<br/>[ti_msp_dl_config.c]"]
end

node_developer(("Application user"))
node_mcu["MSPM0 peripherals"]

node_developer -->|"runs example"| node_main
node_main -->|"initializes"| node_sysconfig
node_main -->|"initializes"| node_uart_driver
node_main -->|"creates tasks; starts scheduler"| node_tasks
node_tasks -->|"dispatches"| node_led_task
node_tasks -->|"dispatches"| node_print_task
node_led_task -->|"toggles LED"| node_led_driver
node_led_task -->|"delays"| node_tasks
node_print_task -->|"prints via printf"| node_uart_driver
node_print_task -->|"delays"| node_tasks
node_led_driver -->|"controls GPIO"| node_mcu
node_uart_driver -->|"uses UART"| node_mcu
node_port -->|"increments tick"| node_tasks

click node_main "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c"
click node_led_task "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c"
click node_print_task "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c"
click node_led_driver "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Device/board_led.c"
click node_uart_driver "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Driver/UART0_Debug.c"
click node_delay_driver "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Driver/tim_delay.c"
click node_sysconfig "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/ti_msp_dl_config.c"
click node_tasks "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/tasks.c"
click node_port "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/portable/TI_ARM_CLANG/ARM_CM0/port.c"
click node_heap "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/portable/MemMang/heap_4.c"
click node_lists "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/list.c"
click node_queues "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/queue.c"
click node_events "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/event_groups.c"
click node_streams "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/stream_buffer.c"
click node_timers "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/timers.c"
click node_coroutines "https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/croutine.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_led_task,node_print_task,node_developer toneBlue
class node_tasks,node_port,node_heap,node_lists toneAmber
class node_queues,node_events,node_streams,node_timers,node_coroutines toneMint
class node_led_driver,node_uart_driver,node_delay_driver,node_sysconfig toneRose
class node_mcu toneIndigo
```

## Components

### Demo application

- [Startup and tasks](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c): `empty.c`
- [LED blink task](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c): `empty.c`
- [Debug print task](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/empty.c): `empty.c`

### FreeRTOS kernel

- [Task scheduler](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/tasks.c): `keil/FreeRTOS/src/tasks.c`
- [ARM Cortex-M0 port](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/portable/TI_ARM_CLANG/ARM_CM0/port.c): `keil/FreeRTOS/portable/TI_ARM_CLANG/ARM_CM0/port.c`
- [Heap allocation](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/portable/MemMang/heap_4.c): `keil/FreeRTOS/portable/MemMang/heap_4.c`
- [Kernel lists](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/list.c): `keil/FreeRTOS/src/list.c`

### Kernel communication

- [Queues and semaphores](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/queue.c): `keil/FreeRTOS/src/queue.c`
- [Event groups](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/event_groups.c): `keil/FreeRTOS/src/event_groups.c`
- [Stream buffers](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/stream_buffer.c): `keil/FreeRTOS/src/stream_buffer.c`
- [Software timers](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/timers.c): `keil/FreeRTOS/src/timers.c`
- [Co-routines](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/FreeRTOS/src/croutine.c): `keil/FreeRTOS/src/croutine.c`

### Hardware platform

- [Board LED driver](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Device/board_led.c): `keil/USER/Module/Board_Device/board_led.c`
- [Debug UART driver](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Driver/UART0_Debug.c): `keil/USER/Module/Board_Driver/UART0_Debug.c`
- [Timer delay driver](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/keil/USER/Module/Board_Driver/tim_delay.c): `keil/USER/Module/Board_Driver/tim_delay.c`
- [SysConfig initialization](https://github.com/cheriwen/mspm0g3507_freertos/blob/main/ti_msp_dl_config.c): `ti_msp_dl_config.c`

### Other components

- **Application user**
- **MSPM0 peripherals**

## Connections

- Application user → Startup and tasks: runs example
- Startup and tasks → SysConfig initialization: initializes
- Startup and tasks → Debug UART driver: initializes
- Startup and tasks → Task scheduler: creates tasks; starts scheduler
- Task scheduler → LED blink task: dispatches
- Task scheduler → Debug print task: dispatches
- LED blink task → Board LED driver: toggles LED
- LED blink task → Task scheduler: delays
- Debug print task → Debug UART driver: prints via printf
- Debug print task → Task scheduler: delays
- Board LED driver → MSPM0 peripherals: controls GPIO
- Debug UART driver → MSPM0 peripherals: uses UART
- ARM Cortex-M0 port → Task scheduler: increments tick
