嵌入式--->ICache DCache

2023-05-16

概念介绍

  • 整个系统中,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͸д,Èç²»¿ªÆô,ʵ¼ÊʹÓÃÖпÉÄÜÓöµ½¸÷ÖÖÎÊÌâ
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式--->ICache DCache 的相关文章

  • MFC多人在线聊天室

    我已经在我的资源里上传了这个聊天室的代码了 基于MFC的C 43 43 的select模型的TCP聊天室 采用select网络模型 xff0c 支持多人同时登陆 xff0c 功能有上线 下线 群聊 私聊 使用CjsonObject进行数据传
  • linux---进程间通信(ipc)之共享内存

    前面我们讲解了进程间通信之管道 xff0c 这段我们讲解我们的共享内存 共享内存是所有进程间通信方式最快的一种 内存共享模型就像下面的图一样 xff0c 就是将物理内存映射到我们进程的虚拟地址上 xff0c 我们就可以直接操作我们虚拟地址空
  • Effective C++总结

    explicit关键字 C 43 43 中的explicit关键字只能用于修饰只有一个参数或者是其他参数有默认值的类构造函数 它的作用是表明该构造函数是显式的 而非隐式的 跟它相对应的另一个关键字是implicit 意思是隐藏的 类构造函数
  • 计算机网络(5)TCP之重传机制

    重传机制 超时重传数据包丢失确认应答丢失 快速重传SACKD SACK例一 ACK 丢包例2 xff1a 网络延时 TCP 是通过序列号 确认应答 重发控制 连接管理以及窗口控制等机制实现可靠性传输的 TCP 实现可靠传输的方式之一 xff
  • 中断与回调

    1 xff0c 回调函数 回调函数的原理是使用函数指针实现类似 软中断 的概念 比如在上层的两个函数A和B xff0c 把自己的函数指针传给了C xff0c C通过调用A和B的函数指针达到 当做了什么 xff0c 通知上层来调用A或者B 的
  • CUDA 程序的优化(3) 任务划分

    4 3 1任务划分原则 首先 xff0c 需要将要处理的任务划分为几个连续的步骤 xff0c 并将其划分为CPU端程序和GPU端程序 划分时需要考虑的原则有 列出每个步骤的所有可以选择的算法 xff0c 并比较不同算法在效率和计算复杂度上的
  • C++ Matlab混合编程时“函数或变量 ‘matlabrc‘ 无法识别”

    在QT中调用Matlab初始化时 xff0c 出现了 函数或变量 matlabrc 无法识别 的情况 xff0c 接着崩溃 而且比较神奇的是 xff0c 前一次是可以初始化的 xff0c 但运行过程中发生了崩溃 直接搜解决办法 xff0c
  • Notepad++全选一整列的靠谱办法

    遇到行数较少的可以直接按住ALT手动选取 xff0c 但遇到行数较多 xff0c 就得这么干 xff1a 鼠标放在第一行某一列 xff0c 按住Alt 43 Shift xff0c 然后鼠标选择最后一行该列 xff0c 输入内容即可 xff
  • 对象转xml格式工具类

    import com ruiyun gui store haikang haikang bean FCSearchDescription import com ruiyun gui store haikang haikang bean FD
  • 【无标题】MQ静态图片获取

    public void getImageV40 String path Integer buildingProjectId HttpServletResponse response JSONObject param 61 new JSONO
  • 数据加解密时Base64异常:Illegal base64 character 3a

    现象 用base64工具类对中文进行处理时出现异常 xff0c 在数据加解密场景中经常使用 java lang IllegalArgumentException Illegal base64 character 3a at java uti
  • Winsock编程实例---TCP&UDP

    0x1 基于TCP的通信 1 服务端 1 1 创建基本流程 创建一个TCP服务端的程序需要调用的函数流程 xff1a 初始化函数库 gt gt WSAStartup 创建套接字 gt gt socket 绑定套接字 gt gt bind 监
  • 数据结构---选择排序(直接选择排序和堆排序图解)

    选择排序思想 xff1a 每一次从待排序的数据元素中选出最小 xff08 或最大 xff09 的一个元素 xff0c 存放在序列的起始位置 xff0c 直到全部待排序的 数据元素排完 直接选择排序 在元素集合array i array n
  • Java HttpUtils类

    Java HttpUtils类 Java HttpUtils类 定义 Public class HttpUtils 收集HTTP Servlet使用的静态的有效方法 方法 1 getRequestURL public static Stri
  • Ubuntu打造家用NAS三——网盘与影视中心

    Ubuntu打造家用NAS三 网盘与影视中心 一 Ubuntu 挂载硬盘 通过 Putty 连接 NAS查看硬盘位置 xff1a sudo fdisk l找到需要挂载的硬盘 xff0c 我的是 Disk dev sdb xff1a xxx
  • Ardupilot笔记:Rover auto模式下的执行流程

    先从mode auto cpp的update 开始分析 流程如图 xff1a 进入函数update 后会执行函数navigate to waypoint mode auto cpp span class token keyword void
  • 串口通信协议 UART+I2C+SPI

    UART 异步 串行 全双工 I2C SPI 不同通信协议比较 UART UART协议详解 UART通信 xff0c 接收与发送 xff08 详细版 xff0c 附代码 xff09 UART串行通信详解 待整理 UART是Universal
  • c语言---宏

    宏 1 仅仅替换 2 不能定义宏参类型 3 不会检查宏参有没有定义 定义带参数的宏 define JH a b t t 61 a a 61 b b 61 t xff0c 对两个参数a b的值进行交换 xff0c 下列表述中正确的是 xff0
  • Ros安装rosdep update出错,解决办法(从根本入手)

    博主作为一个ros刚入门的新手 xff0c 之前也安装过ros ros2但是在Ros安装在进行rosdep update 时运气与网络是成功的关键 xff0c 在尝试了好多次 xff0c 运气好一次就成功了 xff0c 运气不好得不停的试错
  • vscode使用方法

    01 ctrl 43 u 返回上一个光标焦点 02 发送请求插件 到VSCode插件中搜索REST Client 搜索到 xff0c 点击install进行安装 创建一个 http文件 编写测试接口文件 右键选择 发送请求 xff0c 测试

