2011-03-07 74 views
5

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

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

回答

2

如果要运行的U-Boot映像具有允许从任意地址运行的启动代码,则应该可以。不管你的董事会是否是这种情况,我都说不出来。

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

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

+0

我会说,它应该是可能的 - 这是与许多的u-boot的版本肯定常见。即使处理器想要在启动时以破坏性的方式使用RAM来刷新设置等,但如果设计适当,甚至不必重置处理器以从旧版本启动新版本的u-boot。 – 2011-03-07 16:20:25

0

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

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

+2

这不一定是真的。有些目标支持从闪存u-boot加载试用版u-boot,并认为这完全正常。它可以是一个方便的测试方法! – 2013-05-24 14:17:06

0

请记住(注意)您在修改的U-Boot中配置的硬件。 U 引导旨在初始化关键模块,其中一些模块无法在运行中进行重新配置,或者它们可能无法执行,就好像它们在启动时被初始化/配置一样。

3

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

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

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

4

飞思卡尔的某些人为他们的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功能齐全,我们不必等待主板旋转才能取得进展。

+0

这篇文章有误,我很抱歉。在使用Freescale文档在RAM中启动U-Boot方面,我并未取得最终成功。 – 2013-04-26 16:30:36

+0

我得到了这个成功的P1010没有太多麻烦,所以其他读者不应该被吓倒。如果您没有BDI调试器,这非常有用。 [链接](https://github.com/atgreen/u-boot-moxie/blob/master/doc/README.ramboot-ppc85xx)。请注意,“CONFIG_SDCARD”位是误导性的,你真正需要做的是设置 '#定义CONFIG_SYS_TEXT_BASE \t \t 0x11000000' '#定义CONFIG_RESET_VECTOR_ADDRESS \t 0x1107fffc' '#定义CONFIG_SYS_RAMBOOT' – timmins 2014-08-28 12:40:53

0

如果您的目标板支持网络引导,则可以通过网络将主机上的uboot映像加载到RAM中。

0

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

0

这是可以在u-boot的文件FAQ阅读:

问题: 我不想抹去我的闪存,因为我不知道如果我的新的U-Boot图像将工作。是否可以配置U-Boot,例如 ,我可以将它加载到RAM而不是闪存中,然后从我的旧版本 启动加载程序启动它?

答: 号(除非你使用Blackfin处理器,或Socfpga板,但你可能没有)

问题: 但有人告诉我这是可能吗?

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

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