添加命令定义时,u-boot文本区溢出

时间:2012-09-05 13:09:31

标签: arm u-boot

在我的mx53_loco板上,我遇到了问题: 当我在板特定标题中添加命令行帮助定义(CONFIG_SYS_LONGHELP)时,构建完成成功,但是当我启动板时,我发现一个损坏的环境(所有命令都无法识别)。

即使我增加了CONFIG_EXTRA_ENV_SETTINGS define的大小,我也遇到了这个问题。

所以它似乎是一个与某个地方溢出的u-boot代码大小相关的问题。 (memory map re-definition?

我可以正确调整u-boot的内部布局。

任何人都可以向我解释会发生什么或建议一个有用的链接吗?

1 个答案:

答案 0 :(得分:0)

u-boot始终首先读取保存的环境变量。这些环境变量通常位于非易失性存储器(NOR或NAND闪存或其他)中。如果保存的环境变量的CRC正确,则使用保存的env变量。如果您更改了CONFIG_EXTRA_ENV_SETTINGS,则不会使用它!

CONFIG_EXTRA_ENV_SETTINGS中的值仅在您将env vars重置为默认值并保存时使用:

$ env default -f
$ saveenv

您还应该注意您的地图和尺寸。添加新的env变量时,请确保CONFIG_ENV_SIZE和CONFIG_ENV_OFFSET正确无误。

请阅读u-boot源的顶级目录中的README文件。 并浏览邮件列表:http://news.gmane.org/gmane.comp.boot-loaders.u-boot

编辑:

您还应验证CONFIG_SYS_FLASH_BASE和CONFIG_SYS_MONITOR_LEN是否正确。只需确保不要覆盖u-boot覆盖的闪存区域和编写env变量的闪存区域。