feat: publish FreeRTOS C FC10 card

This commit is contained in:
2026-07-19 16:36:03 +02:00
commit 2e0fdfdc7e
199 changed files with 59630 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+20
View File
@@ -0,0 +1,20 @@
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A2 STRUCTURE — notification slot belongs to target TCB
rectangle "01 Sender p3\nTaskHandle_t receiver" as sender
rectangle "02 Receiver TCB\nnotification[0]\nvalue + pending state" as receiver
rectangle "03 COUNT mode\nthree increments\nulTaskNotifyTake" as count
rectangle "04 OVERWRITE mode\n0x11 → 0x22\nxTaskNotifyWait" as overwrite
rectangle "05 BITS mode\n0x04 OR 0x20 = 0x24" as bits
rectangle "06 no queue object\nno EventGroup object\none target only" as absent
sender --> receiver : direct binding
receiver --> count
receiver --> overwrite
receiver --> bits
receiver ..> absent
@enduml
+43
View File
@@ -0,0 +1,43 @@
<?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="365px" preserveAspectRatio="none" style="width:652px;height:365px;" version="1.1" viewBox="0 0 652 365" width="652px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="313" x="173" y="12.8281">A2 STRUCTURE — notification slot belongs to target TCB</text><!--MD5=[b84dfc3c68caa5bb5eca96917ddde04e]
entity sender--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="144" x="240" y="24.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="250" y="47.4222">01 Sender p3</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="124" x="250" y="63.7663">TaskHandle_t receiver</text><!--MD5=[5396727a6920f555e89155bb37322e73]
entity receiver--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="139" x="242.5" y="155.2841"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="252.5" y="178.1122">02 Receiver TCB</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="252.5" y="194.4563">notification[0]</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="252.5" y="210.8004">value + pending state</text><!--MD5=[a6c46d55ef9c7049dd227ea88955dfe5]
entity count--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="116" x="6" y="285.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="16" y="308.1422">03 COUNT mode</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="96" x="16" y="324.4863">three increments</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="96" x="16" y="340.8304">ulTaskNotifyTake</text><!--MD5=[ce9509fd5e871a6a83b28f49ecacc291]
entity overwrite--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="138" x="157" y="285.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="167" y="308.1422">04 OVERWRITE mode</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="167" y="324.4863">0x11 → 0x22</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="167" y="340.8304">xTaskNotifyWait</text><!--MD5=[dbf1c5340e3c6dc08db3ffddcb8b49cb]
entity bits--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="136" x="330" y="293.4841"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="78" x="340" y="316.3122">05 BITS mode</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="116" x="340" y="332.6563">0x04 OR 0x20 = 0x24</text><!--MD5=[e6866c9fa1d9b487354cb76589f44590]
entity absent--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="140" x="501" y="285.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="106" x="511" y="308.1422">06 no queue object</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="511" y="324.4863">no EventGroup object</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="511" y="340.8304">one target only</text><!--MD5=[8e9d1a540edca769c23c091c682d9a7a]
link sender to receiver--><path d="M312,77.6741 C312,97.6341 312,125.6641 312,148.5741 " fill="none" id="sender-&gt;receiver" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="312,153.3741,316,144.3741,312,148.3741,308,144.3741,312,153.3741" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="313" y="121.1122">direct binding</text><!--MD5=[dbdb0cc6f73e70c89a117f8b5d5c3472]
link receiver to count--><path d="M246.19,224.7741 C209.69,243.6141 164.48,266.9541 128.23,285.6641 " fill="none" id="receiver-&gt;count" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="123.84,287.9341,133.6729,287.3737,128.2861,285.6467,130.0131,280.2599,123.84,287.9341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bdde82900f0d2fcfa2bd2764e99964d9]
link receiver to overwrite--><path d="M289.18,224.7741 C277.82,241.6841 264.02,262.2241 252.22,279.7941 " fill="none" id="receiver-&gt;overwrite" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="249.47,283.8841,257.8113,278.6475,252.26,279.7349,251.1726,274.1835,249.47,283.8841" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bbe09b516f396593785a1b5b082d3f1c]
link receiver to bits--><path d="M334.82,224.7741 C348.01,244.4041 364.48,268.9241 377.29,288.0041 " fill="none" id="receiver-&gt;bits" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="379.96,291.9741,378.2728,282.2708,377.1766,287.8205,371.627,286.7242,379.96,291.9741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[913cacc1ea3cf574ad7e42ca9161fb6f]
link receiver to absent--><path d="M380.73,224.7741 C416.43,242.4241 460.11,264.0141 496.61,282.0541 " fill="none" id="receiver-&gt;absent" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="501.04,284.2441,494.7403,276.6736,496.5565,282.0309,491.1991,283.8472,501.04,284.2441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[66fdc3bd0d492b4ef1961d02cd2282a3]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A2 STRUCTURE — notification slot belongs to target TCB
rectangle "01 Sender p3\nTaskHandle_t receiver" as sender
rectangle "02 Receiver TCB\nnotification[0]\nvalue + pending state" as receiver
rectangle "03 COUNT mode\nthree increments\nulTaskNotifyTake" as count
rectangle "04 OVERWRITE mode\n0x11 → 0x22\nxTaskNotifyWait" as overwrite
rectangle "05 BITS mode\n0x04 OR 0x20 = 0x24" as bits
rectangle "06 no queue object\nno EventGroup object\none target only" as absent
sender - -> receiver : direct binding
receiver - -> count
receiver - -> overwrite
receiver - -> bits
receiver ..> absent
@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: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+18
View File
@@ -0,0 +1,18 @@
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A3 DISPATCH — handle selects exactly one notification slot
rectangle "01 sender code" as sender
rectangle "02 receiver_handle" as handle
rectangle "03 xTaskGenericNotify\nindex 0\naction" as api
rectangle "04 target TCB\nulNotifiedValue[0]\nucNotifyState[0]" as tcb
rectangle "05 receiver Ready\nonly if waiting" as ready
sender --> handle
handle --> api
api --> tcb
tcb --> ready
@enduml
+39
View File
@@ -0,0 +1,39 @@
<?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="538px" preserveAspectRatio="none" style="width:343px;height:538px;" version="1.1" viewBox="0 0 343 538" width="343px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="329" x="2" y="12.8281">A3 DISPATCH — handle selects exactly one notification slot</text><!--MD5=[b84dfc3c68caa5bb5eca96917ddde04e]
entity sender--><rect fill="#EDF6FA" height="36.3441" style="stroke: #2C7794; stroke-width: 1.5;" width="106" x="107.5" y="23.9041"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="117.5" y="46.7322">01 sender code</text><!--MD5=[4a4e163a39735e62fba287d6513b540f]
entity handle--><rect fill="#EDF6FA" height="36.3441" style="stroke: #2C7794; stroke-width: 1.5;" width="126" x="97.5" y="120.2441"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="106" x="107.5" y="143.0722">02 receiver_handle</text><!--MD5=[e2307af040e3f87d22824e7603ca28ec]
entity api--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="146" x="87.5" y="216.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="97.5" y="239.4222">03 xTaskGenericNotify</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="40" x="97.5" y="255.7663">index 0</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="34" x="97.5" y="272.1104">action</text><!--MD5=[0bb6f33dfd49e802fce6b5273bbb9861]
entity tcb--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="120" x="100.5" y="345.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="110.5" y="368.4522">04 target TCB</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="110.5" y="384.7963">ulNotifiedValue[0]</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="110.5" y="401.1404">ucNotifyState[0]</text><!--MD5=[55a3d76f9f066a914db2e6a0219879c4]
entity ready--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="120" x="100.5" y="474.6541"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="110.5" y="497.4822">05 receiver Ready</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="110.5" y="513.8263">only if waiting</text><!--MD5=[05c26f944d0154c81d61b2d29bfe9b94]
link sender to handle--><path d="M160.5,60.3841 C160.5,75.3141 160.5,97.0341 160.5,113.6041 " fill="none" id="sender-&gt;handle" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="160.5,118.3941,164.5,109.3941,160.5,113.3941,156.5,109.3941,160.5,118.3941" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f548c039a31678651f5704e87a20a29c]
link handle to api--><path d="M160.5,156.7141 C160.5,171.0241 160.5,191.9141 160.5,210.3141 " fill="none" id="handle-&gt;api" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="160.5,214.9341,164.5,205.9341,160.5,209.9341,156.5,205.9341,160.5,214.9341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[21608e01fc85af78623daa24c4ba84aa]
link api to tcb--><path d="M160.5,285.8141 C160.5,302.1841 160.5,321.9641 160.5,339.0941 " fill="none" id="api-&gt;tcb" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="160.5,343.7641,164.5,334.7641,160.5,338.7641,156.5,334.7641,160.5,343.7641" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a3b483e3e56f4509be0568c8901afffe]
link tcb to ready--><path d="M160.5,414.8841 C160.5,431.6041 160.5,451.6841 160.5,468.1441 " fill="none" id="tcb-&gt;ready" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="160.5,472.9741,164.5,463.9741,160.5,467.9741,156.5,463.9741,160.5,472.9741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[500876efc367c503fbb666963fffec2c]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A3 DISPATCH — handle selects exactly one notification slot
rectangle "01 sender code" as sender
rectangle "02 receiver_handle" as handle
rectangle "03 xTaskGenericNotify\nindex 0\naction" as api
rectangle "04 target TCB\nulNotifiedValue[0]\nucNotifyState[0]" as tcb
rectangle "05 receiver Ready\nonly if waiting" as ready
sender - -> handle
handle - -> api
api - -> tcb
tcb - -> ready
@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: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+29
View File
@@ -0,0 +1,29 @@
@startuml
scale 520 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 11
skinparam sequenceArrowColor #8095a1
title A5 FLOW — three notification protocols on one target slot
participant "Sender p3" as S
participant "Receiver p2" as R
participant "TCB notify[0]" as N
participant "Verifier p0" as V
S -> S : 02 arm; wait for phase 1 + Blocked
R -> N : 03 ulTaskNotifyTake(clear); Blocked
S -> N : give + give + give
S -> S : 04 receiver was Blocked; value=3
N --> R : 05 return 3; clear value
R -> N : 06 probe zero; wait overwrite
S -> N : overwrite 0x11; overwrite 0x22
S -> S : 07 receiver was Blocked
N --> R : 08 return 0x22; clear value
R -> N : 09 probe zero; wait bits
S -> N : setBits 0x04; setBits 0x20
S -> S : 10 receiver was Blocked
N --> R : 11 return 0x24; clear value
R -> V : completed
S -> V : completed
V -> V : 12 PASS + digest
@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: 14 KiB

+23
View File
@@ -0,0 +1,23 @@
@startuml
scale 700 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam stateBorderColor #2c7794
skinparam stateBackgroundColor #edf6fa
title A6 STATE — value and pending are separate state
[*] --> ClearCount : 01 value=0 / not pending
ClearCount --> WaitingCount : 03 wait
WaitingCount --> Count3 : 04 three gives
Count3 --> ClearOverwrite : 05 take(pdTRUE) returns 3
ClearOverwrite --> WaitingOverwrite : 06 wait
WaitingOverwrite --> Value11 : overwrite 0x11
Value11 --> Value22 : overwrite 0x22
Value22 --> ClearBits : 08 wait returns 0x22
ClearBits --> WaitingBits : 09 wait
WaitingBits --> Bits04 : set 0x04
Bits04 --> Bits24 : OR 0x20
Bits24 --> ClearDone : 11 wait returns 0x24
ClearDone --> [*] : 12 PASS
@enduml
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

+21
View File
@@ -0,0 +1,21 @@
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A7 RUNTIME — public proof and TCB debugger evidence
rectangle "01 g_fc10\nreceiver handle\nphase + results" as exp
rectangle "02 sender stack\np3 during posts" as sender
rectangle "03 receiver stack\neBlocked before each phase" as receiver
rectangle "04 notification slot 0\nvalue 0→3→0→0x22→0→0x24→0\n(debugger evidence)" as slot
rectangle "05 no intermediary object\nsmaller topology than queue/semaphore" as absent
rectangle "06 events[12]\ncommit marker last\ndigest c60747cb" as log
exp --> sender
exp --> receiver
receiver ..> slot
exp ..> absent
sender --> log
receiver --> log
@enduml
+45
View File
@@ -0,0 +1,45 @@
<?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="346px" preserveAspectRatio="none" style="width:631px;height:346px;" version="1.1" viewBox="0 0 631 346" width="631px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="316" x="161" y="12.8281">A7 RUNTIME — public proof and TCB debugger evidence</text><!--MD5=[761712401e76352e16e0203320c8b9d5]
entity exp--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="107" x="195" y="24.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="205" y="47.4222">01 g_fc10</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="205" y="63.7663">receiver handle</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="85" x="205" y="80.1104">phase + results</text><!--MD5=[b84dfc3c68caa5bb5eca96917ddde04e]
entity sender--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="108" x="16.5" y="153.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="26.5" y="176.4522">02 sender stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="26.5" y="192.7963">p3 during posts</text><!--MD5=[5396727a6920f555e89155bb37322e73]
entity receiver--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="178" x="159.5" y="153.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="169.5" y="176.4522">03 receiver stack</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="158" x="169.5" y="192.7963">eBlocked before each phase</text><!--MD5=[43dd893c4b9fb4e2e35d3b50f2a106fd]
entity slot--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="202" x="170.5" y="266.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="180.5" y="289.1422">04 notification slot 0</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="182" x="180.5" y="305.4863">value 0→3→0→0x22→0→0x24→0</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="180.5" y="321.8304">(debugger evidence)</text><!--MD5=[e6866c9fa1d9b487354cb76589f44590]
entity absent--><rect fill="#EDF6FA" height="52.6882" style="stroke: #2C7794; stroke-width: 1.5;" width="247" x="373" y="153.6241"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="383" y="176.4522">05 no intermediary object</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="227" x="383" y="192.7963">smaller topology than queue/semaphore</text><!--MD5=[30ba7fb1050e29c0f3290b9e87c281e8]
entity log--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="129" x="6" y="266.3141"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="16" y="289.1422">06 events[12]</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="16" y="305.4863">commit marker last</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="16" y="321.8304">digest c60747cb</text><!--MD5=[8192d8ff185c7ccf4d18c9500b30058a]
link exp to sender--><path d="M197.97,93.8541 C171.58,111.4741 139.61,132.8241 114.28,149.7341 " fill="none" id="exp-&gt;sender" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="110.24,152.4341,119.9473,150.77,114.4003,149.6606,115.5097,144.1136,110.24,152.4341" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0e8eba5a1d4fe2aa425220f12f10d925]
link exp to receiver--><path d="M248.5,93.8541 C248.5,110.5741 248.5,130.6541 248.5,147.1141 " fill="none" id="exp-&gt;receiver" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="248.5,151.9441,252.5,142.9441,248.5,146.9441,244.5,142.9441,248.5,151.9441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f617065c14176a4279cfca53fbdf0025]
link receiver to slot--><path d="M253.49,206.7541 C256.48,222.2041 260.34,242.1741 263.72,259.6441 " fill="none" id="receiver-&gt;slot" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="264.66,264.4741,266.8925,254.8816,263.7179,259.5637,259.0358,256.389,264.66,264.4741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8bbd53190c2d42e09e3094ea620607fc]
link exp to absent--><path d="M302.31,85.8941 C342.04,104.9441 396.1,130.8541 437.1,150.4941 " fill="none" id="exp-&gt;absent" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="441.43,152.5741,435.0534,145.0682,436.9242,150.4068,431.5856,152.2775,441.43,152.5741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[06d1517c0e62c3411479bff3ba90e42f]
link sender to log--><path d="M70.5,206.7541 C70.5,222.2041 70.5,242.1741 70.5,259.6441 " fill="none" id="sender-&gt;log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="70.5,264.4441,74.5,255.4441,70.5,259.4441,66.5,255.4441,70.5,264.4441" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2ceaba7302568f3c50768477380e08af]
link receiver to log--><path d="M209.88,206.7541 C185.53,223.0141 153.68,244.2841 126.58,262.3841 " fill="none" id="receiver-&gt;log" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="122.48,265.1141,132.1873,263.45,126.6403,262.3406,127.7497,256.7936,122.48,265.1141" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[24d6ab3206fcf8ec9d4761d0cefdb88f]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A7 RUNTIME — public proof and TCB debugger evidence
rectangle "01 g_fc10\nreceiver handle\nphase + results" as exp
rectangle "02 sender stack\np3 during posts" as sender
rectangle "03 receiver stack\neBlocked before each phase" as receiver
rectangle "04 notification slot 0\nvalue 0→3→0→0x22→0→0x24→0\n(debugger evidence)" as slot
rectangle "05 no intermediary object\nsmaller topology than queue/semaphore" as absent
rectangle "06 events[12]\ncommit marker last\ndigest c60747cb" as log
exp - -> sender
exp - -> receiver
receiver ..> slot
exp ..> absent
sender - -> log
receiver - -> log
@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: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+16
View File
@@ -0,0 +1,16 @@
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A8 PATTERNS — choose notification action by information contract
rectangle "01 GIVE / TAKE\ncount occurrences\npdTRUE clears all\npdFALSE decrements one" as count
rectangle "02 OVERWRITE\nlatest state wins\nintermediate state may be lost" as overwrite
rectangle "03 SET BITS\ncombine independent flags\nOR semantics" as bits
rectangle "04 limitations\none target per handle\nnot broadcast\nnot a general queue" as limits
count -[hidden]right- overwrite
overwrite -[hidden]right- bits
bits --> limits
@enduml
+35
View File
@@ -0,0 +1,35 @@
<?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="266px" preserveAspectRatio="none" style="width:610px;height:266px;" version="1.1" viewBox="0 0 610 266" width="610px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="370" x="124" y="12.8281">A8 PATTERNS — choose notification action by information contract</text><!--MD5=[a6c46d55ef9c7049dd227ea88955dfe5]
entity count--><rect fill="#EDF6FA" height="85.3765" style="stroke: #2C7794; stroke-width: 1.5;" width="162" x="6" y="24.5941"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="16" y="47.4222">01 GIVE / TAKE</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="103" x="16" y="63.7663">count occurrences</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="97" x="16" y="80.1104">pdTRUE clears all</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="142" x="16" y="96.4545">pdFALSE decrements one</text><!--MD5=[ce9509fd5e871a6a83b28f49ecacc291]
entity overwrite--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="190" x="203" y="32.7641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="213" y="55.5922">02 OVERWRITE</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="213" y="71.9363">latest state wins</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="170" x="213" y="88.2804">intermediate state may be lost</text><!--MD5=[dbf1c5340e3c6dc08db3ffddcb8b49cb]
entity bits--><rect fill="#EDF6FA" height="69.0323" style="stroke: #2C7794; stroke-width: 1.5;" width="171" x="428.5" y="32.7641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="438.5" y="55.5922">03 SET BITS</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="151" x="438.5" y="71.9363">combine independent flags</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="438.5" y="88.2804">OR semantics</text><!--MD5=[5d1e2e604515e778cc92ad38d01c5107]
entity limits--><rect fill="#EDF6FA" height="85.3765" style="stroke: #2C7794; stroke-width: 1.5;" width="141" x="443.5" y="169.9641"/><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="453.5" y="192.7922">04 limitations</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="121" x="453.5" y="209.1363">one target per handle</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="453.5" y="225.4804">not broadcast</text><text fill="#000000" font-family="Monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="453.5" y="241.8245">not a general queue</text><!--MD5=[8a8e32e48dd9a6558a97ec9f8b34730d]
link count to overwrite--><!--MD5=[97200929cb575c759242ec792e7421f8]
link overwrite to bits--><!--MD5=[407848b4f0f1fa209f6d0eaf3831b5ba]
link bits to limits--><path d="M514,102.2541 C514,120.4941 514,143.2741 514,163.3141 " fill="none" id="bits-&gt;limits" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="514,168.2041,518,159.2041,514,163.2041,510,159.2041,514,168.2041" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8793ce5dc13c7b7e1911bbeaf7c404d4]
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 12
skinparam rectangleBorderColor #2c7794
skinparam rectangleBackgroundColor #edf6fa
title A8 PATTERNS — choose notification action by information contract
rectangle "01 GIVE / TAKE\ncount occurrences\npdTRUE clears all\npdFALSE decrements one" as count
rectangle "02 OVERWRITE\nlatest state wins\nintermediate state may be lost" as overwrite
rectangle "03 SET BITS\ncombine independent flags\nOR semantics" as bits
rectangle "04 limitations\none target per handle\nnot broadcast\nnot a general queue" as limits
count -[hidden]right- overwrite
overwrite -[hidden]right- bits
bits - -> limits
@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: 4.9 KiB

