feat: publish FreeRTOS C FC10 card
|
After Width: | Height: | Size: 23 KiB |
@@ -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
|
||||
@@ -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->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->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->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->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->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 |
|
After Width: | Height: | Size: 15 KiB |
@@ -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
|
||||
@@ -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->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->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->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->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 |
|
After Width: | Height: | Size: 34 KiB |
@@ -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
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -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
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -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
|
||||
@@ -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->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->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->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->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->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->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 |
|
After Width: | Height: | Size: 16 KiB |
@@ -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
|
||||
@@ -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->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 |
@@ -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; E01–E12 is deterministic.
|
||||
@@ -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 E01–E12 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}
|
||||
@@ -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.
|
||||