HPS SoC引导指南 - Cyclone V SoC开发工具

ID 683265
日期 1/27/2016
Public

1.4.1. Boot ROM

因为Boot ROM是第一引导阶段,所以最常见的引导失败症兆是什么都没发生。例如,系统没有引导,预加载器(如已使能)中UART没有活动。

出现引导问题时,首先查看冷引导。热引导比较多样,但取决于软件如何配置芯片,失败方式可能各有不同。 按下冷复位按钮(如有)或者通过电路班板电源循环和器件均可开始冷引导。

以下情况可能导致热引导失败,但不影响冷引导:

  • 应用软件错误地使能热RAM Boot
  • 应用软件没有根据使用情况相应改变热复位选项
  • 作为引导源的QSPI,热复位时没有复位。但Boot ROM需要闪存大于16MB 的QSPI器件复位。

另外要查看HPS是否工作。通过连接一个调试器来完成(如果电路板上有JTAG连接)。 如果调试器连接可靠,那么HPS正常。

如果调试器连接可用,可通过连接调试器和电路板,然后从Boot ROM和预加载器维护的寄存器获得更多信息,以此断定发生了什么。寄存器都在sysmgr.romcodegrp中,包括如下:

  • initswstate- 紧临跳转至下个有效引导阶段前,预加载器写入特殊值 ‘0x49535756’。没有该值则说明预加载器没有跳转至下个引导阶段。
  • initswlastld- 包含上一次预加载器软件映像索引,该索引由引导器件中的预加载器加载。总共有4个预加载器映像。
  • bootromswstate- 有关BootROM状态的信息,包括:
    • Bit 0: 如果设置,说明BootROM尝试了全部映像但都不工作。
    • Bit 1: 如果设置,说明预加载器曾被开启(不然则是它可能已经开启失败)。
    • Bits 11:8: 哪个内存引导源被使用过:
      • NAND: 0
      • SD/MMC: 1
      • QSPI: 2
注: 关于bootromswstate的内容在BootROM未来的版本中可能会有改动。

如果没有调试器连接,但又被要求从闪存引导,那么只要电路板上可观察到闪存信号,就能监控到它们的活动。如果闪存线上有活动,那么HPS很可能正常。

如仍不清楚HPS是否正常,则可以验证电源,时钟和复位信号。检查电源供应的电压是否正确,是否存在过大噪声,上电时序如何。使用示波器查看输入时钟的振幅,频率和过多振动。查看复位信号以确保他们正确。

如果HPS正常但Boot ROM 似乎不能成功加载预加载器,则可能是以下原因之一:

  • 预加载器映像在闪存中被损坏,Boot ROM无法加载。
  • 闪存中预加载器的映像正确,但与闪存通信失败。
  • 预加载器被正确加载,但未按要求工作,或因软件缺陷而崩溃。

为减低与闪存通信发生问题的可能性,如果电路板上可以配置,就将CSEL 设置到00。这就阻止了Boot ROM重新编程PLLs,同时也迫使Boot ROM用尽可能的最慢速与闪存器件通信。

闪光线(如有)可用示波器和/或逻辑分析器检测,以找寻类似信息:

  • 通信多久?Boot ROM是否快速放弃通信,还是有很多通信?如果它轻易放弃通信,这可能说明问题非常显著。
  • 信号电平看起来是否正确?查看电压水平振铃,上升和下降时间。
  • 如果使用逻辑分析器,且选项可用,则尝试解码HPS和闪存器件之间的通信,从而知道通信是否失败或如何失败。

如果以上步骤不足以诊断问题所在,但有可用的调试器连接,则OCRAM上层4KB内容可从调试程序倒出,Altera可以拿来分析,于是得到诸如“Boot ROM初始化SD卡失败”的信息。大多数时候,可以通过观察外在行为和上述提及的寄存器得到相同信息。