736 lines
16 KiB
Plaintext
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
|
|
)
|
|
)
|
|
|
|
)
|