Some more random observations on dual-issue restrictions on Cortex-M7:

- Only one "shifted operand" instruction can be issued per cycle (e.g. ADD R0, R1, R2, LSL #4)
- Bitfield manipulation operations count as having shifted operands
- Sign and zero extension operations _also_ count as having shifted operands
- Immediates that don't fit entirely in the bottom 8 bits do too (e.g. AND R0, #0x7e0)
- DSP/SIMD operations can only participate in dual-issue from the _lower address_ of a pair of instructions, even if there's no data dependency -- this includes the things you'd expect but also REV for swapping bytes in a word!
- The input for a shifted operand has to be available one cycle earlier than other inputs or you take a stall (this includes bitfield operations)
- Recall that this is an in-order processor despite being dual-issue, so if the instruction at the lower address can't issue due to a stall, neither issues.

Some of these observations appear to be novel and contradict some other reverse engineers, but I'm very confident in my tests.

#cortexm7 #reverseengineering

Running NAM on Embedded Hardware: What We Learned · TONE3000

We built a NAM loader for the Electrosmith Daisy Seed: an ARM Cortex-M7 board that's become a popular foundation for DSP-based audio products, from eurorack modules to commercial guitar pedals.

TONE3000

On i.MX8MP, GPIOs are owned by Linux (A53) by default.
If the Cortex-M7 needs them—especially for interrupts—you must release them in the device tree:

• Remove pinmux
• Remove GPIO references
• Disable the GPIO controller if needed

This prevents A53/M7 resource conflicts and ensures real-time reliability.
https://www.forlinx.net/industrial-news/imx8mp-m7-gpio-release-linux-pinmux-769.html

#iMX8MP #CortexM7 #EmbeddedLinux #GPIO #RTOS

Just received today #teensy4 Great hardware in a MCU module! Willing to squeeze its possibilities #NXP #ARM #cortexm7 #whatacucumber