U-Boot 阶段
地址范围 | 存放内容 | 说明 |
---|---|---|
0x40004000 ~ 0x41000000 | 初始 U-Boot | U-Boot 的程序入口地址,但在初始化完成之后,U-Boot 会自行重定位到 DRAM 的末尾运行,该空间被空出来,用于加载
Kernel 配置:CONFIG_SYS_TEXT_BASE 位置:Kconfig |
0x40300000 ~ 0x40400000 | 初始 U-Boot HEAP | 初始 gd, HEAP, STACK
的保留空间,重定位之后,该空间会被空出来。配置:CONFIG_SYS_INIT_SP_ADDR位置:include/configs/aic1602.h 配置:CONFIG_SYS_MALLOC_F_LEN 位置:Kconfig |
0x40000000 ~ 0x42000000 | Kernel | Kernel 的程序入口地址,Kernel 最终会被加载到该空间 |
0x41200000 ~ 0x42200000 | kenrel.itb | Kernel.itb 的加载地址,加载后 Kernel 被复制到 0x40000000预留
16MB 配置:knl_addr 位置:env.txt |
0x42200000 ~ 0x42300000 | dtb | 调试用,正常情况下不使用配置:dtb_addr位置:env.txt |
0x42400000 ~ ………. | logo.itb | logo 数据的加载地址,logo.itb 中存储了多张 png 图片uboot 会从该地址读取相应的 png
图片进行解码并显示 配置:logo: { ram: } 位置:image_cfg.json 配置:CONFIG_LOGO_ITB_ADDRESS 位置:drivers/video/artinchip/display/aic_display.c |
0x41000000 ~ ………. | ENV | U-Boot 环境变量的加载地址,USB 升级时使用,16KB 左右初始化加载之后可释放,不影响 Kernel
的使用 配置:CONFIG_ENV_RAM_ADDR 位置:env/Kconfig |
At the End of DRAM | 保留内存 | 重定位后的 U-Boot、栈、堆,以及其他需要预留的内存。具体可以查看 board_f.c 相关处理。 |
0x43F00000 ~ 0x43FDFFFF | dtb | 预留给 Kernel dtb 的内存空间,正常启动时加载到该空间 配置:fdt-1: { load = } 位置:kernel.its |
0x43FE0000 ~ 0x44000000 | OpenSBI | 预留给 OpenSBI
的内存空间 配置:CONFIG_SPL_OPENSBI_LOAD_ADDR 位置:Kconfig |