随机推荐

  • 自主飞行无人机开发--SALM cartographer开源框架 rplidar A2/3

    参考学习网站 xff1a https google cartographer ros readthedocs io en latest 问题提出 xff1a 四旋翼搭载激光雷达A3进行SLAM室内定位 xff0c 其怎样Running Ca
  • C#串口通信中的奇偶性校验、CRC校验函数

    一般来说 xff0c 通信协议中的通用数据格式是 包头 43 指令码 43 数据长度 43 有效数据 43 校验码 43 包尾 其中 xff0c 校验方式有多种 xff0c 最流行的是CRC校验方式 xff0c 其次是简单的奇偶性校验 校验
  • 测试软件安装步骤

    目录 Ja 目录 Java安装 jdk下载 jdk环境配置 phpstudy安装 禅道的安装 xampp安装 postman安装 requests parameterized jmeter安装 JVM监控 Locust SecureCRT软
  • linux---进程信号

    进程的功能以及概念信号的生命周期以及相关的接口自定义信号的捕捉流程信号集以及阻塞信号集了解一个SIGCHLD信号 信号的功能以及概念 信号的功能 xff1a 信号就是通知我们某一个事件的发生 信号的概念 xff1a 信号就是一个软件中断 x
  • 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,)

    二郎也比较忙 xff0c 在某大场工作 xff0c 有时候没有时间回复 如果希望二郎尽快帮忙 xff0c 可以将代码 xff0c 数据和问题发给二郎 xff0c 谢谢大家理解 glwang20 64 mails jlu edu cn 不过还
  • conda解决 An HTTP error occurred when trying to retrieve this URL.问题

    遇到 xff1a Collecting package metadata current repodata json failed CondaHTTPError HTTP 000 CONNECTION FAILED for url lt h
  • ubuntu20.04 安装 WPS 2019

    ubuntu自带的文字处理软件对来自windows下office或在WPS创建的ppt有点不兼容 xff0c 看到WPS有linux版本的 xff0c 便果断安装试一试 一 卸载原生liboffice sudo apt get remove
  • 制作ubuntu系统的 usb启动盘

    前言 由于课程的要求 xff0c 要尝试完成 编译安装Linux系统的内核 xff0c 但是在编译内核的过程中 xff0c Ubuntu的grub引导好像出了一些问题 xff0c 不能进入系统了 所以就要制作一个usb启动盘 xff0c 看
  • 项目用到的开源库>http-parser(一个HTTP消息解析器)

    http parser 定义 xff1a 一个用C编写的HTTP消息解析器 xff0c 可以解析请求和响应 优点 xff1a 不会进行任何系统调用及内存分配 xff0c 它不会缓冲数据 xff0c 它可以被随时中断 根据你的体系结构 xff
  • 项目优化>C++,concurrentqueue(高性能并发队列)

    项目中的数据队列基于轮询和selep的实时性及CUP性能差 xff0c 需要进行优化 xff0c 尝试使用concurrentqueue进行优化 网上有一些资料介绍 可供参考 使用后的个人理解 一个线程安全的queue xff0c 并且co
  • shell>sed (对文件的内容进行替换)

    在生产环境中经常会遇到对配置文件的修改 xff0c 那写成一个脚本 xff0c 传个参数修改配置文件不就方便多了吗 对一个文件的操作那我暂且分为增删改查了 写在前面 i 这个参数很重要 xff0c 若需要更改源文件 xff0c 请配合 i参
  • Linux>软链接的作用与使用

    软链接 xff1a 为某一个文件在另外一个位置建立一个同不的链接 类似于Windows下的快捷方式 好处 xff1a 仅仅是个链接 xff0c 不占用空间 xff0c 使用还是照常使用 实际生产环境中 xff0c 使用第三方的工具 xff0
  • WPF--->自定义控件中添加按钮,TextBox添加Button为例

    span class token tag span class token tag span class token punctuation lt span Style span span class token attr name spa
  • STM32F767--->串口通信接收不定长数据的处理方法

    文章目录 写在前面超时中断相关寄存器接收器超时寄存器 USARTx RTOR 空闲中断整体思路 附录程序代码参考 写在前面 使用STM32F767有两种中断方式 超时中断和空闲中断 接不定长的数据 xff0c 其中超时中断要比空闲中断好用
  • STM32F7--->串口相关,串口的所有寄存器详讲

    文章目录 串口相关寄存器串口控制寄存器CR1CR2CR3 波特率寄存器 BRR保护时间和预分频寄存器 GTPR接收超时寄存器 RTOR请求寄存器 RQR中断和状态寄存器 ISR中断标志清零寄存器 ICR接收数据寄存器 RDR发送数据寄存器
  • linux---线程概念和线程控制

    1 什么是线程 2 线程和进程的关系 3 线程的工作原理 4 线程和进程实现并发任务的优 缺 5 线程控制 什么是线程 在传统的操作系统中 xff0c 进程就是一个pcb xff08 进行运行中的程序的描述信息 xff09 xff0c 控制
  • Docker--->文件/文件夹的挂载映射

    宿主机的文件夹挂载映射 span class token function docker span run it v d span class token punctuation span dockr attach span class t
  • Docker--->总目录

    Docker Docker xff1e 安装与简介 Docker xff1e 创建镜像到gitlab仓库 Docker xff1e 容器的创建启动进入 Docker xff1e 文件 文件夹的挂载映射 在VSCode中打开容器 删除容器 x
  • keil MDK5,ARM-CC--->的使用

    文章目录 屏蔽某个waring 屏蔽某个waring 我们通过 options for target gt C C 43 43 gt Misc Controls中添加 diag suppress span class token opera
  • 嵌入式--->ICache DCache

    概念介绍 整个系统中 xff0c CPU的供应链由 xff1a 寄存器 43 cache 43 DDR 43 硬盘 flash 四阶组成 Cache 它是一种内存 xff0c 虽然目前接触了好几种内存 xff0c 寄存器 xff0c DDR