硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3623|回复: 1
收起左侧

[MPU] 常见指令__DSB,__DMB和__ISB的作用

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2018-11-10 01:28:31 | 显示全部楼层 |阅读模式
QQ截图20181110012729.png
Cache的配置函数里面需要调用。比如如下:
  1. /**
  2.   \brief   Clean & Invalidate D-Cache
  3.   \details Cleans and Invalidates D-Cache
  4.   */
  5. __STATIC_INLINE void SCB_CleanInvalidateDCache (void)
  6. {
  7.   #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
  8.     uint32_t ccsidr;
  9.     uint32_t sets;
  10.     uint32_t ways;

  11.     SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/  /* Level 1 data cache */
  12.     __DSB();

  13.     ccsidr = SCB->CCSIDR;

  14.                                             /* clean & invalidate D-Cache */
  15.     sets = (uint32_t)(CCSIDR_SETS(ccsidr));
  16.     do {
  17.       ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
  18.       do {
  19.         SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |
  20.                        ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );
  21.         #if defined ( __CC_ARM )
  22.           __schedule_barrier();
  23.         #endif
  24.       } while (ways-- != 0U);
  25.     } while(sets-- != 0U);

  26.     __DSB();
  27.     __ISB();
  28.   #endif
  29. }
复制代码



回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2018-11-10 08:34:44 | 显示全部楼层
D-Cache,以前其他平台碰到过这种机制的死机。死机瞬间还会打印一套资源信息表,然后进入死循环打印内容。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 21:26 , Processed in 0.220301 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表