feat: publish FreeRTOS C FC04 card

This commit is contained in:
2026-07-19 16:36:02 +02:00
commit 845c0ab016
189 changed files with 56032 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

+39
View File
@@ -0,0 +1,39 @@
@startuml
!include card-uml-style.iuml
scale 900 width
left to right direction
class "01 PeriodicContext" as Periodic <<C struct>> {
handle · created_handle
phase
initial_tick
release_tick[3]
entry_sp · stack range
}
class "02 SuspendContext" as Suspend <<C struct>> {
handle · created_handle
phase
resumed
entry_sp
}
class "03 ObserverContext" as Observer <<C struct>> {
handle
periodic_state : eTaskState
suspend_state : eTaskState
pass
}
class "04 periodic timeline" as Timeline <<bounded record>> {
t0
t0 + 2
t0 + 4
t0 + 6
}
Periodic --> Timeline : vTaskDelayUntil
Observer --> Periodic : eTaskGetState
Observer --> Suspend : eTaskGetState · vTaskResume
Observer --> Timeline : verifies exact deltas
@enduml
+117
View File
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="453.5936px" preserveAspectRatio="none" style="width:894px;height:453px;" version="1.1" viewBox="0 0 894 453" width="894.4099px" zoomAndPan="magnify"><defs/><g><!--MD5=[86b35a35deff3f53bdfe096e65e1dcc4]
class Periodic--><rect fill="#F5F8FA" height="166.0486" id="Periodic" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="166.1047" x="413.6646" y="6.1012"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="468.7666" y="23.0394">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="136.5572" x="428.4383" y="45.813">01 PeriodicContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="414.4632" x2="578.9707" y1="57.4224" y2="57.4224"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="146.9388" x="423.2476" y="75.0446">handle · created_handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="31.9432" x="423.2476" y="96.7123">phase</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="76.6637" x="423.2476" y="118.3801">initial_tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="95.8296" x="423.2476" y="140.0478">release_tick[3]</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="140.5501" x="423.2476" y="161.7155">entry_sp · stack range</text><!--MD5=[fe4f93b87d8dddf11c9ebf60b1f7018c]
class Suspend--><rect fill="#F5F8FA" height="144.3808" id="Suspend" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="166.1047" x="413.6646" y="200.6034"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="468.7666" y="217.5416">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="129.37" x="432.0319" y="240.3152">02 SuspendContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="414.4632" x2="578.9707" y1="251.9246" y2="251.9246"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="146.9388" x="423.2476" y="269.5468">handle · created_handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="31.9432" x="423.2476" y="291.2146">phase</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="44.7205" x="423.2476" y="312.8823">resumed</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="51.1091" x="423.2476" y="334.55">entry_sp</text><!--MD5=[d40932010816485ec57b44b6eea2392a]
class Observer--><rect fill="#F5F8FA" height="144.3808" id="Observer" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="191.6593" x="4.7915" y="200.6034"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="55.9006" x="72.6708" y="217.5416">«C struct»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="136.5572" x="32.3425" y="240.3152">03 ObserverContext</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="5.5901" x2="195.6522" y1="251.9246" y2="251.9246"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="14.3744" y="269.5468">handle</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="172.4933" x="14.3744" y="291.2146">periodic_state : eTaskState</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="166.1047" x="14.3744" y="312.8823">suspend_state : eTaskState</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="25.5546" x="14.3744" y="334.55">pass</text><!--MD5=[bc85b0cffdc1196fa135ce200aaffd70]
class Timeline--><rect fill="#F5F8FA" height="144.3808" id="Timeline" style="stroke: #607985; stroke-width: 1.1978704525288377;" width="165.3061" x="720.3194" y="301.2245"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="8.7844" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89.441" x="758.252" y="318.1627">«bounded record»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="11.9787" lengthAdjust="spacingAndGlyphs" textLength="150.9317" x="727.5067" y="340.9363">04 periodic timeline</text><line style="stroke: #607985; stroke-width: 1.1978704525288377;" x1="721.118" x2="884.827" y1="352.5458" y2="352.5458"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="12.7773" x="729.9024" y="370.1679">t0</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="391.8357">t0 + 2</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="413.5034">t0 + 4</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="10.3815" lengthAdjust="spacingAndGlyphs" textLength="38.3319" x="729.9024" y="435.1711">t0 + 6</text><!--MD5=[b5317db61bfa9ffb7f1583a47e1bca56]
link Periodic to Timeline--><path d="M580.1606,166.2405 C623.8669,207.0319 677.3239,256.9193 720.8385,297.5191 " fill="none" id="Periodic-&gt;Timeline" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="723.6016,300.0905,720.5128,292.8573,720.6773,297.3718,716.1628,297.5363,723.6016,300.0905" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="95.8296" x="602.1295" y="181.202">vTaskDelayUntil</text><!--MD5=[9a13c79469e182d9ac760982ce00a3f7]
link Observer to Periodic--><path d="M196.6664,228.4499 C261.3514,198.3354 346.2245,158.8137 409.0648,129.5617 " fill="none" id="Observer-&gt;Periodic" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="412.4508,127.9805,404.587,128.1266,408.8327,129.6696,407.2897,133.9154,412.4508,127.9805" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="83.0524" x="263.5315" y="130.3963">eTaskGetState</text><!--MD5=[6337c7a371cd26c61b81731d2523cb3f]
link Observer to Suspend--><path d="M196.6664,272.795 C261.2236,272.795 345.8891,272.795 408.6815,272.795 " fill="none" id="Observer-&gt;Suspend" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="412.339,272.795,405.1517,269.6007,408.3461,272.795,405.1517,275.9894,412.339,272.795" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="172.4933" x="218.811" y="264.8053">eTaskGetState · vTaskResume</text><!--MD5=[8f4095da67caa2e1eabf447bb271ea1c]
link Observer to Timeline--><path d="M196.5546,315.8705 C257.2786,340.9618 338.4463,370.118 413.6646,382.9991 C486.4312,395.465 505.9645,384.5883 579.7693,382.9991 C624.4179,382.0408 674.0736,379.9965 715.1207,378.0399 " fill="none" id="Observer-&gt;Timeline" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><polygon fill="#607985" points="718.874,377.8563,711.5403,375.0144,714.8858,378.05,711.8502,381.3955,718.874,377.8563" style="stroke: #607985; stroke-width: 1.0381543921916594;"/><text fill="#425B67" font-family="DejaVu Sans Mono" font-size="11.1801" lengthAdjust="spacingAndGlyphs" textLength="134.1615" x="429.6362" y="375.0094">verifies exact deltas</text><!--MD5=[b8379206f304b13281e1570a39728778]
@startuml
skinparam backgroundColor white
skinparam shadowing false
skinparam monochrome false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 14
skinparam defaultFontColor #24343D
skinparam titleFontName "DejaVu Sans Mono"
skinparam titleFontSize 13
skinparam titleFontColor #536B78
skinparam titleFontStyle plain
skinparam ArrowColor #607985
skinparam ArrowFontColor #425B67
skinparam ArrowThickness 1.3
skinparam LineThickness 1.3
skinparam nodesep 36
skinparam ranksep 42
skinparam Padding 6
skinparam classBackgroundColor #F5F8FA
skinparam classBorderColor #607985
skinparam classBorderThickness 1.5
skinparam classFontColor #1F3039
skinparam classFontSize 15
skinparam classAttributeFontColor #2E424D
skinparam classAttributeFontSize 13
skinparam classStereotypeFontColor #526B77
skinparam classStereotypeFontSize 11
skinparam minClassWidth 190
skinparam ClassAttributeIconSize 0
skinparam stateBackgroundColor #F5F8FA
skinparam stateBorderColor #607985
skinparam stateBorderThickness 1.5
skinparam stateFontColor #1F3039
skinparam stateFontSize 14
skinparam stateAttributeFontSize 13
skinparam noteBackgroundColor #F7F5ED
skinparam noteBorderColor #8A887C
skinparam noteFontColor #3E4B50
skinparam noteFontSize 12
skinparam ParticipantBackgroundColor #F5F8FA
skinparam ParticipantBorderColor #607985
skinparam ParticipantBorderThickness 1.5
skinparam ParticipantFontColor #1F3039
skinparam ParticipantFontSize 13
skinparam ActorBorderColor #607985
skinparam ActorFontColor #1F3039
skinparam LifeLineBorderColor #8297A1
skinparam LifeLineBackgroundColor #F9FBFC
skinparam SequenceArrowColor #607985
skinparam SequenceMessageAlign center
skinparam ParticipantPadding 18
skinparam BoxPadding 8
hide circle
hide empty members
scale 900 width
left to right direction
class "01 PeriodicContext" as Periodic <<C struct>> {
handle · created_handle
phase
initial_tick
release_tick[3]
entry_sp · stack range
}
class "02 SuspendContext" as Suspend <<C struct>> {
handle · created_handle
phase
resumed
entry_sp
}
class "03 ObserverContext" as Observer <<C struct>> {
handle
periodic_state : eTaskState
suspend_state : eTaskState
pass
}
class "04 periodic timeline" as Timeline <<bounded record>> {
t0
t0 + 2
t0 + 4
t0 + 6
}
Periodic - -> Timeline : vTaskDelayUntil
Observer - -> Periodic : eTaskGetState
Observer - -> Suspend : eTaskGetState · vTaskResume
Observer - -> Timeline : verifies exact deltas
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 25.0.4-ea+4-1-Debian
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

+26
View File
@@ -0,0 +1,26 @@
@startuml
!include card-uml-style.iuml
scale 900 width
participant main
participant periodic
participant suspend_target
participant observer
participant "FreeRTOS scheduler" as Scheduler
main -> main : 01 configuration committed
main -> Scheduler : 02 create three tasks and start
Scheduler -> periodic : 03 highest Ready task runs
periodic -> Scheduler : vTaskDelayUntil(t0 + 2)
Scheduler -> suspend_target : self-suspend
Scheduler -> observer : 04 sees Blocked + Suspended
observer -> Scheduler : vTaskResume(suspend_target)
Scheduler -> suspend_target : 05 resumed; self-delete
Scheduler -> periodic : 06 release at t0 + 2
periodic -> Scheduler : vTaskDelayUntil(t0 + 4)
Scheduler -> periodic : 07 release at t0 + 4
periodic -> Scheduler : vTaskDelayUntil(t0 + 6)
Scheduler -> periodic : 08 release at t0 + 6
periodic -> Scheduler : 09 clear handle; self-delete
Scheduler -> observer : 10 verify timeline and PASS
@enduml
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+27
View File
@@ -0,0 +1,27 @@
@startuml
!include card-uml-style.iuml
scale 900 width
left to right direction
state "01 Ready" as Ready
state "02 Running" as Running
state "03 Blocked\nuntil absolute wake tick" as Blocked
state "04 Suspended\nno wake tick" as Suspended
state "05 Resumed Ready" as Resumed
state "06 Completed\nbefore self-delete" as Completed
state "07 Deleted\nTCB cleanup deferred" as Deleted
Ready --> Running : selected
Running --> Blocked : vTaskDelayUntil
Blocked --> Ready : wake tick
Running --> Suspended : vTaskSuspend(NULL)
Suspended --> Resumed : vTaskResume(handle)
Resumed --> Running : selected
Running --> Completed : application record
Completed --> Deleted : vTaskDelete(NULL)
note bottom of Blocked
Blocked has a time/event condition.
Suspended has no automatic wake condition.
end note
@enduml
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

+40
View File
@@ -0,0 +1,40 @@
@startuml
!include card-uml-style.iuml
scale 900 width
left to right direction
class "01 public state evidence" as Public <<application>> {
eTaskGetState(periodic) = eBlocked
eTaskGetState(target) = eSuspended
}
class "02 periodic task runtime" as Periodic <<runtime>> {
handle / TCB
task stack range
PC · SP
}
class "03 absolute wake timeline" as Wake <<runtime>> {
initial_tick
release = 2 · 4 · 6
exact delta = 2
}
class "04 suspended task runtime" as Suspend <<runtime>> {
handle / TCB
no delayed-list wake tick
resumed = 1
}
class "05 forensic completion" as Evidence <<evidence>> {
public handles = NULL
contexts remain in static storage
source blob · ELF hash · PASS
}
Public --> Periodic
Public --> Suspend
Periodic --> Wake
Periodic --> Evidence
Suspend --> Evidence
@enduml
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="346.0805px" preserveAspectRatio="none" style="width:893px;height:346px;" version="1.1" viewBox="0 0 893 346" width="893.3263px" zoomAndPan="magnify"><defs/><g><!--MD5=[3833dfc58284d688f88001bd4346281f]
class Public--><rect fill="#F5F8FA" height="120.6336" id="Public" style="stroke: #607985; stroke-width: 1.430084745762712;" width="282.2034" x="5.7203" y="111.4513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="86.7585" x="103.4428" y="131.6731">«application»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="214.5127" x="39.5657" y="158.8615">01 public state evidence</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="6.6737" x2="286.9703" y1="172.7215" y2="172.7215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="259.322" x="17.161" y="193.7598">eTaskGetState(periodic) = eBlocked</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="259.322" x="17.161" y="219.628">eTaskGetState(target) = eSuspended</text><!--MD5=[86b35a35deff3f53bdfe096e65e1dcc4]
class Periodic--><rect fill="#F5F8FA" height="146.5018" id="Periodic" style="stroke: #607985; stroke-width: 1.430084745762712;" width="231.6737" x="332.2564" y="7.9513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="418.0614" y="28.1731">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="214.5127" x="340.8369" y="55.3615">02 periodic task runtime</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="333.2097" x2="562.9767" y1="69.2215" y2="69.2215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="343.697" y="90.2598">handle / TCB</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="122.0339" x="343.697" y="116.128">task stack range</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="53.3898" x="343.697" y="141.9961">PC · SP</text><!--MD5=[e1eb4ff42ad6fe6744f3d2d780dcb722]
class Wake--><rect fill="#F5F8FA" height="146.5018" id="Wake" style="stroke: #607985; stroke-width: 1.430084745762712;" width="240.2542" x="625.4237" y="7.9513"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="715.5191" y="28.1731">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="223.0932" x="634.0042" y="55.3615">03 absolute wake timeline</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="626.3771" x2="864.7246" y1="69.2215" y2="69.2215"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="636.8644" y="90.2598">initial_tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="144.9153" x="636.8644" y="116.128">release = 2 · 4 · 6</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="114.4068" x="636.8644" y="141.9961">exact delta = 2</text><!--MD5=[fe4f93b87d8dddf11c9ebf60b1f7018c]
class Suspend--><rect fill="#F5F8FA" height="146.5018" id="Suspend" style="stroke: #607985; stroke-width: 1.430084745762712;" width="240.2542" x="327.9661" y="189.0953"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="60.0636" x="418.0614" y="209.3172">«runtime»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="223.0932" x="336.5466" y="236.5055">04 suspended task runtime</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="328.9195" x2="567.2669" y1="250.3655" y2="250.3655"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="91.5254" x="339.4068" y="271.4039">handle / TCB</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="190.678" x="339.4068" y="297.272">no delayed-list wake tick</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="83.8983" x="339.4068" y="323.1402">resumed = 1</text><!--MD5=[13f56afd7aace6dccdfaaac41cf97a6a]
class Evidence--><rect fill="#F5F8FA" height="146.5018" id="Evidence" style="stroke: #607985; stroke-width: 1.430084745762712;" width="274.5763" x="608.2627" y="189.0953"/><text fill="#526B77" font-family="DejaVu Sans Mono" font-size="10.4873" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="66.7373" x="712.1822" y="209.3172">«evidence»</text><text fill="#1F3039" font-family="DejaVu Sans Mono" font-size="14.3008" lengthAdjust="spacingAndGlyphs" textLength="197.3517" x="646.875" y="236.5055">05 forensic completion</text><line style="stroke: #607985; stroke-width: 1.430084745762712;" x1="609.2161" x2="881.8856" y1="250.3655" y2="250.3655"/><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="160.1695" x="619.7034" y="271.4039">public handles = NULL</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="251.6949" x="619.7034" y="297.272">contexts remain in static storage</text><text fill="#2E424D" font-family="DejaVu Sans Mono" font-size="12.3941" lengthAdjust="spacingAndGlyphs" textLength="221.1864" x="619.7034" y="323.1402">source blob · ELF hash · PASS</text><!--MD5=[8014a0f10d1c54cd49a04ba349132a69]
link Public to Periodic--><path d="M288.2574,129.2701 C300.8994,125.447 313.6367,121.5858 326.0975,117.8199 " fill="none" id="Public-&gt;Periodic" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="330.4163,116.5138,321.1002,115.3394,325.8523,117.8898,323.3019,122.6418,330.4163,116.5138" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[17e999d6446600b847a6cb8cb5f374d4]
link Public to Suspend--><path d="M288.2574,214.2744 C299.5074,217.678 310.8337,221.1006 321.9693,224.4756 " fill="none" id="Public-&gt;Suspend" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="326.393,225.8104,319.2786,219.6823,321.829,224.4344,317.0769,226.9848,326.393,225.8104" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[de7239d11f85c01a3917f6e65c696cec]
link Periodic to Wake--><path d="M564.1589,81.2002 C582.1494,81.2002 600.8072,81.2002 619.0074,81.2002 " fill="none" id="Periodic-&gt;Wake" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="623.7267,81.2002,615.1462,77.3867,618.9597,81.2002,615.1462,85.0138,623.7267,81.2002" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[80b41d776a842d71f9fe5b1fa56b71b9]
link Periodic to Evidence--><path d="M564.1589,151.7511 C582.2352,162.8294 600.9979,174.3273 619.2839,185.5392 " fill="none" id="Periodic-&gt;Evidence" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="623.2023,187.9417,617.8745,180.2098,619.1365,185.4533,613.893,186.7152,623.2023,187.9417" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[45096a90a3324b6007814ebd88be5d10]
link Suspend to Evidence--><path d="M568.411,262.3443 C579.3559,262.3443 590.5201,262.3443 601.6462,262.3443 " fill="none" id="Suspend-&gt;Evidence" style="stroke: #607985; stroke-width: 1.239406779661017;"/><polygon fill="#607985" points="606.3845,262.3443,597.804,258.5307,601.6176,262.3443,597.804,266.1578,606.3845,262.3443" style="stroke: #607985; stroke-width: 1.239406779661017;"/><!--MD5=[51ed389d12f971a7aef6fd7463f99a8f]
@startuml
skinparam backgroundColor white
skinparam shadowing false
skinparam monochrome false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 14
skinparam defaultFontColor #24343D
skinparam titleFontName "DejaVu Sans Mono"
skinparam titleFontSize 13
skinparam titleFontColor #536B78
skinparam titleFontStyle plain
skinparam ArrowColor #607985
skinparam ArrowFontColor #425B67
skinparam ArrowThickness 1.3
skinparam LineThickness 1.3
skinparam nodesep 36
skinparam ranksep 42
skinparam Padding 6
skinparam classBackgroundColor #F5F8FA
skinparam classBorderColor #607985
skinparam classBorderThickness 1.5
skinparam classFontColor #1F3039
skinparam classFontSize 15
skinparam classAttributeFontColor #2E424D
skinparam classAttributeFontSize 13
skinparam classStereotypeFontColor #526B77
skinparam classStereotypeFontSize 11
skinparam minClassWidth 190
skinparam ClassAttributeIconSize 0
skinparam stateBackgroundColor #F5F8FA
skinparam stateBorderColor #607985
skinparam stateBorderThickness 1.5
skinparam stateFontColor #1F3039
skinparam stateFontSize 14
skinparam stateAttributeFontSize 13
skinparam noteBackgroundColor #F7F5ED
skinparam noteBorderColor #8A887C
skinparam noteFontColor #3E4B50
skinparam noteFontSize 12
skinparam ParticipantBackgroundColor #F5F8FA
skinparam ParticipantBorderColor #607985
skinparam ParticipantBorderThickness 1.5
skinparam ParticipantFontColor #1F3039
skinparam ParticipantFontSize 13
skinparam ActorBorderColor #607985
skinparam ActorFontColor #1F3039
skinparam LifeLineBorderColor #8297A1
skinparam LifeLineBackgroundColor #F9FBFC
skinparam SequenceArrowColor #607985
skinparam SequenceMessageAlign center
skinparam ParticipantPadding 18
skinparam BoxPadding 8
hide circle
hide empty members
scale 900 width
left to right direction
class "01 public state evidence" as Public <<application>> {
eTaskGetState(periodic) = eBlocked
eTaskGetState(target) = eSuspended
}
class "02 periodic task runtime" as Periodic <<runtime>> {
handle / TCB
task stack range
PC · SP
}
class "03 absolute wake timeline" as Wake <<runtime>> {
initial_tick
release = 2 · 4 · 6
exact delta = 2
}
class "04 suspended task runtime" as Suspend <<runtime>> {
handle / TCB
no delayed-list wake tick
resumed = 1
}
class "05 forensic completion" as Evidence <<evidence>> {
public handles = NULL
contexts remain in static storage
source blob · ELF hash · PASS
}
Public - -> Periodic
Public - -> Suspend
Periodic - -> Wake
Periodic - -> Evidence
Suspend - -> Evidence
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 25.0.4-ea+4-1-Debian
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>

