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.

[参考译文] RTOS/PROCESSOR-SDK-AM437X:引导加载程序和 QSPI 闪存

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657731/rtos-processor-sdk-am437x-bootloader-and-qspi-flash

器件型号:PROCESSOR-SDK-AM437X

工具/软件:TI-RTOS

我的电路板应从 SD 卡或 QSPI 闪存引导。 sysboot 引脚配置将此信息提供给 ROM 引导加载程序。

如果存在 SD 卡、引导加载程序应将映像文件从 SD 卡加载到 QSPI 闪存中。 如果 SD 卡不存在、MPU 应执行存储在 QSPI 闪存中的软件(将其复制到 RAM 并从 RAM 中运行)。

对于 AM437x 入门套件板、我已经使用文件\pdk_am437X_1_0_7\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\bootloader_boot_mmcsd_a9host_release_ti.bin 创建一个 SD 卡、将应用程序映像复制到 RAM 并执行它。

文档 processors.wiki.ti.com/.../AM437x 介绍了如何使用 CCS 加载 QSPI 闪存。

但是、如何创建一个在 QSPI 闪存中加载应用的 SD 卡?
 
已安装项目:
CCS 7.2
GCC ARM 编译器4.9.3
PROCESSOR_SDK_RTOS_AM437X 4.00.04
AM437x PDK v1.0.7
BIOS 6.46.05.55
xdctools 3.32.02.25_core
电路板:AM437X 入门套件

此致、

Marcio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是不是要在不使用 CCS 但只使用 SD 卡的情况下对 QSPI 闪存进行编程? 如果是这种情况、则需要将 QSPI 闪存写入器转换为 SD 可引导二进制文件(类似于 SD 引导 MLO)、后者读取引导、应用和配置文件以刷写 QSPI 闪存。 QSPI 闪存n`t 器正在使用 DDR、因此 ROM 引导加载程序无法将其直接加载到 DDR 中、因此、如果需要在加载到 QSPI 闪存之前将数据复制到 DDR 中、则应将其配置为从 OCMC RAM 运行并初始化 DDR。

    另一个选项是使用 SD 引导加载程序 MLO 并将 QSPI 闪存写入器配置为 SD 卡"app"。 MLO 用于初始化器件、DDR 和 pinmux、并加载 QSPI 闪存写入器、然后读取引导、QSPI"应用"和配置文件。 注意在这种情况下、需要重命名 QSPI"应用"文件、因为从 SD 卡引导 QSPI 闪存写入器时、它将被命名为应用。

    您需要修改现有引导设置以实现此功能的两种方式。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复 Rahul。

    我的要求与第二个选项匹配。

    因此、我需要使用 SD 引导加载程序(bootloader_boot_mmcsd_a9host_release_ti.bin 重命名为 MLO)来加载和运行 QSPI 闪存写入器(应用)。 QSPI 闪存写入器必须在 SD 卡上搜索我的应用并将其写入 QSPI 闪存。 然后、我必须移除 SD 卡、对电路板进行下电上电、主引导加载程序会将闪存中的程序复制到 DDR 并运行它。

    主引导加载程序是否会将闪存中的程序复制到 DDR 并运行它? 或者我需要更多的东西吗?

    文件夹 c:\ti\pdk_am437X_1_0_7\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\包含多个映像。 bootloader_boot_qspi_a9host_release_ti.bin 的作用是什么?

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

    Marcio、

    为了进一步说明、我想在这些器件上重新强制执行系统引导详细信息。 使用 Processor SDK RTOS 中的引导加载程序始终是两级引导。 主引导加载程序是 ROM 引导加载程序、而次级引导加载程序是 SDK 中的引导加载程序

    Processor SDK RTOS 中的两个阶段启动过程:

    引导阶段 I:ROM 引导加载程序(RBL)仅将 SBL 加载到片上存储器中的器件中。

    引导阶段 II:辅助引导加载程序将应用程序加载到 DDR 存储器中。

    n`t:ROM 引导加载程序位于片上 ROM 上、无法修改(技术参考手册初始化章节中的说明)

    次级引导加载程序是我们在 Processor SDK RTOS 中提供的引导加载程序、是用户级引导加载程序、可进行修改/调试。

    您的问题答案:

    [引用用户="Marcio Borges">主引导加载程序是否会将闪存中的程序复制到 DDR 并运行它? 或者我是否需要其他东西?

    主引导加载程序(ROM 引导加载程序)只能将代码加载到片上存储器中、因此我们需要次级引导加载程序来在 DDR 中加载应用程序。 器件上的 ROM 引导加载程序加载次级引导加载程序、即 用于 SD 引导的 MLO)和 用于 QSPI 引导的 bootloader_boot_qspi_a9host_release_ti.bin

    [引用 user="Marcio Borges">文件夹 c:\ti\pdk_am437X_1_0_7\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\包含多个映像。 bootloader_boot_qspi_a9host_release_ti.bin 的作用是什么?

    该引导加载程序需要驻留在偏移量为0x000000的 QSPI 闪存上、闪存中的应用程序应刷写在  0x80000。 当器  件在 QSPI 模式下引导时、ROM 代码将从偏移量0x000000读取 bootloader_boot_qspi_a9host_release_ti.bin 并加载到片上存储器中、并将控制权传递给该次级引导加载程序。 然后、这将设置引脚多路复用器、PLL 和 DDR、然后从偏移量0x80000复制应用并加载到 DDR 存储器中。

    更多详细信息: processors.wiki.ti.com/.../AM437x

    希望这能提供一些澄清。

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

    我相信我不会对所涉及的工作感到不安。 只需确认...

    在 SD 卡中、"MLO"文件为"bootloader_boot_boot_mmcsd_a9host_release_ti.bin"。
    "app"是"QSPI 闪存写入器"程序的修改版本。
    需要向卡中添加2个以上的文件:"bootloader_boot_boot_qspi_a9host_release_ti.bin"和我的应用程序、它们的重命名方式都使名称长度小于9个字符。

    因此、如果将引导配置到 SD 卡、ROM 引导加载程序将加载并运行"MLO"。
    然后、MLO 在 DDR 上加载并运行"app"、即"QSPI 闪存写入器"。
    闪存写入器从卡中读取"bootloader_boot_qspi_a9host_release_ti.bin"文件、并将其写入闪存(偏移量0x000000)。
    同样、闪存写入器从卡中读取我的应用并写入闪存(偏移量0x80000)。

    如果将引导配置为 QSPI,ROM 引导加载程序将加载并运行" bootloader_boot_qspi_a9host_release_ti.bin",该加载并运行我的应用程序在 DDR 上。

    在哪里可以找到"QSPI 闪存写入器"? 需要更改什么?

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

    您好、Rahul、
    您有机会了解一下这一点吗?
    此致、
    Marcio

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

    QSPI 闪存写入器源代码可从此处获取:
    pdk_install_DIR\packages/ti\starterware\examples\qspi\flash_writer

    此处提供了预编译二进制文件:
    pdk_install_DIR\packages/ti\starterware\starterware\binary\qspi_app_flash_writer\bin\am43xx-evm

    此处提供了配置文件:
    pdk_install_DIR\packages/ti\starterware\tools\QSPI

    要将 QSPI 闪存写入器转换为.out、可使用以下命令。
    /bin/arm-none-eabi-objcopy -O 二进制%app_name%.out %app_name%.bin
    pdk_install_DIR/packages/ti/starterware/tools/ti_image/tiimage.exe 0x80000000无%app_name%.bin 应用程序)

    注意当您从 SD 卡执行所有操作时、您需要确保不依赖于通过 JTAG 读取任何文件、并且由于您有2个应用文件、因此需要重命名其中一个

    以下是两个应用程序,我指的是:
    * app (闪存写入器应用程序):引导加载程序源硬代码它从 SD 读取的应用程序的名称、因此您需要保持原样。
    *应用程序(生产应用程序映像):将此应用程序重命名为 app_prod 并在配置文件中。 检查闪存写入器中从295行到350行的代码。 如果您在配置中修改名称、我相信不需要更改代码。

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

    非常感谢 Rahul。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    为了让您知道、本主题中讨论的 QSPI 闪存加载和启动工作良好。

    我唯一需要做的更改是从引导加载程序中删除 id 内存检查、因为我的板没有 id 内存。

    再次感谢。