问题标签 [mpu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - STM32H7 MPU 可共享内存属性和强序内存类型
我对 STM32H7 MPU 的一些属性感到困惑。
我已经阅读了几篇文档:STM32H7 参考和编程手册、STMicro 关于 MPM 的应用笔记等……
我知道可共享完全等同于不可缓存(至少在单核 STM32H7 上)。这是对的吗 ?
我需要为 QSPI 闪存定义一个 MPU 区域。MicroChip 的一份文档(参考 TB3179)表明 QSPI 存储器应配置为强排序。我真的不明白为什么?
storage - PIC12f1840的大容量SPI存储?
我正在使用带有MPU9250加速度计的PIC12F1840芯片来收集运动数据。我目前正在使用1Kb的SPI RAM芯片,但它很快就满了,并且在尝试从中读取数据时也会丢失数据(由于 RAM 需要持续供电!)。
它不一定要快,MPU 的最快速度只有184Hz,我打算默认使用较慢的设置。有人可以建议某种类型的记忆吗?
autosar - 如何在 Vector AUTOSAR 配置工具中为 OS_Task 配置 MPU(内存保护单元)?
我想在 Vector AUTOSAR 配置工具中使用 MPU 保护 OS_Task。我能怎么做?
unity3d - ESP32 和 MPU 四元数值不同 - Unity3d 显示对象的不同初始方向
我正在尝试统一构建一个 3D FPS 游戏。我的一个朋友买了一把(复制品)枪并对其进行了修改,在其中添加了一个 ESP32 和一个 MPU-9250 陀螺仪/加速度计,以跟踪枪的旋转(使用四元数)并将其发送到统一。问题是每次我“打开”枪并开始游戏时,游戏中武器的初始旋转都是不同的。(由于万向节锁定问题,我不想使用欧拉角。)问题可能出在哪里以及如何解决的任何想法?
我目前正在使用此处的 MPU-9250 DMP Arduino 库。
我开始认为问题在于每次打开枪的电源时,陀螺仪轴都会重新初始化。根据另一个库- 校准 - 如果 MPU 已断电,则加速度/陀螺仪/磁力偏移不会存储到寄存器中。您需要在每次启动时自行设置所有偏移量(或在每次启动时校准)。我不想每次重启 ESP32 时都这样做。当ESP32重新启动时,无论枪的位置如何,我都可以使用固定的坐标系。
这是我到目前为止编写的代码:
在 Unity 中,我接收数据并将其解析为 4 个浮点数。然后我将游戏中枪的旋转设置为 (y,w,-x,z),因为枪的坐标系与 Unity 使用的坐标系不同。所以代码是这样的:
- - - - - - - - 编辑 - - - - - - - - - -
我读到了 Madgwick 滤波器(或者 Kalman 滤波器和 Mahony 滤波器),据说如果我理解正确的话,它能够产生基于四元数的绝对设备方向估计(基于地球参考系统,即北方等)。但我不确定这是否能解决我的问题。
c - MPU9250 绝对方向使用四元数 C 代码
我正在尝试在 C 中查找带有示例或某些代码的库,以跟踪 MPU-9250 9 轴(加速度计/陀螺仪/磁力计)传感器的绝对方向。我读过 Madgwick 滤波器能够通过找到最小化优化问题 q* W q - a 的最佳四元数来找到绝对方向,其中 q 是我们想要找到的四元数,W 是指向地球的向量, a 是加速度计矢量和乘积: q* W q 将四元数定义的旋转应用于 W 矢量源。因此,W_rotated = q* W q,即 min( W_rotated - a) wrt q,使用最速下降算法。即使我在使用此处或此处找到的相应代码时在某种意义上得到了数学我得到不正确的旋转或不正确的初始旋转(使用 ESP32)。有任何想法吗?
arm - ARM Cortex M7 的 MPU 设置
我正在开发具有多个 Cortex M7 内核的 SoC。它有 SRAM 映射到区域0x2000 0000
->0x3FFF FFFF
和 DDR 映射到0x6000 0000
-> 0xDFFF FFFF
。
似乎将 DDR 的 4 个分区配置为缓存的普通内存(WT、WB 或 WBA)会触发一个硬件错误,该错误会在几秒钟后冻结整个芯片。甚至调试器也会断开连接。请注意,我不需要访问 DDR 来提出问题。只需在 SRAM 中运行代码来配置 MPU 并执行各种操作,就会在随机延迟后触发错误。
我在配置MPU时设置的属性有什么限制吗?
我想说只有系统空间0xE000 0000
具有固定的属性,其他的可以根据硬件实现自由配置,但我有疑问,因为如果我参考 ARMv7-M arch ref 手册,我可以找到这个:
B3.1 系统地址映射(第 588 页)
[...] 声明的缓存类型可以降级但不能提升 [...]
我不确定这是否只是两个顺序配置在运行时的限制,或者是禁止在 0xA... 和 0xC...地址地图。
此外,文档表明 DDR 是普通内存,但是如果我将其默认配置为设备空间(不考虑此配置固有的较慢的非重新排序访问),是否有任何问题?
这是 4 个 DDR 分区的确切配置:
请注意,对于 SRAM,我保持相同的设置: