57 lines
1.1 KiB
Plaintext
57 lines
1.1 KiB
Plaintext
@startuml
|
|
!include card-uml-style.iuml
|
|
scale 900 width
|
|
left to right direction
|
|
|
|
class "01 timer CSRs" as Timer <<runtime>> {
|
|
mtime
|
|
mtimecmp
|
|
mcause = 0x80000007
|
|
mepc = interrupted task PC
|
|
}
|
|
|
|
class "02 ISR evidence" as ISR <<runtime>> {
|
|
first_tick_count
|
|
ISR sp
|
|
one-shot tick checkpoint
|
|
}
|
|
|
|
class "03 scheduler evidence" as Kernel <<debugger only>> {
|
|
Ready lists by priority
|
|
selected TCB
|
|
tick count
|
|
}
|
|
|
|
class "04 peer runtime" as Peer <<runtime>> {
|
|
context address
|
|
handle / TCB
|
|
task stack range
|
|
PC · SP · priority 2
|
|
}
|
|
|
|
class "05 high runtime" as High <<runtime>> {
|
|
handle / TCB
|
|
priority 0 → 3
|
|
PC · SP · run_tick
|
|
}
|
|
|
|
class "06 committed evidence" as Evidence <<application>> {
|
|
switch trace A · B · A
|
|
markers before · HIGH · after
|
|
source blob · ELF hash
|
|
PASS
|
|
}
|
|
|
|
Timer --> ISR : machine-timer trap
|
|
ISR --> Kernel : scheduling opportunity
|
|
Kernel --> Peer : equal-priority rotation
|
|
Kernel --> High : select after priority raise
|
|
Peer --> Evidence
|
|
High --> Evidence
|
|
|
|
note bottom of Kernel
|
|
Kernel internals are debugger observations only.
|
|
Program assertions use public API and application records.
|
|
end note
|
|
@enduml
|