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.

[参考译文] LP-AM243:OSPI 引导加载程序示例问题

Guru**** 2454880 points
Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482999/lp-am243-ospi-bootloader-example-issue

器件型号:LP-AM243
主题中讨论的其他器件:SysConfigUNIFLASH

工具与软件:

MCU-PLUS-SDK 10.0.0

示例:  sbl_ospi_am243x-lp_r5fss0-0_nortos_ti-arm-clang

如果我使用其默认 SysConfig 设置(具体而言是"Application Image is X509 Signed"=On &"Disable Auth for Application Image"=Off)编译上述示例并将其刷写到 OSPI 中、则它始终无法引导我的系统映像。

如果我使用 mcu_plus_sdk_am243x_10_00_00_20/tools/boot/sbl_prebuilt/am243x-lp/sbl_ospi.debug.hs_fs.tiimage  预编译引导加载程序、然后我的系统映像引导成功。

示例 SysConfig 设置:

我已经调试了引导加载程序、下面是调用堆栈、它所在的行发生故障。

遇到该线路时、我收到数据中止。

请注意 memcpy 的 pSrc/pDst。

注意:为了调试目的,我可以放置一个 Flash_Read()语句,该语句为 Flash 偏移 0x80000不会导致数据中止。 因此、我认为 pDst 中的0x80000不是 memcpy 的有效目标?  

您能就此问题提供建议吗? 我目前正在开发自定义引导加载程序、也遇到了同样的问题。

