307 lines
6.3 KiB
Plaintext
307 lines
6.3 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: RIOT OS specific menu
|
|
; @Description: -
|
|
; @Keywords: riot riot-os menu awareness
|
|
; @Author: RIC
|
|
; @Copyright: (c) 1989-2018 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: riot.m 6805 2021-08-11 07:28:55Z amerkle $
|
|
|
|
NAME "TASK.RIOTOS"
|
|
IF !MENU.EXIST("TASK.RIOTOS")
|
|
(
|
|
add
|
|
menu
|
|
(
|
|
popup "Riot OS"
|
|
(
|
|
default
|
|
MENUITEM "Display &Tasks" "TASK.TaskList"
|
|
MENUITEM "Display M&ailboxes"
|
|
(
|
|
TASK.MailBoX
|
|
)
|
|
MENUITEM "Display &Mutexes"
|
|
(
|
|
TASK.MuTeX
|
|
)
|
|
MENUITEM "Display &Recursive Mutexes"
|
|
(
|
|
TASK.RMutex
|
|
)
|
|
MENUITEM "Display Ring &Buffers"
|
|
(
|
|
TASK.RingBuffer
|
|
)
|
|
MENUITEM "Display &Semaphores"
|
|
(
|
|
TASK.SEMaphore
|
|
)
|
|
MENUITEM "Display &Timers"
|
|
(
|
|
TASK.TIMer
|
|
)
|
|
separator
|
|
popup "&Stack Coverage"
|
|
(
|
|
menuitem "&List Stacks"
|
|
(
|
|
TASK.STacK.PATtern 0x5A
|
|
TASK.STacK.view
|
|
)
|
|
menuitem "Add Task" "TASK.STacK.ADD"
|
|
menuitem "Remove Task" "TASK.STacK.RM"
|
|
enable icd()||simulator()
|
|
menuitem "&Reset Coverage"
|
|
(
|
|
DIALOG.YesNo "Overwrite unused stack space" "with stack fill pattern?"
|
|
entry &yn
|
|
if !&yn
|
|
(
|
|
enddo
|
|
)
|
|
TASK.STacK.Init
|
|
)
|
|
)
|
|
)
|
|
popup "Trace"
|
|
(
|
|
popup "List"
|
|
(
|
|
separator
|
|
menuitem "&Task Switches" "Trace.List List.TASK"
|
|
menuitem "&Default and Tasks" "Trace.List List.TASK DEFault"
|
|
)
|
|
)
|
|
popup "Perf"
|
|
(
|
|
separator
|
|
popup "&Task Runtime"
|
|
(
|
|
menuitem "&Prepare"
|
|
(
|
|
if t.method.analyzer()
|
|
(
|
|
Analyzer.AutoInit on
|
|
)
|
|
if a.mode.flow()
|
|
(
|
|
Break.Delete /TraceEnable
|
|
Break.Set task.config(magic) /TraceEnable
|
|
)
|
|
)
|
|
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASK"
|
|
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASK"
|
|
menuitem "[:achart]Tracking with Trace &List"
|
|
(
|
|
Trace.List List.TASK DEFault /Track
|
|
Trace.CHART.TASK /Track
|
|
)
|
|
)
|
|
popup "Task &Function Runtime"
|
|
(
|
|
menuitem "&Prepare"
|
|
(
|
|
if t.method.analyzer()
|
|
(
|
|
Analyzer.AutoInit on
|
|
Analyzer.STATistic.PreFetch on
|
|
)
|
|
if a.mode.flow()
|
|
(
|
|
Break.Delete /TraceData
|
|
Break.Set task.config(magic) /TraceData
|
|
)
|
|
)
|
|
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKFUNC"
|
|
menuitem "[:perf]Show as &Tree" "Trace.STATistic.TASKTREE"
|
|
menuitem "[:perf]Show &Detailed Tree" "Trace.STATistic.TASKTREE ALL"
|
|
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKFUNC"
|
|
menuitem "[:alist]Show N&esting" "Trace.List List.TASK FUNC TI.FUNC"
|
|
)
|
|
)
|
|
popup "&Help"
|
|
(
|
|
MENUITEM "[:manual]OS Awareness Manual RIOT OS" "HELP __RTOS_RIOT_"
|
|
)
|
|
)
|
|
|
|
// Timer right-click menu
|
|
MENU "RIOT.TIML"
|
|
(
|
|
default
|
|
MENUITEM "Display Timer Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="xtimer_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Show Callback Function"
|
|
(
|
|
&magic=address.offset(track.address())
|
|
&address=Var.Value(((xtimer_t*)&magic)->callback)
|
|
List &address
|
|
)
|
|
)
|
|
|
|
|
|
// Mailbox Window right-click menu
|
|
MENU "RIOT.MBOXL"
|
|
(
|
|
default
|
|
MENUITEM "Display Detailed Information"
|
|
(
|
|
&address=TRACK.ADDRESS()
|
|
TASK.MailBoX &address
|
|
)
|
|
MENUITEM "Display Mailbox Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="mbox_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
|
|
|
|
// Recursive Mutex right-click menu
|
|
MENU "RIOT.RML"
|
|
(
|
|
default
|
|
MENUITEM "Display Recursive Mutex Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="rmutex_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
|
|
// Semaphore right-click menu
|
|
MENU "RIOT.SEML"
|
|
(
|
|
default
|
|
MENUITEM "Display Detailed Information"
|
|
(
|
|
&address=track.address()
|
|
TASK.SEMaphore &address
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Display Semaphore Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="sema_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
|
|
|
|
// RingBuffer right-click menu
|
|
MENU "RIOT.RBL"
|
|
(
|
|
default
|
|
MENUITEM "Display RingBuffer Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="ringbuffer_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
|
|
|
|
// Mutex right-click menu
|
|
MENU "RIOT.ML"
|
|
(
|
|
default
|
|
MENUITEM "Display Detailed Information"
|
|
(
|
|
&address=track.address()
|
|
TASK.MuTeX &address
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Display Mutex Structure"
|
|
(
|
|
&address=track.address()
|
|
&struct="mutex_t"
|
|
Var.View %Open %String (&struct *)(&address)
|
|
)
|
|
SEPARATOR
|
|
MENUITEM "Dump Memory"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
|
|
|
|
// Task List right-click menu
|
|
menu "RIOT.TL"
|
|
(
|
|
default
|
|
menuitem "Display Detailed Info"
|
|
(
|
|
&address=address.offset(track.address())
|
|
TASK.TaskList &address
|
|
)
|
|
separator
|
|
menuitem "Display task struct"
|
|
(
|
|
&address=track.address()
|
|
;&struct=task.struct(tcb)
|
|
&struct="thread_t"
|
|
Var.View %Open %String (&struct*)(&address)
|
|
)
|
|
separator
|
|
|
|
menuitem "Display Stack Frame"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Var.Frame /Locals /Caller /Task &address
|
|
)
|
|
menuitem "Display Registers"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Register /Task &address
|
|
)
|
|
menuitem "Switch Context" "Register.TASK address.offset(track.address())"
|
|
separator
|
|
menuitem "Add to Stack Cov" "TASK.STK.ADD address.offset(track.address())"
|
|
menuitem "Rm from Stack Cov" "TASK.STK.RM address.offset(track.address())"
|
|
separator
|
|
menuitem "Dump task entry"
|
|
(
|
|
&address=address.offset(track.address())
|
|
Data.dump &address /l /dialog
|
|
)
|
|
)
|
|
)
|