430 lines
10 KiB
Plaintext
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
|
|
)
|
|
)
|
|
)
|
|
)
|