嵌入式--->ICache DCache

概念介绍

  • 整个系统中,CPU的供应链由:寄存器+cache+DDR+硬盘/flash 四阶组成

  • Cache 它是一种内存,虽然目前接触了好几种内存,寄存器,DDR等,它们在物理上的工作原理虽然不同,但是访问属性却很像。

    • 在速度上
      CPU > 寄存器 > Cache > DDR
    • 在容量上
      CPU < 寄存器 < Cache < DDR
  • ICache (instruction cache)是指令高速缓冲存储器。 Cache存储体:存放由主存调入的指令与数据块.用来缓存指令,目前icache的一切都是自动的,不需要我们去做什么。我们只需要打开或者关闭icache。

  • DCache(data cache):数据高速缓冲存储器,dcache用的前提是mmu要启动。

实际使用

  • 参考CMSIS—>core_cm7.h中的API
    __STATIC_INLINE void SCB_EnableICache (void)
    __STATIC_INLINE void SCB_DisableICache (void)
    __STATIC_INLINE void SCB_InvalidateICache (void)
    __STATIC_INLINE void SCB_EnableDCache (void)
    __STATIC_INLINE void SCB_DisableDCache (void)
    __STATIC_INLINE void SCB_InvalidateDCache (void)
    __STATIC_INLINE void SCB_CleanDCache (void)
    __STATIC_INLINE void SCB_CleanInvalidateDCache (void)
    
  • ICache & DCache 的初始化要在程序的最开始(驱动初始化之前)
  • 建议开启DChch透写,不然可能会在使用中遇到各种问题
    SCB_EnableICache();//ʹÄÜI-Cache
    SCB_EnableDCache();//ʹÄÜD-Cache    
    SCB->CACR|=1<<2;   //Ç¿ÖÆD-Cache͸д,Èç²»¿ªÆô,ʵ¼ÊʹÓÃÖпÉÄÜÓöµ½¸÷ÖÖÎÊÌâ
    

你可能感兴趣的:(#,嵌入式经验,java,数据库,前端)