将u-Boot加载到内存中而不是闪烁

在我的基于ARM的定制电路板中,每当我做出更改时,我都会将u-boot刷新到NAND。 (放一些debugging语句/修改)。 有没有办法直接加载到RAM内存的uboot映像,而不是每次闪烁?

对于linux内核映像,我将它加载到内存中,并使用bootm来启动映像。 同样,对于u-boot,我正在尝试。 请提供您的build议。

Solutions Collecting From Web of "将u-Boot加载到内存中而不是闪烁"

飞思卡尔的某些人已经为他们的P1022DS评估系统(以及其他一些系统)做了这个工作。 他们在文件$ {UBOOTROOT} /doc/README.ramboot-ppc8500(在U-Boot V2010.12中)中提供了一些有用的文档。 这个文件非常简洁,留下了许多问题没有答案,但是我发现这是一个合理的开始,当我需要在一个新的板上调试U-Boot时,在该板的闪存正常运行之前。

事实上,具有非功能性闪存是您可能需要在RAM中调试U-Boot的原因之一。 (自述文件中列出了一些原因,这些对我来说听起来都非常合理,与此相关的一些其他建议相比)

在我们的情况下,发现早期的原型目标板硬件包括地址总线连接到闪存的错误,这阻碍了我们使用闪存。 在硬件重新设计和重新制造的过程中,我们希望继续测试/调试那些不依赖闪存的U-Boot配置,例如I2C,以太网,FPGA配置,PCIe等。很多东西是独立于U-Boot映像的来源)。

通过JTAG接口(使用Codewarrior和USB TAP)将U-Boot加载到RAM后运行U-Boot,即使我们没有功能性闪存,也可以继续使用U-Boot启动任务。 一旦我们收到了正确运行的闪存的新版本的目标板,我们就回到调试那些我们之前无法测试的U-Boot的部分。 之后,U-Boot功能齐全,我们不必等待主板旋转才能取得进展。

调试引导程序有点困难,但使用正确的工具应该是相对容易的。

我处理PowerPC架构和BDI-3000我可以直接加载和调试到RAM(当然,初始化DDR控制器后)。

一种选择是,如果您有片上SRAM或L2缓存,可以配置为片上SRAM。 BDI可以先复制到SRAM区,u-boot是这样做的(例如初始化DDR控制器),然后将其自身重新定位到DDR RAM。 肯定会更快,重写,以减缓闪光。

至少在2004年是不可能的 。

如果您要运行的U-Boot镜像具有允许从任意地址运行的启动代码,则应该有可能。 无论你的董事会是否如此,我不能说。

如果启动代码通过将代码段从当前(PC相对)地址复制到最终执行地址(通常在这之前检查这些区域不重叠)开始,则可以将.bin文件加载到RAM中的任何地址,并使用go调用它。

我可以看到的第二个障碍是开始时的无条件RAM设置代码,其中有许多板卡。

这里的问题是,你所要做的是违背引导程序的哲学。 大多数处理器要求代码从Flash开始。 该代码被称为引导程序。 就是U-boot的意思。

但是,如果你想修改U-boot,使它不是一个真正的引导程序,那么你可以做任何你想要的。 这只是软件。 但是,不要指望有任何主线支持上述原因。

请记住(注意)您在修改的U-Boot中配置的硬件。 U Boot的目的是初始化关键模块,其中一些模块不能在运行中重新配置,或者它们可能不会在启动时被初始化/配置。

如果您的目标板支持网络启动,则可以通过网络从主机加载uboot映像到RAM。

您可以使用USB启动。 TI和飞思卡尔提供他们的USB启动工具。 我不知道其他供应商。

这就是u-boot文档常见问题解答:

问题:我不想擦除我的闪存,因为我不确定我的新U-Boot映像是否可用。 有没有可能配置U-Boot,使我可以加载到RAM而不是闪存,并从我的旧启动加载程序启动它?

答:不可以(除非你使用Blackfin处理器或Socfpga板,但是你可能不是)。

问题:但是我被告知这是可能的?

答:嗯,是的。 当然这是可能的。 这是软件,所以一切都是可能的。 但这是困难的,没有支持的,充满危险的。 如果你选择这样做,你是独立的。 它不会帮助你解决你的问题。

来源: http : //www.denx.de/wiki/view/DULG/CanUBootBeConfiguredSuchThatItCanBeStartedInRAM