u-boot占用多少DRAM?

时间:2013-11-26 03:53:46

标签: memory embedded-linux ram u-boot

我想在u-boot时执行一些操作(加载一个小固件) 有人知道DRAM在DRAM的开头和结尾占用多少DRAM,
这样我就可以在没有被u-boot占用的未占用DRAM区域加载我的固件?

1 个答案:

答案 0 :(得分:3)

U-Boot是可配置的,因此答案取决于您的特定构建。  配置到U-Boot中的命令和功能将确定其实际大小。通常,U-Boot被构建为驻留/执行在主存储器的上部,而低内存的剩余部分可用于任何地方。

在您的主板配置文件中,CONFIG_SYS_TEXT_BASE的定义设置了U-Boot的起始地址。 (旧版本的U-Boot有一种不同的方法来指定这个起始地址符号。)

检查生成的System.map文件(与u-boot.bin可执行文件位于同一目录中),以获取链接器为每个入口点分配的地址。

在你的主板配置文件中,还有类似的内容:

#define CONFIG_SYS_SDRAM_BASE       ATMEL_BASE_CS6
#define CONFIG_SYS_SDRAM_SIZE       0x08000000

定义主内存的物理地址范围。

U-Boot将在SDRAM或BASE + SIZE结束时启动其堆栈。 因此,CONFIG_SYS_TEXT_BASE +(u-boot.bin的大小)与SDRAM结尾之间的区域是可用的堆栈区域。

U-Boot还会在CONFIG_SYS_TEXT_BASE池中使用malloc()以下的内存。该区域的大小由CONFIG_SYS_MALLOC_LEN定义。

所以CONFIG_SYS_SDRAM_BASE
之间的记忆 CONFIG_SYS_TEXT_BASE - CONFIG_SYS_MALLOC_LEN应该可用。

<强>附录

以上注释适用于在主存储器(即DRAM)中加载和执行的U-Boot 有些系统从ROM或NOR Flash中执行U-Boot,然后U-Boot将自己重新定位到RAM。一些(旧的?)文档是here