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

736 lines
16 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: Additional Nucleus menus
; @Description: -
; @Author: DIE
; @Copyright: (c) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: nucleus.m 7861 2022-07-29 13:45:42Z amerkle $
NAME "TASK.NUCLEUS"
IF !MENU.EXIST("TASK.NUCLEUS")
(
add
menu
(
popup "&Nucleus"
(
IF sYmbol.EXIST(T32OUT)
(
menuitem "&DBUG+ Terminal"
(
IF !window.name(TERM)
(
TERM.METHOD SingleE T32OUT T32IN
TERM.view
)
ELSE
WINTOP TERM
)
separator
)
default
menuitem "Display &Tasks" "TASK.TaskStat"
menuitem "Display &Mailboxes" "TASK.MbxStat"
menuitem "Display &Queues" "TASK.QueueStat"
menuitem "Display &Pipes" "TASK.PipeStat"
menuitem "Display &Semaphores" "TASK.SemaStat"
menuitem "Display &Events" "TASK.EventStat"
menuitem "Display T&imers" "TASK.TImerstat"
menuitem "Display &Partitions" "TASK.PartMem"
menuitem "Display D&yn. Mem." "TASK.DynMem"
IF sYmbol.EXIST(TCD_Created_HISRs_List)
(
menuitem "Display HISRs" "TASK.HIsr"
)
IF sYmbol.EXIST(PROC_Created_List)
(
menuitem "Display Processes" "TASK.ProcList"
)
separator
IF sYmbol.EXIST(HIC_History_Table)
(
menuitem "Display History" "TASK.HISTory"
)
IF task.config(registry)!=0
(
menuitem "Display Registry" "TASK.REGistry"
)
IF task.config(fdt)!=0
(
menuitem "Display FDT" "TASK.FDT"
)
separator
popup "&Stack Coverage"
(
menuitem "List Stacks" "TASK.STacK"
menuitem "Add Task to Cov" "TASK.STacK.ADD"
menuitem "Remove Task from Cov" "TASK.STacK.ReMove"
menuitem "Reset Coverage"
(
IF icd()||simulator()
(
PRIVATE &yes
DIALOG.YESNO "Overwrite unused stack space" "with stack fill pattern?"
ENTRY &yes
IF !&yes
ENDDO
)
TASK.STacK.Init
)
)
IF sYmbol.EXIST(PROC_Created_List)
(
separator
popup "Symbol &Autoloader"
(
menuitem "List Components" "sYmbol.AutoLoad.List"
menuitem "Check Now!" "sYmbol.AutoLoad.CHECK"
menuitem "Set Loader Script"
(
dialog
(
header "sYmbol.AutoLoad.CHECKCoMmanD"
pos 0. 0. 40. 3.
box "autoload batch script"
pos 1. 1. 30. 1
cmmfile: edit "autoload.cmm" ""
pos 32. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.cmm"
entry %line &file
dialog.set cmmfile "&file"
)
pos 1. 3. 16. 1.
checkon: checkbox "automatic check" ""
pos 10. 4.5 8.
defbutton "Ok"
(
PRIVATE &cmm
&cmm=dialog.string(cmmfile)
sYmbol.AutoLoad.CHECKCoMmanD "do &cmm "
sYmbol.AutoLoad.CHECK ; trigger check manually
if dialog.boolean(checkon)
sYmbol.AutoLoad.CHECK ONGO ; automatic check enabled
else
sYmbol.AutoLoad.CHECK OFF ; automatic check disabled
dialog.end
)
pos 22. 4.5 8.
button "Cancel" "dialog.end"
)
)
)
)
)
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 trace.flow()
(
Break.Delete /TraceEnable
Break.Set task.config(magic) /Write /TraceEnable
)
Trace.Init
)
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 trace.flow()
(
Break.Delete /TraceData
Break.Set task.config(magic) /Write /TraceData
)
Trace.Init
)
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 "CPU Load"
(
menuitem "Set Idle Task..."
(
dialog
(
header "Set Idle Task"
pos 0. 0. 24. 3.
box "Name of idle task"
pos 1. 1. 22. 1.
idletask: defedit "IDLE" ""
pos 3. 3. 7. 1.
defbutton "OK"
(
PRIVATE &idletask
&idletask=dialog.string(idletask)
GROUP.CreateTASK "idle" "&idletask"
GROUP.COLOR "idle" NONE
GROUP.COLOR "other" RED
dialog.end
)
pos 14. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:perf]Show Numerical"
(
IF !GROUP.EXIST(idle)
(
DIALOG.OK "Please set idle task first!"
ENDDO
)
GROUP.MERGE "idle"
GROUP.MERGE "other"
Trace.STATistic.TASK
)
menuitem "[:aprochart]Show Profiling"
(
IF !GROUP.EXIST(idle)
(
DIALOG.OK "Please set idle task first!"
ENDDO
)
GROUP.MERGE "idle"
GROUP.MERGE "other"
Trace.PROfileChart.TASK
)
menuitem "Disable CPU Load View"
(
GROUP.SEParate "idle"
GROUP.SEParate "other"
)
menuitem "Enable CPU Load View"
(
IF !GROUP.EXIST(idle)
(
DIALOG.OK "Please set idle task first!"
ENDDO
)
GROUP.MERGE "idle"
GROUP.MERGE "other"
)
)
)
popup "&Help"
(
menuitem "[:manual]Nucleus+ RTOS Debugger Manual" "HELP __RTOS_NUCLEUS_"
)
)
if y.exist(KERNEL_tsk_list)
(
add
menu
(
popup "&µiPLUS"
(
menuitem "Display &Tasks" "TASK.UITSK"
menuitem "Display &Semaphores" "TASK.UISEM"
menuitem "Display &Event Flags" "TASK.UIFLG"
menuitem "Display &Data Queues" "TASK.UIDTQ"
menuitem "Display &Mailboxes" "TASK.UIMBX"
menuitem "Display &Mem Pools (f)" "TASK.UIMPF"
menuitem "Display &Mem Pools (v)" "TASK.UIMPL"
)
popup "&Help"
(
menuitem "Nucleus+ Multitask Debugger Manual" "HELP __RTOS_UIPLUS_"
)
)
)
menu "task.ts"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.TaskStat &magic
)
menuitem "Display TCB"
(
PRIVATE &address
&address=track.address()
Var.View %String %Open (TC_TCB*)(&address)
)
separator
menuitem "Display Stack Frame"
(
PRIVATE &magic
&magic=address.offset(track.address())
Frame /Locals /Caller /Task &magic
)
menuitem "Display Registers"
(
PRIVATE &magic
&magic=address.offset(track.address())
Register /Task &magic
)
menuitem "Switch Context"
(
PRIVATE &nAddress
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
Register.TASK &nAddress
)
separator
menuitem "Add to Stack Cov"
(
PRIVATE &nAddress
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
TASK.STacK.ADD &nAddress
)
menuitem "Rm from Stack Cov"
(
PRIVATE &nAddress
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
TASK.STacK.RM &nAddress
)
separator
menuitem "Dump TCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.ms"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.MbxStat &magic
)
menuitem "Display MCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (MB_MCB*)(&address)
)
menuitem "Dump MCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.ss"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.SemaStat &magic
)
menuitem "Display SCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (SM_SCB*)(&address)
)
menuitem "Dump SCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.qs"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.QueueStat &magic
)
menuitem "Display QCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (QU_QCB*)(&address)
)
menuitem "Dump QCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.ps"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.PipeStat &magic
)
menuitem "Display PCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (PI_PCB*)(&address)
)
menuitem "Dump PCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.es"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.EventStat &magic
)
menuitem "Display GCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (EV_GCB*)(&address)
)
menuitem "Dump GCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.ti"
(
default
;menuitem "Display Detailed"
;(
; PRIVATE &magic
; &magic=address.offset(track.address())
; TASK.TImerstat &magic
;)
menuitem "Display TM_APP_TCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (TM_APP_TCB*)(&address)
)
menuitem "Dump TM_APP_TCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.pm"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.PartMem &magic
)
menuitem "Display PM_PCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (PM_PCB*)(&address)
)
menuitem "Dump PM_PCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.dm"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.DynMem &magic
)
menuitem "Display DM_PCB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (DM_PCB*)(&address)
)
menuitem "Dump DM_PCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /DIALOG
)
)
menu "task.hi"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.HIsr &magic
)
menuitem "Display HCB"
(
PRIVATE &address
&address=track.address()
Var.View %o %s (TC_HCB*)(&address)
)
menuitem "Dump HCB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /dialog
)
)
menu "task.pl"
(
default
menuitem "Display Detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.ProcList &magic
)
menuitem "Load Symbols"
(
PRIVATE &magic &entry
&magic=address.offset(track.address())
&entry=task.pl.entry(&magic)
sYmbol.AutoLOAD.CHECK
sYmbol.AutoLOAD.TOUCH &entry
)
separator
menuitem "Display PROC_CB"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (PROC_CB*)(&address)
)
menuitem "Dump PROC_CB"
(
PRIVATE &address
&address=track.address()
Data.dump &address /dialog
)
)
menu "task.uitsk"
(
default
menuitem "Display Detailed"
(
PRIVATE &tid
;&tid=task.uitskid(track.address())
&tid=address.offset(track.address())
TASK.UITSK &tid
)
menuitem "Display CTSK"
(
PRIVATE &address
&address=address.offset(track.address())
Var.View %m (T_CTSK*)&address
)
; menuitem "Display Stack Frame"
; (
; &address=address.offset(track.address())
; Var.Frame /Locals /Caller /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 CTSK"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address
)
)
menu "task.uisem"
(
default
menuitem "Display Detailed"
(
PRIVATE &id
;&id=task.uisemid(track.address())
&id=address.offset(track.address())
TASK.UISEM &id
)
menuitem "Display CSEM"
(
PRIVATE &address
&address=address.offset(track.address())
Var.View %m (T_CSEM*)&address
)
menuitem "Dump CSEM"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address
)
)
menu "task.uiflg"
(
default
menuitem "Display Detailed"
(
PRIVATE &id
;&id=task.uiflgid(track.address())
&id=address.offset(track.address())
TASK.UIFLG &id
)
menuitem "Display CFLG"
(
PRIVATE &address
&address=address.offset(track.address())
Var.View %m (T_CFLG*)&address
)
menuitem "Dump CFLG"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address
)
)
menu "task.uidtq"
(
default
menuitem "Display Detailed"
(
PRIVATE &id
;&id=task.uidtqid(track.address())
&id=address.offset(track.address())
TASK.UIDTQ &id
)
menuitem "Display CDTQ"
(
PRIVATE &address
&address=address.offset(track.address())
Var.View %m (T_CDTQ*)&address
)
menuitem "Dump CDTQ"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address
)
)
menu "task.uimbx"
(
default
menuitem "Display Detailed"
(
PRIVATE &id
;&id=task.uimbxid(track.address())
&id=address.offset(track.address())
TASK.UIMBX &id
)
menuitem "Display CMBX"
(
PRIVATE &address
&address=address.offset(track.address())
Var.View %m (T_CMBX*)&address
)
menuitem "Dump CMBX"
(
PRIVATE &address
&address=address.offset(track.address())
Data.dump &address
)
)
)