+22
View File
@@ -0,0 +1,22 @@
# FC10 card plan — direct task notifications
## Thesis
A notification is one typed protocol slot owned by a target task. Counting,
overwrite and bit-set actions preserve different information.
```text
FC10 · Direct-to-task notifications
└── Task01 · three modes on slot 0
├── A2 · target-owned slot, no intermediary object
├── A3 · handle → TCB[0] dispatch
├── A5 · count → overwrite → bits flow
├── A6 · pending/value state
├── A7 · public states, stacks and debugger slot
├── A8 · information-contract choice
└── Exercise · choose an action for three protocols
```
Acceptance: receiver is Blocked before every batch; results are exactly 3,
0x22 and 0x24; the slot is clear between phases; there is one notification
index; no hidden synchronization object; E01E12 is deterministic.
+333
View File
@@ -0,0 +1,333 @@
% Generated from json/card_source.json by tools/render_card.py.
% Do not edit manually; update the JSON and regenerate.
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[polish]{babel}
\usepackage{csquotes}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage[a4paper,left=2.15cm,right=2.15cm,top=0.5cm,bottom=0.5cm,headheight=24mm,headsep=3mm,includehead]{geometry}
\usepackage{eso-pic}
\usepackage{marginnote}
\usepackage{array}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{pdflscape}
\usepackage{float}
\usepackage{silence}
\WarningFilter{soulutf8}{This package is obsolete}
\usepackage{pdfcomment}
\usepackage{enumitem}
\usepackage{needspace}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{microtype}
\usepackage[most]{tcolorbox}
\usepackage{qrcode}
\IfFileExists{references.bib}{%
\usepackage[backend=biber,style=numeric,sorting=none]{biblatex}%
\addbibresource{references.bib}%
}{}
\hypersetup{hidelinks}
\IfFileExists{build-meta.tex}{%
\input{build-meta.tex}%
}{%
\newcommand{\BuildCommit}{lokalna}%
}
\newcommand{\DocumentAuthor}{M. Pabiszczak}
\newcommand{\DocumentYear}{2026}
\newcommand{\CardSeries}{freertos-c}
\newcommand{\CardNumber}{10}
\newcommand{\CardCount}{15}
\newcommand{\CardSlug}{notifications}
\newcommand{\CardVersion}{v00.01}
\newcommand{\DocumentUUID}{8632c2af-76f9-51b2-84f8-e7baaf6eaf03}
\newcommand{\EmptyCheck}{\(\square\)}
\newcommand{\EscAnswerLines}[1][3]{\par\noindent\dotfill\par\noindent\dotfill\par\noindent\dotfill}
\newcommand{\EscWriteRow}[1][2.8em]{\rule{0pt}{#1}}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.45em}
\setlength{\headheight}{24mm}
\setlength{\headsep}{3mm}
\setlength{\footskip}{8mm}
\setlength{\marginparwidth}{1.5cm}
\setlength{\marginparsep}{0.25cm}
\renewcommand{\arraystretch}{1.22}
% Margin separator lines disabled for layout trial.
\newcommand{\ESCPageResourceHeader}{%
\begingroup%
\setlength{\parskip}{0pt}%
\setlength{\fboxsep}{0pt}%
\setlength{\fboxrule}{0.35pt}%
\setlength{\arrayrulewidth}{0.35pt}%
\noindent\fbox{%
\begin{minipage}[c][23.5mm][c]{\dimexpr\textwidth-2\fboxrule\relax}%
\begin{minipage}[c][23mm][c]{24mm}\centering%
\qrcode[level=L,height=22mm]{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-notifications}%
\end{minipage}%
\vrule width0.35pt%
\begin{minipage}[c][23mm][c]{\dimexpr\linewidth-48mm-0.7pt\relax}%
\setlength{\tabcolsep}{0pt}%
\renewcommand{\arraystretch}{0}%
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.15126050\linewidth-\arrayrulewidth\relax}|X@{}}%
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries TITLE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries Direct-to-task notifications}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries VER.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.6}{6.8}\selectfont\ttfamily\bfseries v00.01}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries DATETIME}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 2026-07-19T00:00:00+02:00}\hspace{0.45mm}}\par} \\%
\end{tabularx}%
\par\nointerlineskip%
\hrule height0.35pt%
\nointerlineskip%
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.25210084\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14285714\linewidth-\arrayrulewidth\relax}|X@{}}%
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries PROJECT}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries Freestanding C nad FreeRTOS}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SERIES}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries FreeRTOS C}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries CARD}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 10/15}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SHEET}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries \thepage/\pageref{LastPage}}\hspace{0.45mm}}\par} \\%
\end{tabularx}%
\par\nointerlineskip%
\hrule height0.35pt%
\nointerlineskip%
\begin{tabularx}{\linewidth}{@{}p{\dimexpr0.05882353\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.05042017\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14705882\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.09243697\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|X@{}}%
\parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SUBJ.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries Inf.}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries PROG.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries CORE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SCOPE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries LEVEL}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries POS.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries GITEA UUID}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily 8632c2af-76f9-51b2-84f8-e7baaf6eaf03}\hspace{0.35mm}}\par\nointerlineskip\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries CARD UUID} {\fontsize{3.4}{3.75}\selectfont\ttfamily 3b57334e-2c35-5207-a51d-9321906db078}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries AUTHOR M. Pabiszczak}\hspace{0.35mm}}} \\%
\end{tabularx}%
\par\nointerlineskip%
\hrule height0.35pt%
\nointerlineskip%
\begin{tabularx}{\linewidth}{@{}X@{}}%
\parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries GITEA} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-notifications}{\nolinkurl{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-c-notifications}}}} \\%
\end{tabularx}%
\par\nointerlineskip%
\hrule height0.35pt%
\nointerlineskip%
\begin{tabularx}{\linewidth}{@{}X@{}}%
\parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries HTML} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078}{\nolinkurl{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078}}}} \\%
\end{tabularx}%
\end{minipage}%
\vrule width0.35pt%
\begin{minipage}[c][23mm][c]{24mm}\centering%
\qrcode[level=L,height=22mm]{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078}%
\end{minipage}%
\end{minipage}%
}%
\endgroup%
}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\ESCPageResourceHeader}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\newcommand{\ESCMarginTag}[4]{%
\hspace*{#1}\textcolor{#2}{#3~#4}%
}
\newcommand{\ESCSectionBlockStart}{%
\Needspace{8\baselineskip}%
\par\vspace{0.35em}%
\noindent\textcolor{black!28}{\rule{\textwidth}{0.35pt}}%
\par\vspace{0.15em}%
}
\newcommand{\ESCSectionBlockEnd}{%
\par\vspace{0.25em}%
\noindent\textcolor{black!18}{\rule{\textwidth}{0.25pt}}%
\par\vspace{0.45em}%
}
\newcommand{\ESCTinyStepSeparator}{%
\par\vspace{0.10em}%
\noindent{\color{black!18}\leaders\hbox{\rule{0.60em}{0.22pt}\hspace{0.38em}}\hfill\kern0pt}%
\par\vspace{0.10em}%
}
\newtcolorbox{ESCTaskFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black,boxsep=0pt,left=1.4mm,right=1.4mm,top=0.8mm,bottom=0.8mm,colbacktitle=black!7,coltitle=black,title={\ttfamily\bfseries TASK\quad #1}}
\newtcolorbox{ESCBlockFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!55,boxsep=0pt,left=1.0mm,right=1.0mm,top=0.6mm,bottom=0.6mm,colbacktitle=black!4,coltitle=black,title={\ttfamily\bfseries BLOCK\quad #1}}
\newtcolorbox{ESCStepFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!28,boxsep=0pt,left=0.8mm,right=0.8mm,top=0.45mm,bottom=0.45mm,colbacktitle=black!2,coltitle=black,title={\ttfamily STEP\quad #1}}
\newtcolorbox{ESCConclusionFrame}{enhanced,breakable,arc=0pt,boxrule=0.45pt,colback=blue!2,colframe=blue!45!black,boxsep=0pt,left=1.2mm,right=1.2mm,top=0.7mm,bottom=0.7mm,colbacktitle=blue!7,coltitle=black,title={\ttfamily\bfseries WNIOSEK}}
\newcommand{\ESCLearningTreeWidget}{%
\reversemarginpar
\marginnote[%
\begin{minipage}{\marginparwidth}%
\raggedright
{\fontsize{3.55}{3.95}\selectfont\ttfamily
\begin{minipage}[t]{\marginparwidth}%
\raggedright
{\bfseries\textcolor{black!65}{TECH}\par}%
\vspace{0.08em}%
\hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par%
\hspace*{0.28em}\textcolor{orange!85!black}{EK~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.10}{Uczeń odtwarza E01E12 i pokazuje eBlocked, 3, 0x22, 0x24, clear probes, stacks and digest.}}\par%
\hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.10}{Łączy kod, diagram i zweryfikowany dowód.}}\par%
\end{minipage}%
}%
\end{minipage}%
]{}
\normalmarginpar
\marginnote{%
\begin{minipage}{\marginparwidth}%
\raggedright
{\fontsize{3.55}{3.95}\selectfont\ttfamily
\hspace*{0.06cm}%
\begin{minipage}[t]{\dimexpr\marginparwidth-0.06cm\relax}%
\raggedright
{\bfseries\textcolor{black!65}{OG}\par}%
\vspace{0.08em}%
\hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par%
\hspace*{0.28em}\textcolor{green!50!black}{EN~LOCAL~EN~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.10}{Uczeń rozdziela target binding, pending state, value and action semantics.}}\par%
\hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~KW~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.10}{Łączy kod, diagram i zweryfikowany dowód.}}\par%
\end{minipage}%
}%
\end{minipage}%
}
}
\begin{document}
\sloppy
\vspace{1.0em}
\noindent{\Large\bfseries Cel karty}\par
\vspace{0.35em}
Uczeń dobiera akcję notification do kontraktu informacji i odróżnia wartość slotu od stanu pending.
\vspace{0.8em}
\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}}
\vspace{0.7em}
\noindent{\Large\bfseries Zakres karty}\par
\vspace{0.35em}
Jeden receiver i jeden slot index 0 przechodzą kolejno przez counting=3, overwrite=0x22 i bit-set=0x24. Sender p3 publikuje dopiero po potwierdzeniu receivera w eBlocked. Zero-time probe potwierdza wyczyszczenie slotu między fazami. Brak kolejki, semafora i EventGroup.
\vspace{0.55em}
\small\begin{tabularx}{\textwidth}{@{}>{\ttfamily\raggedright\arraybackslash}p{0.85cm}>{\ttfamily\raggedright\arraybackslash}p{1.45cm}X>{\raggedright\arraybackslash}p{2.45cm}>{\raggedright\arraybackslash}p{1.75cm}>{\ttfamily\raggedright\arraybackslash}p{1.50cm}@{}}
\textbf{Lekcja} & \textbf{Task} & \textbf{Najważniejsza idea} & \textbf{Priorytet} & \textbf{Status} & \textbf{Version} \\ \hline
\hline
\multicolumn{1}{|l|}{\textbf{\texttt{FC10}}} & \multicolumn{1}{l|}{\textbf{\texttt{Task01}}} & \multicolumn{1}{l|}{\textbf{count, overwrite, set bits i target-owned slot}} & \multicolumn{1}{l|}{\textbf{główny}} & \multicolumn{1}{l|}{\textbf{opracowane}} & \multicolumn{1}{l|}{\textbf{\texttt{v00.01}}} \\ \hline
\end{tabularx}
\normalsize
\vspace{0.8em}
\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}}
\clearpage
\begin{landscape}
\ESCSectionBlockStart
\noindent{\small\bfseries A2 — Structure \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.69362\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a2-structure.png}}
\caption{A2 STRUCTURE — receiver TCB notification slot. — część 1/1 (r1 c1).}
\label{fig:a2-structure}
\end{figure}
\ESCSectionBlockEnd
\end{landscape}
\clearpage
\ESCSectionBlockStart
\noindent{\small\bfseries A3 — Dispatch \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.5197\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a3-dispatch.png}}
\caption{A3 DISPATCH — handle to TCB slot 0. — część 1/1 (r1 c1).}
\label{fig:a3-dispatch}
\end{figure}
\ESCSectionBlockEnd
\clearpage
\begin{landscape}
\ESCSectionBlockStart
\noindent{\small\bfseries A5 — Flow \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.54574\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a5-flow.png}}
\caption{A5 FLOW — count, overwrite and bits. — część 1/1 (r1 c1).}
\label{fig:a5-flow}
\end{figure}
\ESCSectionBlockEnd
\end{landscape}
\clearpage
\ESCSectionBlockStart
\noindent{\small\bfseries A6 — State \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.18333\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a6-state.png}}
\caption{A6 STATE — value and pending across three phases. — część 1/1 (r1 c1).}
\label{fig:a6-state}
\end{figure}
\ESCSectionBlockEnd
\clearpage
\begin{landscape}
\ESCSectionBlockStart
\noindent{\small\bfseries A7 — Runtime \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.67128\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a7-runtime.png}}
\caption{A7 RUNTIME — task stacks and notification slot. — część 1/1 (r1 c1).}
\label{fig:a7-runtime}
\end{figure}
\ESCSectionBlockEnd
\end{landscape}
\clearpage
\begin{landscape}
\ESCSectionBlockStart
\noindent{\small\bfseries A8 — Patterns \hfill część 1/1 \textperiodcentered\ r1 c1}\par
\vspace{0.35em}
\begin{figure}[H]
\centering
\includegraphics[width=0.64894\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a8-patterns.png}}
\caption{A8 PATTERNS — count, latest value and flags. — część 1/1 (r1 c1).}
\label{fig:a8-patterns}
\end{figure}
\ESCSectionBlockEnd
\end{landscape}
\clearpage
\ESCSectionBlockStart
\section{Task01 — notification modes}
\begin{ESCTaskFrame}{TASK01 · Count, overwrite i bit flags na jednym slocie}
{\scriptsize\ttfamily 3b57334e-2c35-5207-a51d-9321906db078}\par
\begin{ESCBlockFrame}{A — kontrakty informacji}
Przewidź wynik każdej pary API.
\begin{ESCStepFrame}{values · Zapisz 3, 0x22 i 0x24.}
Wskaż, dlaczego 0x11 nie musi być obserwowalne.
\end{ESCStepFrame}
\begin{ESCStepFrame}{clear · Rozdziel value i pending.}
Opisz działanie pdTRUE oraz bits-to-clear.
\end{ESCStepFrame}
\end{ESCBlockFrame}
\begin{ESCBlockFrame}{B — replay Hazard3}
Każdy RUN startuje od clean RAM.
\begin{ESCStepFrame}{blocked · Zbadaj E03/E06/E09.}
Potwierdź receiver phase i Blocked.
\end{ESCStepFrame}
\begin{ESCStepFrame}{results · Zbadaj E05/E08/E11.}
Porównaj wyniki i clear probes.
\end{ESCStepFrame}
\begin{ESCStepFrame}{pass · Zbadaj E12.}
Zapisz PASS, SP i digest.
\end{ESCStepFrame}
\end{ESCBlockFrame}
\begin{ESCBlockFrame}{Ćwiczenie · Ćwiczenie — dobór akcji}
Dla licznika impulsów, najnowszej nastawy i dwóch niezależnych alarmów dobierz give/take, overwrite albo set-bits. Zapisz kontrakt utraty informacji.
\par\textbf{Evidence:} Tabela protocol→action→clear oraz trzy krótkie ślady.
\par\textbf{Acceptance:} Każdy wybór zachowuje dokładnie informację wymaganą przez protokół.
\end{ESCBlockFrame}
\tcblower\textbf{Task acceptance:} PASS; receiver Blocked before each batch; results 3/0x22/0x24; three clear probes; deterministic digest.
\end{ESCTaskFrame}
\begin{ESCConclusionFrame}
Direct notification jest szybkim protokołem skierowanym do jednego taska. Poprawność zależy od jawnego wyboru semantyki wartości, pending i clear.
\end{ESCConclusionFrame}
\ESCSectionBlockEnd
\end{document}
+12
View File
@@ -0,0 +1,12 @@
# FC10 page layout
1. Goal, three information contracts and prediction.
2. A2 STRUCTURE — landscape.
3. A3 DISPATCH — portrait.
4. A5 FLOW — landscape.
5. A6 STATE — portrait.
6. A7 RUNTIME — landscape.
7. A8 PATTERNS and exercise — landscape.
Each view begins on a new page. RUN starts from clean RAM and stops at a
committed event; CODE never changes runtime state.