41 lines
1.5 KiB
Bash
Executable File
41 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
cpp_card=${CPP_CARD:-../lab-rv32i-freertos-task-stack-vector}
|
|
contract=config/paired-experiment.json
|
|
|
|
test -f "$cpp_card/include/FreeRTOSConfig.h" || {
|
|
echo "paired K02 not found at $cpp_card" >&2
|
|
exit 1
|
|
}
|
|
|
|
cmp include/FreeRTOSConfig.h "$cpp_card/include/FreeRTOSConfig.h"
|
|
cmp vendor/FreeRTOS-Kernel/UPSTREAM.md "$cpp_card/vendor/FreeRTOS-Kernel/UPSTREAM.md"
|
|
|
|
check_hash() {
|
|
path=$1
|
|
key=$2
|
|
expected=$(jq -r ".kernel.files_sha256[\"$key\"]" "$contract")
|
|
actual=$(sha256sum "$path" | awk '{print $1}')
|
|
test "$actual" = "$expected" || {
|
|
echo "pair contract hash mismatch: $path" >&2
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
check_hash vendor/FreeRTOS-Kernel/tasks.c tasks.c
|
|
check_hash vendor/FreeRTOS-Kernel/list.c list.c
|
|
check_hash vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c heap_4.c
|
|
check_hash vendor/FreeRTOS-Kernel/portable/GCC/RISC-V/port.c port.c
|
|
check_hash vendor/FreeRTOS-Kernel/portable/GCC/RISC-V/portASM.S portASM.S
|
|
|
|
config_hash=$(sha256sum include/FreeRTOSConfig.h | awk '{print $1}')
|
|
test "$config_hash" = "$(jq -r .config.sha256 "$contract")"
|
|
|
|
grep -Fq 'work_limit = 20000U' "$cpp_card/src/tasks/task01_task_wrapper.cpp"
|
|
grep -Fq 'expected_sum = 200010000U' "$cpp_card/src/tasks/task01_task_wrapper.cpp"
|
|
grep -Fq 'worker_stack_words = 256U' "$cpp_card/src/tasks/task01_task_wrapper.cpp"
|
|
grep -Fq 'supervisor_stack_words = 160U' "$cpp_card/src/tasks/task01_task_wrapper.cpp"
|
|
|
|
echo "PASS pair: kernel/config/workload/stack contract matches K02 C++"
|