Using the Cortex-M0+ as a load core, free GPIOs and the cycle counter on the Cortex-M33, and a common FreeRTOS/Zephyr workflow
Hello,
I am a Master's student comparing FreeRTOS and Zephyr on the Cortex-M33 of the STM32MP257F-DK, with Linux running on the Cortex-A35. I measure task timing on the M33 with the DWT cycle counter and an oscilloscope, and I want a second core running a fixed bare-metal load in parallel to see how it affects the M33. A few things I could not find in the documentation:
1. Cortex-M0+ as load generator. Can the M0+ run its own firmware at the same time as the M33 (and Linux on the A35)? Can it exchange data with the M33 (shared memory, mailbox, other), and which memories can it access? Who starts it?
2. GPIOs for the M33. I need 2 or 3 pins that the M33 can toggle freely to measure with the oscilloscope. Which pins of the DK can be given to the M33, and what has to be changed (RIF, device tree)?
3. Firmware already on the M33. Does the DK ship with any firmware running on the M33 (for example USB-PD, as I saw reported for the EV1)? Can I load my own firmware without breaking the board?
4. Cycle counter. Is DWT_CYCCNT available to non-secure firmware on the M33?
5. FreeRTOS and Zephyr with the same workflow. I would like to build, load and debug both the same way. Zephyr uses west and OpenOCD, the CubeMP2 examples use STM32CubeIDE. Is there a recommended way to use one toolchain for both?
Thank you very much.
