на днях лечил в проекте на Keil для Nuvoton M2354 (Cortex-M23)
улеты в hardfault, проявившиеся при ненулевом уровне оптимизации.
не стеснялся, с отладчиком поглядел, адреса нечетные увидел,
вспомнил, что низзя так. правда лень было затягивать
cmsis_compiler.h для использования богомерзкого __ALIGNED(x) (не
одним Keil пользуюсь) - тупо виновников, которые массивы uint8_t и
проталкивались в функцию через void* и приводились там к
чему-ни-попадя, связал в union-ы c массивами uint32_t. а в Corteх-M23, в отличие от CM3/4 (кусочек был затянут кажись с M3), вааще не предполагается невыровнянного доступа. на Keil не обижался:)
https://developer.arm.com/documentation/dui1095/a/The-Cortex-M23-Instruction-Set/About-the-instruction-descriptions/Address-alignment