RTX5.scvd 125 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <component_viewer schemaVersion="1.2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
  3. <component name="CMSIS:RTOS2:Keil RTX5" shortname="RTX5" version="5.5.3"/> <!-- name and version of the component -->
  4. <typedefs>
  5. <!-- Attributes structure for thread -->
  6. <typedef name="osThreadAttr_t" info="" size="36">
  7. <member name="name" type="uint32_t" offset="0" info="name of the thread (type is const char *)"/>
  8. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  9. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  10. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  11. <member name="stack_mem" type="uint32_t" offset="16" info="memory for stack (type is void *)"/>
  12. <member name="stack_size" type="uint32_t" offset="20" info="size of stack"/>
  13. <member name="priority" type="uint32_t" offset="24" info="initial thread priority (type is osPriority_t)"/>
  14. <member name="tz_module" type="uint32_t" offset="28" info="TrustZone module identifier (type is TZ_ModuleId_t)"/>
  15. <member name="reserved" type="uint32_t" offset="32" info="reserved (must be 0)"/>
  16. </typedef>
  17. <!-- Attributes structure for timer -->
  18. <typedef name="osTimerAttr_t" info="" size="16">
  19. <member name="name" type="uint32_t" offset="0" info="name of the timer (type is const char *)"/>
  20. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  21. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  22. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  23. </typedef>
  24. <!-- Attributes structure for event flags -->
  25. <typedef name="osEventFlagsAttr_t" info="" size="16">
  26. <member name="name" type="uint32_t" offset="0" info="name of the event flags (type is const char *)"/>
  27. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  28. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  29. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  30. </typedef>
  31. <!-- Attributes structure for mutex -->
  32. <typedef name="osMutexAttr_t" info="" size="16">
  33. <member name="name" type="uint32_t" offset="0" info="name of the mutex (type is const char *)"/>
  34. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  35. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  36. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  37. </typedef>
  38. <!-- Attributes structure for semaphore -->
  39. <typedef name="osSemaphoreAttr_t" info="" size="16">
  40. <member name="name" type="uint32_t" offset="0" info="name of the semaphore (type is const char *)"/>
  41. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  42. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  43. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  44. </typedef>
  45. <!-- Attributes structure for memory pool -->
  46. <typedef name="osMemoryPoolAttr_t" info="" size="24">
  47. <member name="name" type="uint32_t" offset="0" info="name of the semaphore (type is const char *)"/>
  48. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  49. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  50. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  51. <member name="mp_mem" type="uint32_t" offset="16" info="memory for data storage (type is void *)"/>
  52. <member name="mp_size" type="uint32_t" offset="20" info="size of provided memory for data storage"/>
  53. </typedef>
  54. <!-- Attributes structure for message queue -->
  55. <typedef name="osMessageQueueAttr_t" info="" size="24">
  56. <member name="name" type="uint32_t" offset="0" info="name of the semaphore (type is const char *)"/>
  57. <member name="attr_bits" type="uint32_t" offset="4" info="attribute bits"/>
  58. <member name="cb_mem" type="uint32_t" offset="8" info="memory for control block (type is void *)"/>
  59. <member name="cb_size" type="uint32_t" offset="12" info="size of provided memory for control block"/>
  60. <member name="mq_mem" type="uint32_t" offset="16" info="memory for data storage (type is void *)"/>
  61. <member name="mq_size" type="uint32_t" offset="20" info="size of provided memory for data storage"/>
  62. </typedef>
  63. <!-- Thread Control Block -->
  64. <typedef name="osRtxThread_t" info="" size="68">
  65. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  66. <member name="state" type="uint8_t" offset="1" info="Object State">
  67. <enum name="osThreadInactive" value="0" info=""/>
  68. <enum name="osThreadReady" value="1" info=""/>
  69. <enum name="osThreadRunning" value="2" info=""/>
  70. <enum name="osThreadBlocked" value="3" info=""/>
  71. <enum name="osThreadTerminated" value="4" info=""/>
  72. <enum name="osThreadError" value="-1" info=""/>
  73. <enum name="Delay" value="0x13" info=""/>
  74. <enum name="Join" value="0x23" info=""/>
  75. <enum name="Thread Flags" value="0x33" info=""/>
  76. <enum name="Event Flags" value="0x43" info=""/>
  77. <enum name="Mutex" value="0x53" info=""/>
  78. <enum name="Semaphore" value="0x63" info=""/>
  79. <enum name="Memory Pool" value="0x73" info=""/>
  80. <enum name="Message Get" value="0x83" info=""/>
  81. <enum name="Message Put" value="0x93" info=""/>
  82. </member>
  83. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  84. <member name="attr" type="uint8_t" offset="3" info="Object Attributes">
  85. <enum name="osThreadDetached" value="0x00" info="Thread created in detached mode"/>
  86. <enum name="osThreadJoinable" value="0x01" info="Thread created in joinable mode"/>
  87. </member>
  88. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  89. <member name="thread_next" type="*osRtxThread_t" offset="8" info="Link pointer to next Thread in Object list"/>
  90. <member name="thread_prev" type="*osRtxThread_t" offset="12" info="Link pointer to previous Thread in Object list"/>
  91. <member name="delay_next" type="*osRtxThread_t" offset="16" info="Link pointer to next Thread in Delay list"/>
  92. <member name="delay_prev" type="*osRtxThread_t" offset="20" info="Link pointer to previous Thread in Delay list"/>
  93. <member name="thread_join" type="*osRtxThread_t" offset="24" info="Thread waiting to Join"/>
  94. <member name="delay" type="uint32_t" offset="28" info="Delay time"/>
  95. <member name="priority" type="int8_t" offset="32" info="Thread priority">
  96. <enum name="osPriorityNone" value="0" info=""/>
  97. <enum name="osPriorityIdle" value="1" info=""/>
  98. <enum name="osPriorityLow" value="8" info=""/>
  99. <enum name="osPriorityLow1" value="8+1" info=""/>
  100. <enum name="osPriorityLow2" value="8+2" info=""/>
  101. <enum name="osPriorityLow3" value="8+3" info=""/>
  102. <enum name="osPriorityLow4" value="8+4" info=""/>
  103. <enum name="osPriorityLow5" value="8+5" info=""/>
  104. <enum name="osPriorityLow6" value="8+6" info=""/>
  105. <enum name="osPriorityLow7" value="8+7" info=""/>
  106. <enum name="osPriorityBelowNormal" value="16" info=""/>
  107. <enum name="osPriorityBelowNormal1" value="16+1" info=""/>
  108. <enum name="osPriorityBelowNormal2" value="16+2" info=""/>
  109. <enum name="osPriorityBelowNormal3" value="16+3" info=""/>
  110. <enum name="osPriorityBelowNormal4" value="16+4" info=""/>
  111. <enum name="osPriorityBelowNormal5" value="16+5" info=""/>
  112. <enum name="osPriorityBelowNormal6" value="16+6" info=""/>
  113. <enum name="osPriorityBelowNormal7" value="16+7" info=""/>
  114. <enum name="osPriorityNormal" value="24" info=""/>
  115. <enum name="osPriorityNormal1" value="24+1" info=""/>
  116. <enum name="osPriorityNormal2" value="24+2" info=""/>
  117. <enum name="osPriorityNormal3" value="24+3" info=""/>
  118. <enum name="osPriorityNormal4" value="24+4" info=""/>
  119. <enum name="osPriorityNormal5" value="24+5" info=""/>
  120. <enum name="osPriorityNormal6" value="24+6" info=""/>
  121. <enum name="osPriorityNormal7" value="24+7" info=""/>
  122. <enum name="osPriorityAboveNormal" value="32" info=""/>
  123. <enum name="osPriorityAboveNormal1" value="32+1" info=""/>
  124. <enum name="osPriorityAboveNormal2" value="32+2" info=""/>
  125. <enum name="osPriorityAboveNormal3" value="32+3" info=""/>
  126. <enum name="osPriorityAboveNormal4" value="32+4" info=""/>
  127. <enum name="osPriorityAboveNormal5" value="32+5" info=""/>
  128. <enum name="osPriorityAboveNormal6" value="32+6" info=""/>
  129. <enum name="osPriorityAboveNormal7" value="32+7" info=""/>
  130. <enum name="osPriorityHigh" value="40" info=""/>
  131. <enum name="osPriorityHigh1" value="40+1" info=""/>
  132. <enum name="osPriorityHigh2" value="40+2" info=""/>
  133. <enum name="osPriorityHigh3" value="40+3" info=""/>
  134. <enum name="osPriorityHigh4" value="40+4" info=""/>
  135. <enum name="osPriorityHigh5" value="40+5" info=""/>
  136. <enum name="osPriorityHigh6" value="40+6" info=""/>
  137. <enum name="osPriorityHigh7" value="40+7" info=""/>
  138. <enum name="osPriorityRealtime" value="48" info=""/>
  139. <enum name="osPriorityRealtime1" value="48+1" info=""/>
  140. <enum name="osPriorityRealtime2" value="48+2" info=""/>
  141. <enum name="osPriorityRealtime3" value="48+3" info=""/>
  142. <enum name="osPriorityRealtime4" value="48+4" info=""/>
  143. <enum name="osPriorityRealtime5" value="48+5" info=""/>
  144. <enum name="osPriorityRealtime6" value="48+6" info=""/>
  145. <enum name="osPriorityRealtime7" value="48+7" info=""/>
  146. <enum name="osPriorityISR" value="56" info=""/>
  147. <enum name="osPriorityError" value="-1" info=""/>
  148. </member>
  149. <member name="priority_base" type="int8_t" offset="33" info="Base priority"/>
  150. <member name="stack_frame" type="uint8_t" offset="34" info="Stack frame"/>
  151. <member name="flags_options" type="uint8_t" offset="35" info="Thread/Event flags options">
  152. <enum name="osFlagsWaitAny" value="0x00" info="Wait for any flag."/>
  153. <enum name="osFlagsWaitAll" value="0x01" info="Wait for all flags."/>
  154. <enum name="osFlagsNoClear" value="0x02" info="Do not clear flags which have been specified to wait for."/>
  155. </member>
  156. <member name="wait_flags" type="int32_t" offset="36" info="Waiting Thread/Event flags"/>
  157. <member name="thread_flags" type="int32_t" offset="40" info="Thread flags"/>
  158. <member name="mutex_list" type="*osRtxMutex_t" offset="44" info="Link pointer to list of owned mutexes"/>
  159. <member name="stack_mem" type="uint32_t" offset="48" info="Stack memory (type is void *)"/>
  160. <member name="stack_size" type="uint32_t" offset="52" info="Stack size"/>
  161. <member name="sp" type="uint32_t" offset="56" info="Current stack pointer"/>
  162. <member name="thread_addr" type="uint32_t" offset="60" info="Thread entry address"/>
  163. <member name="tz_memory" type="uint32_t" offset="64" info="TrustZone Memory Identifier"/>
  164. <var name="cb_valid" type="uint32_t" info="Control block validation status (valid=1, invalid=0)"/>
  165. <var name="sp_valid" type="uint32_t" info="Stack pointer validation status (valid=1, invalid=0)"/>
  166. <var name="out_type" type="uint8_t" info="Output display type ID"/>
  167. <var name="ex_delay" type="uint32_t" info="Calculated execution delay"/>
  168. <var name="stack_val" type="uint32_t" info="Stack usage: analysis result"/>
  169. <var name="stack_cur" type="uint32_t" info="Stack usage: current (address)"/>
  170. <var name="stack_curp" type="uint32_t" info="Stack usage: current (in percent)"/>
  171. <var name="stack_curb" type="uint32_t" info="Stack usage: current (in bytes)"/>
  172. <var name="stack_maxb" type="uint32_t" info="Stack usage: maximum (in bytes)"/>
  173. <var name="stack_maxp" type="uint32_t" info="Stack usage: maximum (in percent)"/>
  174. <var name="stack_over" type="uint8_t" info="Stack usage: overflow"/>
  175. </typedef>
  176. <!-- Timer Control Block -->
  177. <typedef name="osRtxTimer_t" info="" size="32">
  178. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  179. <member name="state" type="uint8_t" offset="1" info="Object State">
  180. <enum name="Inactive" value="0" info="Timer is not active"/>
  181. <enum name="Stopped" value="1" info="Timer is stopped"/>
  182. <enum name="Running" value="2" info="Timer is running"/>
  183. </member>
  184. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  185. <member name="type" type="uint8_t" offset="3" info="Timer Type">
  186. <enum name="osTimerOnce" value="0" info="One-shot timer"/>
  187. <enum name="osTimerPeriodic" value="1" info="Periodic timer"/>
  188. </member>
  189. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  190. <member name="prev" type="*osRtxTimer_t" offset="8" info="Pointer to previous active timer"/>
  191. <member name="next" type="*osRtxTimer_t" offset="12" info="Pointer to next active timer"/>
  192. <member name="tick" type="uint32_t" offset="16" info="Timer current tick"/>
  193. <member name="load" type="uint32_t" offset="20" info="Timer load value"/>
  194. <!-- Inlined "osRtxTimerFinfo_t" structure -->
  195. <member name="finfo_fp" type="uint32_t" offset="24" info="Timer function pointer (type is void *)"/>
  196. <member name="finfo_arg" type="uint32_t" offset="28" info="Timer function argument (type is void *)"/>
  197. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  198. <var name="ex_tick" type="uint32_t" info="Calculated absolute tick time"/>
  199. </typedef>
  200. <!-- Event Flags Control Block -->
  201. <typedef name="osRtxEventFlags_t" info="" size="16">
  202. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  203. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  204. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  205. <member name="reserved" type="uint8_t" offset="3" info=""/>
  206. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  207. <member name="thread_list" type="*osRtxThread_t" offset="8" info="Waiting threads list"/>
  208. <member name="event_flags" type="int32_t" offset="12" info="Event flags"/>
  209. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  210. <var name="wl_idx" type="uint32_t" info="EventFlags waiting list (EWL) index" />
  211. <var name="wl_cnt" type="uint32_t" info="Number of threads waiting for event flags" />
  212. </typedef>
  213. <!-- Mutex Control Block -->
  214. <typedef name="osRtxMutex_t" info="" size="28">
  215. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  216. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  217. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  218. <member name="attr" type="uint8_t" offset="3" info="Object Attributes">
  219. <enum name="osMutexRecursive" value="0x01" info="Recursive mutex."/>
  220. <enum name="osMutexPrioInherit" value="0x02" info="Priority inherit protocol."/>
  221. <enum name="osMutexRobust" value="0x08" info="Robust mutex."/>
  222. </member>
  223. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  224. <member name="thread_list" type="*osRtxThread_t" offset="8" info="Waiting threads list"/>
  225. <member name="owner_thread" type="*osRtxThread_t" offset="12" info="Owner thread"/>
  226. <member name="owner_prev" type="*osRtxMutex_t" offset="16" info="Pointer to previous owned mutex"/>
  227. <member name="owner_next" type="*osRtxMutex_t" offset="20" info="Pointer to next owned mutex"/>
  228. <member name="lock" type="uint8_t" offset="24" info="Lock counter"/>
  229. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  230. <var name="wl_idx" type="uint32_t" info="Mutex waiting list (MWL) index" />
  231. <var name="wl_cnt" type="uint32_t" info="Number of threads waiting for current mutex" />
  232. </typedef>
  233. <!-- Semaphore Control Block -->
  234. <typedef name="osRtxSemaphore_t" info="" size="16">
  235. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  236. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  237. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  238. <member name="reserved" type="uint8_t" offset="3" info=""/>
  239. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  240. <member name="thread_list" type="*osRtxThread_t" offset="8" info="Waiting threads list"/>
  241. <member name="tokens" type="uint16_t" offset="12" info="Current number of tokens"/>
  242. <member name="max_tokens" type="uint16_t" offset="14" info="Maximum number of tokens"/>
  243. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  244. <var name="wl_idx" type="uint32_t" info="Semaphore waiting list (SWL) index" />
  245. <var name="wl_cnt" type="uint32_t" info="Number of threads waiting for current semaphore" />
  246. </typedef>
  247. <!-- Memory Pool Information -->
  248. <typedef name="osRtxMpInfo_t" info="Memory pool information" size="24">
  249. <member name="max_blocks" type="uint32_t" offset="0" info="Maximum number of blocks"/>
  250. <member name="used_blocks" type="uint32_t" offset="4" info="Number of used blocks"/>
  251. <member name="block_size" type="uint32_t" offset="8" info="Block size"/>
  252. <member name="block_base" type="uint32_t" offset="12" info="Block memory base address (type is void *)"/>
  253. <member name="block_lim" type="uint32_t" offset="16" info="Block memory limit address (type is void *)"/>
  254. <member name="block_free" type="uint32_t" offset="20" info="First free block address (type is void *)"/>
  255. </typedef>
  256. <!-- Memory Pool Control Block -->
  257. <typedef name="osRtxMemoryPool_t" info="" size="36">
  258. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  259. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  260. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  261. <member name="reserved" type="uint8_t" offset="3" info=""/>
  262. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  263. <member name="thread_list" type="*osRtxThread_t" offset="8" info="Waiting threads list"/>
  264. <!-- Inlined "osRtxMpInfo_t" structure -->
  265. <member name="max_blocks" type="uint32_t" offset="12+0" info="Maximum number of blocks"/>
  266. <member name="used_blocks" type="uint32_t" offset="12+4" info="Number of used blocks"/>
  267. <member name="block_size" type="uint32_t" offset="12+8" info="Block size"/>
  268. <member name="block_base" type="uint32_t" offset="12+12" info="Block memory base address (type is void *)"/>
  269. <member name="block_lim" type="uint32_t" offset="12+16" info="Block memory limit address (type is void *)"/>
  270. <member name="block_free" type="uint32_t" offset="12+20" info="First free block address (type is void *)"/>
  271. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  272. <var name="wl_idx" type="uint32_t" info="Memory Pool waiting list (PWL) index" />
  273. <var name="wl_cnt" type="uint32_t" info="Number of threads waiting for memory pool" />
  274. </typedef>
  275. <!-- Message Control Block -->
  276. <typedef name="osRtxMessage_t" info="" size="12">
  277. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  278. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  279. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  280. <member name="priority" type="uint8_t" offset="3" info="Message priority"/>
  281. <member name="prev" type="*osRtxMessage_t" offset="4" info="Pointer to previous message"/>
  282. <member name="next" type="*osRtxMessage_t" offset="8" info="Pointer to next message"/>
  283. <var name="addr" type="uint32_t" info="Message location address" />
  284. </typedef>
  285. <!-- Message Queue Control Block -->
  286. <typedef name="osRtxMessageQueue_t" info="" size="52">
  287. <member name="id" type="uint8_t" offset="0" info="Object Identifier"/>
  288. <member name="state" type="uint8_t" offset="1" info="Object State"/>
  289. <member name="flags" type="uint8_t" offset="2" info="Object Flags"/>
  290. <member name="reserved" type="uint8_t" offset="3" info=""/>
  291. <member name="name" type="uint32_t" offset="4" info="Object name (type is *uint8_t)"/>
  292. <member name="thread_list" type="*osRtxThread_t" offset="8" info="Waiting threads list"/>
  293. <!-- Inlined "osRtxMpInfo_t" structure -->
  294. <member name="max_blocks" type="uint32_t" offset="12+0" info="Maximum number of blocks"/>
  295. <member name="used_blocks" type="uint32_t" offset="12+4" info="Number of used blocks"/>
  296. <member name="block_size" type="uint32_t" offset="12+8" info="Block size"/>
  297. <member name="block_base" type="uint32_t" offset="12+12" info="Block memory base address (type is void *)"/>
  298. <member name="block_lim" type="uint32_t" offset="12+16" info="Block memory limit address (type is void *)"/>
  299. <member name="block_free" type="uint32_t" offset="12+20" info="First free block address (type is void *)"/>
  300. <member name="msg_size" type="uint32_t" offset="36" info="Message size"/>
  301. <member name="msg_count" type="uint32_t" offset="40" info="Number of queued messages"/>
  302. <member name="msg_first" type="*osRtxMessage_t" offset="44" info="Pointer to first message"/>
  303. <member name="msg_last" type="*osRtxMessage_t" offset="48" info="Pointer to last message"/>
  304. <var name="cb_valid" type="uint32_t" info="Control Block validation status (valid=1, invalid=0)"/>
  305. <var name="wl_idx" type="uint32_t" info="Waiting list index (QWL)" />
  306. <var name="wl_cnt" type="uint32_t" info="Number of threads waiting" />
  307. <var name="ml_idx" type="uint32_t" info="Queue message list index (QML)" />
  308. <var name="ml_cnt" type="uint32_t" info="Number of enqueued messages" />
  309. </typedef>
  310. <!-- OS Runtime Information structure -->
  311. <typedef name="osRtxInfo_t" info="OS Runtime Information" size="164">
  312. <member name="os_id" type="uint32_t" offset="0" info="OS Identification (type is *uint8_t)"/>
  313. <member name="version" type="uint32_t" offset="4" info="OS Version"/>
  314. <member name="kernel_state" type="uint8_t" offset="8" info="Kernel state">
  315. <enum name="osKernelInactive" value="0" info="Inactive"/>
  316. <enum name="osKernelReady" value="1" info="Ready"/>
  317. <enum name="osKernelRunning" value="2" info="Running"/>
  318. <enum name="osKernelLocked" value="3" info="Locked"/>
  319. <enum name="osKernelSuspended" value="4" info="Suspended"/>
  320. <enum name="osKernelError" value="5" info="Error"/>
  321. </member>
  322. <member name="kernel_blocked" type="uint8_t" offset="9" info="Kernel blocked"/>
  323. <member name="kernel_pendSV" type="uint8_t" offset="10" info="Kernel pending SV"/>
  324. <member name="kernel_tick" type="uint32_t" offset="12" info="Kernel tick counter"/>
  325. <member name="tick_irqn" type="int32_t" offset="16" info="Tick timer IRQ number"/>
  326. <member name="thread_run_curr" type="*osRtxThread_t" offset="20" info="Current running thread"/>
  327. <member name="thread_run_next" type="*osRtxThread_t" offset="24" info="Next thread to run"/>
  328. <!-- Inlined "osRtxObject_t" structure at offset: 28 -->
  329. <member name="thread_ready_id" type="uint8_t" offset="28+0" info="Object Identifier" />
  330. <member name="thread_ready_state" type="uint8_t" offset="28+1" info="Object State" />
  331. <member name="thread_ready_flags" type="uint8_t" offset="28+2" info="Object Flags" />
  332. <member name="thread_ready_rsvd" type="uint8_t" offset="28+3" info="Reserved" />
  333. <member name="thread_ready_name" type="uint32_t" offset="28+4" info="Object Name (type is *uint8_t)" />
  334. <member name="thread_ready_thread_list" type="*osRtxThread_t" offset="28+8" info="Threads List" />
  335. <member name="thread_idle" type="*osRtxThread_t" offset="40" info="Idle thread"/>
  336. <member name="thread_delay_list" type="*osRtxThread_t" offset="44" info="Delay list"/>
  337. <member name="thread_wait_list" type="*osRtxThread_t" offset="48" info="Wait list (no timeout)"/>
  338. <member name="thread_terminate_list" type="*osRtxThread_t" offset="52" info="Terminate list"/>
  339. <member name="thread_robin_thread" type="*osRtxThread_t" offset="60" info="Round Robin thread"/>
  340. <member name="thread_timeout" type="uint32_t" offset="64" info="Round Robin timeout"/>
  341. <member name="timer_list" type="*osRtxTimer_t" offset="68" info="Active timer list"/>
  342. <member name="timer_thread" type="*osRtxThread_t" offset="72" info="Timer thread"/>
  343. <member name="timer_mq" type="*osRtxMessageQueue_t" offset="76" info="Timer message queue"/>
  344. <member name="timer_tick" type="uint32_t" offset="80" info="Timer tick function (type is func *)"/>
  345. <member name="isr_queue_max" type="uint16_t" offset="84" info="Maximum items"/>
  346. <member name="isr_queue_cnt" type="uint16_t" offset="86" info="Item count"/>
  347. <member name="isr_queue_in" type="uint16_t" offset="88" info="Incoming item index"/>
  348. <member name="isr_queue_out" type="uint16_t" offset="90" info="Outgoing item index"/>
  349. <member name="isr_queue_data" type="uint32_t" offset="92" info="Queue data (type is void **)"/>
  350. <member name="post_process_thread" type="uint32_t" offset="96" info="Thread post processing function (type is func *)"/>
  351. <member name="post_process_event_flags" type="uint32_t" offset="100" info="Event flags post processing function (type is func *)"/>
  352. <member name="post_process_semaphore" type="uint32_t" offset="104" info="Semaphore post processing function (type is func *)"/>
  353. <member name="post_process_memory_pool" type="uint32_t" offset="108" info="Memory pool post processing function (type is func *)"/>
  354. <member name="post_process_message_queue" type="uint32_t" offset="112" info="Message queue post processing function (type is func *)"/>
  355. <member name="mem_stack" type="uint32_t" offset="116" info="Stack memory (type is void *)"/>
  356. <member name="mem_mp_data" type="uint32_t" offset="120" info="Memory pool data memory (type is void *)"/>
  357. <member name="mem_mq_data" type="uint32_t" offset="124" info="Message queue Data memory (type is void *)"/>
  358. <member name="mem_common" type="uint32_t" offset="128" info="Common memory address (type is void *)"/>
  359. <member name="mpi_stack" type="*osRtxMpInfo_t" offset="132" info="Stack for threads"/>
  360. <member name="mpi_thread" type="*osRtxMpInfo_t" offset="136" info="Thread control blocks"/>
  361. <member name="mpi_timer" type="*osRtxMpInfo_t" offset="140" info="Timer control blocks"/>
  362. <member name="mpi_event_flags" type="*osRtxMpInfo_t" offset="144" info="Event flags control blocks"/>
  363. <member name="mpi_mutex" type="*osRtxMpInfo_t" offset="148" info="Mutex control blocks"/>
  364. <member name="mpi_semaphore" type="*osRtxMpInfo_t" offset="152" info="Semaphore control blocks"/>
  365. <member name="mpi_memory_pool" type="*osRtxMpInfo_t" offset="156" info="Memory pool control blocks"/>
  366. <member name="mpi_message_queue" type="*osRtxMpInfo_t" offset="160" info="Message queue control blocks"/>
  367. <var name="robin_tick" type="uint32_t" info="Round Robin time tick (thread_robin_thread.delay)"/>
  368. </typedef>
  369. <!-- OS Runtime Object Memory Usage structure -->
  370. <typedef name="osRtxObjectMemUsage_t" info="OS Runtime Object Memory Usage" size="12">
  371. <member name="cnt_alloc" type="uint32_t" offset="0" info="Counter for alloc"/>
  372. <member name="cnt_free" type="uint32_t" offset="4" info="Counter for free"/>
  373. <member name="max_used" type="uint32_t" offset="8" info="Maximum used"/>
  374. </typedef>
  375. <!-- OS Configuration structure -->
  376. <typedef name="osRtxConfig_t" const="1" info="OS Configuration Structure" size="112">
  377. <member name="flags" type="uint32_t" offset="0" info="OS configuration flags"/>
  378. <member name="tick_freq" type="uint32_t" offset="4" info="Kernel tick frequency"/>
  379. <member name="robin_timeout" type="uint32_t" offset="8" info="Round Robin timeout tick"/>
  380. <member name="isr_queue_data" type="uint32_t" offset="12" info="ISR post processing queue (type is void **)"/>
  381. <member name="isr_queue_max" type="uint16_t" offset="16" info="Maximum data"/>
  382. <member name="isr_queue_padding" type="uint16_t" offset="18" info="Padding bytes"/>
  383. <member name="mem_stack_addr" type="uint32_t" offset="20" info="Stack memory address"/>
  384. <member name="mem_stack_size" type="uint32_t" offset="24" info="Stack memory size"/>
  385. <member name="mem_mp_data_addr" type="uint32_t" offset="28" info="Memory pool data memory address"/>
  386. <member name="mem_mp_data_size" type="uint32_t" offset="32" info="Memory pool data memory size"/>
  387. <member name="mem_mq_data_addr" type="uint32_t" offset="36" info="Message queue data memory address"/>
  388. <member name="mem_mq_data_size" type="uint32_t" offset="40" info="Message queue data memory size"/>
  389. <member name="mem_common_addr" type="uint32_t" offset="44" info="Common memory address"/>
  390. <member name="mem_common_size" type="uint32_t" offset="48" info="Common memory size"/>
  391. <member name="mpi_stack" type="*osRtxMpInfo_t" offset="52" info="Stack for threads"/>
  392. <member name="mpi_thread" type="*osRtxMpInfo_t" offset="56" info="Thread control blocks"/>
  393. <member name="mpi_timer" type="*osRtxMpInfo_t" offset="60" info="Timer control blocks"/>
  394. <member name="mpi_event_flags" type="*osRtxMpInfo_t" offset="64" info="Event flags control blocks"/>
  395. <member name="mpi_mutex" type="*osRtxMpInfo_t" offset="68" info="Mutex control blocks"/>
  396. <member name="mpi_semaphore" type="*osRtxMpInfo_t" offset="72" info="Semaphore control blocks"/>
  397. <member name="mpi_memory_pool" type="*osRtxMpInfo_t" offset="76" info="Memory pool control blocks"/>
  398. <member name="mpi_message_queue" type="*osRtxMpInfo_t" offset="80" info="Message queue control blocks"/>
  399. <member name="thread_stack_size" type="uint32_t" offset="84" info="Default thread stack size"/>
  400. <member name="idle_thread_attr" type="uint32_t" offset="88" info="Idle thread attributes (type is osThreadAttr_s *)"/>
  401. <member name="timer_thread_attr" type="uint32_t" offset="92" info="Timer thread attributes (type is osThreadAttr_s *)"/>
  402. <member name="timer_thread" type="uint32_t" offset="96" info="Timer Thread Function (type is void(*func)(void *)"/>
  403. <member name="timer_setup" type="uint32_t" offset="100" info="Timer Setup Function (type is int32_t(*func)(void)"/>
  404. <member name="timer_mq_attr" type="uint32_t" offset="104" info="Timer message queue attributes (type is osMessageQueueAttr_s *)"/>
  405. <member name="timer_mq_mcnt" type="uint32_t" offset="108" info="Timer message queue maximum messages"/>
  406. <var name="stack_check" type="uint8_t" info="Stack checking (0:disabled, 1:enabled)"/>
  407. <var name="stack_wmark" type="uint8_t" info="Stack watermark (0:disabled, 1:enabled)"/>
  408. </typedef>
  409. <!-- Memory Pool Header -->
  410. <typedef name="mem_head_t" info="Memory Pool Header Structure" size="8">
  411. <member name="size" type="uint32_t" offset="0" info="Memory pool size"/>
  412. <member name="used" type="uint32_t" offset="4" info="Size of used memory"/>
  413. <var name="max_used" type="uint32_t" info="Maximum size of used memory" />
  414. </typedef>
  415. <!-- Memory Block Header + Object Header -->
  416. <typedef name="mem_block_t" info="Memory Block Header Structure" size="9">
  417. <member name="next" type="*mem_block_t" offset="0" info="Next memory block"/>
  418. <member name="len" type="uint32_t" offset="4" info="Memory block size"/>
  419. <member name="id" type="uint8_t" offset="8" info="Object Identifier"/>
  420. </typedef>
  421. <!-- Helper typedefs -->
  422. <typedef name="rtx_sections_t" info="RTX Control Block Sections Info Structure" size="56">
  423. <member name="thread_cb_start" type="uint32_t" offset="0" info="Thread control block section start"/>
  424. <member name="thread_cb_end" type="uint32_t" offset="4" info="Thread control block section end"/>
  425. <member name="timer_cb_start" type="uint32_t" offset="8" info="Timer control block section start"/>
  426. <member name="timer_cb_end" type="uint32_t" offset="12" info="Timer control block section end"/>
  427. <member name="evflags_cb_start" type="uint32_t" offset="16" info="Event flags control block section start"/>
  428. <member name="evflags_cb_end" type="uint32_t" offset="20" info="Event flags control block section end"/>
  429. <member name="mutex_cb_start" type="uint32_t" offset="24" info="Mutex control block section start"/>
  430. <member name="mutex_cb_end" type="uint32_t" offset="28" info="Mutex control block section end"/>
  431. <member name="semaphore_cb_start" type="uint32_t" offset="32" info="Semaphore control block section start"/>
  432. <member name="semaphore_cb_end" type="uint32_t" offset="36" info="Semaphore control block section end"/>
  433. <member name="mempool_cb_start" type="uint32_t" offset="40" info="Memory pool control block section start"/>
  434. <member name="mempool_cb_end" type="uint32_t" offset="44" info="Memory pool control block section end"/>
  435. <member name="msgqueue_cb_start" type="uint32_t" offset="48" info="Message queue control block section start"/>
  436. <member name="msgqueue_cb_end" type="uint32_t" offset="52" info="Message queue control block section end"/>
  437. </typedef>
  438. <typedef name="rtx_t" info="Various RTX Definitions" size="8">
  439. <member name="status" type="int32_t" offset="0" info="RTX5 operations status">
  440. <enum name="osOK" value="0" info="Operation completed successfully"/>
  441. <enum name="osError" value="-1" info="Unspecified RTOS error: run-time error but no other error message fits."/>
  442. <enum name="osErrorTimeout" value="-2" info="Operation not completed within the timeout period."/>
  443. <enum name="osErrorResource" value="-3" info="Resource not available"/>
  444. <enum name="osErrorParameter" value="-4" info="Parameter error"/>
  445. <enum name="osErrorNoMemory" value="-5" info="System is out of memory: it was impossible to allocate or reserve memory for the operation"/>
  446. <enum name="osErrorISR" value="-6" info="Not allowed in ISR context: the function cannot be called from interrupt service routines"/>
  447. <enum name="osRtxErrorKernelNotReady" value="-7" info="RTOS Kernel scheduler is not ready"/>
  448. <enum name="osRtxErrorKernelNotRunning" value="-8" info="RTOS Kernel scheduler is not running"/>
  449. <enum name="osRtxErrorInvalidControlBlock" value="-9" info="Object control block is not properly aligned or has an invalid size"/>
  450. <enum name="osRtxErrorInvalidDataMemory" value="-10" info="Data memory is not is not properly aligned or has an invalid size"/>
  451. <enum name="osRtxErrorInvalidThreadStack" value="-11" info="Thread stack is invalid"/>
  452. <enum name="osRtxErrorInvalidPriority" value="-12" info="Thread priority is invalid"/>
  453. <enum name="osRtxErrorThreadNotJoinable" value="-13" info="Thread is not joinable"/>
  454. <enum name="osRtxErrorMutexNotOwned" value="-14" info="Mutex is not owned by the current running thread"/>
  455. <enum name="osRtxErrorMutexNotLocked" value="-15" info="Mutex is not locked"/>
  456. <enum name="osRtxErrorMutexLockLimit" value="-16" info="Maximum number of recursive mutex locks reached"/>
  457. <enum name="osRtxErrorSemaphoreCountLimit" value="-17" info="Semaphore count limit reached"/>
  458. <enum name="osRtxErrorTZ_InitContext_S" value="-18" info=""/>
  459. <enum name="osRtxErrorTZ_AllocContext_S" value="-19" info=""/>
  460. <enum name="osRtxErrorTZ_FreeContext_S" value="-20" info=""/>
  461. <enum name="osRtxErrorTZ_LoadContext_S" value="-21" info=""/>
  462. <enum name="osRtxErrorTZ_SaveContext_S" value="-22" info=""/>
  463. </member>
  464. </typedef>
  465. <typedef name="rtx_th_state" info="RTX5 thread state" size="4">
  466. <member name="id" type="int32_t" offset="0" info="RTX5 thread state ID">
  467. <enum name="os_ThreadInactive" value="0x00" info=""/>
  468. <enum name="os_ThreadReady" value="0x01" info=""/>
  469. <enum name="os_ThreadRunning" value="0x02" info=""/>
  470. <enum name="os_ThreadBlocked" value="0x03" info=""/>
  471. <enum name="os_ThreadTerminated" value="0x04" info=""/>
  472. <enum name="os_ThreadWaitingDelay" value="0x13" info=""/>
  473. <enum name="os_ThreadWaitingJoin" value="0x23" info=""/>
  474. <enum name="os_ThreadWaitingThreadFlags" value="0x33" info=""/>
  475. <enum name="os_ThreadWaitingEventFlags" value="0x43" info=""/>
  476. <enum name="os_ThreadWaitingMutex" value="0x53" info=""/>
  477. <enum name="os_ThreadWaitingSemaphore" value="0x63" info=""/>
  478. <enum name="os_ThreadWaitingMemoryPool" value="0x73" info=""/>
  479. <enum name="os_ThreadWaitingMessageGet" value="0x83" info=""/>
  480. <enum name="os_ThreadWaitingMessagePut" value="0x93" info=""/>
  481. </member>
  482. </typedef>
  483. <typedef name="rtx_th_priority" info="RTX5 thread priority" size="4">
  484. <member name="id" type="int32_t" offset="0" info="RTX5 thread priority ID">
  485. <enum name="osPriorityNone" value="0" info=""/>
  486. <enum name="osPriorityIdle" value="1" info=""/>
  487. <enum name="osPriorityLow" value="8" info=""/>
  488. <enum name="osPriorityLow1" value="9" info=""/>
  489. <enum name="osPriorityLow2" value="10" info=""/>
  490. <enum name="osPriorityLow3" value="11" info=""/>
  491. <enum name="osPriorityLow4" value="12" info=""/>
  492. <enum name="osPriorityLow5" value="13" info=""/>
  493. <enum name="osPriorityLow6" value="14" info=""/>
  494. <enum name="osPriorityLow7" value="15" info=""/>
  495. <enum name="osPriorityBelowNormal" value="16" info=""/>
  496. <enum name="osPriorityBelowNormal1" value="17" info=""/>
  497. <enum name="osPriorityBelowNormal2" value="18" info=""/>
  498. <enum name="osPriorityBelowNormal3" value="19" info=""/>
  499. <enum name="osPriorityBelowNormal4" value="20" info=""/>
  500. <enum name="osPriorityBelowNormal5" value="21" info=""/>
  501. <enum name="osPriorityBelowNormal6" value="22" info=""/>
  502. <enum name="osPriorityBelowNormal7" value="23" info=""/>
  503. <enum name="osPriorityNormal" value="24" info=""/>
  504. <enum name="osPriorityNormal1" value="25" info=""/>
  505. <enum name="osPriorityNormal2" value="26" info=""/>
  506. <enum name="osPriorityNormal3" value="27" info=""/>
  507. <enum name="osPriorityNormal4" value="28" info=""/>
  508. <enum name="osPriorityNormal5" value="29" info=""/>
  509. <enum name="osPriorityNormal6" value="30" info=""/>
  510. <enum name="osPriorityNormal7" value="31" info=""/>
  511. <enum name="osPriorityAboveNormal" value="32" info=""/>
  512. <enum name="osPriorityAboveNormal1" value="33" info=""/>
  513. <enum name="osPriorityAboveNormal2" value="34" info=""/>
  514. <enum name="osPriorityAboveNormal3" value="35" info=""/>
  515. <enum name="osPriorityAboveNormal4" value="36" info=""/>
  516. <enum name="osPriorityAboveNormal5" value="37" info=""/>
  517. <enum name="osPriorityAboveNormal6" value="38" info=""/>
  518. <enum name="osPriorityAboveNormal7" value="39" info=""/>
  519. <enum name="osPriorityHigh" value="40" info=""/>
  520. <enum name="osPriorityHigh1" value="41" info=""/>
  521. <enum name="osPriorityHigh2" value="42" info=""/>
  522. <enum name="osPriorityHigh3" value="43" info=""/>
  523. <enum name="osPriorityHigh4" value="44" info=""/>
  524. <enum name="osPriorityHigh5" value="45" info=""/>
  525. <enum name="osPriorityHigh6" value="46" info=""/>
  526. <enum name="osPriorityHigh7" value="47" info=""/>
  527. <enum name="osPriorityRealtime" value="48" info=""/>
  528. <enum name="osPriorityRealtime1" value="49" info=""/>
  529. <enum name="osPriorityRealtime2" value="50" info=""/>
  530. <enum name="osPriorityRealtime3" value="51" info=""/>
  531. <enum name="osPriorityRealtime4" value="52" info=""/>
  532. <enum name="osPriorityRealtime5" value="53" info=""/>
  533. <enum name="osPriorityRealtime6" value="54" info=""/>
  534. <enum name="osPriorityRealtime7" value="55" info=""/>
  535. <enum name="osPriorityISR" value="56" info=""/>
  536. <enum name="osPriorityError" value="-1" info=""/>
  537. </member>
  538. </typedef>
  539. <typedef name="rtx_kernel_state" info="RTX5 kernel state" size="1">
  540. <member name="id" type="uint8_t" offset="0" info="Kernel state">
  541. <enum name="osKernelInactive" value="0" info="Inactive"/>
  542. <enum name="osKernelReady" value="1" info="Ready"/>
  543. <enum name="osKernelRunning" value="2" info="Running"/>
  544. <enum name="osKernelLocked" value="3" info="Locked"/>
  545. <enum name="osKernelSuspended" value="4" info="Suspended"/>
  546. <enum name="osKernelError" value="5" info="Error"/>
  547. </member>
  548. </typedef>
  549. <typedef name="rtx_timer_type" info="RTX5 timer type" size="1">
  550. <member name="id" type="uint8_t" offset="0" info="Timer Type">
  551. <enum name="osTimerOnce" value="0" info="One-shot timer"/>
  552. <enum name="osTimerPeriodic" value="1" info="Periodic timer"/>
  553. </member>
  554. </typedef>
  555. <typedef name="rtx_error" info="OS Error Code" size="4">
  556. <member name="id" type="uint32_t" offset="0" info="Error Code">
  557. <enum name="osRtxErrorStackOverflow" value="1" info="Stack overflow"/>
  558. <enum name="osRtxErrorISRQueueOverflow" value="2" info="ISR Queue overflow"/>
  559. <enum name="osRtxErrorTimerQueueOverflow" value="3" info="User Timer Callback Queue overflow"/>
  560. <enum name="osRtxErrorClibSpace" value="4" info="Standard C/C++ library libspace not available"/>
  561. <enum name="osRtxErrorClibMutex" value="5" info="Standard C/C++ library mutex initialization failed"/>
  562. </member>
  563. </typedef>
  564. </typedefs>
  565. <objects>
  566. <object name="RTX RTOS Object">
  567. <var name="i" type="uint32_t" value="0" />
  568. <var name="j" type="uint32_t" value="0" />
  569. <var name="k" type="uint32_t" value="0" />
  570. <var name="n" type="uint32_t" value="0" />
  571. <var name="sp" type="uint32_t" value="0" />
  572. <var name="addr" type="uint32_t" value="0" />
  573. <var name="ipsr" type="uint32_t" value="0" />
  574. <var name="psp" type="uint32_t" value="0" />
  575. <var name="v8m_ns" type="uint32_t" value="0" />
  576. <var name="TCB_Rd" type="uint32_t" value="0" />
  577. <var name="CCB_Rd" type="uint32_t" value="0" />
  578. <var name="SCB_Rd" type="uint32_t" value="0" />
  579. <var name="MCB_Rd" type="uint32_t" value="0" />
  580. <var name="ECB_Rd" type="uint32_t" value="0" />
  581. <var name="PCB_Rd" type="uint32_t" value="0" />
  582. <var name="QCB_Rd" type="uint32_t" value="0" />
  583. <var name="RTX_En" type="uint8_t" value="0" />
  584. <var name="TCB_En" type="uint8_t" value="0" />
  585. <var name="CCB_En" type="uint8_t" value="0" />
  586. <var name="SCB_En" type="uint8_t" value="0" />
  587. <var name="MCB_En" type="uint8_t" value="0" />
  588. <var name="ECB_En" type="uint8_t" value="0" />
  589. <var name="PCB_En" type="uint8_t" value="0" />
  590. <var name="QCB_En" type="uint8_t" value="0" />
  591. <var name="MUC_En" type="uint8_t" value="0" />
  592. <var name="StaticMp_En" type="uint8_t" value="0" />
  593. <var name="MUC_Thread_En" type="uint8_t" value="0" />
  594. <var name="MUC_Timer_En" type="uint8_t" value="0" />
  595. <var name="MUC_EventFlags_En" type="uint8_t" value="0" />
  596. <var name="MUC_Mutex_En" type="uint8_t" value="0" />
  597. <var name="MUC_Semaphore_En" type="uint8_t" value="0" />
  598. <var name="MUC_MemPool_En" type="uint8_t" value="0" />
  599. <var name="MUC_MsgQueue_En" type="uint8_t" value="0" />
  600. <var name="V_Major" type="uint32_t" value="0"/>
  601. <var name="V_Minor" type="uint32_t" value="0"/>
  602. <var name="V_Patch" type="uint32_t" value="0"/>
  603. <!-- Check TrustZone symbol existence -->
  604. <calc>
  605. v8m_ns = __Symbol_exists("TZ_InitContextSystem_S");
  606. </calc>
  607. <!-- Read main OS information and configuration structures -->
  608. <read name="os_Info" type="osRtxInfo_t" symbol="osRtxInfo"/>
  609. <read name="os_Config" type="osRtxConfig_t" symbol="osRtxConfig" const="1"/>
  610. <calc>
  611. os_Config.stack_check = (os_Config.flags >> 1) &amp; 1;
  612. os_Config.stack_wmark = (os_Config.flags >> 2) &amp; 1;
  613. </calc>
  614. <calc cond="((os_Info.version / 10000000) == 5) &amp;&amp; (os_Info.kernel_state &gt; 0) &amp;&amp; (os_Info.kernel_state &lt; 5)">
  615. RTX_En = 1;
  616. </calc>
  617. <calc cond="RTX_En">
  618. V_Major = os_Info.version / 10000000;
  619. V_Minor = (os_Info.version / 10000) % 1000;
  620. V_Patch = os_Info.version % 10000;
  621. </calc>
  622. <calc cond="RTX_En &amp;&amp; (os_Config.mpi_thread || os_Config.mpi_timer || os_Config.mpi_event_flags || os_Config.mpi_mutex || os_Config.mpi_semaphore || os_Config.mpi_memory_pool || os_Config.mpi_message_queue)">
  623. StaticMp_En = 1;
  624. </calc>
  625. <!-- Read ISR FIFO queue -->
  626. <read name="ISR_FIFO" cond="RTX_En" type="uint32_t" offset="os_Config.isr_queue_data" size="os_Config.isr_queue_max"/>
  627. <!-- Read control block sections info structure -->
  628. <read name="cb_Sections" cond="__Symbol_exists (&quot;os_cb_sections&quot;)" type="rtx_sections_t" symbol="os_cb_sections" const="1"/>/>
  629. <!-- Determine section sizes -->
  630. <calc cond="RTX_En &amp;&amp; __Symbol_exists (&quot;os_cb_sections&quot;)">
  631. TCB_Rd = cb_Sections.thread_cb_end - cb_Sections.thread_cb_start;
  632. CCB_Rd = cb_Sections.timer_cb_end - cb_Sections.timer_cb_start;
  633. ECB_Rd = cb_Sections.evflags_cb_end - cb_Sections.evflags_cb_start;
  634. MCB_Rd = cb_Sections.mutex_cb_end - cb_Sections.mutex_cb_start;
  635. SCB_Rd = cb_Sections.semaphore_cb_end - cb_Sections.semaphore_cb_start;
  636. PCB_Rd = cb_Sections.mempool_cb_end - cb_Sections.mempool_cb_start;
  637. QCB_Rd = cb_Sections.msgqueue_cb_end - cb_Sections.msgqueue_cb_start;
  638. </calc>
  639. <!-- Determine number of control blocks to read -->
  640. <calc cond="TCB_Rd"> TCB_Rd /= 68; </calc>
  641. <calc cond="CCB_Rd"> CCB_Rd /= 32; </calc>
  642. <calc cond="ECB_Rd"> ECB_Rd /= 16; </calc>
  643. <calc cond="MCB_Rd"> MCB_Rd /= 28; </calc>
  644. <calc cond="SCB_Rd"> SCB_Rd /= 16; </calc>
  645. <calc cond="PCB_Rd"> PCB_Rd /= 36; </calc>
  646. <calc cond="QCB_Rd"> QCB_Rd /= 52; </calc>
  647. <!-- Read object control blocks using sections info -->
  648. <readlist name="TCB" cond="TCB_Rd" type="osRtxThread_t" offset="cb_Sections.thread_cb_start" count="TCB_Rd"/>
  649. <readlist name="CCB" cond="CCB_Rd" type="osRtxTimer_t" offset="cb_Sections.timer_cb_start" count="CCB_Rd"/>
  650. <readlist name="ECB" cond="ECB_Rd" type="osRtxEventFlags_t" offset="cb_Sections.evflags_cb_start" count="ECB_Rd"/>
  651. <readlist name="MCB" cond="MCB_Rd" type="osRtxMutex_t" offset="cb_Sections.mutex_cb_start" count="MCB_Rd"/>
  652. <readlist name="PCB" cond="PCB_Rd" type="osRtxMemoryPool_t" offset="cb_Sections.mempool_cb_start" count="PCB_Rd"/>
  653. <readlist name="SCB" cond="SCB_Rd" type="osRtxSemaphore_t" offset="cb_Sections.semaphore_cb_start" count="SCB_Rd"/>
  654. <readlist name="QCB" cond="QCB_Rd" type="osRtxMessageQueue_t" offset="cb_Sections.msgqueue_cb_start" count="QCB_Rd"/>
  655. <!-- Read statically allocated control blocks -->
  656. <readlist name="cfg_mp_stack" cond="os_Config.mpi_stack" type="osRtxMpInfo_t" offset="os_Config.mpi_stack" const="1" count="1" init="1"/>
  657. <readlist name="cfg_mp_thread" cond="os_Config.mpi_thread" type="osRtxMpInfo_t" offset="os_Config.mpi_thread" const="1" count="1" init="1"/>
  658. <readlist name="cfg_mp_timer" cond="os_Config.mpi_timer" type="osRtxMpInfo_t" offset="os_Config.mpi_timer" const="1" count="1" init="1"/>
  659. <readlist name="cfg_mp_events" cond="os_Config.mpi_event_flags" type="osRtxMpInfo_t" offset="os_Config.mpi_event_flags" const="1" count="1" init="1"/>
  660. <readlist name="cfg_mp_mutex" cond="os_Config.mpi_mutex" type="osRtxMpInfo_t" offset="os_Config.mpi_mutex" const="1" count="1" init="1"/>
  661. <readlist name="cfg_mp_semaphore" cond="os_Config.mpi_semaphore" type="osRtxMpInfo_t" offset="os_Config.mpi_semaphore" const="1" count="1" init="1"/>
  662. <readlist name="cfg_mp_mpool" cond="os_Config.mpi_memory_pool" type="osRtxMpInfo_t" offset="os_Config.mpi_memory_pool" const="1" count="1" init="1"/>
  663. <readlist name="cfg_mp_mqueue" cond="os_Config.mpi_message_queue" type="osRtxMpInfo_t" offset="os_Config.mpi_message_queue" const="1" count="1" init="1"/>
  664. <!-- Read idle and timer thread control blocks -->
  665. <readlist name="TCB" cond="RTX_En &amp;&amp; (TCB_Rd == 0) &amp;&amp; os_Info.thread_idle" type="osRtxThread_t" offset="os_Info.thread_idle" count="1" />
  666. <readlist name="TCB" cond="RTX_En &amp;&amp; (TCB_Rd == 0) &amp;&amp; os_Info.timer_thread" type="osRtxThread_t" offset="os_Info.timer_thread" count="1" />
  667. <!-- Read thread control blocks (MPI) -->
  668. <readlist name="mp_thread" cond="RTX_En &amp;&amp; (TCB_Rd == 0) &amp;&amp; os_Info.mpi_thread" type="osRtxMpInfo_t" offset="os_Info.mpi_thread" count="1" init="1"/>
  669. <readlist name="TCB" cond="RTX_En &amp;&amp; (TCB_Rd == 0) &amp;&amp; os_Info.mpi_thread" type="osRtxThread_t" offset="mp_thread.block_base" count="mp_thread.max_blocks" />
  670. <!-- Read timer control blocks (MPI) -->
  671. <readlist name="mp_timer" cond="RTX_En &amp;&amp; (CCB_Rd == 0) &amp;&amp; os_Info.mpi_timer" type="osRtxMpInfo_t" offset="os_Info.mpi_timer" count="1" init="1"/>
  672. <readlist name="CCB" cond="RTX_En &amp;&amp; (CCB_Rd == 0) &amp;&amp; os_Info.mpi_timer" type="osRtxTimer_t" offset="mp_timer.block_base" count="mp_timer.max_blocks" />
  673. <!-- Read event flags control blocks (MPI) -->
  674. <readlist name="mp_events" cond="RTX_En &amp;&amp; (ECB_Rd == 0) &amp;&amp; os_Info.mpi_event_flags" type="osRtxMpInfo_t" offset="os_Info.mpi_event_flags" count="1" init="1"/>
  675. <readlist name="ECB" cond="RTX_En &amp;&amp; (ECB_Rd == 0) &amp;&amp; os_Info.mpi_event_flags" type="osRtxEventFlags_t" offset="mp_events.block_base" count="mp_events.max_blocks" />
  676. <!-- Read mutex control blocks (MPI) -->
  677. <readlist name="mp_mutex" cond="RTX_En &amp;&amp; (MCB_Rd == 0) &amp;&amp; os_Info.mpi_mutex" type="osRtxMpInfo_t" offset="os_Info.mpi_mutex" count="1" init="1"/>
  678. <readlist name="MCB" cond="RTX_En &amp;&amp; (MCB_Rd == 0) &amp;&amp; os_Info.mpi_mutex" type="osRtxMutex_t" offset="mp_mutex.block_base" count="mp_mutex.max_blocks" />
  679. <!-- Read semaphore control blocks (MPI) -->
  680. <readlist name="mp_semaphore" cond="RTX_En &amp;&amp; (SCB_Rd == 0) &amp;&amp; os_Info.mpi_semaphore" type="osRtxMpInfo_t" offset="os_Info.mpi_semaphore" count="1" init="1"/>
  681. <readlist name="SCB" cond="RTX_En &amp;&amp; (SCB_Rd == 0) &amp;&amp; os_Info.mpi_semaphore" type="osRtxSemaphore_t" offset="mp_semaphore.block_base" count="mp_semaphore.max_blocks" />
  682. <!-- Read memory pool control blocks (MPI) -->
  683. <readlist name="mp_mpool" cond="RTX_En &amp;&amp; (PCB_Rd == 0) &amp;&amp; os_Info.mpi_memory_pool" type="osRtxMpInfo_t" offset="os_Info.mpi_memory_pool" count="1" init="1"/>
  684. <readlist name="PCB" cond="RTX_En &amp;&amp; (PCB_Rd == 0) &amp;&amp; os_Info.mpi_memory_pool" type="osRtxMemoryPool_t" offset="mp_mpool.block_base" count="mp_mpool.max_blocks" />
  685. <!-- Read message queue control blocks (MPI) -->
  686. <readlist name="mp_mqueue" cond="RTX_En &amp;&amp; (QCB_Rd == 0) &amp;&amp; os_Info.mpi_message_queue" type="osRtxMpInfo_t" offset="os_Info.mpi_message_queue" count="1" init="1"/>
  687. <readlist name="QCB" cond="RTX_En &amp;&amp; (QCB_Rd == 0) &amp;&amp; os_Info.mpi_message_queue" type="osRtxMessageQueue_t" offset="mp_mqueue.block_base" count="mp_mqueue.max_blocks" />
  688. <!-- Read stack memory header and block list (MEM) -->
  689. <readlist name="mem_head_stack" cond="RTX_En &amp;&amp; os_Config.mem_stack_addr" type="mem_head_t" offset="os_Config.mem_stack_addr" count="1"/>
  690. <readlist name="mem_list_stack" cond="RTX_En &amp;&amp; os_Config.mem_stack_addr" type="mem_block_t" offset="os_Config.mem_stack_addr + 8" next="next"/>
  691. <calc cond="RTX_En &amp;&amp; os_Config.mem_stack_addr"> mem_head_stack.max_used = mem_list_stack[mem_list_stack._count-1].len; </calc>
  692. <!-- Read memory pool data memory header and block list (MEM) -->
  693. <readlist name="mem_head_mp_data" cond="RTX_En &amp;&amp; os_Config.mem_mp_data_addr" type="mem_head_t" offset="os_Config.mem_mp_data_addr" count="1"/>
  694. <readlist name="mem_list_mp_data" cond="RTX_En &amp;&amp; os_Config.mem_mp_data_addr" type="mem_block_t" offset="os_Config.mem_mp_data_addr + 8" next="next"/>
  695. <calc cond="RTX_En &amp;&amp; os_Config.mem_mp_data_addr"> mem_head_mp_data.max_used = mem_list_mp_data[mem_list_mp_data._count-1].len; </calc>
  696. <!-- Read message queue data memory header and block list (MEM) -->
  697. <readlist name="mem_head_mq_data" cond="RTX_En &amp;&amp; os_Config.mem_mq_data_addr" type="mem_head_t" offset="os_Config.mem_mq_data_addr" count="1"/>
  698. <readlist name="mem_list_mq_data" cond="RTX_En &amp;&amp; os_Config.mem_mq_data_addr" type="mem_block_t" offset="os_Config.mem_mq_data_addr + 8" next="next"/>
  699. <calc cond="RTX_En &amp;&amp; os_Config.mem_mq_data_addr"> mem_head_mq_data.max_used = mem_list_mq_data[mem_list_mq_data._count-1].len; </calc>
  700. <!-- Read common memory header and block list (MEM) -->
  701. <readlist name="mem_head_com" cond="RTX_En &amp;&amp; os_Config.mem_common_addr" type="mem_head_t" offset="os_Config.mem_common_addr" count="1"/>
  702. <readlist name="mem_list_com" cond="RTX_En &amp;&amp; os_Config.mem_common_addr" type="mem_block_t" offset="os_Config.mem_common_addr + 8" next="next"/>
  703. <calc cond="RTX_En &amp;&amp; os_Config.mem_common_addr"> mem_head_com.max_used = mem_list_com[mem_list_com._count-1].len; </calc>
  704. <!-- Extract control blocks located in the common memory -->
  705. <list cond="mem_list_com._count > 1" name="i" start="0" limit="mem_list_com._count-1">
  706. <calc>
  707. addr = mem_list_com[i]._addr;
  708. addr += 8;
  709. </calc>
  710. <!-- Read Thread Control Block -->
  711. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF1)" name="TCB" type="osRtxThread_t" offset="addr" count="1" />
  712. <!-- Read Timer Control Block -->
  713. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF2)" name="CCB" type="osRtxTimer_t" offset="addr" count="1" />
  714. <!-- Read EventFlags Control Block -->
  715. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF3)" name="ECB" type="osRtxEventFlags_t" offset="addr" count="1" />
  716. <!-- Read Mutex Control Block -->
  717. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF5)" name="MCB" type="osRtxMutex_t" offset="addr" count="1" />
  718. <!-- Read Semaphore Control Block -->
  719. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF6)" name="SCB" type="osRtxSemaphore_t" offset="addr" count="1" />
  720. <!-- Read MemoryPool Control Block -->
  721. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xF7)" name="PCB" type="osRtxMemoryPool_t" offset="addr" count="1" />
  722. <!-- Read MessageQueue Control Block -->
  723. <readlist cond="(mem_list_com[i].len &amp; 1) &amp;&amp; (mem_list_com[i].id == 0xFA)" name="QCB" type="osRtxMessageQueue_t" offset="addr" count="1" />
  724. </list>
  725. <!-- Validate and process Thread control blocks -->
  726. <list name="i" start="0" limit="TCB._count">
  727. <calc>
  728. TCB[i].cb_valid = (TCB[i].id == 0xF1) &amp;&amp; (TCB[i].state != 0) &amp;&amp; (TCB[i].sp != 0);
  729. TCB[i].sp_valid = 1;
  730. </calc>
  731. <!-- Set Round Robin time tick from the running thread tick value -->
  732. <calc cond="(TCB[i].state == 2) &amp;&amp; os_Config.robin_timeout">
  733. os_Info.robin_tick = TCB[i].delay;
  734. </calc>
  735. <!-- Stack pointer for running thread -->
  736. <calc cond="(TCB[i].state == 2) &amp;&amp; (__Running == 0)">
  737. ipsr = __GetRegVal("XPSR") &amp; 0x01FF;
  738. psp = (v8m_ns == 0) ? (__GetRegVal("PSP")) : (__GetRegVal("PSP_NS"));
  739. psp = (psp == 0) ? (TCB[i].sp) : (psp);
  740. sp = ((ipsr != 0) &amp;&amp; (ipsr &lt; 16)) ? (TCB[i].sp) : (psp);
  741. TCB[i].sp_valid = ((ipsr != 0) &amp;&amp; (ipsr &lt; 16)) ? (0) : (1);
  742. </calc>
  743. <calc cond="(TCB[i].state == 2) &amp;&amp; (__Running == 1)">
  744. TCB[i].sp_valid = 0;
  745. sp = TCB[i].sp;
  746. </calc>
  747. <!-- Stack pointer for waiting thread -->
  748. <calc cond="TCB[i].state != 2">
  749. sp = TCB[i].sp;
  750. </calc>
  751. <!-- Save current stack pointer -->
  752. <calc>
  753. TCB[i].stack_cur = sp;
  754. </calc>
  755. <!-- Determine current stack usage -->
  756. <calc cond="TCB[i].sp != 0">
  757. TCB[i].stack_curb = TCB[i].stack_mem + TCB[i].stack_size;
  758. TCB[i].stack_curb -= sp;
  759. TCB[i].stack_curp = TCB[i].stack_curb;
  760. TCB[i].stack_curp *= 100;
  761. TCB[i].stack_curp /= TCB[i].stack_size;
  762. </calc>
  763. <!-- Check for current sp overflow -->
  764. <calc cond="TCB[i].sp != 0">
  765. TCB[i].stack_over = (sp &lt;= TCB[i].stack_mem) ? 1 : 0;
  766. </calc>
  767. <!-- Check also control values to determine maximum stack usage -->
  768. <calc cond="(os_Config.stack_wmark != 0) &amp;&amp; (TCB[i].sp != 0) &amp;&amp; (TCB[i].stack_over == 0) &amp;&amp; (TCB[i].stack_size &lt; 65536)">
  769. TCB[i].stack_val = __CalcMemUsed (TCB[i].stack_mem, sp - TCB[i].stack_mem, 0xCCCCCCCC, 0xE25A2EA5);
  770. TCB[i].stack_over = TCB[i].stack_val >> 31;
  771. TCB[i].stack_maxb = (TCB[i].stack_mem + TCB[i].stack_size) - sp;
  772. TCB[i].stack_maxb += TCB[i].stack_val &amp; 0xFFFFF;
  773. TCB[i].stack_maxp = (TCB[i].stack_maxb * 100)/ TCB[i].stack_size;
  774. </calc>
  775. <!-- Set max usage in case of stack overflow -->
  776. <calc cond="(TCB[i].sp != 0) &amp;&amp; (TCB[i].stack_over != 0)">
  777. TCB[i].stack_maxb = TCB[i].stack_size;
  778. TCB[i].stack_maxp = 100;
  779. </calc>
  780. <!-- Adjust maximum usage in case if current sp below max -->
  781. <calc cond="(TCB[i].sp != 0) &amp;&amp; (TCB[i].stack_curb &gt;= TCB[i].stack_maxb)">
  782. TCB[i].stack_maxb = TCB[i].stack_curb;
  783. TCB[i].stack_maxp = TCB[i].stack_curp;
  784. </calc>
  785. <calc>
  786. TCB[i].ex_delay = TCB[i].delay;
  787. </calc>
  788. <!-- Create Thread Delay List (TDL) -->
  789. <readlist cond="TCB[i].delay != -1" name="TDL" type="osRtxThread_t" offset="TCB[i].delay_prev" next="delay_prev" init="1"/>
  790. <list cond="TCB[i].delay != -1" name="j" start="0" limit="TDL._count">
  791. <calc>
  792. TCB[i].ex_delay += TDL[j].delay;
  793. </calc>
  794. </list>
  795. </list>
  796. <!-- Validate and process Timer control blocks -->
  797. <list name="i" start="0" limit="CCB._count">
  798. <calc>
  799. CCB[i].cb_valid = (CCB[i].id == 0xF2) &amp;&amp; (CCB[i].state != 0);
  800. CCB[i].ex_tick = CCB[i].tick;
  801. </calc>
  802. <!-- Create Timer Execution List (TEL) -->
  803. <readlist name="TEL" type="osRtxTimer_t" offset="CCB[i].prev" next="prev" init="1"/>
  804. <list name="j" start="0" limit="TEL._count">
  805. <calc>
  806. CCB[i].ex_tick += TEL[j].tick;
  807. </calc>
  808. </list>
  809. </list>
  810. <!-- Validate and process EventFlags control blocks -->
  811. <calc> k = 0; </calc>
  812. <list name="i" start="0" limit="ECB._count">
  813. <calc>
  814. ECB[i].cb_valid = (ECB[i].id == 0xF3);
  815. ECB[i].wl_idx = k;
  816. ECB[i].wl_cnt = 0;
  817. </calc>
  818. <!-- Create a list of threads waiting for event flags -->
  819. <readlist name="EWL" type="osRtxThread_t" offset="ECB[i].thread_list" next="thread_next" cond="ECB[i].thread_list"/>
  820. <calc cond="ECB[i].thread_list">
  821. ECB[i].wl_cnt = (EWL._count - k);
  822. k = EWL._count;
  823. </calc>
  824. </list>
  825. <!-- Validate and process Mutex control blocks -->
  826. <calc> k = 0; </calc>
  827. <list cond="MCB._count" name="i" start="0" limit="MCB._count">
  828. <calc>
  829. MCB[i].cb_valid = (MCB[i].id == 0xF5);
  830. MCB[i].wl_idx = k;
  831. MCB[i].wl_cnt = 0;
  832. </calc>
  833. <!-- Create a list of threads waiting for mutex -->
  834. <readlist name="MWL" type="osRtxThread_t" offset="MCB[i].thread_list" next="thread_next" cond="MCB[i].thread_list"/>
  835. <calc cond="MCB[i].thread_list">
  836. MCB[i].wl_cnt = (MWL._count - k);
  837. k = MWL._count;
  838. </calc>
  839. </list>
  840. <!-- Validate and process semaphore control blocks -->
  841. <calc> k = 0; </calc>
  842. <list cond="SCB._count" name="i" start="0" limit="SCB._count">
  843. <calc>
  844. SCB[i].cb_valid = (SCB[i].id == 0xF6);
  845. SCB[i].wl_idx = k;
  846. SCB[i].wl_cnt = 0;
  847. </calc>
  848. <!-- Create a list of threads waiting for semaphore -->
  849. <readlist name="SWL" type="osRtxThread_t" offset="SCB[i].thread_list" next="thread_next" cond="SCB[i].thread_list"/>
  850. <calc cond="SCB[i].thread_list">
  851. SCB[i].wl_cnt = (SWL._count - k);
  852. k = SWL._count;
  853. </calc>
  854. </list>
  855. <!-- Validate and process MemoryPool control blocks -->
  856. <calc> k = 0; </calc>
  857. <list cond="PCB._count" name="i" start="0" limit="PCB._count">
  858. <calc>
  859. PCB[i].cb_valid = (PCB[i].id == 0xF7);
  860. PCB[i].wl_idx = k;
  861. PCB[i].wl_cnt = 0;
  862. </calc>
  863. <!-- Create a list of threads waiting for memory pool -->
  864. <readlist name="PWL" type="osRtxThread_t" offset="PCB[i].thread_list" next="thread_next" cond="PCB[i].thread_list"/>
  865. <calc cond="PCB[i].thread_list">
  866. PCB[i].wl_cnt = (PWL._count - k);
  867. k = PWL._count;
  868. </calc>
  869. </list>
  870. <!-- Validate and process MessageQueue control blocks -->
  871. <calc> k = 0; j = 0; </calc>
  872. <list cond="QCB._count" name="i" start="0" limit="QCB._count">
  873. <calc>
  874. QCB[i].cb_valid = (QCB[i].id == 0xFA);
  875. QCB[i].wl_idx = k;
  876. QCB[i].wl_cnt = 0;
  877. </calc>
  878. <!-- Create a list of threads waiting for message queue -->
  879. <readlist name="QWL" type="osRtxThread_t" offset="QCB[i].thread_list" next="thread_next" cond="QCB[i].thread_list"/>
  880. <calc cond="QCB[i].thread_list">
  881. QCB[i].wl_cnt = (QWL._count - k);
  882. k = QWL._count;
  883. </calc>
  884. <!-- Create a list of enqueued messages -->
  885. <readlist name="QML" type="osRtxMessage_t" offset="QCB[i].msg_first" next="next" cond="QCB[i].msg_first"/>
  886. <calc>
  887. QCB[i].ml_idx = j;
  888. QCB[i].ml_cnt = (QML._count - j)
  889. j = QML._count;
  890. </calc>
  891. </list>
  892. <!-- Determine the addresses of enqueued messages -->
  893. <list cond="QML._count" name="i" start="0" limit="QML._count">
  894. <calc>
  895. QML[i].addr = QML[i]._addr;
  896. QML[i].addr += 12;
  897. </calc>
  898. </list>
  899. <!-- Read Object Memory Usage Counters (MUC) -->
  900. <calc cond="__Symbol_exists (&quot;osRtxThreadMemUsage&quot;)"> MUC_Thread_En = 1; </calc>
  901. <calc cond="__Symbol_exists (&quot;osRtxTimerMemUsage&quot;)"> MUC_Timer_En = 1; </calc>
  902. <calc cond="__Symbol_exists (&quot;osRtxEventFlagsMemUsage&quot;)"> MUC_EventFlags_En = 1; </calc>
  903. <calc cond="__Symbol_exists (&quot;osRtxMutexMemUsage&quot;)"> MUC_Mutex_En = 1; </calc>
  904. <calc cond="__Symbol_exists (&quot;osRtxSemaphoreMemUsage&quot;)"> MUC_Semaphore_En = 1; </calc>
  905. <calc cond="__Symbol_exists (&quot;osRtxMemoryPoolMemUsage&quot;)"> MUC_MemPool_En = 1; </calc>
  906. <calc cond="__Symbol_exists (&quot;osRtxMessageQueueMemUsage&quot;)"> MUC_MsgQueue_En = 1; </calc>
  907. <calc>
  908. MUC_En = MUC_Thread_En | MUC_Timer_En | MUC_EventFlags_En | MUC_Mutex_En | MUC_Semaphore_En | MUC_MemPool_En | MUC_MsgQueue_En;
  909. </calc>
  910. <readlist name="MUC_Thread" type="osRtxObjectMemUsage_t" symbol="osRtxThreadMemUsage" count="1" init="1" cond="MUC_Thread_En"/>
  911. <readlist name="MUC_Timer" type="osRtxObjectMemUsage_t" symbol="osRtxTimerMemUsage" count="1" init="1" cond="MUC_Timer_En"/>
  912. <readlist name="MUC_EventFlags" type="osRtxObjectMemUsage_t" symbol="osRtxEventFlagsMemUsage" count="1" init="1" cond="MUC_EventFlags_En"/>
  913. <readlist name="MUC_Mutex" type="osRtxObjectMemUsage_t" symbol="osRtxMutexMemUsage" count="1" init="1" cond="MUC_Mutex_En"/>
  914. <readlist name="MUC_Semaphore" type="osRtxObjectMemUsage_t" symbol="osRtxSemaphoreMemUsage" count="1" init="1" cond="MUC_Semaphore_En"/>
  915. <readlist name="MUC_MemPool" type="osRtxObjectMemUsage_t" symbol="osRtxMemoryPoolMemUsage" count="1" init="1" cond="MUC_MemPool_En"/>
  916. <readlist name="MUC_MsgQueue" type="osRtxObjectMemUsage_t" symbol="osRtxMessageQueueMemUsage" count="1" init="1" cond="MUC_MsgQueue_En"/>
  917. <!-- Determine what to display -->
  918. <list cond="TCB._count" name="i" start="0" limit="TCB._count">
  919. <calc>TCB_En += TCB[i].cb_valid; </calc>
  920. <calc cond="TCB[i].cb_valid == 0"> TCB[i].out_type = 0;</calc>
  921. <calc cond="TCB[i].cb_valid &amp;&amp; (TCB[i].name == 0) &amp;&amp; (os_Config.stack_wmark == 0)"> TCB[i].out_type = 1; </calc>
  922. <calc cond="TCB[i].cb_valid &amp;&amp; (TCB[i].name == 0) &amp;&amp; (os_Config.stack_wmark != 0)"> TCB[i].out_type = 2; </calc>
  923. <calc cond="TCB[i].cb_valid &amp;&amp; (TCB[i].name != 0) &amp;&amp; (os_Config.stack_wmark == 0)"> TCB[i].out_type = 3; </calc>
  924. <calc cond="TCB[i].cb_valid &amp;&amp; (TCB[i].name != 0) &amp;&amp; (os_Config.stack_wmark != 0)"> TCB[i].out_type = 4; </calc>
  925. <calc cond="TCB[i].sp_valid == 0"> TCB[i].out_type += 4; </calc>
  926. </list>
  927. <list cond="CCB._count" name="i" start="0" limit="CCB._count">
  928. <calc>CCB_En += CCB[i].cb_valid; </calc>
  929. </list>
  930. <list cond="SCB._count" name="i" start="0" limit="SCB._count">
  931. <calc>SCB_En += SCB[i].cb_valid; </calc>
  932. </list>
  933. <list cond="MCB._count" name="i" start="0" limit="MCB._count">
  934. <calc>MCB_En += MCB[i].cb_valid; </calc>
  935. </list>
  936. <list cond="ECB._count" name="i" start="0" limit="ECB._count">
  937. <calc>ECB_En += ECB[i].cb_valid; </calc>
  938. </list>
  939. <list cond="PCB._count" name="i" start="0" limit="PCB._count">
  940. <calc>PCB_En += PCB[i].cb_valid; </calc>
  941. </list>
  942. <list cond="QCB._count" name="i" start="0" limit="QCB._count">
  943. <calc>QCB_En += QCB[i].cb_valid; </calc>
  944. </list>
  945. <out name="RTX RTOS">
  946. <!-- System -->
  947. <item property="System" value="">
  948. <item property="Kernel ID" value="RTX V%d[V_Major].%d[V_Minor].%d[V_Patch]" cond="RTX_En != 0"/>
  949. <item property="Kernel State" value="osKernelInactive" cond="RTX_En == 0"/>
  950. <item property="Kernel State" value="%E[os_Info.kernel_state]" cond="RTX_En != 0"/>
  951. <item property="Kernel Tick Count" value="%d[os_Info.kernel_tick]" cond="RTX_En != 0"/>
  952. <item property="Kernel Tick Frequency" value="%d[os_Config.tick_freq]" cond="RTX_En != 0" />
  953. <item property="Round Robin" value="Disabled" cond="(os_Config.robin_timeout == 0) &amp;&amp; (RTX_En != 0)" />
  954. <item property="Round Robin Tick Count" value="%d[os_Info.robin_tick]" cond="(os_Config.robin_timeout > 0) &amp;&amp; (RTX_En != 0)" />
  955. <item property="Round Robin Timeout" value="%d[os_Config.robin_timeout]" cond="(os_Config.robin_timeout > 0) &amp;&amp; (RTX_En != 0)" />
  956. <item property="Global Dynamic Memory" value="Not used" cond="(os_Config.mem_common_size == 0) &amp;&amp; (RTX_En != 0)"/>
  957. <item property="Global Dynamic Memory" value="Base: %x[mem_head_com._addr], Size: %d[mem_head_com.size], Used: %d[mem_head_com.used], Max used: %d[mem_head_com.max_used]" cond="(os_Config.mem_common_size != 0) &amp;&amp; (RTX_En != 0)"/>
  958. <item property="Stack Overrun Check" value="%t[os_Config.stack_check ? &quot;Enabled&quot; : &quot;Disabled&quot;]" cond="RTX_En != 0"/>
  959. <item property="Stack Usage Watermark" value="%t[os_Config.stack_wmark ? &quot;Enabled&quot; : &quot;Disabled&quot;]" cond="RTX_En != 0"/>
  960. <item property="Default Thread Stack Size" value="%d[os_Config.thread_stack_size]" cond="RTX_En != 0"/>
  961. <item property="ISR FIFO Queue" value="Size: %d[os_Info.isr_queue_max], Used: %d[os_Info.isr_queue_cnt]" cond="RTX_En">
  962. <list name="i" start="0" limit="os_Info.isr_queue_cnt">
  963. <item property="data[%d[i]]" value="%x[ISR_FIFO[i]]" />
  964. </list>
  965. </item>
  966. <item property="Object specific Memory allocation" value="" cond="StaticMp_En">
  967. <item property="Thread objects" value="Used: %d[cfg_mp_thread.used_blocks], Max: %d[cfg_mp_thread.max_blocks]" cond="os_Config.mpi_thread">
  968. <item property="Control blocks" value="Base: %x[cfg_mp_thread.block_base], Size: %d[cfg_mp_thread.block_lim - cfg_mp_thread.block_base], Used: %d[cfg_mp_thread.used_blocks * cfg_mp_thread.block_size]"/>
  969. <item property="Default stack" value="Base: %x[cfg_mp_stack.block_base], Size: %d[cfg_mp_stack.block_lim - cfg_mp_stack.block_base], Used: %d[cfg_mp_stack.used_blocks * cfg_mp_stack.block_size]" cond="os_Config.mpi_stack"/>
  970. <item property="User stack" value="Base: %x[mem_head_stack._addr], Size: %d[mem_head_stack.size], Used: %d[mem_head_stack.used], Max used: %d[mem_head_stack.max_used]" cond="os_Config.mem_stack_size"/>
  971. </item>
  972. <item property="Timer objects" value="Used: %d[cfg_mp_timer.used_blocks], Max: %d[cfg_mp_timer.max_blocks]" cond="os_Config.mpi_timer">
  973. <item property="Control blocks" value="Base: %x[cfg_mp_timer.block_base], Size: %d[cfg_mp_timer.block_lim - cfg_mp_timer.block_base], Used: %d[cfg_mp_timer.used_blocks * cfg_mp_timer.block_size]"/>
  974. </item>
  975. <item property="Event Flags objects" value="Used: %d[cfg_mp_events.used_blocks], Max: %d[cfg_mp_events.max_blocks]" cond="os_Config.mpi_event_flags">
  976. <item property="Control blocks" value="Base: %x[cfg_mp_events.block_base], Size: %d[cfg_mp_events.block_lim - cfg_mp_events.block_base], Used: %d[cfg_mp_events.used_blocks * cfg_mp_events.block_size]"/>
  977. </item>
  978. <item property="Mutex objects" value="Used: %d[cfg_mp_mutex.used_blocks], Max: %d[cfg_mp_mutex.max_blocks]" cond="os_Config.mpi_mutex">
  979. <item property="Control blocks" value="Base: %x[cfg_mp_mutex.block_base], Size: %d[cfg_mp_mutex.block_lim - cfg_mp_mutex.block_base], Used: %d[cfg_mp_mutex.used_blocks * cfg_mp_mutex.block_size]"/>
  980. </item>
  981. <item property="Semaphore objects" value="Used: %d[cfg_mp_semaphore.used_blocks], Max: %d[cfg_mp_semaphore.max_blocks]" cond="os_Config.mpi_semaphore">
  982. <item property="Control blocks" value="Base: %x[cfg_mp_semaphore.block_base], Size: %d[cfg_mp_semaphore.block_lim - cfg_mp_semaphore.block_base], Used: %d[cfg_mp_semaphore.used_blocks * cfg_mp_semaphore.block_size]"/>
  983. </item>
  984. <item property="Memory Pool objects" value="Used: %d[cfg_mp_mpool.used_blocks], Max: %d[cfg_mp_mpool.max_blocks]" cond="os_Config.mpi_memory_pool">
  985. <item property="Control blocks" value="Base: %x[cfg_mp_mpool.block_base], Size: %d[cfg_mp_mpool.block_lim - cfg_mp_mpool.block_base], Used: %d[cfg_mp_mpool.used_blocks * cfg_mp_mpool.block_size]"/>
  986. <item property="Data storage" value="Base: %x[mem_head_mp_data._addr], Size: %d[mem_head_mp_data.size], Used: %d[mem_head_mp_data.used], Max used: %d[mem_head_mp_data.max_used]" cond="os_Config.mem_mp_data_size"/>
  987. </item>
  988. <item property="Message Queue objects" value="Used: %d[cfg_mp_mqueue.used_blocks], Max: %d[cfg_mp_mqueue.max_blocks]" cond="os_Config.mpi_message_queue">
  989. <item property="Control blocks" value="Base: %x[cfg_mp_mqueue.block_base], Size: %d[cfg_mp_mqueue.block_lim - cfg_mp_mqueue.block_base], Used: %d[cfg_mp_mqueue.used_blocks * cfg_mp_mqueue.block_size]"/>
  990. <item property="Data storage" value="Base: %x[mem_head_mq_data._addr], Size: %d[mem_head_mq_data.size], Used: %d[mem_head_mq_data.used], Max used: %d[mem_head_mq_data.max_used]" cond="os_Config.mem_mq_data_size"/>
  991. </item>
  992. </item>
  993. <item property="Object Memory usage counters" value="" cond="(MUC_En != 0) &amp;&amp; (RTX_En != 0)">
  994. <item property="Thread objects" value="Alloc: %d[MUC_Thread.cnt_alloc], Free: %d[MUC_Thread.cnt_free], Max used: %d[MUC_Thread.max_used]" cond="MUC_Thread_En"/>
  995. <item property="Timer objects" value="Alloc: %d[MUC_Timer.cnt_alloc], Free: %d[MUC_Timer.cnt_free], Max used: %d[MUC_Timer.max_used]" cond="MUC_Timer_En"/>
  996. <item property="Event Flags objects" value="Alloc: %d[MUC_EventFlags.cnt_alloc], Free: %d[MUC_EventFlags.cnt_free], Max used: %d[MUC_EventFlags.max_used]" cond="MUC_EventFlags_En"/>
  997. <item property="Mutex objects" value="Alloc: %d[MUC_Mutex.cnt_alloc], Free: %d[MUC_Mutex.cnt_free], Max used: %d[MUC_Mutex.max_used]" cond="MUC_Mutex_En"/>
  998. <item property="Semaphore objects" value="Alloc: %d[MUC_Semaphore.cnt_alloc], Free: %d[MUC_Semaphore.cnt_free], Max used: %d[MUC_Semaphore.max_used]" cond="MUC_Semaphore_En"/>
  999. <item property="Memory Pool objects" value="Alloc: %d[MUC_MemPool.cnt_alloc], Free: %d[MUC_MemPool.cnt_free], Max used: %d[MUC_MemPool.max_used]" cond="MUC_MemPool_En"/>
  1000. <item property="Message Queue objects" value="Alloc: %d[MUC_MsgQueue.cnt_alloc], Free: %d[MUC_MsgQueue.cnt_free], Max used: %d[MUC_MsgQueue.max_used]" cond="MUC_MsgQueue_En"/>
  1001. </item>
  1002. </item>
  1003. <!-- Threads -->
  1004. <item cond="TCB_En" property="Threads" value="">
  1005. <list name="i" start="0" limit="TCB._count">
  1006. <item>
  1007. <print cond="TCB[i].out_type == 1" property="id: %x[TCB[i]._addr] &quot;%S[TCB[i].thread_addr]&quot;" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: %d[TCB[i].stack_curp]%%" alert="TCB[i].stack_over != 0"/>
  1008. <print cond="TCB[i].out_type == 2" property="id: %x[TCB[i]._addr] &quot;%S[TCB[i].thread_addr]&quot;" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: %d[TCB[i].stack_curp]%%, Max: %d[TCB[i].stack_maxp]%%" alert="TCB[i].stack_over != 0"/>
  1009. <print cond="TCB[i].out_type == 3" property="id: %x[TCB[i]._addr] %N[TCB[i].name]" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: %d[TCB[i].stack_curp]%%" alert="TCB[i].stack_over != 0"/>
  1010. <print cond="TCB[i].out_type == 4" property="id: %x[TCB[i]._addr] %N[TCB[i].name]" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: %d[TCB[i].stack_curp]%%, Max: %d[TCB[i].stack_maxp]%%" alert="TCB[i].stack_over != 0"/>
  1011. <print cond="TCB[i].out_type == 5" property="id: %x[TCB[i]._addr] &quot;%S[TCB[i].thread_addr]&quot;" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: unknown" alert="TCB[i].stack_over != 0"/>
  1012. <print cond="TCB[i].out_type == 6" property="id: %x[TCB[i]._addr] &quot;%S[TCB[i].thread_addr]&quot;" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: unknown, Max: %d[TCB[i].stack_maxp]%%" alert="TCB[i].stack_over != 0"/>
  1013. <print cond="TCB[i].out_type == 7" property="id: %x[TCB[i]._addr] %N[TCB[i].name]" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: unknown" alert="TCB[i].stack_over != 0"/>
  1014. <print cond="TCB[i].out_type == 8" property="id: %x[TCB[i]._addr] %N[TCB[i].name]" value="%E[TCB[i].state &amp; 0x07], %E[TCB[i].priority], Stack Used: unknown, Max: %d[TCB[i].stack_maxp]%%" alert="TCB[i].stack_over != 0"/>
  1015. <item property="State" value="%E[TCB[i].state &amp; 0x07]"/>
  1016. <item property="Priority" value="%E[TCB[i].priority]"/>
  1017. <item property="Attributes" value="%E[TCB[i].attr &amp; 0x01]"/>
  1018. <item>
  1019. <print property="Waiting" value="%E[TCB[i].state], Timeout: %d[TCB[i].ex_delay]" cond="((TCB[i].state &amp; 0x07) == 3) &amp;&amp; (TCB[i].ex_delay != -1)"/>
  1020. <print property="Waiting" value="%E[TCB[i].state], Timeout: osWaitForever" cond="((TCB[i].state &amp; 0x07) == 3) &amp;&amp; (TCB[i].ex_delay == -1)"/>
  1021. <!-- Wait Join -->
  1022. <item cond="TCB[i].state == 0x23" property="id: %x[TCB[i].thread_join]" value=""/>
  1023. <!-- Wait Thread Flags -->
  1024. <item cond="TCB[i].state == 0x33" property="id: %x[TCB[i].thread_prev]" value=""/>
  1025. <list cond="TCB[i].state == 0x43" name="n" start="0" limit="ECB._count">
  1026. <!-- Wait Event Flags -->
  1027. <item cond="TCB[i].thread_prev == ECB[n]._addr" property="id: %x[ECB[n]._addr] %N[ECB[n].name]" value=""/>
  1028. </list>
  1029. <list cond="TCB[i].state == 0x53" name="n" start="0" limit="MCB._count">
  1030. <!-- Wait Mutex -->
  1031. <item cond="TCB[i].thread_prev == MCB[n]._addr" property="id: %x[MCB[n]._addr] %N[MCB[n].name]" value=""/>
  1032. </list>
  1033. <list cond="TCB[i].state == 0x63" name="n" start="0" limit="SCB._count">
  1034. <!-- Wait Semaphore -->
  1035. <item cond="TCB[i].thread_prev == SCB[n]._addr" property="id: %x[SCB[n]._addr] %N[SCB[n].name]" value=""/>
  1036. </list>
  1037. <list cond="TCB[i].state == 0x73" name="n" start="0" limit="PCB._count">
  1038. <!-- Wait Memory Pool -->
  1039. <item cond="TCB[i].thread_prev == PCB[n]._addr" property="id: %x[PCB[n]._addr] %N[PCB[n].name]" value=""/>
  1040. </list>
  1041. <list cond="(TCB[i].state == 0x83) || (TCB[i].state == 0x84)" name="n" start="0" limit="QCB._count">
  1042. <!-- Wait Message Queue -->
  1043. <item cond="TCB[i].thread_prev == QCB[n]._addr" property="id: %x[QCB[n]._addr] %N[QCB[n].name]" value=""/>
  1044. </list>
  1045. </item>
  1046. <item>
  1047. <print cond="(TCB[i].sp_valid == 0) &amp;&amp; (os_Config.stack_wmark == 0)" property="Stack" value="Used: unknown"/>
  1048. <print cond="(TCB[i].sp_valid == 0) &amp;&amp; (os_Config.stack_wmark != 0)" property="Stack" value="Used: unknown, Max: %d[TCB[i].stack_maxp]%% [%d[TCB[i].stack_maxb]]"/>
  1049. <print cond="(TCB[i].sp_valid == 1) &amp;&amp; (os_Config.stack_wmark == 0)" property="Stack" value="Used: %d[TCB[i].stack_curp]%% [%d[TCB[i].stack_curb]]"/>
  1050. <print cond="(TCB[i].sp_valid == 1) &amp;&amp; (os_Config.stack_wmark != 0)" property="Stack" value="Used: %d[TCB[i].stack_curp]%% [%d[TCB[i].stack_curb]], Max: %d[TCB[i].stack_maxp]%% [%d[TCB[i].stack_maxb]]"/>
  1051. <item>
  1052. <print cond="TCB[i].sp_valid == 0" property="Used" value="unknown"/>
  1053. <print cond="TCB[i].sp_valid == 1" property="Used" value="%d[TCB[i].stack_curb]"/>
  1054. </item>
  1055. <item property="Max" value="%d[TCB[i].stack_maxb]" cond="os_Config.stack_wmark != 0"/>
  1056. <item property="Top" value="%x[TCB[i].stack_mem + TCB[i].stack_size]"/>
  1057. <item>
  1058. <print cond="TCB[i].sp_valid == 0" property="Current" value="unknown"/>
  1059. <print cond="TCB[i].sp_valid == 1" property="Current" value="%x[TCB[i].stack_cur]"/>
  1060. </item>
  1061. <item property="Limit" value="%x[TCB[i].stack_mem]"/>
  1062. <item property="Size" value="%d[TCB[i].stack_size]"/>
  1063. </item>
  1064. <item property="Stack Overrun" value="Overrun detected" cond="TCB[i].stack_over != 0"/>
  1065. <item property="Flags" value="%x[TCB[i].thread_flags]"/>
  1066. <item property="Wait Flags" value="%x[TCB[i].wait_flags], %E[TCB[i].flags_options &amp; 1]" cond="(TCB[i].wait_flags != 0) &amp;&amp; ((TCB[i].flags_options &amp; 2) == 0)"/>
  1067. <item property="Wait Flags" value="%x[TCB[i].wait_flags], %E[TCB[i].flags_options &amp; 1], osFlagsNoClear" cond="(TCB[i].wait_flags != 0) &amp;&amp; ((TCB[i].flags_options &amp; 2) != 0)"/>
  1068. <item property="TrustZone ID" value="%d[TCB[i].tz_memory]" cond="TCB[i].tz_memory"/>
  1069. </item>
  1070. </list>
  1071. </item>
  1072. <!-- Timers -->
  1073. <item cond="CCB_En" property="Timers" value="">
  1074. <list name="i" start="0" limit="CCB._count">
  1075. <item cond="CCB[i].cb_valid" property="id: %x[CCB[i]._addr] %N[CCB[i].name]" value="%E[CCB[i].state], Tick: %d[CCB[i].ex_tick]">
  1076. <item property="State" value="%E[CCB[i].state]" />
  1077. <item property="Type" value="%E[CCB[i].type]" />
  1078. <item property="Tick" value="%d[CCB[i].ex_tick]" />
  1079. <item property="Load" value="%d[CCB[i].load]" />
  1080. <item property="Callback" value="Func: %S[CCB[i].finfo_fp], Arg: %x[CCB[i].finfo_arg]" />
  1081. </item>
  1082. </list>
  1083. </item>
  1084. <!-- Semaphores -->
  1085. <item cond="SCB_En" property="Semaphores" value="">
  1086. <list name="i" start="0" limit="SCB._count">
  1087. <item cond="SCB[i].cb_valid" property="id: %x[SCB[i]._addr] %N[SCB[i].name]" value="Tokens: %d[SCB[i].tokens], Max: %d[SCB[i].max_tokens]">
  1088. <item property="Tokens" value="%d[SCB[i].tokens]" />
  1089. <item property="Max Tokens" value="%d[SCB[i].max_tokens]" />
  1090. <!-- Waiting thread list -->
  1091. <item cond="SCB[i].wl_cnt" property="Threads waiting (%d[SCB[i].wl_cnt])" value="">
  1092. <list name="j" start="SCB[i].wl_idx" limit="SCB[i].wl_idx + SCB[i].wl_cnt">
  1093. <list name="k" start="0" limit="TCB._count">
  1094. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: %d[TCB[k].ex_delay]" cond="(SWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay != -1)"/>
  1095. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: osWaitForever" cond="(SWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay == -1)"/>
  1096. </list>
  1097. </list>
  1098. </item>
  1099. </item>
  1100. </list>
  1101. </item>
  1102. <!-- Mutexes -->
  1103. <item cond="MCB_En" property="Mutexes" value="">
  1104. <list name="i" start="0" limit="MCB._count">
  1105. <item cond="MCB[i].cb_valid" property="id: %x[MCB[i]._addr] %N[MCB[i].name]" value="Lock counter: %d[MCB[i].lock]">
  1106. <item property="Lock counter" value="%x[MCB[i].lock]"/>
  1107. <item property="Attributes" value="%x[MCB[i].attr]">
  1108. <item property="osMutexRecursive" value="%t[(MCB[i].attr &amp; 0x01) ? &quot;True&quot; : &quot;False&quot;]" />
  1109. <item property="osMutexPrioInherit" value="%t[(MCB[i].attr &amp; 0x02) ? &quot;True&quot; : &quot;False&quot;]" />
  1110. <item property="osMutexRobust" value="%t[(MCB[i].attr &amp; 0x08) ? &quot;True&quot; : &quot;False&quot;]" />
  1111. </item>
  1112. <list cond="MCB[i].lock" name="n" start="0" limit="TCB._count">
  1113. <item cond="MCB[i].owner_thread == TCB[n]._addr" property="Owner thread" value="id: %x[TCB[n]._addr] %N[TCB[n].name]"/>
  1114. </list>
  1115. <!-- Waiting thread list -->
  1116. <item cond="MCB[i].wl_cnt" property="Threads waiting (%d[MCB[i].wl_cnt])" value="">
  1117. <list name="j" start="MCB[i].wl_idx" limit="MCB[i].wl_idx + MCB[i].wl_cnt">
  1118. <list name="k" start="0" limit="TCB._count">
  1119. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: %d[TCB[k].ex_delay]" cond="(MWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay != -1)"/>
  1120. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: osWaitForever" cond="(MWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay == -1)"/>
  1121. </list>
  1122. </list>
  1123. </item>
  1124. </item>
  1125. </list>
  1126. </item>
  1127. <!-- Event Flags -->
  1128. <item cond="ECB_En" property="Event Flags" value="">
  1129. <list name="i" start="0" limit="ECB._count">
  1130. <item cond="ECB[i].cb_valid" property="id: %x[ECB[i]._addr] %N[ECB[i].name]" value="Flags: %x[ECB[i].event_flags]">
  1131. <!-- Waiting thread list -->
  1132. <item cond="ECB[i].wl_cnt" property="Threads waiting (%d[ECB[i].wl_cnt])" value="">
  1133. <list name="j" start="ECB[i].wl_idx" limit="ECB[i].wl_idx + ECB[i].wl_cnt">
  1134. <list name="k" start="0" limit="TCB._count">
  1135. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: %d[TCB[k].ex_delay]" cond="(EWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay != -1)"/>
  1136. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: osWaitForever" cond="(EWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay == -1)"/>
  1137. </list>
  1138. </list>
  1139. </item>
  1140. </item>
  1141. </list>
  1142. </item>
  1143. <!-- Memory Pool -->
  1144. <item cond="PCB_En" property="Memory Pools" value="">
  1145. <list name="i" start="0" limit="PCB._count">
  1146. <item cond="PCB[i].cb_valid" property="id: %x[PCB[i]._addr] %N[PCB[i].name]" value="Used: %d[PCB[i].used_blocks], Max: %d[PCB[i].max_blocks]">
  1147. <item property="Used blocks" value="%d[PCB[i].used_blocks]"/>
  1148. <item property="Max blocks" value="%d[PCB[i].max_blocks]"/>
  1149. <item property="Block size" value="%d[PCB[i].block_size]"/>
  1150. <item property="Memory base" value="%x[PCB[i].block_base]"/>
  1151. <item property="Memory size" value="%d[PCB[i].block_lim - PCB[i].block_base]"/>
  1152. <!-- Waiting thread list -->
  1153. <item cond="PCB[i].wl_cnt" property="Threads waiting (%d[PCB[i].wl_cnt])" value="">
  1154. <list name="j" start="PCB[i].wl_idx" limit="PCB[i].wl_idx + PCB[i].wl_cnt">
  1155. <list name="k" start="0" limit="TCB._count">
  1156. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: %d[TCB[k].ex_delay]" cond="(PWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay != -1)"/>
  1157. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: osWaitForever" cond="(PWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay == -1)"/>
  1158. </list>
  1159. </list>
  1160. </item>
  1161. </item>
  1162. </list>
  1163. </item>
  1164. <!-- Message Queue -->
  1165. <item cond="QCB_En" property="Message Queues" value="">
  1166. <list name="i" start="0" limit="QCB._count">
  1167. <item cond="QCB[i].cb_valid" property="id: %x[QCB[i]._addr] %N[QCB[i].name]" value="Messages: %d[QCB[i].msg_count], Max: %d[QCB[i].max_blocks]">
  1168. <item property="Messages" value="%d[QCB[i].ml_cnt]"/>
  1169. <item property="Max Messages" value="%d[QCB[i].max_blocks]"/>
  1170. <item property="Message size" value="%d[QCB[i].msg_size]"/>
  1171. <!-- Waiting thread list -->
  1172. <item cond="QCB[i].wl_cnt" property="Threads waiting (%d[QCB[i].wl_cnt])" value="">
  1173. <list name="j" start="QCB[i].wl_idx" limit="QCB[i].wl_idx + QCB[i].wl_cnt">
  1174. <list name="k" start="0" limit="TCB._count">
  1175. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: %d[TCB[k].ex_delay]" cond="(QWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay != -1)"/>
  1176. <item property="id: %x[TCB[k]._addr] %N[TCB[k].name]" value="Timeout: osWaitForever" cond="(QWL[j].stack_mem == TCB[k].stack_mem) &amp;&amp; (TCB[k].ex_delay == -1)"/>
  1177. </list>
  1178. </list>
  1179. </item>
  1180. <!-- Queued messages list-->
  1181. <item cond="QCB[i].ml_cnt" property="Queue (%d[QCB[i].ml_cnt])" value="">
  1182. <list name="j" start="0" limit="QCB[i].ml_cnt">
  1183. <item property="Queue[%d[j]]" value="Address: %x[QML[j + QCB[i].ml_idx].addr], Priority: %d[QML[j + QCB[i].ml_idx].priority]" />
  1184. </list>
  1185. </item>
  1186. </item>
  1187. </list>
  1188. </item>
  1189. </out>
  1190. </object>
  1191. </objects>
  1192. <events>
  1193. <group name="RTX5 RTOS">
  1194. <component name="Memory Events" brief="RTX Memory" no="0xF0" prefix="EvrRtx" info="RTX5 RTOS Memory Management Events" />
  1195. <component name="Kernel Events" brief="RTX Kernel" no="0xF1" prefix="EvrRtx" info="RTX5 RTOS Kernel Events" />
  1196. <component name="Thread Events" brief="RTX Thread" no="0xF2" prefix="EvrRtx" info="RTX5 RTOS Thread Events" >
  1197. <state name="Inactive" plot="off" />
  1198. <state name="Ready" plot="box" />
  1199. <state name="Running" plot="box" bold="1" unique="1" ssel="1" />
  1200. <state name="Blocked" plot="line" />
  1201. <state name="Not-running" plot="line" bold="1" dormant="1" />
  1202. </component>
  1203. <component name="Generic Wait Events" brief="RTX Wait" no="0xF3" prefix="EvrRtx" info="RTX5 RTOS Generic Wait Events" />
  1204. <component name="ThreadFlags Events" brief="RTX ThFlags" no="0xF4" prefix="EvrRtx" info="RTX5 RTOS ThreadFlags Events" />
  1205. <component name="EventFlags Events" brief="RTX EvFlags" no="0xF5" prefix="EvrRtx" info="RTX5 RTOS EventFlags Events" />
  1206. <component name="Timer Events" brief="RTX Timer" no="0xF6" prefix="EvrRtx" info="RTX5 RTOS Timer Events" />
  1207. <component name="Mutex Events" brief="RTX Mutex" no="0xF7" prefix="EvrRtx" info="RTX5 RTOS Mutex Events" >
  1208. <state name="Free" plot="line" color="blue" bold="1" />
  1209. <state name="Used" plot="box" color="blue" />
  1210. <state name="Error" plot="box" color="red" />
  1211. </component>
  1212. <component name="Semaphore Events" brief="RTX Semaphore" no="0xF8" prefix="EvrRtx" info="RTX5 RTOS Semaphore Events" />
  1213. <component name="MemoryPool Events" brief="RTX MemPool" no="0xF9" prefix="EvrRtx" info="RTX5 RTOS MemoryPool Events" />
  1214. <component name="MessageQueue Events" brief="RTX MsgQueue" no="0xFA" prefix="EvrRtx" info="RTX5 RTOS MessageQueue Events" />
  1215. </group>
  1216. <event id="0xF000 + 0x00" level="Op" property="MemoryInit" value="mem=%x[val1], size=%d[val2], result=%d[val3]" info=""/>
  1217. <event id="0xF000 + 0x01" level="Op" property="MemoryAlloc" value="mem=%x[val1], size=%d[val2], type=%d[val3], block=%x[val4]" info=""/>
  1218. <event id="0xF000 + 0x02" level="Op" property="MemoryFree" value="mem=%x[val1], block=%x[val2], result=%d[val3]" info=""/>
  1219. <event id="0xF000 + 0x03" level="Op" property="MemoryBlockInit" value="mp_info=%x[val1], block_count=%d[val2], block_size=%d[val3], block_mem=%x[val4]" info=""/>
  1220. <event id="0xF000 + 0x04" level="Op" property="MemoryBlockAlloc" value="mp_info=%x[val1], block=%x[val2]" info=""/>
  1221. <event id="0xF000 + 0x05" level="Op" property="MemoryBlockFree" value="mp_info=%x[val1], block=%x[val2], status=%E[val3, rtx_t:status]" info=""/>
  1222. <event id="0xF100 + 0x00" level="Error" property="KernelError" value="status=%E[val1, rtx_t:status]" info="Kernel error occurred."/>
  1223. <event id="0xF100 + 0x01" level="API" property="KernelInitialize" value="" info="osKernelInitialize function was called."/>
  1224. <event id="0xF100 + 0x02" level="Op" property="KernelInitialized" tracking="Reset" value="" info="Kernel was initialized."/>
  1225. <event id="0xF100 + 0x03" level="API" property="KernelGetInfo" value="version=%x[val1], id_buf=%x[val2], id_size=%d[val3]" info="osKernelGetInfo function was called."/>
  1226. <event id="0xF100 + 0x04" level="Op" property="KernelInfoRetrieved" value="version_api=%d[val1/10000000].%d[(val1/10000)%1000].%d[val1%10000], version_kernel=%d[val2/10000000].%d[(val2/10000)%1000].%d[val2%10000]" info="Kernel information was retrieved."/>
  1227. <event id="0xF100 + 0x05" level="Detail" property="KernelInfoRetrieved" value="id=%t[val1]" info="Kernel ID as ASCII string."/>
  1228. <event id="0xF100 + 0x06" level="API" property="KernelGetState" value="state=%E[val1, rtx_kernel_state:id]" info="osKernelGetState function was called and state was retrieved."/>
  1229. <event id="0xF100 + 0x07" level="API" property="KernelStart" value="" info="osKernelStart function was called."/>
  1230. <event id="0xF100 + 0x08" level="Op" property="KernelStarted" value="" info="Kernel execution was started."/>
  1231. <event id="0xF100 + 0x09" level="API" property="KernelLock" value="" info="osKernelLock function was called."/>
  1232. <event id="0xF100 + 0x0A" level="Op" property="KernelLocked" value="lock=%d[val1]" info="Kernel was locked."/>
  1233. <event id="0xF100 + 0x0B" level="API" property="KernelUnlock" value="" info="osKernelUnlock function was called."/>
  1234. <event id="0xF100 + 0x0C" level="Op" property="KernelUnlocked" value="lock=%d[val1]" info="Kernel was unlocked."/>
  1235. <event id="0xF100 + 0x0D" level="API" property="KernelRestoreLock" value="lock=%d[val1]" info="osKernelRestoreLock function was called."/>
  1236. <event id="0xF100 + 0x0E" level="Op" property="KernelLockRestored" value="lock=%d[val1]" info="Kernel lock was restored."/>
  1237. <event id="0xF100 + 0x0F" level="API" property="KernelSuspend" value="" info="osKernelSuspend function was called."/>
  1238. <event id="0xF100 + 0x10" level="Op" property="KernelSuspended" value="sleep_ticks=%d[val1]" info="Kernel execution was suspended."/>
  1239. <event id="0xF100 + 0x11" level="API" property="KernelResume" value="sleep_ticks=%d[val1]" info="osKernelResume function was called."/>
  1240. <event id="0xF100 + 0x12" level="Op" property="KernelResumed" value="" info="Kernel execution was resumed."/>
  1241. <event id="0xF100 + 0x13" level="API" property="KernelGetTickCount" value="count=%d[val1]" info="osKernelGetTickCount function was called."/>
  1242. <event id="0xF100 + 0x14" level="API" property="KernelGetTickFreq" value="freq=%d[val1]" info="osKernelGetTickFreq function was called."/>
  1243. <event id="0xF100 + 0x15" level="API" property="KernelGetSysTimerCount" value="count=%d[val1]" info="osKernelGetSysTimerCount function was called."/>
  1244. <event id="0xF100 + 0x16" level="API" property="KernelGetSysTimerFreq" value="freq=%d[val1]" info="osKernelGetSysTimerFreq function was called."/>
  1245. <event id="0xF100 + 0x19" level="Error" property="KernelErrorNotify" value="code=%E[val1, rtx_error:id], object_id=%x[val2]" info="osKernelErrorNotify function was called."/>
  1246. <event id="0xF200 + 0x00" level="Error" property="ThreadError" value="thread_id=%x[val1], status=%E[val2, rtx_t:status]" info="Thread error occurred."/>
  1247. <event id="0xF200 + 0x01" level="API" property="ThreadNew" value="func=%S[val1], argument=%x[val2], attr=%x[val3]" info="osThreadNew function was called."/>
  1248. <event id="0xF200 + 0x03" level="Op" property="ThreadCreated" tracking="Start" state="Ready" handle="val1" hname="%S[val2]" value="thread_id=%x[val1]" info="Thread object was created."/>
  1249. <event id="0xF200 + 0x2C" level="Op" property="ThreadCreated" tracking="Start" state="Ready" handle="val1" hname="%N[val2]" value="thread_id=%x[val1]" info="Thread object was created."/>
  1250. <event id="0xF200 + 0x04" level="API" property="ThreadGetName" value="thread_id=%x[val1], name=%N[val2]" info="osThreadGetName function was called and object name was retrieved."/>
  1251. <event id="0xF200 + 0x06" level="API" property="ThreadGetId" value="thread_id=%x[val1]" info="osThreadGetId function was called and current running thread id was retrieved."/>
  1252. <event id="0xF200 + 0x07" level="API" property="ThreadGetState" value="thread_id=%x[val1], state=%E[val2, rtx_th_state:id]" info="osThreadGetState function was called and thread state was retrieved."/>
  1253. <event id="0xF200 + 0x08" level="API" property="ThreadGetStackSize" value="thread_id=%x[val1], stack_size=%d[val2]" info="osThreadGetStackSize function was called and thread stack size was retrieved."/>
  1254. <event id="0xF200 + 0x09" level="API" property="ThreadGetStackSpace" value="thread_id=%x[val1], stack_space=%d[val2]" info="osThreadGetStackSpace function was called and thread stack space was retrieved."/>
  1255. <event id="0xF200 + 0x0A" level="API" property="ThreadSetPriority" value="thread_id=%x[val1], priority=%E[val2, rtx_th_priority:id]" info="osThreadSetPriority function was called."/>
  1256. <event id="0xF200 + 0x2D" level="Op" property="ThreadPriorityUpdated" value="thread_id=%x[val1], priority=%E[val2, rtx_th_priority:id]" info="Thread priority was updated."/>
  1257. <event id="0xF200 + 0x0B" level="API" property="ThreadGetPriority" value="thread_id=%x[val1], priority=%E[val2, rtx_th_priority:id]" info="osThreadGetPriority function was called and thread priority was retrieved."/>
  1258. <event id="0xF200 + 0x0C" level="API" property="ThreadYield" value="" info="osThreadYield function was called."/>
  1259. <event id="0xF200 + 0x0D" level="API" property="ThreadSuspend" value="thread_id=%x[val1]" info="osThreadSuspend function was called."/>
  1260. <event id="0xF200 + 0x0E" level="Op" property="ThreadSuspended" state="Blocked" handle="val1" value="thread_id=%x[val1]" info="Thread execution was suspended."/>
  1261. <event id="0xF200 + 0x0F" level="API" property="ThreadResume" value="thread_id=%x[val1]" info="osThreadResume function was called."/>
  1262. <event id="0xF200 + 0x10" level="Op" property="ThreadResumed" state="Ready" handle="val1" value="thread_id=%x[val1]" info="Thread execution was resumed."/>
  1263. <event id="0xF200 + 0x11" level="API" property="ThreadDetach" value="thread_id=%x[val1]" info="osThreadDetach function was called."/>
  1264. <event id="0xF200 + 0x12" level="Op" property="ThreadDetached" value="thread_id=%x[val1]" info="Thread was detached."/>
  1265. <event id="0xF200 + 0x13" level="API" property="ThreadJoin" value="thread_id=%x[val1]" info="osThreadJoin function was called."/>
  1266. <event id="0xF200 + 0x14" level="Op" property="ThreadJoinPending" value="thread_id=%x[val1]" info="Thread join is pending."/>
  1267. <event id="0xF200 + 0x15" level="Op" property="ThreadJoined" value="thread_id=%x[val1]" info="Thread joined."/>
  1268. <event id="0xF200 + 0x16" level="Detail" property="ThreadBlocked" state="Blocked" handle="val1" value="thread_id=%x[val1], timeout=%d[val2]" info="Current running thread execution was blocked."/>
  1269. <event id="0xF200 + 0x17" level="Detail" property="ThreadUnblocked" state="Ready" handle="val1" value="thread_id=%x[val1], ret_val=%E[val2, rtx_t:status]" info="Thread execution was unblocked."/>
  1270. <event id="0xF200 + 0x18" level="Detail" property="ThreadPreempted" state="Ready" handle="val1" value="thread_id=%x[val1]" info="Current running thread execution was preempted."/>
  1271. <event id="0xF200 + 0x19" level="Op" property="ThreadSwitched" state="Running" handle="val1" value="thread_id=%x[val1]" info="Switched execution of the current running thread."/>
  1272. <event id="0xF200 + 0x1A" level="API" property="ThreadExit" value="" info="osThreadExit function was called."/>
  1273. <event id="0xF200 + 0x1B" level="API" property="ThreadTerminate" value="thread_id=%x[val1]" info="osThreadTerminate function was called."/>
  1274. <event id="0xF200 + 0x1C" level="Op" property="ThreadDestroyed" tracking="Stop" state="Inactive" handle="val1" value="thread_id=%x[val1]" info="Thread execution was terminated."/>
  1275. <event id="0xF200 + 0x1D" level="API" property="ThreadGetCount" value="count=%d[val1]" info="osThreadGetCount function was called and number of active threads was retrieved."/>
  1276. <event id="0xF200 + 0x1E" level="API" property="ThreadEnumerate" value="thread_array=%x[val1], array_items=%d[val2], count=%d[val3]" info="osThreadEnumerate function was called and active threads were enumerated."/>
  1277. <event id="0xF400 + 0x00" level="Error" property="ThreadFlagsError" value="thread_id=%x[val1], status=%E[val2, rtx_t:status]" info="Thread flags error occurred."/>
  1278. <event id="0xF400 + 0x01" level="API" property="ThreadFlagsSet" value="thread_id=%x[val1], flags=%x[val2]" info="osThreadFlagsSet function was called."/>
  1279. <event id="0xF400 + 0x02" level="Op" property="ThreadFlagsSetDone" value="thread_id=%x[val1], thread_flags=%x[val2]" info="Thread flags were set."/>
  1280. <event id="0xF400 + 0x03" level="API" property="ThreadFlagsClear" value="flags=%x[val1]" info="osThreadFlagsClear function was called."/>
  1281. <event id="0xF400 + 0x04" level="Op" property="ThreadFlagsClearDone" value="thread_flags=%x[val1]" info="Thread flags were cleared."/>
  1282. <event id="0xF400 + 0x05" level="API" property="ThreadFlagsGet" value="thread_flags=%x[val1]" info="osThreadFlagsGet function was called and thread flags were retrieved."/>
  1283. <event id="0xF400 + 0x06" level="API" property="ThreadFlagsWait" value="flags=%x[val1], options=%x[val2], timeout=%d[val3]" info="osThreadFlagsWait function was called."/>
  1284. <event id="0xF400 + 0x07" level="Op" property="ThreadFlagsWaitPending" value="flags=%x[val1], options=%x[val2], timeout=%d[val3]" info="Waiting for thread flags to become signaled."/>
  1285. <event id="0xF400 + 0x08" level="Op" property="ThreadFlagsWaitTimeout" value="thread_id=%x[val1]" info="Waiting for thread flags timed out."/>
  1286. <event id="0xF400 + 0x09" level="Op" property="ThreadFlagsWaitCompleted" value="flags=%x[val1], options=%x[val2], thread_flags=%x[val3], thread_id=%x[val4]" info="Wait for thread flags completed."/>
  1287. <event id="0xF400 + 0x0A" level="Op" property="ThreadFlagsWaitNotCompleted" value="flags=%x[val1], options=%x[val2]" info="Wait for thread flags not completed."/>
  1288. <event id="0xF300 + 0x00" level="Error" property="DelayError" value="status=%E[val1, rtx_t:status]" info="osDelay/osDelayUntil error occurred."/>
  1289. <event id="0xF300 + 0x01" level="API" property="Delay" value="ticks=%d[val1]" info="osDelay function was called."/>
  1290. <event id="0xF300 + 0x02" level="API" property="DelayUntil" value="ticks=%d[val1]" info="osDelayUntil function was called."/>
  1291. <event id="0xF300 + 0x03" level="Op" property="DelayStarted" value="ticks=%d[val1]" info="osDelay started."/>
  1292. <event id="0xF300 + 0x04" level="Op" property="DelayUntilStarted" value="ticks=%d[val1]" info="osDelayUntil started."/>
  1293. <event id="0xF300 + 0x05" level="Op" property="DelayCompleted" value="thread_id=%x[val1]" info="osDelay/osDelayUntil completed."/>
  1294. <event id="0xF600 + 0x00" level="Error" property="TimerError" value="timer_id=%x[val1], status=%E[val2, rtx_t:status]" info="Timer error occurred."/>
  1295. <event id="0xF600 + 0x01" level="Op" property="TimerCallback" value="func=%S[val1], argument=%x[val2]" info="Timer callback function was called."/>
  1296. <event id="0xF600 + 0x02" level="API" property="TimerNew" value="func=%S[val1], type=%E[val2, rtx_timer_type:id], argument=%x[val3], attr=%x[val4]" info="osTimerNew function was called."/>
  1297. <event id="0xF600 + 0x04" level="Op" property="TimerCreated" value="timer_id=%x[val1]" info="Timer object was created."/>
  1298. <event id="0xF600 + 0x05" level="API" property="TimerGetName" value="timer_id=%x[val1], name=%N[val2]" info="osTimerGetName function was called and object name was retrieved."/>
  1299. <event id="0xF600 + 0x07" level="API" property="TimerStart" value="timer_id=%x[val1], ticks=%d[val2]" info="osTimerStart function was called."/>
  1300. <event id="0xF600 + 0x08" level="Op" property="TimerStarted" value="timer_id=%x[val1]" info="Timer execution was started."/>
  1301. <event id="0xF600 + 0x09" level="API" property="TimerStop" value="timer_id=%x[val1]" info="osTimerStop function was called."/>
  1302. <event id="0xF600 + 0x0A" level="Op" property="TimerStopped" value="timer_id=%x[val1]" info="Timer execution was stopped."/>
  1303. <event id="0xF600 + 0x0B" level="API" property="TimerIsRunning" value="timer_id=%x[val1], running=%d[val2]" info="osTimerIsRunning function was called and timer running state was retrieved."/>
  1304. <event id="0xF600 + 0x0C" level="API" property="TimerDelete" value="timer_id=%x[val1]" info="osTimerDelete function was called."/>
  1305. <event id="0xF600 + 0x0D" level="Op" property="TimerDestroyed" value="timer_id=%x[val1]" info="Timer object was deleted."/>
  1306. <event id="0xF500 + 0x00" level="Error" property="EventFlagsError" value="ef_id=%x[val1], status=%E[val2, rtx_t:status]" info="Event flags error occurred."/>
  1307. <event id="0xF500 + 0x01" level="API" property="EventFlagsNew" value="attr=%x[val1]" info="osEventFlagsNew function was called."/>
  1308. <event id="0xF500 + 0x03" level="Op" property="EventFlagsCreated" value="ef_id=%x[val1]" info="Event flags object was created."/>
  1309. <event id="0xF500 + 0x04" level="API" property="EventFlagsGetName" value="ef_id=%x[val1], name=%N[val2]" info="osEventFlagsGetName function was called and object name was retrieved."/>
  1310. <event id="0xF500 + 0x06" level="API" property="EventFlagsSet" value="ef_id=%x[val1], flags=%x[val2]" info="osEventFlagsSet function was called."/>
  1311. <event id="0xF500 + 0x07" level="Op" property="EventFlagsSetDone" value="ef_id=%x[val1], event_flags=%x[val2]" info="Event flags were set."/>
  1312. <event id="0xF500 + 0x08" level="API" property="EventFlagsClear" value="ef_id=%x[val1], flags=%x[val2]" info="osEventFlagsClear function was called."/>
  1313. <event id="0xF500 + 0x09" level="Op" property="EventFlagsClearDone" value="ef_id=%x[val1], event_flags=%x[val2]" info="Event flags were cleared."/>
  1314. <event id="0xF500 + 0x0A" level="API" property="EventFlagsGet" value="ef_id=%x[val1], event_flags=%x[val2]" info="osEventFlagsGet function was called and current event flags were retrieved."/>
  1315. <event id="0xF500 + 0x0B" level="API" property="EventFlagsWait" value="ef_id=%x[val1], flags=%x[val2], options=%x[val3], timeout=%d[val4]" info="osEventFlagsWait function was called."/>
  1316. <event id="0xF500 + 0x0C" level="Op" property="EventFlagsWaitPending" value="ef_id=%x[val1], flags=%x[val2], options=%x[val3], timeout=%d[val4]" info="Event flags wait is pending."/>
  1317. <event id="0xF500 + 0x0D" level="Op" property="EventFlagsWaitTimeout" value="ef_id=%x[val1]" info="Event flags wait timed out."/>
  1318. <event id="0xF500 + 0x0E" level="Op" property="EventFlagsWaitCompleted" value="ef_id=%x[val1], flags=%x[val2], options=%x[val3], event_flags=%x[val4]" info="Event flags wait completed."/>
  1319. <event id="0xF500 + 0x0F" level="Op" property="EventFlagsWaitNotCompleted" value="ef_id=%x[val1], flags=%x[val2], options=%x[val3]" info="Event flags wait not completed."/>
  1320. <event id="0xF500 + 0x10" level="API" property="EventFlagsDelete" value="ef_id=%x[val1]" info="osEventFlagsDelete function was called."/>
  1321. <event id="0xF500 + 0x11" level="Op" property="EventFlagsDestroyed" value="ef_id=%x[val1]" info="Event flags object was deleted."/>
  1322. <event id="0xF700 + 0x00" level="Error" property="MutexError" state="Error" handle="val1" value="mutex_id=%x[val1], status=%E[val2, rtx_t:status]" info="Mutex error occurred."/>
  1323. <event id="0xF700 + 0x01" level="API" property="MutexNew" value="attr=%x[val1]" info="osMutexNew function was called"/>
  1324. <event id="0xF700 + 0x03" level="Op" property="MutexCreated" tracking="Start" state="Free" handle="val1" value="mutex_id=%x[val1]" info="Mutex object was created"/>
  1325. <event id="0xF700 + 0x04" level="API" property="MutexGetName" value="mutex_id=%x[val1], name=%N[val2]" info="osMutexGetName function was called and object name was retrieved."/>
  1326. <event id="0xF700 + 0x06" level="API" property="MutexAcquire" state="Used" handle="val1" value="mutex_id=%x[val1], timeout=%d[val2]" info="osMutexAcquire function was called."/>
  1327. <event id="0xF700 + 0x07" level="Op" property="MutexAcquirePending" value="mutex_id=%x[val1], timeout=%d[val2]" info="Mutex object acquire is pending."/>
  1328. <event id="0xF700 + 0x08" level="Op" property="MutexAcquireTimeout" value="mutex_id=%x[val1]" info="Mutex object acquire timed out."/>
  1329. <event id="0xF700 + 0x09" level="Op" property="MutexAcquired" value="mutex_id=%x[val1], lock=%d[val2]" info="Mutex object was acquired."/>
  1330. <event id="0xF700 + 0x0A" level="Op" property="MutexNotAcquired" value="mutex_id=%x[val1]" info="Mutex object was not acquired."/>
  1331. <event id="0xF700 + 0x0B" level="API" property="MutexRelease" state="Free" handle="val1" value="mutex_id=%x[val1]" info="osMutexRelease function was called."/>
  1332. <event id="0xF700 + 0x0C" level="Op" property="MutexReleased" value="mutex_id=%x[val1], lock=%d[val2]" info="Mutex object was released."/>
  1333. <event id="0xF700 + 0x0D" level="API" property="MutexGetOwner" value="mutex_id=%x[val1], thread_id=%x[val2]" info="osMutexGetOwner function was called and mutex owner thread was retrieved."/>
  1334. <event id="0xF700 + 0x0E" level="API" property="MutexDelete" value="mutex_id=%x[val1]" info="osMutexDelete function was called."/>
  1335. <event id="0xF700 + 0x0F" level="Op" property="MutexDestroyed" tracking="Stop" state="Free" handle="val1" value="mutex_id=%x[val1]" info="Mutex object was deleted."/>
  1336. <event id="0xF800 + 0x00" level="Error" property="SemaphoreError" value="semaphore_id=%x[val1], status=%E[val2, rtx_t:status]" info="Semaphore error occurred."/>
  1337. <event id="0xF800 + 0x01" level="API" property="SemaphoreNew" value="max_count=%d[val1], initial_count=%d[val2], attr=%x[val3]" info="osSemaphoreNew function was called."/>
  1338. <event id="0xF800 + 0x03" level="Op" property="SemaphoreCreated" value="semaphore_id=%x[val1]" info="Semaphore object was created."/>
  1339. <event id="0xF800 + 0x04" level="API" property="SemaphoreGetName" value="semaphore_id=%x[val1], name=%N[val2]" info="osSemaphoreGetName function was called and object name was retrieved."/>
  1340. <event id="0xF800 + 0x06" level="API" property="SemaphoreAcquire" value="semaphore_id=%x[val1], timeout=%d[val2]" info="osSemaphoreAcquire function was called."/>
  1341. <event id="0xF800 + 0x07" level="Op" property="SemaphoreAcquirePending" value="semaphore_id=%x[val1], timeout=%d[val2]" info="Semaphore object acquire is pending."/>
  1342. <event id="0xF800 + 0x08" level="Op" property="SemaphoreAcquireTimeout" value="semaphore_id=%x[val1]" info="Semaphore object acquire timed out."/>
  1343. <event id="0xF800 + 0x09" level="Op" property="SemaphoreAcquired" value="semaphore_id=%x[val1], tokens=%d[val2]" info="Semaphore object was acquired."/>
  1344. <event id="0xF800 + 0x0A" level="Op" property="SemaphoreNotAcquired" value="semaphore_id=%x[val1]" info="Semaphore object was not acquired."/>
  1345. <event id="0xF800 + 0x0B" level="API" property="SemaphoreRelease" value="semaphore_id=%x[val1]" info="osSemaphoreRelease function was called."/>
  1346. <event id="0xF800 + 0x0C" level="Op" property="SemaphoreReleased" value="semaphore_id=%x[val1], tokens=%d[val2]" info="Semaphore object was released."/>
  1347. <event id="0xF800 + 0x0D" level="API" property="SemaphoreGetCount" value="semaphore_id=%x[val1], count=%d[val2]" info="osSemaphoreGetCount function was called and current number of available tokens was retrieved."/>
  1348. <event id="0xF800 + 0x0E" level="API" property="SemaphoreDelete" value="semaphore_id=%x[val1]" info="osSemaphoreDelete function was called."/>
  1349. <event id="0xF800 + 0x0F" level="Op" property="SemaphoreDestroyed" value="semaphore_id=%x[val1]" info="Semaphore object was deleted."/>
  1350. <event id="0xF900 + 0x00" level="Error" property="MemoryPoolError" value="mp_id=%x[val1], status=%E[val2, rtx_t:status]" info="Memory pool error occurred."/>
  1351. <event id="0xF900 + 0x01" level="API" property="MemoryPoolNew" value="block_count=%d[val1], block_size=%d[val2], attr=%x[val3]" info="osMemoryPoolNew function was called."/>
  1352. <event id="0xF900 + 0x03" level="Op" property="MemoryPoolCreated" value="mp_id=%x[val1]" info="Memory Pool object was created"/>
  1353. <event id="0xF900 + 0x04" level="API" property="MemoryPoolGetName" value="mp_id=%x[val1], name=%N[val2]" info="osMemoryPoolGetName function was called and object name was retrieved."/>
  1354. <event id="0xF900 + 0x06" level="API" property="MemoryPoolAlloc" value="mp_id=%x[val1], timeout=%d[val2]" info="osMemoryPoolAlloc function was called."/>
  1355. <event id="0xF900 + 0x07" level="Op" property="MemoryPoolAllocPending" value="mp_id=%x[val1], timeout=%d[val2]" info="Memory pool allocation is pending."/>
  1356. <event id="0xF900 + 0x08" level="Op" property="MemoryPoolAllocTimeout" value="mp_id=%x[val1]" info="Memory pool allocation timed out."/>
  1357. <event id="0xF900 + 0x09" level="Op" property="MemoryPoolAllocated" value="mp_id=%x[val1], block=%x[val2]" info="Memory pool was allocated."/>
  1358. <event id="0xF900 + 0x0A" level="Op" property="MemoryPoolAllocFailed" value="mp_id=%x[val1]" info="Memory pool was not allocated."/>
  1359. <event id="0xF900 + 0x0B" level="API" property="MemoryPoolFree" value="mp_id=%x[val1], block=%x[val2]" info="osMemoryPoolFree function was called."/>
  1360. <event id="0xF900 + 0x0C" level="Op" property="MemoryPoolDeallocated" value="mp_id=%x[val1], block=%x[val2]" info="Memory pool was deallocated."/>
  1361. <event id="0xF900 + 0x0D" level="Op" property="MemoryPoolFreeFailed" value="mp_id=%x[val1], block=%x[val2]" info="Memory pool was not deallocated."/>
  1362. <event id="0xF900 + 0x0E" level="API" property="MemoryPoolGetCapacity" value="mp_id=%x[val1], capacity=%d[val2]" info="osMemoryPoolGetCapacity function was called and maximum number of memory blocks was retrieved."/>
  1363. <event id="0xF900 + 0x0F" level="API" property="MemoryPoolGetBlockSize" value="mp_id=%x[val1], block_size=%d[val2]" info="osMemoryPoolGetBlockSize function was called and memory block size was retrieved."/>
  1364. <event id="0xF900 + 0x10" level="API" property="MemoryPoolGetCount" value="mp_id=%x[val1], count=%d[val2]" info="osMemoryPoolGetCount function was called and number of used memory blocks was retrieved."/>
  1365. <event id="0xF900 + 0x11" level="API" property="MemoryPoolGetSpace" value="mp_id=%x[val1], space=%d[val2]" info="osMemoryPoolGetSpace function was called and number of available memory blocks was retrieved."/>
  1366. <event id="0xF900 + 0x12" level="API" property="MemoryPoolDelete" value="mp_id=%x[val1]" info="osMemoryPoolDelete function was called."/>
  1367. <event id="0xF900 + 0x13" level="Op" property="MemoryPoolDestroyed" value="mp_id=%x[val1]" info="Memory pool object was deleted."/>
  1368. <event id="0xFA00 + 0x00" level="Error" property="MessageQueueError" value="mq_id=%x[val1], status=%E[val2, rtx_t:status]" info="Message queue error occurred."/>
  1369. <event id="0xFA00 + 0x01" level="API" property="MessageQueueNew" value="msg_count=%d[val1], msg_size=%d[val2], attr=%x[val3]" info="osMessageQueueNew function was called."/>
  1370. <event id="0xFA00 + 0x03" level="Op" property="MessageQueueCreated" value="mq_id=%x[val1]" info="Message Queue object was created"/>
  1371. <event id="0xFA00 + 0x04" level="API" property="MessageQueueGetName" value="mq_id=%x[val1], name=%N[val2]" info="osMessageQueueGetName function was called and object name was retrieved."/>
  1372. <event id="0xFA00 + 0x06" level="API" property="MessageQueuePut" value="mq_id=%x[val1], msg_ptr=%x[val2], msg_prio=%d[val3], timeout=%d[val4]" info="osMessageQueuePut function was called."/>
  1373. <event id="0xFA00 + 0x07" level="Op" property="MessageQueuePutPending" value="mq_id=%x[val1], msg_ptr=%x[val2], timeout=%d[val3]" info="Message put is pending."/>
  1374. <event id="0xFA00 + 0x08" level="Op" property="MessageQueuePutTimeout" value="mq_id=%x[val1]" info="Message put timed out."/>
  1375. <event id="0xFA00 + 0x09" level="Op" property="MessageQueueInsertPending" value="mq_id=%x[val1], msg_ptr=%x[val2]" info="Message insert is pending."/>
  1376. <event id="0xFA00 + 0x0A" level="Op" property="MessageQueueInserted" value="mq_id=%x[val1], msg_ptr=%x[val2]" info="Message was inserted."/>
  1377. <event id="0xFA00 + 0x0B" level="Op" property="MessageQueueNotInserted" value="mq_id=%x[val1], msg_ptr=%x[val2]" info="Message was not inserted"/>
  1378. <event id="0xFA00 + 0x0C" level="API" property="MessageQueueGet" value="mq_id=%x[val1], msg_ptr=%x[val2], msg_prio=%x[val3], timeout=%d[val4]" info="osMessageQueueGet function was called."/>
  1379. <event id="0xFA00 + 0x0D" level="Op" property="MessageQueueGetPending" value="mq_id=%x[val1], msg_ptr=%x[val2], timeout=%d[val3]" info="Message get is pending."/>
  1380. <event id="0xFA00 + 0x0E" level="Op" property="MessageQueueGetTimeout" value="mq_id=%x[val1]" info="Message get timed out."/>
  1381. <event id="0xFA00 + 0x0F" level="Op" property="MessageQueueRetrieved" value="mq_id=%x[val1], msg_ptr=%x[val2]" info="Message was retrieved."/>
  1382. <event id="0xFA00 + 0x10" level="Op" property="MessageQueueNotRetrieved" value="mq_id=%x[val1], msg_ptr=%x[val2]" info="Message was not retrieved."/>
  1383. <event id="0xFA00 + 0x11" level="API" property="MessageQueueGetCapacity" value="mq_id=%x[val1], capacity=%d[val2]" info="osMessageQueueGetCapacity function was called and maximum number of messages was retrieved."/>
  1384. <event id="0xFA00 + 0x12" level="API" property="MessageQueueGetMsgSize" value="mq_id=%x[val1], msg_size=%d[val2]" info="osMessageQueueGetMsgSize function was called and maximum message size was retrieved."/>
  1385. <event id="0xFA00 + 0x13" level="API" property="MessageQueueGetCount" value="mq_id=%x[val1], count=%d[val2]" info="osMessageQueueGetCount function was called and number of queued messages was retrieved."/>
  1386. <event id="0xFA00 + 0x14" level="API" property="MessageQueueGetSpace" value="mq_id=%x[val1], space=%d[val2]" info="osMessageQueueGetSpace function was called and number of available message slots was retrieved."/>
  1387. <event id="0xFA00 + 0x15" level="API" property="MessageQueueReset" value="mq_id=%x[val1]" info="osMessageQueueReset function was called."/>
  1388. <event id="0xFA00 + 0x16" level="Op" property="MessageQueueResetDone" value="mq_id=%x[val1]" info="Message queue was reset."/>
  1389. <event id="0xFA00 + 0x17" level="API" property="MessageQueueDelete" value="mq_id=%x[val1]" info="osMessageQueueDelete function was called."/>
  1390. <event id="0xFA00 + 0x18" level="Op" property="MessageQueueDestroyed" value="mq_id=%x[val1]" info="Message queue object was deleted."/>
  1391. </events>
  1392. </component_viewer>