预编译的 SBL 引导加载程序是否在证书验证关闭的情况下编译? 这与问题有关、还是其他问题有关?

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

    您好!

    感谢您的耐心。

    请允许我在某个时候通读详细的问题、并在我有进一步更新后回复您。

    此致、

    Vaibhav

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

    您好!

    您可以尝试将目标缓冲区放在 MSRAM 中吗?

    请在此处阅读更多信息: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/MEMORY_MAP.html

    此致、

    Vaibhav

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

    我将使用 SDK 10.0.0中的 SBL_OSPI 示例。

    我注意到、从 SDK 版本10.0.0->10.0.1开始、在 SBL_OSPI 示例中、此缓冲区(和支持代码)添加到 main.c。

    我想这是您希望我设置的缓冲器吗?

    我的系统映像是815Kib、因此需要将缓冲区放置在将加载代码的 MSRAM 区域。 这会是问题吗?

    您能为共享源吗  sbl_ospi.debug.hs_fs.tiimage  预编译引导加载程序? 我想知道它的不同之处及其工作原理、何时需要修改示例?

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

    您好!

    您能否共享的源代码  sbl_ospi.debug.hs_fs.tiimage  预编译引导加载程序?[/QUOT]

    源代码位于 mcu_plus_sdk_install_path/examples/drivers/boot/sbl_ospi 内。

    请在以下网址阅读更多相关信息: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_SBL_OSPI.html

    所以我假设这是您希望我设置的缓冲区?

    正确。 我在名为的文件中查看了.app 部分 sbl_ospi.release.map。

    它被分配在 MSRAM 下、所以在这种情况下、你必须确保你的目标缓冲区位于 MSRAM 中。

    此致、

    Vaibhav

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

    此外、请注意以下几点:

    它位于最新 SDK 10.01.00.32中

    在文件中:ospi_lld.h

    如果您看到 OSPI_NOR_PROTOCOL 是如何定义的:

    #define OSPI_NOR_PROTOCOL (cmd、 data 、addr、 dtr)(uint32_t)(((uint32_t)(dtr) <<  24| \
                                ((uint32_t)(cmd) <<  16| \
                                ((uint32_t)(addr) <<  8| \
                                ((uint32_t)(data) <<  0))
    它被错误地提到、所以应该写为:
    #define OSPI_NOR_PROTOCOL (cmd、addr、data、 dtr)(uint32_t)(((uint32_t)(dtr) <<  24| \
                                ((uint32_t)(cmd) <<  16| \
                                ((uint32_t)(addr) <<  8| \
                                ((uint32_t)(data) <<  0))
    请注意、我是如何交换地址和数据的、因为当您说 XS-YS-ZS 之类的协议之后、x 线用于命令的、y 线用于地址、z 线用于数据。
    因此、请按照我所示进行更改。
    然后转到命令提示符再次构建驱动程序库:

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

    如果 是的来源、我有点困惑  sbl_ospi.debug.hs_fs.tiimage  预编译 映像与 examples/drivers/boot/sbl_ospi 完全相同。 那么为什么在编译完全未修改的示例时会出现此问题? 您能解释一下吗?

    我可以在接下来的几天尝试您的建议。

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

    尊敬的 Toby:

    如果是 的源、我有点困惑  sbl_ospi.debug.hs_fs.tiimage  预编译 映像与 examples/drivers/boot/sbl_ospi 完全相同。 那么为什么在编译完全未修改的示例时会出现此问题? 您能解释一下吗?

    您的问题更多的是、使用 SBL_OSPI 默认 SDK 预编译映像时引导可行、而使用新编译的映像而根本不修改应用程序时引导无法正常工作。

    如果需要、请告诉我您如何尝试运行应用程序 SBL_OSPI 的步骤?

    此致、

    Vaibhav

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

    好的、请记住、我将使用 SDK 10.0.0对其进行测试。

    因此、预编译的 SBL 映像可以正常工作。

    我将 sbl_ospi 示例导入 CCS 并编译它、而不对代码进行任何更改。

    我将 AM243x-LP 设置为 UART 引导、并使用 具有以下配置文件的 uniflash 的 CLI 版本。

    我将 AM243x-LP 设置为 OSPI 引导。 无法启动。

    Uniflash 配置:

    我第一篇文章的屏幕截图中的调用堆栈来自示例、唯一的变化是我在开始时对 loop_forever ()进行调用、因此我可以在引导加载程序运行时连接调试器。

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

    尊敬的 Toby:

    感谢您的耐心。

    [报价 userid="613820" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482999/lp-am243-ospi-bootloader-example-issue/5701757 #5701757"] 具有以下配置文件的 uniflash CLI 版本

    您是说使用包含 Python 命令的 uart_uniflash.py 脚本吗?

    [报价 userid="613820" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482999/lp-am243-ospi-bootloader-example-issue/5701757 #5701757"]我第一篇文章的屏幕截图中的调用堆栈来自此示例、唯一的变化是我一开始就调用 loop_forever ()、这样我就可以在引导加载程序运行时连接调试器。[/QUOT]

    在 SBL_OSPI 中、我看到您在哪里看到数据中止错误。

    让我按照你所做的同样的步骤,看看我能不能来与你一样的点。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="531612" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482999/lp-am243-ospi-bootloader-example-issue/5704332 #5704332"]

    您是说使用包含 Python 命令的 uart_uniflash.py 脚本吗?

    [报价]

    正确、下面的命令。

    python c:/ti/mcu_plus_sdk_am243x_10_00_00_20/tools/boot/uart_uniflash.py -p COM13 --cfg=sbl_ospi_debug.cfg

    让我按照与您所做的相同的步骤操作、看看我是否能与您的观点相同。

    这是一个很好的计划。

    其他可能相关的信息: 我要刷写的应用程序由系统工程生成、并包含 第一个 R5的两个内核的映像。

    应用程序 .hs_fs 映像文件为816KB。

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

    您好!

    我已经检查了您的屏幕截图。

    我假设它来自 SBL OSPI 的 main.c 文件。

    关于此说明:  

    对于我来说、我没有看到 Flash_imgOpen 内对 Flash_imgOffsetRead 的调用

    但是、在你的屏幕截图中、你是如何进行这一呼叫的?

    您能解释一下吗?

    此致、

    Vaibhav

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

    看的是 SDK 版本10.0.1、而我使用的是 SDK 版本10.0.0。

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

    我正在查看10.0本身:

    我看到10.0和10.01都具有相同的定义:

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

    我将重新安装 MCU_PLUS_SDK_10.0.0并 再次选中。

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

    我已经重新安装了 SDK、并且不存在该函数调用。

    我只能假设这一点 we 在开发/测试期间的某个时刻修改了 bootloader_flash.c。

    我将重新构建引导加载程序并再次进行测试、然后让您知道它是否起作用。 这将在接下来的几天内进行。

    感谢您的耐心。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="613820" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482999/lp-am243-ospi-bootloader-example-issue/5704490 #5704490"]

    我已经重新安装了 SDK、并且不存在该函数调用。

    我只能假设这一点 we 在开发/测试期间的某个时刻修改了 bootloader_flash.c。

    我将重新构建引导加载程序并再次进行测试、然后让您知道它是否起作用。 这将在接下来的几天内进行。

    感谢您的耐心。

    [报价]

    感谢您重新安装。

    必须满足以下条件:其中一个开发人员必须已修改 API 以调试某些功能。

    无论哪种方式、它都应该与两个 SDK 配合使用。

    请告诉我如何发展。

    期待您的答复。

    谢谢!

    Vaibhav

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

    感谢您的帮助。 问题已解决。

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

    尊敬的 Toby:

    很高兴知道问题已解决。

    将此主题标记为已关闭、请针对进一步的问题/疑问再次提出 e2e。

    期待帮助您解决问题

    此致、

    Vaibhav