All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Payloads can now use the ELF format (but must still be built for a fixed address)
- New payload runtime functions
startCycleCounter,getCycleCounterValue,getMonitorAbiVersion
- New microbenchmark for FPGA latency
- Timer period is now expressed using the
std::chrono::microsecondsdata type - A Xilinx BSP (board support package) is no longer necessary to compile Bmboot
- GoogleTest dependency has been made optional
add_bmboot_payloadnow correctly adds the linker option-specs=nosys.specs
- New payload runtime functions
getBuiltinTimerFrequency,getBuiltinTimerValue - Payloads now embed an explicit header. This enables validation of ABI compatibility, load address and program size.
- Better handling of high-traffic console output
- Fixed incorrect frequency of the Generic Timer (
CNTFRQ_EL0) on ZCU102 Evaluation Kit
- User of the Manager API can provide an argument to be passed to the payload
- Message Queues to communicate between Linux and bare metal
- Console output now includes CPU number and time is indicated in seconds
- Better reliability of detection of running monitor
- New function overload
toString(DomainIndex)
- The payload runtime function
startPeriodicInterrupthas been split intosetupPeriodicInterruptandstartPeriodicInterrupt
- New function
disableInterruptHandling
- Interrupt callbacks are now of type
std::function(backwards-compatible change) - The payload runtime function
configureAndEnableInterrupthas been replaced bysetupInterruptHandlingandenableInterruptHandling
- First versioned release