如何构建 u-boot 以从片上存储器而不是 DDR 运行? 以下是动机
我们拥有基于 Keystone 2的生产板。 (这些电路板没有仿真器连接。) 有时、当 SPL 尝试在 DDR 中将控制传输到 u-boot 时(根据消息确定)、我们会得到一个电路板、其中的启动失败。 我们希望使用 u-boot 来检查寄存器、并在调试中使用此类 t help、但由于 DDR 损坏、它不会运行。
谢谢、
兰斯
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如何构建 u-boot 以从片上存储器而不是 DDR 运行? 以下是动机
我们拥有基于 Keystone 2的生产板。 (这些电路板没有仿真器连接。) 有时、当 SPL 尝试在 DDR 中将控制传输到 u-boot 时(根据消息确定)、我们会得到一个电路板、其中的启动失败。 我们希望使用 u-boot 来检查寄存器、并在调试中使用此类 t help、但由于 DDR 损坏、它不会运行。
谢谢、
兰斯
Rex、
我使用的是 MCSDK。 我认为 u-boot-spl 也会初始化控制台、因为我从控制台获取消息、最后一个是它正在清除 DDR。 我猜不久之后、SPL 将跳至完全 u-boot in (损坏) DDR、所有这些都是分开的。
我希望我可以构建完整的 u-boot 以使用 OCM 而不是 DDR、或者将一些交互例程(例如寄存器/存储器访问)添加到 u-boot-spl 中。 一种不太吸引人的替代方法是在编辑/制作/加载过程中向 SPL 添加调试代码----乏味,但比什么都好,特别是因为 UART 启动只需不到一分钟。
这种情况都不是正常的永久代码、因为它只需测试偶尔出现的坏板即可。 BGA 封装中的所有组件以及在带埋孔的内层上进行布线、因此很难探测任何物体。 但 DDR 控制器寄存器中可能有一些线索、有助于缩小搜索范围。
我无法找到 DDR 中 u-boot 的目标地址的定义位置或执行从 SPL 到完全 u-boot 的最终转换的位置、尽管我只查看了几个小时。 任何线索都是有用的。 此外,如果你认为整个计划是一个坏主意,我也会感到冒犯。
谢谢、
兰斯
您好、Lance、
不用担心。 我知道这是一个拼写错误。
KS2使用2级引导。 引导加载程序首先将一小段代码 spl 加载到 MSMC 以启动、然后 spl 仍将 uboot 加载到 MSMC 以运行。 因此、U-boot、而不仅仅是 SPL、位于 MSMC 上。 直到 u-boot 初始化 DDR3、然后它将自身重新定位到 DDR3。 您可以参阅 doc/README.arm-relocation 以了解更多详细信息、或查看 u-boot 源代码中 arch/arm/lib/board.c 中的 board_init_f()。
我想您在 ProcSDK 上、只是对您的配置感到好奇。 您是否想共享或更正我的条目?
MCSDK 版本:3.1.4.7
引导模式:ARM SPI
DDR3A:(供应商) 2GB 1600 MT/s
用于 ARM 的 SYSCLK
对于 DDR3A: