askill
note-config

note-configSafety --Repository

Configure NuttX/Vela note instrumentation framework. Use when enabling scheduler tracing, performance monitoring, note drivers (noteram, notefile, notelog, notesnap, notertt, sysview, noterpmsg), or configuring SCHED_INSTRUMENTATION options. Also use when user mentions note configuration, noteram, trace config, performance tracing, SystemView setup, SCHED_INSTRUMENTATION, or DRIVERS_NOTE.

7 stars
1.2k downloads
Updated 2/15/2026

Package Files

Loading files...
SKILL.md

Note Framework Configuration

The note framework has two layers:

  1. Scheduler instrumentation (sched/Kconfig) - controls what events to capture
  2. Note drivers (drivers/note/Kconfig, drivers/segger/Kconfig) - controls where data goes

Architecture

sched/Kconfig                    drivers/note/Kconfig          drivers/segger/Kconfig
┌─────────────────────┐          ┌──────────────────┐          ┌──────────────────┐
│ SCHED_INSTRUMENTATION│─────────▶│ DRIVERS_NOTERAM  │          │ DRIVERS_NOTERTT  │
│   _SWITCH            │         │ DRIVERS_NOTEFILE │          │ SEGGER_SYSVIEW   │
│   _PREEMPTION        │         │ DRIVERS_NOTELOG  │          └──────────────────┘
│   _CSECTION          │         │ DRIVERS_NOTESNAP │
│   _SPINLOCKS         │         │ DRIVERS_NOTEITM  │
│   _SYSCALL           │         │ DRIVERS_NOTERPMSG│
│   _IRQHANDLER        │         └──────────────────┘
│   _HEAP              │
│   _WDOG              │    Each driver auto-selects DRIVERS_NOTE
│   _DUMP              │    and SCHED_INSTRUMENTATION
│   _FUNCTION          │
│   _FILTER            │
└─────────────────────┘

Key: enabling any note driver (e.g. DRIVERS_NOTERAM) auto-selects DRIVERS_NOTE and SCHED_INSTRUMENTATION. But you still need to enable specific event hooks (SWITCH, SYSCALL, etc.) to capture those events.

Common Configuration Recipes

1. Basic Task Tracing (noteram)

Minimal config to trace task start/stop/switch via in-memory buffer:

CONFIG_SCHED_INSTRUMENTATION_SWITCH=y    # task suspend/resume
CONFIG_DRIVERS_NOTERAM=y                 # auto-selects DRIVERS_NOTE + SCHED_INSTRUMENTATION
CONFIG_DRIVERS_NOTERAM_BUFSIZE=4096      # buffer size (default 2048)

2. Full Tracing for Debugging

CONFIG_SCHED_INSTRUMENTATION_SWITCH=y
CONFIG_SCHED_INSTRUMENTATION_PREEMPTION=y
CONFIG_SCHED_INSTRUMENTATION_CSECTION=y
CONFIG_SCHED_INSTRUMENTATION_SYSCALL=y
CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER=y
CONFIG_SCHED_INSTRUMENTATION_HEAP=y
CONFIG_SCHED_INSTRUMENTATION_DUMP=y
CONFIG_SCHED_INSTRUMENTATION_FILTER=y
CONFIG_DRIVERS_NOTERAM=y
CONFIG_DRIVERS_NOTERAM_BUFSIZE=16384
CONFIG_DRIVERS_NOTERAM_CRASH_DUMP=y      # dump on panic

3. Segger SystemView

CONFIG_SCHED_INSTRUMENTATION_SWITCH=y
CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER=y
CONFIG_SEGGER_SYSVIEW=y                  # auto-selects DRIVERS_NOTE + SEGGER_RTT
CONFIG_SEGGER_SYSVIEW_RTT_BUFFER_SIZE=4096

4. RPMSG Note (multi-core)

Send note data from remote core to AP:

# On remote core (sender):
CONFIG_SCHED_INSTRUMENTATION_SWITCH=y
CONFIG_DRIVERS_NOTERPMSG=y
CONFIG_DRIVERS_NOTERPMSG_SERVER_NAME="ap"
CONFIG_DRIVERS_NOTERPMSG_BUFSIZE=2048
CONFIG_DRIVERS_NOTERPMSG_WORK_DELAY=100

# On AP (receiver):
CONFIG_DRIVERS_NOTERPMSG_SERVER=y
CONFIG_DRIVERS_NOTERAM=y

5. Crash Diagnosis Setup

CONFIG_SCHED_INSTRUMENTATION_SWITCH=y
CONFIG_SCHED_INSTRUMENTATION_DUMP=y
CONFIG_DRIVERS_NOTERAM=y
CONFIG_DRIVERS_NOTERAM_BUFSIZE=8192
CONFIG_DRIVERS_NOTERAM_DEFAULT_NOOVERWRITE=y   # preserve boot data
CONFIG_DRIVERS_NOTERAM_CRASH_DUMP=y            # dump on panic
CONFIG_DRIVERS_NOTESNAP=y                      # last scheduling snapshot
CONFIG_DRIVERS_NOTESNAP_NBUFFERS=256
CONFIG_DRIVERS_NOTESNAP_CRASH_DUMP=y

6. Function Auto-Tracing

CONFIG_SCHED_INSTRUMENTATION_FUNCTION=y
CONFIG_DRIVERS_NOTERAM=y
CONFIG_DRIVERS_NOTERAM_BUFSIZE=32768    # large buffer needed

Then add to target module Makefile:

CFLAGS += -finstrument-functions
# Exclude specific files:
CFLAGS += -finstrument-functions-exclude-file-list=hot_path.c
# Exclude specific functions:
CFLAGS += -finstrument-functions-exclude-function-list=irq_handler

Filter Configuration

When SCHED_INSTRUMENTATION_FILTER=y, each driver can have its own filter mode and CPU set:

  • Filter mode (*_FILTER_DEFAULT_MODE): hex bitmask per enum note_type_e. 0x0 = all enabled, 0x01 = all disabled.
  • CPU set (*_CPUSET): hex bitmask for SMP. Bit0=CPU0, Bit1=CPU1. Default 0xffff.

Per-driver filter options follow the pattern:

  • DRIVERS_NOTE<X>_FILTER_DEFAULT_MODE - inherits from SCHED_INSTRUMENTATION_FILTER_DEFAULT_MODE
  • DRIVERS_NOTE<X>_CPUSET - inherits from SCHED_INSTRUMENTATION_CPUSET

Drivers with filter support: NOTERAM (global), NOTELOWEROUT, NOTEFILE, NOTELOG, NOTESNAP, NOTERPMSG, NOTERTT, SEGGER_SYSVIEW.

Driver Selection Guide

DriverOutputUse Case
NOTERAMIn-memory circular buffer (/dev/note/ram)Default, read via app or crash dump
NOTEFILEFile/device pathStream to serial/file
NOTELOGSyslogIntegrate with system logging
NOTESNAPLast-N scheduling recordsCrash post-mortem
NOTERTTSegger J-Link RTTReal-time via J-Link
SYSVIEWSegger SystemViewVisual timeline analysis
NOTERPMSGRPMSG to remote coreMulti-core tracing
NOTEITMARM CoreSight ITMHardware trace port
NOTELOWEROUTLower output interfaceCustom output backend

Multiple drivers can be active simultaneously (up to DRIVERS_NOTE_MAX).

Reference

For complete Kconfig option details (types, defaults, dependencies), see references/kconfig-options.md.

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

AI review pending.

Metadata

Licenseunknown
Version-
Updated2/15/2026
PublisherXuNeo

Tags

observability