RTX5.scvd 133 KB

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