After

Width:  |  Height:  |  Size: 11 KiB

+60
View File
@@ -0,0 +1,60 @@
' Shared print-first style for every diagram in this card.
skinparam backgroundColor white
skinparam shadowing false
skinparam monochrome false
skinparam defaultFontName "DejaVu Sans Mono"
skinparam defaultFontSize 14
skinparam defaultFontColor #24343D
skinparam titleFontName "DejaVu Sans Mono"
skinparam titleFontSize 13
skinparam titleFontColor #536B78
skinparam titleFontStyle plain
skinparam ArrowColor #607985
skinparam ArrowFontColor #425B67
skinparam ArrowThickness 1.3
skinparam LineThickness 1.3
skinparam nodesep 36
skinparam ranksep 42
skinparam Padding 6
skinparam classBackgroundColor #F5F8FA
skinparam classBorderColor #607985
skinparam classBorderThickness 1.5
skinparam classFontColor #1F3039
skinparam classFontSize 15
skinparam classAttributeFontColor #2E424D
skinparam classAttributeFontSize 13
skinparam classStereotypeFontColor #526B77
skinparam classStereotypeFontSize 11
skinparam minClassWidth 190
skinparam ClassAttributeIconSize 0
skinparam stateBackgroundColor #F5F8FA
skinparam stateBorderColor #607985
skinparam stateBorderThickness 1.5
skinparam stateFontColor #1F3039
skinparam stateFontSize 14
skinparam stateAttributeFontSize 13
skinparam noteBackgroundColor #F7F5ED
skinparam noteBorderColor #8A887C
skinparam noteFontColor #3E4B50
skinparam noteFontSize 12
skinparam ParticipantBackgroundColor #F5F8FA
skinparam ParticipantBorderColor #607985
skinparam ParticipantBorderThickness 1.5
skinparam ParticipantFontColor #1F3039
skinparam ParticipantFontSize 13
skinparam ActorBorderColor #607985
skinparam ActorFontColor #1F3039
skinparam LifeLineBorderColor #8297A1
skinparam LifeLineBackgroundColor #F9FBFC
skinparam SequenceArrowColor #607985
skinparam SequenceMessageAlign center
skinparam ParticipantPadding 18
skinparam BoxPadding 8
hide circle
hide empty members