pureboot moved to its own repo, so the loader this board hands over to stopped being reachable through a sibling checkout of the bootloader repo. It is a submodule here now: this board has no reset line and no programming header, so the resident loader is the only way in, and the commit naming the firmware should name the loader it has to reach. The reachability check stops carrying its own copy of where that loader is. 0x7e00 was a literal beside pureboot's own geometry, which the submodule exports as PUREBOOT_BASE_HEX - one source for the fact now, and the check reads whichever slot the pinned loader actually has. The boot-section bound stays a literal, being a fuse fact rather than a loader one. Built and tested at both pins on the bench: 5/5, cross-mode identity included, and the image deployed to the board verifies byte-for-byte through its loader. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.5 KiB
CMake
33 lines
1.5 KiB
CMake
libavr_format_test()
|
|
|
|
# The image must stay below the boot section at 0x7e00, and the README states
|
|
# what it measures; a library advance that moves it says nothing on its own.
|
|
libavr_size_claim_test(fantemp 8004)
|
|
|
|
# The README says the two modes emit the same image, and only a tree with
|
|
# both built can say whether they do.
|
|
libavr_mode_identity_test(fantemp)
|
|
|
|
# The battery is a compile: a static_assert that fails is the failure. It is a
|
|
# target rather than only a ctest so a plain build catches a regression too.
|
|
add_library(consteval_tests OBJECT consteval.cpp)
|
|
target_include_directories(consteval_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
|
|
target_link_libraries(consteval_tests PRIVATE libavr)
|
|
|
|
add_test(NAME fantemp.consteval
|
|
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target consteval_tests)
|
|
|
|
# The board has no reset line and no programming header, so the loader-entry
|
|
# route in the emitted image is the only thing standing between a firmware change
|
|
# and an unreflashable board.
|
|
find_package(Python3 COMPONENTS Interpreter)
|
|
if(Python3_FOUND)
|
|
add_test(NAME fantemp.reachability
|
|
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check_reachability.py
|
|
--objdump ${CMAKE_OBJDUMP} --elf $<TARGET_FILE:fantemp>
|
|
--image $<TARGET_FILE_DIR:fantemp>/fantemp.bin
|
|
--loader-base ${PUREBOOT_BASE_HEX})
|
|
else()
|
|
message(STATUS "Python not found - the reachability check is skipped")
|
|
endif()
|