Files
lab-rv32i-freertos-c-scheduler/web/figures/a7-runtime.puml
T

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