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

时间:2016-07-17 11:43:30

标签: memory microcontroller

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

但是,每次MPU上电时都应该映射闪存和SRAM,对吗?

然后存储内存映射的配置在哪里? 在MPU中是否以某种方式硬连线?或者它是存储在一个单独隐藏的小块RAM中?

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

顺便说一下,内存映射是否可以配置?

1 个答案:

答案 0 :(得分:4)

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

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

有些mcus允许你在启动后将软件移入ram进入向量/异常表区域,这样你就可以在运行时操作它,而不仅限于启动时闪存中的内容。有些mcus甚至有类似mmu的功能,但我很难调用那些mcus,因为它们可以运行数百mhz,有浮点,缓存等。技术上它们是一个带有ram的SOC和闪存在芯片上,因此被归类为MCU。

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