-
一般用的板子是32位的,那么可寻址范围也就是4GB,即芯片可以访问这4GB地址,那么这些地址就可以对应到芯片的寄存器上,按照惯例,通常CPU对DDR(外部ram)的寄存器定义为0x80000000,而运行程序需要把程序拷贝到DDR中运行,所以DDR的寄存器地址0x80000000就是程序启动地址。0x80000000~0xFFFFFFFF的大小为2GB,所以这个板子支持的最大DDR就是2GB.

-
程序运行其实应该从0x00000000开始,但是为了支持在多种介质上运行(例如内部ram),所以增加了内存映射功能,需要在DDR上运行时,就把DDR地址映射到0x00000000;需要在内部RAM上运行时,就把内部RAM的地址映射到0x0。
例如下面对STM32运行介质的说明:

-
参考:
程序启动地址0x80000000
Jay Chou why did2026-01-15 15:58
相关推荐
BullSmall8 分钟前
linux 系统下模拟网络丢失和ping延迟,可以怎么来模拟brahmsjiang9 分钟前
理解Android AOT编译与内存映射:从Zygote启动到页表权限隔离亚空间仓鼠9 分钟前
OpenEuler系统常用服务(十)艾莉丝努力练剑9 分钟前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装dddddppppp12322 分钟前
linux head.s 从第一条指令到start_kernelBioRunYiXue23 分钟前
AlphaGenome:DeepMind 新作,基因组学迎来 Alpha 时刻十五年专注C++开发23 分钟前
windows和linux使用system启动进程是一样的吗?此刻觐神26 分钟前
IMX6ULL开发板学习-04(Linux磁盘管理相关命令)qq_85730581936 分钟前
ubuntu 22 源码安装bochsZhu75837 分钟前
【软件更新】在Ubuntu24 LTS中更新openssl到指定版本,例如openssl3.5.6 LTS