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.

[参考译文] CCS:AM437x QSPI 引导问题

Guru**** 2895600 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663358/ccs-am437x-qspi-boot-question

工具/软件:Code Composer Studio

工具/软件: TI-RTOS

我是 MYIR 员工。我使用 MYD-c437x-PRU 为 QSPI 引导运行 starware、 我可以成功完成以下步骤

过程依赖于复制到 SD 卡的内容。 其他详细信息如下:

  • 复制引导加载程序映像(bootloader_boot_qspi_a9host_debug.bin rename)和应用程序映像(" _ti.bin")插入 SD 卡。
    文件名的重命名方式必须小于9个字符。 可以使用小于9个字符的任何文件名。
    将引导加载程序文件重命名为"boot"、将应用程序映像重命名为"app"、不带扩展名。
  • 将'config'文件复制到 SD 卡中、该卡将包含要刷写的映像的名称和偏移量。
    可在 <\pdk_install_DIR\packages/ti\starterware\starterware\tools\qspi\config\>目录中找到示例配置文件。 请勿更改 配置 文件的名称。
    注意: 如果引导加载程序和应用程序映像重命名为"boot"和"app"、则可以在不进行任何修改的情况下使用"config"文件。
    注意: 不要将要复制到 SD 卡的引导加载程序重命名为"MLO"、因为 MMCSD 引导加载程序需要引导"MLO"和"app"。
  • 现在、SD 卡包含1)引导2)应用3)配置文件。  
    配置文件包含引导映像的地址0x0  、应用映像的地址 为0x80000
    将其插入 SD 卡插槽。
  • 将电路板与 CCS 连接、并从加载预构建的 QSPI 闪存写入器应用  
  • 运行 QSPI 闪存写入器应用。 控制台上应显示以下日志。
StarterWare QSPI 闪存写入器!!
BOARDInit 状态[0x0]
SoC :[AM43XX]
内核 :
检测到[A9]主板 :[MYDIDK437X]
基本主板版本:[未知]
子卡版本:[未知]
闪存制造商 ID = ef
器件 ID = 17
复制引导至 QSPI 闪存
复制 QSPI_APP 至 QSPI 闪存
将读取
模式更改为四模式读取模式
已更改为四模式成功!!!
刷写完成 

  当我将n`t 模式切换到 qpsi 模式时,引导加载程序可以运行,但无法加载应用程序  

StarterWare 引导加载程序
BOARDInit 状态[0x0]
SoC:[AM43XX]
内核:[A9]
检测到的主板:[MYDIDK437X]
基本主板版本:[未知]
子卡版本:[未知]
BOARDInit 状态[0x0] 

我通过这一行中的一些调试程序代码找到 、同时(true=QSPIIsBusy (baseAddr));

 

我的问题是、为什么 ROM 代码可以将 QSPI 中的引导加载程序成功加载到存储器中、引导加载程序无法成功访问 QSPI?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据您的日志、ROM 引导加载程序已完成执行、代码现在正在运行辅助引导加载程序、该引导加载程序设置 pinmux、PLL 和 DDR 存储器并复制应用。 您在 UART 上看到的日志来自此处提供的引导加载程序代码:
    \packages/ti\starterware\bootloader\src

    调试此问题的正确方法是通过 JTAG 为引导加载程序加载.out 并单步执行引导加载程序代码。 .out 文件位于以下位置: \packages/ti\starterware\binary\bootloader\bin

    通过 JTAG 加载与 QSPI 引导相对应的引导加载程序、并单步执行代码以查看 QSPI 闪存无法从 QSPI 闪存读取的原因。 这个技术在基于仿真器的 debugng 部分中提供的链接中进行了讨论:
    processors.wiki.ti.com/.../Processor_SDK_RTOS_Boot

    希望这对您有所帮助。 如果您需要任何进一步的帮助、请发布您的发现、我们可以帮助您进一步调试该问题。


    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过深度调试,我发现我想禁用 QSPI 控制器时钟将被阻止:
    status = PRCMModuleDisable (CHIPDB_MOD_ID_QSPI、pQspiObj->instNum、false);
    我现在想在 QSPI 引导加载程序阶段关闭 QSPI 控制器、然后重新打开它。