; -------------------------------------------------------------------------------- ; @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 ) ) )