What problem does it solve? Analyzing bare-metal ARM firmware is error-prone: Thumb mode bits corrupt function addresses, linker veneers masquerade as business logic, and MMIO peripheral regions get misread as data. This Skill provides a structured workflow for reverse engineering non-Android ARM binaries (Cortex-M/A) with correct architecture detection, entry-point location, and calling-convention recovery. ## Core Features & Use Cases - Architecture & Entry Detection: Confirm ARM vs AArch64, endianness, and float ABI via readelf, then locate Cortex-M vector tables (MSP, Reset handler) or Cortex-A boot code. - Thumb/ARM State Handling: Resolve LSB=1 Thumb function addresses, identify linker veneers beyond BL range limits, and fix base-address mismatches between link and load addresses. - AAPCS & MMIO Analysis: Recover AAPCS32/AAPCS64 calling conventions (including hard-float vs soft-float) and cross-reference peripheral registers in the 0x4000xxxx MMIO region against datasheets. - Use Case: You extracted an STM32 firmware blob with binwalk. Use this Skill to find the vector table, rebase the image in Ghidra, and trace GPIO/UART register accesses to reconstruct hardware behavior. ## Quick Start Analyze this ARM Cortex-M firmware binary: locate the vector table and reset handler, fix the load base address, and identify all MMIO peripheral register accesses.