CM3中数据传输对齐/非对齐方式

在CM3中,非对齐的数据传输只发生在常规的数据传送指令中,如LDR、LDRH、LDRSH。其他指令则不支持,包括:

1.多个数据的加载、存储(LDM/STM)。

2.堆栈操作PUSH、POP。

3.互斥访问(LDREX/STREX)。

如果非对齐会导致一个用法的FAULT。

4.位带操作。因为只有LSB有效,非对齐的访问会导致不可预料的结果。

其实,在内部是把非对齐访问换成若干对齐的访问,这个转换动作由处理器总线单元来完成的,此过程需要更多的总线周期。要养成保证总线地址对齐的良好习惯。

为此,编程NVIC,使之监督地址对齐。一旦发现非对齐访问时触发一个fault。具体办法是设置“配置控制寄存器”中的UALIGN_TRP位。这样,在整个调试期间就

可以保证非对齐访问能当场发现。

posted @ 2015-02-03 16:48  CHIPER  阅读(1445)  评论(0编辑  收藏  举报