CM3中数据传输对齐/非对齐方式
在CM3中,非对齐的数据传输只发生在常规的数据传送指令中,如LDR、LDRH、LDRSH。其他指令则不支持,包括:
1.多个数据的加载、存储(LDM/STM)。
2.堆栈操作PUSH、POP。
3.互斥访问(LDREX/STREX)。
如果非对齐会导致一个用法的FAULT。
4.位带操作。因为只有LSB有效,非对齐的访问会导致不可预料的结果。
其实,在内部是把非对齐访问换成若干对齐的访问,这个转换动作由处理器总线单元来完成的,此过程需要更多的总线周期。要养成保证总线地址对齐的良好习惯。
为此,编程NVIC,使之监督地址对齐。一旦发现非对齐访问时触发一个fault。具体办法是设置“配置控制寄存器”中的UALIGN_TRP位。这样,在整个调试期间就
可以保证非对齐访问能当场发现。
狠芯低成本,专芯低功耗,计划高性能。