程序启动地址0x80000000

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

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

    例如下面对STM32运行介质的说明:

  3. 参考:

    https://blog.csdn.net/qq_28877125/article/details/111876598

    https://www.cnblogs.com/lpajsj/p/18253280

相关推荐
BestOrNothing_201513 分钟前
(3)Ubuntu 22.04 双系统安装全过程记录
linux·ubuntu22.04·双系统安装
寂柒2 小时前
Linux——基础IO
linux
杨云龙UP2 小时前
Oracle ASM磁盘组空间分配与冗余理解
linux·运维·数据库·sql·oracle
朽棘不雕2 小时前
Linux权限
linux
minji...2 小时前
Linux 库制作与原理(三)深入动静态链接原理
linux·运维·服务器·c++
bukeyiwanshui3 小时前
Linux实践
linux·运维·服务器
xlp666hub3 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·面试
守望时空333 小时前
使用NetworkManager替换当前网络管理器
linux·运维
爱网安的monkey brother3 小时前
Linux自用文档
linux
xlq223224 小时前
30.进程池IPC
linux·运维·服务器