程序启动地址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

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