为什么把sram映射到0x00000000而不是0x2000000
时间: 2024-01-05 18:01:59 浏览: 32
将SRAM映射到0x00000000的目的是为了使处理器在启动时能够正确地访问和执行存储在SRAM中的代码和数据。
在许多嵌入式系统中,处理器在启动时会从特定的地址开始执行。这通常是由处理器的复位向量决定的,复位向量指示了处理器启动时跳转的地址。如果SRAM被映射到0x00000000,那么复位向量可以设置为SRAM的起始地址,使得处理器在启动时能够直接跳转到SRAM中的代码开始执行。
另外,将SRAM映射到0x00000000还可以方便地实现内存对齐和访问的优化。许多处理器在访问内存时,对于内存地址的对齐有一定的要求。将SRAM映射到0x00000000可以确保SRAM的起始地址是对齐的,从而提高内存访问的效率。
最后,将SRAM映射到0x00000000还可以简化代码开发和调试过程。如果SRAM映射到其他地址(如0x20000000),则需要在代码中进行相应的偏移计算和调整,增加了代码的复杂性和维护成本。
需要注意的是,具体将SRAM映射到哪个地址取决于处理器和硬件平台的设计。在选择SRAM映射地址时,需要考虑处理器和外设的内存映射方案,并确保不会与其他内存区域发生冲突或重叠。
相关问题
static void NVIC_SetVectorTable(void) { uint8_t i; FLASH_Unlock(); for(i = 0; i < 48; i++) { VectorTable[i] = *(__IO uint32_t*)(Application1Address + (i<<2)); } /* Enable the SYSCFG peripheral clock*/ FLASH_Lock(); /* Enable the SYSCFG peripheral clock*/ RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Remap SRAM at 0x00000000 */ SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM); __enable_irq();//disable in boot }
这是一段代码,用于设置向量表(Vector Table)的函数。
首先,通过调用FLASH_Unlock()函数解锁Flash模块,以便可以对Flash进行读取操作。
然后,使用一个循环来遍历向量表的每个条目。在每次循环中,从应用程序地址(Application1Address)偏移相应的位置(i<<2)处读取一个32位的数据,并将其存储到VectorTable数组中。
接下来,调用FLASH_Lock()函数锁定Flash模块,以保护Flash数据的完整性。
然后,通过调用RCC_APB2PeriphResetCmd()函数打开并关闭RCC_APB2Periph_SYSCFG外设的复位功能,以确保SYSCFG外设处于正常工作状态。
接着,通过调用RCC_APB2PeriphClockCmd()函数使能RCC_APB2Periph_SYSCFG外设的时钟。
接下来,通过调用SYSCFG_MemoryRemapConfig()函数将SRAM内存映射到地址0x00000000处,即将系统的向量表设置为从SRAM中加载。
最后,通过调用__enable_irq()函数使能中断,这可能是在引导阶段禁用中断后重新启用中断。
总体而言,这段代码的功能是设置向量表并配置系统的内存映射,以便正确处理中断和执行应用程序。
AMEBA OSD SRAM mapping
AMEBA OSD是一款基于ARM Cortex-M3处理器的微控制器,它有多种不同的型号和配置。此处默认使用RTL8722DM作为例子进行说明。
AMEBA OSD的SRAM映射如下:
1. SRAM的大小为128KB,起始地址为0x20000000,结束地址为0x2001FFFF。
2. SRAM被分为两个区域,即Bank1和Bank2。每个Bank的大小为64KB,起始地址分别为0x20000000和0x20010000,结束地址分别为0x2000FFFF和0x2001FFFF。
3. Bank1和Bank2之间的地址空间是保留区域,未定义使用。
4. Bank1和Bank2可以通过控制寄存器PMU_CTRL_REG[1:0]来选择使用。当PMU_CTRL_REG[1:0]为00时,使用Bank1;当PMU_CTRL_REG[1:0]为01时,使用Bank2;当PMU_CTRL_REG[1:0]为10或11时,SRAM不可用。
5. SRAM的访问速度比Flash快,可以用于存储临时变量、栈等数据。但SRAM的容量较小,在使用时需要注意。
以上是RTL8722DM的SRAM映射情况,其他型号和配置的AMEBA OSD SRAM映射可能会有所不同。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)