-
一般用的板子是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
相关推荐
顺风尿一寸14 小时前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路XIAOHEZIcode20 小时前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录唐青枫1 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解AlfredZhao3 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?戴为沐4 天前
Linux内存扩容指南zylyehuo4 天前
Linux 彻底且安全地删除文件用户805533698035 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约用户034095297915 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点Web3探索者7 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?zylyehuo7 天前
Linux系统中网线与USB网络共享冲突