- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据一些教程,我们会在 bootlaoder 开始时禁用 MMU 和 I/D-Caches。如果我理解正确,它的目的是在程序中直接使用物理地址,所以如果我错了,请纠正我。谢谢!
其次,我们这样做是为了禁用 MMU 和缓存:
mrc P15, 0, R0, C1, C0, 0
bic R0, R0, #0x00002300 @ clear bits 13, 9:8
bic R0, R0, #0x00000087 @ clear bits 7, 2:0
orr R0, R0, #0x00000002 @ set bit 2 (A) Align
orr R0, R0, #0x00001000 @ set bit 12 (I) I-Cache
mcr P15, 0, R0, C1, C0, 0
最佳答案
最后一个问题是为什么 D-cache 被禁用而 I-caches 可以?加快仪器进程?
MMU 具有确定哪些内存区域可缓存或不可缓存的设置。如果您没有打开 mmu 但您打开了数据缓存(如果可能),那么您将无法安全地与外围设备通信。例如,如果您读取 uart 状态寄存器,它就像任何其他数据操作一样通过缓存,那么无论该状态是什么,都将保留在缓存中以供后续读取,直到该缓存线被逐出并且您再获得一次实际登记。例如,假设您有一些代码轮询 uart 状态寄存器以等待 rx 缓冲区中的字符。如果第一次读取显示没有字符,则该状态进入缓存,您将永远留在循环中,因为您将永远无法再次与状态寄存器交谈,您只会获得寄存器的缓存副本。如果那里有一个字符,那么该状态也会被缓存,你读取 rx 寄存器,也许做一些事情,如果当你再次回来时,如果状态没有从数据缓存中被驱逐,那么你会得到陈旧的状态,它显示有一个字符,您读取的 rx 缓冲区可能会也可能不会被缓存,因此您可能会在缓存中获得过时的值,您可能会获得过时的值或读取时外围设备所做的任何事情并且没有新值,或者您可能获得一个新值,但在这些情况下你得不到的是对外围设备的正确访问。当 mmu 打开时,您使用 mmu 将该外设使用的地址空间标记为不可(数据)缓存,并且您没有这个问题。关闭 mmu 后,您需要关闭 arm 系统的数据缓存。
保持 I-cache 处于打开状态是可以的,因为指令只获取读取指令......对于裸机应用程序来说是可以的,例如,如果您使用具有读取干扰潜力的闪存(spi 或 i2c 闪存),它会有所帮助.问题是这个应用程序是一个引导加载程序,所以你必须格外小心。例如,您的引导加载程序在地址 0x8000 处有一些代码,它至少运行一次,然后您选择将其用作引导加载程序,引导加载程序可能位于地址 0x10000000 允许您在 0x8000 加载新程序,此加载使用数据访问,因此它不会通过指令缓存。因此,指令缓存有可能包含您上次在 0x8000 区域时的部分或全部代码,当您跳转到 0x8000 处的引导加载代码时,您将从缓存中获取旧程序或令人讨厌的混合缓存和未缓存部分的旧程序和新程序。因此,如果您的引导加载程序允许启用 i-cache,则您需要在跳转到引导加载代码之前使缓存无效。
最后,如果您或任何使用此引导加载程序的人想要使用 jtag,那么您会遇到同样的问题,但更糟糕的是,当您告诉 jtag 调试器时,不通过 i-cache 的数据周期将用于将新程序写入 ram然后运行新程序,您将获得 1) 只有新程序,2) 缓存中的新程序和旧程序片段的混合 3) 缓存中的旧程序。
因此,没有 mmu 的 d-cache 很糟糕,因为它不在 ram、外围设备等中。 i-cache 是一种使用风险自负的东西,除了 jtag 用于调试的时间外,您可以减轻这种风险.
如果您有顾虑或已确认(外部)闪存中存在读取干扰,那么我建议打开 i-cache,使用紧密循环将您的应用程序复制到 ram,分支到 ram 副本并在那里运行,关闭i-cache(或自担风险使用)并且不要再次接触闪存,当然不是对小区域的大量读取访问。像命令行解析器那样的紧密 uart 轮询循环,是遇到读取干扰的好地方。
关于ARM 引导加载程序 : Disable MMU and Caches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262014/
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我卡在了一个点上,我无法进步,很抱歉这个愚蠢的问题。我为此进行了很多搜索,但我不知道我错过了什么。请帮助我。 我研究了 python 中的模块和类。现在我想使用 python 和 apt 进行一些操作
我在 Kong 有服务,我已经为该服务设置了代理缓存插件。 curl -X POST http://localhost:8001/plugins --data "name=proxy-cache"--
ASP.NET Core 提供内存缓存和响应缓存。 假设该应用程序是 ASP.NET Core WebAPI,它通过配置的响应缓存中间件将 SQL 数据库中的数据传送给用户。 在什么情况下也使用内存缓
我最近遇到了以下面试问题: You need to design a system to provide answers to factorials for between 1 and 100. Yo
我的 Javascript (JS) 代码遇到了一些麻烦,因为我有时需要在同一个函数中多次访问相同的 DOM 元素。还提供了一些推理here . 从性能的角度来看,是一次性创建一个 jQuery 对象
仅使用 Cache 终端,我使用或查看什么实用程序函数或 Global 来查找存在于 Cache 数据库中的所有 Globals 的列表? 再次仅在缓存终端中使用,我使用或查看什么实用程序功能或全局以
我的 Javascript (JS) 代码遇到了一些麻烦,因为有时我需要在同一个函数中多次访问同一个 DOM 元素。还提供了一些推理here . 从性能的角度来看,是先创建一个jQuery对象然后缓存
来自 RFC 2616 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1 no-cache If the no-cach
大多数 CDN 服务器对经常访问的内容使用缓存。 场景:假设有人上传了一张非常热门的图片,并且来自同一位置的许多用户 (1000) 试图访问该图片。 问题:假设网络服务器收到一个请求,首先检查它的缓存
我的 Javascript (JS) 代码遇到了一些麻烦,因为有时我需要在同一个函数中多次访问同一个 DOM 元素。还提供了一些推理here . 从性能的角度来看,是先创建一个jQuery对象然后缓存
如果我将服务器响应设置为:Cache-Control: private,no-cache,max-age=900 ? 如果标题是这样的,会发生什么:Cache-Control: public,no-c
我有一个类需要在缓存中存储数据。最初我在 ASP.NET 应用程序中使用它,所以我使用了 System.Web.Caching.Cache。 现在我需要在 Windows 服务中使用它。现在,据我了解
我遇到了和这个人一样的问题:X-Drupal-Cache for Drupal 7 website always hits MISS ,并且找不到出路。 我正在运行 Drupal 7 - 新闻流 和
我已将 Laravel 设置为使用 Redis 作为缓存。当我使用 Cache::('my_var', 'my_val'); 然后通过 CLI 检查 Redis 以查看 key 是否已创建时,我可以验
我在 Windows Azure 云上有一个应用程序,并且正在使用 Windows Azure 共置缓存。 有时,当我发布网站/web服务时,调用DataCacheFactory.GetCache方法
我正在阅读 documentation for Apollo server-side caching ,但看不到任何关于缓存通常如何加密的内容。 我需要的是一个以响应中包含的对象 ID 为键的缓存,而
Hibernate\Grails 中最好的缓存策略是什么?是否缓存所有实体和查询以及如何找到最佳解决方案? 这是我的 hibernate 配置。 hibernate { cache.use_sec
我收到错误 'Nuget.Proxy Cache' 的类型初始化器抛出异常 尝试连接到 Nuget 官方包源时。我在公司网络后面,但是我怀疑问题是连接性。 有任何想法吗? 最佳答案 我有同样的问题。我
我是一名优秀的程序员,十分优秀!