内存映射配置存储在哪里?

where is the memory map configuration stored?

假设有一个 MCU(比如我正在使用的 cypress PSOC4 芯片)。它在芯片内部包含一个闪存(用于存储固件)和一个 RAM(可能是 SRAM)。我知道即使这两个组件也需要进行内存映射才能让处理单元访问它们。

不过,flash memory和SRAM应该是MPU每次上电都会映射的吧?。

那么内存映射的配置存储在哪里呢? 它是否以某种方式硬连线在 MPU 内部?还是存储在单独隐藏的小块 RAM 中?

我曾经认为内存映射信息应该位于固件的前面,但这没有意义,因为固件存储在闪存中,MPU 不知道闪存在哪里映射到。所以,我认为这是一个错误的想法。

顺便问一下,内存映射是可配置的吗?

是的,在启动时硬连线在 mcu 中,一些 mcus 允许重新映射一次 运行ning,但是为了启动 flash/rom 必须映射到一个已知的地方,一个理智的人设计还将映射片上 sram 并准备好在已知位置启动时使用。

一些使用带(外部硬接线高或低的引脚)来操纵 MCU 的启动方式,有时这包括不同的映射。例如,单个带可以在将引导加载程序 rom 与用户闪存映射到处理器的引导 space 之间进行选择。但这将与该部件的芯片供应商文档中的其他映射选择一起记录。

有些 mcus 允许您在启动后在软件中将 ram 移动到 vector/exception table 区域,这样您就可以在 运行 时间操作它,而不限于开机时闪烁。一些 mcus 甚至具有类似 mmu 的功能,但我很难称呼这些 mcus,因为它们可以 运行 在数百 mhz 中,具有浮点 uint、缓存等。从技术上讲,它们是带有片上 ram 和闪存的 SOC,因此被归类为 MCU。

你的想法是清醒的,flash 和 sram 映射是逻辑上的,在重置时你可以知道事情会发生在哪里。它在该产品的文档中。