关于__DSB(); __ISB();
关于__DSB(); __ISB();
Jr小王子 发表于8个月前
关于__DSB(); __ISB();
  • 发表于 8个月前
  • 阅读 17
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 再次感谢群友的指导 以下都是群主的回复,mark做记录

Q: 为什么需要使用__DSB(); __ISB();

static inline void relocate_vector_table(void) { SCB->VTOR = VECTOR_ADDRESS & SCB_VTOR_TBLOFF_Msk; __DSB(); __ISB(); }

A:指令同步 数据同步

乱序是处理器特性,和优不优化没太大关系。大部分mcu就2级,3级,并不支持乱序,所以你可以看到大部分mcu的这个操作是空操作,只是os为了移植性放的占位。乱序往往需要深度流水,当然这不是充分或必要关系。主要解决的是可见性问题。如果只有一个核,乱不乱,同不同步也没什么影响,反正数据或指令也就你一个人用。可加了多个核或者多个master比如dma的时候,其他的master看不到你的本地内容,往往就需要这个同步措施。 输入图片说明

共有 人打赏支持
粉丝 11
博文 107
码字总数 18289
×
Jr小王子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: