;@Extension.Container.Version.1 ;-- DO NOT CHANGE THE LINE ABOVE -- IF (VERSION.BUILD.BASE()<138311.) ( PRINTF %ERROR "%s: Software too old, please contact support@lauterbach.com." "eMCOS" ENDDO ) PMACRO.EXPLICIT PRIVATE &sParamline &sPpf &sCmd &sParameters &sAccess &sAccessSpaces &sAccessMachine &sOptionAccess &sOptionAccessMisc &sName &sMachine &sArguments &nVariant PRIVATE &bTaskConfig &bExtLoad &bCleanup ENTRY &sCmd %LINE &sParamline &sParameters=STRing.SCANAndExtract("&sParamline","PARAMETERS=","") &sAccess=STRing.SCANAndExtract("&sParamline","ACCESS=","") &sAccessSpaces=STRing.SCANAndExtract("&sParamline","ACCESSSPACES=","") &sAccessMachine=STRing.SCANAndExtract("&sParamline","ACCESSMACHINE=","") &sName=STRing.SCANAndExtract("&sParamline","NAME=","") &sMachine=STRing.SCANAndExtract("&sParamline","MACHINE=","") &sArguments=STRing.SCANAndExtract("&sParamline","ARGUMENTS=","") &sParameters=STRing.Replace("&sParameters","""","",0.) IF ("&sArguments"!="") &sArguments=&sArguments IF ("&sAccess"!="") &sOptionAccess="/ACCESS &sAccess" IF ("&sAccessSpaces"!="") &sOptionAccessMisc="/ACCESSSPACES &sAccessSpaces" IF ("&sAccessMachine"!="") &sOptionAccessMisc="&(sOptionAccessMisc) /ACCESSMACHINE &sAccessMachine" &sName=STRing.Replace("&sName","""","",0.) &bTaskConfig=STRing.SCAN("task.config,ext.config",STRing.LoWeR("&sCmd"),0.)>=0. &bExtLoad=STRing.SCAN("ext.load",STRing.LoWeR("&sCmd"),0.)>=0. &bCleanup=STRing.SCAN("task.res,ext.res,ext.delete",STRing.LoWeR("&sCmd"),0.)>=0. &sPpf=OS.PresentPracticeFile() IF (&bTaskConfig||&bExtLoad) ( GOSUB execute_container_selection "&sParameters" "&sAccess" "&sMachine" "&sArguments" RETURNVALUES &nVariant IF ("&nVariant"!="32.")&&("&nVariant"!="64.") ( IF CPUIS64BIT() &nVariant="64." ELSE &nVariant="32." ) IF STRing.ComPare("&sArguments","*32BIT*") &nVariant="32." ELSE IF STRing.ComPare("&sArguments","*64BIT*") &nVariant="64." ) IF (&bTaskConfig) ( PRIVATE &sMachineName &sMachineName="eMCOS" TASK.RESet IF (&nVariant==32.) ( GOSUB extension_32bit "&sParameters" "&sOptionAccess" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_32bit "&sMachineName" "" GOSUB autoload_32bit "" ) ELSE IF (&nVariant==64.) ( GOSUB extension_64bit "&sParameters" "&sOptionAccess" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_64bit "&sMachineName" "" GOSUB autoload_64bit "" ) ) ELSE IF (&bExtLoad) ( PRIVATE &sMachineName &sInfix &sOptionName &sOptionMachine &sInfix="" &sMachineName="eMCOS" IF ("&sName"!="") ( &sInfix=STRing.UPpeR("&(sName).") &sMachineName="&(sName)" &sOptionName="/NAME &sMachineName" ) ELSE IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES) ( IF SYStem.Option.MACHINESPACES() &sInfix=TASK.TRANSPOSE.INFIX(OS.FILE.BASENAME("&sPpf",".**"))+"." ) IF ("&sMachine"!="") ( &sOptionMachine="/MACHINE &sMachine" ) IF (&nVariant==32.) ( GOSUB extension_32bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_32bit "&sMachineName" "&sInfix" GOSUB autoload_32bit "&sOptionMachine" ) ELSE IF (&nVariant==64.) ( GOSUB extension_64bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_64bit "&sMachineName" "&sInfix" GOSUB autoload_64bit "&sOptionMachine" ) ) ELSE IF (&bCleanup) ( PRIVATE &sMachineName &sOptionMachine &sMachineName="eMCOS" IF ("&sName"!="") ( &sMachineName="&(sName)" ) IF ("&sMachine"!="") ( &sOptionMachine="/MACHINE &sMachine" ) GOSUB menu_delete "&sMachineName" GOSUB autoload_delete "&sOptionMachine" ) ENDDO extension_32bit: ; (options) ( PARAMETERS &sParameters &sOptions EXTension.LOAD &sParameters &sOptions ( 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 AAAH6AAAAAYAAAANAAAAAAAAAAAAAAAAaHR0cHM6Ly9zdm4uaW50ZXJuLmxhdXRlcmJhY2guY29t L3N2bi9rZXJuZWxzcmMvYnJhbmNoZXMvbmlnaHRseQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABodHRwczovL3N2bi5pbnRlcm4u bGF1dGVyYmFjaC5jb20vc3ZuL2tlcm5lbHNyYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJhdW1l aXN0ZXIAAAAAAABlZGstbGludXg2NGJpdC03AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAR0NDIDkuNS4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAAAA0AAABOAAAn0gAAB+gA AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAATfOZU1DT1MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAG1jb3NfZGVidWdf ZGJnbWtjYnMAbWNvc19ta2NiX3B0cl90YWJsZQBta2NiX3QAAC5jbHMAAAAAY2xzY2JfdAAucnVu bmluZwAAAAAudGNiAAAAAHRjYl90AAAALnRpZAAAAAAuc3AALm1pZ3JhdGFibGUAbWlncmF0YWJs ZV90Y2JfdAAAAAAuYXR0cl9zdGF0ZQAuY3ByaQAAAC5lbnRyeQAALmV4aW5mAAAucHJvY2VzcwAA AABwcm9jZXNzX3QAAAAuc3BhY2UudWF0YgAudWxzdGFjay5zdGthZGRyAAAAAC51bHN0YWNrLnN0 a3N6AAAucGlkAAAAAHBvc2l4X3Byb2NfdAAAAAAuZmxhZ3MAAC5waW5mbwAALnByb2NpZABQSU5G TwAAAC5uYW1lAAAAcG9zaXhfZ2xvYmFsX3Byb2NfZGVzY190LnBvc2l4X3Byb2NfYXJyYXkAAABQ REUAdGNiX2NvcmUwAAAAdGhyZWFkX2VudHJ5X2RiZwAAAABhcl90YXNrX2VudHJ5AAAAcG9zaXhf ZGVzYwAATWF4UHJvYwBUb3BQSQAAAFVBVEIAAAAAcGlkIAAAAABuYW1lICAgICAgICAgICAgAAAA AGNwdSAgIAAAIHByaSAAAABzdGF0ZSAgAHR5cGUgICAgAAAAAGVudHJ5IAAAVEFTSy5UaHJlYWQg JXgAAFRBU0suVAAAJTh4ACU0ZC4AAAAAJTNkLgAAAABydW5uaW5nAG5vbmV4aXN0AAAAAGRvcm1h bnQAd2FpdAAAAAByZWFkeQAAAHB0X3RocmVhZF9lbnRyeQBwb3NpeAAAAHRrX3Rhc2tfZW50cnkA AAB0LWtlcm5lbAAAAABvc2VrAAAAAGVtY29zAAAATGlzdCAlYQBhAAAAKCVzKQAAAAAlcwAAJTJk LgAAAABtAAAAc29tZXRoaW5nIGFkZGl0aW9uYWwKAAAAU29ycnk6IHRocmVhZCBub3QgZm91bmQu AAAAAG1hZ2ljICAgIAAAACB0aWQgAAAAVEhSRUFEAABUAAAAVGhyZWFkAABfX1JUT1NfRU1DT1Nf X1RBU0tfVAAAAABwcm9jZXNzAFRBU0suUHJvY2VzcyAleABUQVNLLlAAAG5vdGV4aXN0AAAAAGlu aXRpYWxpemluZwAAAAB0ZXJtaW5hdGVkAABzeXN0ZW0AAG5vcm1hbAAAaWxsZWdhbCgweCV4KQAA AHRocmVhZHMKAAAAAG1hZ2ljICAgICAgdGlkICAgbmFtZQoAACAlNGQuICAAIHBpZCAAAABuYW1l ICAgICAgICAgICAgICAgICAgICAgICAgAAAAAHN0YXRlICAgIAAAAHR0YiAAAAAAU29ycnk6IHBy b2Nlc3Mgbm90IGZvdW5kLgAAAFNvcnJ5OiBubyBwcm9jZXNzZXMgZm91bmQuAABQUk9DRVNTAFAA AABQcm9jZXNzAF9fUlRPU19FTUNPU19fVEFTS19QAAAAAE1URCBWZXJzaW9uICAlcyAgJXMgICVz ICAKCgBta2NicyAgICAgICAgICAgJTh4ICAAAABubyBhY2Nlc3MgAABtYWdpYyAgICAgICAgICAg JTh4ICAAAABudW0gY29yZXMgICAgICAgICAgICAlM2QuCgAAbnVtIHRjYnMgcGVyIGNvcmUgICAg JTNkLgoAAFRFU1QAAAAAYXJndW1lbnQgICAgICAgIHZhbHVlICAgICBjb250ZW50ICAgc3ltYm9s AABGY3RUYXNrQ29uZmlnOiBwYXIxOiAweFBUUkZPUk1BVCA9ICVzAAAAbWFnaWMAAABtYWdpYzoA AGludmFsaWQgY29yZQAAAABtYWdpY3NpemUAAABtYWdpY2JlZ2luAABtYWdpY2VuZAAAAAB1bmtu b3duIHRvcGljAAAAVEFTSy5DT05GSUcAX19SVE9TX01ZUlRPU19fRlVOQwBfbWFpbgAAAF90aHJl YWQAYXJfdGFza19lbnRyeV8AAGNwc3IAAAAAcjAAAHIxAAByMgAAcjMAAHI0AAByNQAAcjYAAHI3 AAByOF91c3IAAHI5X3VzcgAAcjEwX3VzcgByMTFfdXNyAHIxMl91c3IAcjEzX3VzcgByMTRfdXNy AHBjAABoYXJkd2FyZXRocmVhZAAALS0tICBUQVNLICBtYWdpYyA9ICU4eAAAICBuYW1lID0gJXMg IC0tLQAAAABfX1JUT1NfRU1DT1NfX0FMAAAAAF9fUlRPU19FTUNPU19fQVMAAAAAX19SVE9TX0VN Q09TX19BVAAAAABlTUNPUwAAAEFSTQBEQVRBAAAAAgAAAAAAADMkAAAAAAAAAAMAWwAAAAQAMAAA EUQAAAADAFsAAAAEADAAABMoAAAzQAAAM0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAM1QAADNcAAAzYAAAM2gAAAr0AAAAAgAAAAAAADRQAAAAAAAAAAMAQgAAAAQAwAAAF/AAAAAC AAAAAAAANGwAAAAAAAAAAwBCAAAABADAAAAWvAAANIgAADSQAAA0lAAANJwAABPoAAAzQAAANBQA ADQcAAA0PAAANEgAAAAAAAAAAQBQAAAAADVMAAAbvAAANUQAADVEAAAz8AAAM/AAABuIAAA19AAA AAMAAAAXAAAAAAAANgAAAB2IAAA2NAAAAAAAAAAEAAA2PAAAAAAAAAAEAAA2QAAAAAAAAAAEAAA2 RAAAAAAAAAAEAAA2SAAAAAAAAAAEAAA2TAAAAAAAAAAEAAA2UAAAAAAAAAAEAAA2VAAAAAAAAAAE AAA2WAAAAAAAAAAEAAA2XAAAAAAAAAAEAAA2ZAAAAAAAAAAEAAA2bAAAAAAAAAAEAAA2dAAAAAAA AAAEAAA2fAAAAAAAAAAEAAA2hAAAAAAAAAAEAAA2jAAAAAAAAAAEAAA2lAAAAAAAAAAEAAAAAAAA AAAAAAAAAAA2mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAndAAAJ9AAADbUAAAnTAAANugAAChYAAA2 /AAAKTwAADPwAAA3EAAANxgAAAAAVDMyRQ== ) RETURN ) menu_32bit: ;(header, infix) ( PMACRO.LOCK ( PRIVATE &sHeader &sInfix &sMenuName PARAMETERS &sHeader &sInfix &sMenuName=TASK.TRANSPOSE.INFIX("&sHeader") IF MENU.EXIST("TASK.&(sMenuName)") MENU.Delete.NAME TASK.&(sMenuName) IF MENU.EXIST("EXT.&(sMenuName)") MENU.Delete.NAME EXT.&(sMenuName) MENU.ReProgram (&+ ; -------------------------------------------------------------------------------- ; @Title: eMCOS specific menu ; @Description: - ; @Keywords: emcos menu awareness ; @Author: DIE ; @Copyright: (c) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: emcos.m 7861 2022-07-29 13:45:42Z amerkle $ NAME "TASK.&sMenuName" IF !MENU.EXIST("TASK.&sMenuName") ( add menu ( popup "&eMCOS" ( default menuitem "Display &Threads" "TASK.&(sInfix)Thread" menuitem "Display &Processes" "TASK.&(sInfix)Process" separator popup "&Stack Coverage" ( menuitem "&List Stacks" "TASK.&(sInfix)STacK.view" menuitem "Add Task" "TASK.&(sInfix)STacK.ADD" menuitem "Remove Task" "TASK.&(sInfix)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.&(sInfix)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 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 "BKGR" "" 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]eMCOS Awareness Manual" "HELP __RTOS_EMCOS_" //) ) menu "task.&(sInfix)t" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.&(sInfix)Thread &magic ) menuitem "Display thread struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (tcb_t*)(&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.&(sInfix)STacK.ADD &nAddress ) menuitem "Rm from Stack Cov" ( PRIVATE &nAddress &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS()) TASK.&(sInfix)STacK.RM &nAddress ) separator menuitem "Dump thread entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) menu "task.&(sInfix)p" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.&(sInfix)Process &magic ) menuitem "Display process struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (posix_proc_t*)(&address) ) menuitem "Dump process entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) ) ) ) PMACRO.UNLOCK RETURN ) autoload_32bit: ;(options) ( PARAMETERS &sOptions RETURN ) extension_64bit: ; (options) ( PARAMETERS &sParameters &sOptions EXTension.LOAD &sParameters &sOptions ( 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 AAAAAAAAAAAAAAAAYmF1bWVpc3RlcgAAAAAAAGVkay1saW51eDY0Yml0LTcAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHQ0MgOS41LjAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+gAAAAG AAAADQAAAE4AACfSAAAH6AAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAABN85lTUNPUwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAgAAAAbWNvc19kZWJ1Z19kYmdta2NicwBtY29zX21rY2JfcHRyX3RhYmxlAG1rY2JfdAAALmNs cwAAAABjbHNjYl90AC5ydW5uaW5nAAAAAC50Y2IAAAAAdGNiX3QAAAAudGlkAAAAAC5zcAAubWln cmF0YWJsZQBtaWdyYXRhYmxlX3RjYl90AAAAAC5hdHRyX3N0YXRlAC5jcHJpAAAALmVudHJ5AAAu ZXhpbmYAAC5wcm9jZXNzAAAAAHByb2Nlc3NfdAAAAC5zcGFjZS51YXRiAC51bHN0YWNrLnN0a2Fk ZHIAAAAALnVsc3RhY2suc3Rrc3oAAC5waWQAAAAAcG9zaXhfcHJvY190AAAAAC5mbGFncwAALnBp bmZvAAAucHJvY2lkAFBJTkZPAAAALm5hbWUAAABwb3NpeF9nbG9iYWxfcHJvY19kZXNjX3QucG9z aXhfcHJvY19hcnJheQAAAFBERQB0Y2JfY29yZTAAAAB0aHJlYWRfZW50cnlfZGJnAAAAAGFyX3Rh c2tfZW50cnkAAABwb3NpeF9kZXNjAABNYXhQcm9jAFRvcFBJAAAAVUFUQgAAAABwaWQgAAAAAG5h bWUgICAgICAgICAgICAAAAAAY3B1ICAgAAAgcHJpIAAAAHN0YXRlICAAdHlwZSAgICAAAAAAZW50 cnkgAABhAAAAbQAAAFRBU0suVGhyZWFkICV4AABUQVNLLlQAACUxNngAAAAAJTRkLgAAAAAlM2Qu AAAAACUyZC4AAAAAKCVzKQAAAABydW5uaW5nAG5vbmV4aXN0AAAAAGRvcm1hbnQAd2FpdAAAAABy ZWFkeQAAAHB0X3RocmVhZF9lbnRyeQBwb3NpeAAAAHRrX3Rhc2tfZW50cnkAAAB0LWtlcm5lbAAA AABvc2VrAAAAAGVtY29zAAAATGlzdCAlYQAlcwAAc29tZXRoaW5nIGFkZGl0aW9uYWwKAAAAU29y cnk6IHRocmVhZCBub3QgZm91bmQuAAAAAG1hZ2ljICAgICAgICAgICAAAAAAIHRpZCAAAABUSFJF QUQAAFQAAABUaHJlYWQAAF9fUlRPU19FTUNPU19fVEFTS19UAAAAAHByb2Nlc3MAVEFTSy5Qcm9j ZXNzICV4AFRBU0suUAAAbm90ZXhpc3QAAAAAaW5pdGlhbGl6aW5nAAAAAHRlcm1pbmF0ZWQAAHN5 c3RlbQAAbm9ybWFsAABpbGxlZ2FsKDB4JXgpAAAAdGhyZWFkcwoAAAAAbWFnaWMgICAgICAgICAg ICAgdGlkICAgbmFtZQoAAAAgJTRkLiAgACBwaWQgAAAAbmFtZSAgICAgICAgICAgICAgICAgICAg ICAgIAAAAABzdGF0ZSAgICAAAAB0dGIgAAAAAFNvcnJ5OiBwcm9jZXNzIG5vdCBmb3VuZC4AAABT b3JyeTogbm8gcHJvY2Vzc2VzIGZvdW5kLgAAUFJPQ0VTUwBQAAAAUHJvY2VzcwBfX1JUT1NfRU1D T1NfX1RBU0tfUAAAAABNVEQgVmVyc2lvbiAgJXMgICVzICAlcyAgCgoAbWtjYnMgICAgICAgICAg ICUxNnggIAAAbm8gYWNjZXNzIAAAbWFnaWMgICAgICAgICAgICUxNnggIAAAbnVtIGNvcmVzICAg ICAgICAgICAgJTNkLgoAAG51bSB0Y2JzIHBlciBjb3JlICAgICUzZC4KAABURVNUAAAAAGFyZ3Vt ZW50ICAgICAgICB2YWx1ZSAgICAgICAgICAgICBjb250ZW50ICAgICAgICAgICBzeW1ib2wAAEZj dFRhc2tDb25maWc6IHBhcjE6IDB4UFRSRk9STUFUID0gJXMAAABtYWdpYwAAAG1hZ2ljOgAAaW52 YWxpZCBjb3JlAAAAAG1hZ2ljc2l6ZQAAAG1hZ2ljYmVnaW4AAG1hZ2ljZW5kAAAAAHVua25vd24g dG9waWMAAABUQVNLLkNPTkZJRwBfX1JUT1NfTVlSVE9TX19GVU5DAF9tYWluAAAAX3RocmVhZABh cl90YXNrX2VudHJ5XwAAc3BfZWwwAABjcHNyAAAAAHgxOQB4MjAAeDIxAHgyMgB4MjMAeDI0AHgy NQB4MjYAeDI3AHgyOAB4MjkAeDMwAHBjAABzcAAAaGFyZHdhcmV0aHJlYWQAAC0tLSAgVEFTSyAg bWFnaWMgPSAlOHgAACAgbmFtZSA9ICVzICAtLS0AAAAAX19SVE9TX0VNQ09TX19BTAAAAABfX1JU T1NfRU1DT1NfX0FTAAAAAF9fUlRPU19FTUNPU19fQVQAAAAAZU1DT1MAAABBUk02NABEQVRBAAAA AgAAAAAAADzMAAAAAAAAAAMAawAAAAQAMAAAE+gAAAADAGsAAAAEADAAABYgAAA86AAAPPwAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQQAAD0MAAA9EAAAPRgAAA1kAAAAAgAAAAAA AD4IAAAAAAAAAAMAUgAAAAQAwAAAHDAAAAACAAAAAAAAPiQAAAAAAAAAAwBSAAAABADAAAAagAAA PkAAAD5IAAA+TAAAPlQAABcIAAA86AAAPcwAAD3UAAA99AAAPgAAAAAAAAAAAQBQAAAAAD8EAAAg rAAAPvwAAD78AAA9oAAAPaAAACB4AAA/vAAAAAMAAAAXAAAAAAAAP8gAACLoAAAAAAAAP/wAAAAA AAAAAAAAAAAAAAAIAAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQAwAAAAAAAAAAAAAAAAA AAAIAAAAAAAAQBAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQBQAAAAAAAAAAAAAAAAAAAAIAAAAAAAA QBgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQBwAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQCAAAAAAAAAA AAAAAAAAAAAIAAAAAAAAQCQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQCgAAAAAAAAAAAAAAAAAAAAI AAAAAAAAQCwAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQDAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQDQA AAAAAAAAAAAAAAAAAAAIAAAAAAAAQDgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQDwAAAAAAAAAAAAA AAAAAAAIAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAQEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwgAAC9w AABAgAAALuAAAECUAAAv/AAAQKgAADD4AAA9oAAAQLwAAEDEAAAAAFQzMkU= ) RETURN ) menu_64bit: ;(header, infix) ( PMACRO.LOCK ( PRIVATE &sHeader &sInfix &sMenuName PARAMETERS &sHeader &sInfix &sMenuName=TASK.TRANSPOSE.INFIX("&sHeader") IF MENU.EXIST("TASK.&(sMenuName)") MENU.Delete.NAME TASK.&(sMenuName) IF MENU.EXIST("EXT.&(sMenuName)") MENU.Delete.NAME EXT.&(sMenuName) MENU.ReProgram (&+ ; -------------------------------------------------------------------------------- ; @Title: eMCOS specific menu ; @Description: - ; @Keywords: emcos menu awareness ; @Author: DIE ; @Copyright: (c) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: emcos.m 7861 2022-07-29 13:45:42Z amerkle $ NAME "TASK.&sMenuName" IF !MENU.EXIST("TASK.&sMenuName") ( add menu ( popup "&eMCOS" ( default menuitem "Display &Threads" "TASK.&(sInfix)Thread" menuitem "Display &Processes" "TASK.&(sInfix)Process" separator popup "&Stack Coverage" ( menuitem "&List Stacks" "TASK.&(sInfix)STacK.view" menuitem "Add Task" "TASK.&(sInfix)STacK.ADD" menuitem "Remove Task" "TASK.&(sInfix)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.&(sInfix)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 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 "BKGR" "" 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]eMCOS Awareness Manual" "HELP __RTOS_EMCOS_" //) ) menu "task.&(sInfix)t" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.&(sInfix)Thread &magic ) menuitem "Display thread struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (tcb_t*)(&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.&(sInfix)STacK.ADD &nAddress ) menuitem "Rm from Stack Cov" ( PRIVATE &nAddress &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS()) TASK.&(sInfix)STacK.RM &nAddress ) separator menuitem "Dump thread entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) menu "task.&(sInfix)p" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.&(sInfix)Process &magic ) menuitem "Display process struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (posix_proc_t*)(&address) ) menuitem "Dump process entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) ) ) ) PMACRO.UNLOCK RETURN ) autoload_64bit: ;(options) ( PARAMETERS &sOptions RETURN ) execute_container_selection: ( PARAMETERS &sParameters &sAccess &sMachine &sArguments PRIVATE &ptrsize IF !Var.EXIST(uintptr_t) ( PRINT %WARNING "eMCOS: kernel symbol types not found, detect address width from CPU selection" RETURN "0." ) &ptrsize=Var.SIZEOF(uintptr_t) IF &ptrsize==4. ( PRINT "eMCOS: detected 32bit address size" RETURN "32." ) ELSE IF &ptrsize==8. ( PRINT "eMCOS: detected 64bit address size" RETURN "64." ) ELSE ( PRINT %WARNING "eMCOS: unknown kernel symbol type size, detect address width from CPU selection" RETURN "0." ) RETURN "-1." ) menu_delete: ;(header) ( PRIVATE &sHeader &sMenuName PARAMETERS &sHeader &sMenuName=TASK.TRANSPOSE.INFIX("&sHeader") IF MENU.EXIST("TASK.&(sMenuName)") MENU.Delete.NAME TASK.&(sMenuName) IF MENU.EXIST("EXT.&(sMenuName)") MENU.Delete.NAME EXT.&(sMenuName) RETURN ) autoload_delete: ;(options) ( PARAMETERS &sOptionMachine RETURN )