Files
2025-10-14 09:52:32 +09:00

430 lines
10 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: ChibiOS/RT specific menu
; @Description: -
; @Author: DIE
; @Copyright: (c) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: chibios.m 7855 2022-07-28 12:13:39Z amerkle $
NAME "TASK.CHIBIOS"
IF !MENU.EXIST("TASK.CHIBIOS")
(
add
menu
(
POPUP "ChibiOS"
(
default
menuitem "Display &Threads" "TASK.Thread"
menuitem "Display &Semaphore" "do ~~/demo/arm/kernel/chibios/objdialog Semaphore SEMaphore"
menuitem "Display &Mutex" "do ~~/demo/arm/kernel/chibios/objdialog Mutex MuTeX"
menuitem "Display &CondVar" "do ~~/demo/arm/kernel/chibios/objdialog CondVar CONDvar"
menuitem "Display &Mailbox" "do ~~/demo/arm/kernel/chibios/objdialog Mailbox MailBox"
menuitem "Display &Event" "do ~~/demo/arm/kernel/chibios/objdialog Event EVenT"
menuitem "Display &Heap" "do ~~/demo/arm/kernel/chibios/objdialog Heap Heap"
menuitem "Display &Pool" "do ~~/demo/arm/kernel/chibios/objdialog Pool Pool"
menuitem "Display &Queue" "do ~~/demo/arm/kernel/chibios/objdialog Queue Queue"
menuitem "Display Timer" "TASK.VTimer"
separator
popup "&Stack Coverage"
(
menuitem "&List Stacks" "TASK.STacK.view"
menuitem "Add Task" "TASK.STacK.ADD"
menuitem "Remove Task" "TASK.STacK.RM"
menuitem "Reset Coverage"
(
LOCAL &yes
DIALOG.YESNO "Overwrite unused stack space" "with stack fill pattern?"
ENTRY &yes
IF !&yes
ENDDO
TASK.STacK.Init
)
)
)
popup "Trace"
(
popup "[:alist]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 C:0x1F:::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 C:0x1F:::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 "Task &Status"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKSTATE"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKSTATE"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASKSTATE /Track
)
)
)
popup "&Help"
(
MENUITEM "[:manual]OS Awareness Manual ChibiOS/RT" "HELP __RTOS_CHIBIOS_"
)
)
menu "task.t"
(
default
menuitem "Display detailed"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.Thread &address
)
menuitem "Display thread struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(tcb)
Var.View %Open %String (&struct)*&address
)
separator
menuitem "Display Stack Frame"
(
PRIVATE &address
&address=address.offset(track.address())
Var.Frame /Locals /Caller /Task &address
)
menuitem "Display Registers"
(
PRIVATE &address
&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"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.sem"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.SEMaphore &address
;)
menuitem "Display semaphore struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(sem)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump semaphore entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.mtx"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.MuTeX &address
;)
menuitem "Display mutex struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(mutex)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump mutex entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.mb"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.MailBox &address
;)
menuitem "Display mailbox struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(mbox)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump mailbox entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.cond"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.CONDvar &address
;)
menuitem "Display cond var struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(condvar)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump cond var entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.evt"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.EVenT &address
;)
menuitem "Display event struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(event)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump event entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.heap"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.EVenT &address
;)
menuitem "Display heap struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(heap)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump heap entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.pool"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.Pool &address
;)
menuitem "Display pool struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(pool)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump pool entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.gq"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.MailBox &address
;)
menuitem "Display queue struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(queue)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump queue entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "task.vt"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.MailBox &address
;)
menuitem "Display timer struct"
(
PRIVATE &address &struct
&address=address.offset(track.address())
&struct=task.struct(timer)
Var.View %Open %String (&struct)*&address
)
menuitem "Dump timer entry"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address /dialog
)
)
menu "var"
(
popup "ChibiOS"
(
menuitem "Display as Semaphore"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.SEMaphore &address
)
menuitem "Display as Mutex"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.MuTeX &address
)
menuitem "Display as CondVar"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.CONDvar &address
)
menuitem "Display as Mailbox"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.MailBox &address
)
menuitem "Display as Event"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.EVenT &address
)
menuitem "Display as Heap"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.Heap &address
)
menuitem "Display as Pool"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.Pool &address
)
menuitem "Display as Queue"
(
PRIVATE &address
&address=address.offset(track.address())
TASK.Queue &address
)
)
)
)