潮声隔雨深 · 2019年07月16日

CortexM4 中参数CONST_AHB_CTRL的功能是什么?

1.看解释是说主要是在wait-state 的时候保证当前的transfer 不变,怎么理解这个呢?
2.设置为1或保留default对系统的影响是什么?

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2019年07月16日

从总线的角度来说,master不能主动取消transfer,但是M4为了提高性能,在分支预测失败的时候和发生中断的时候,会主动取消,目的是为了让m4尽快处理下面的指令,减少中断的latency。造成在wait-state情况下的时候,htran信号会突然变成idle状态,如果这时候你的bus系统去采样这个htrans信号的话,很可能会出错,这个是和标准的AHB协议不兼容的地方。有以下两个解决方式:
a. 你的bus系统不能在wait-state的情况下,还会寄存htrans和其他控制信号,否则会出错
b. 把那个参数配置成让他兼容标准的AHB协议就可以,这时候cpu就不会发生取消transfer了,但是会影响性能
如果你的系统wait-state情况比较多的话,建议你选择方式a,这样不影响性能,缺点是需要检查你的bus系统是否在wait-state的情况下寄存AHB的控制信号; 如果你的系统wait-state情况比较少,可以考虑把那个参数CONST_AHB_CTRL配成和标准的AHB协议兼容就可以了。

你的回答