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.

[参考译文] OSPI-AM243X:MCU-PLUS-SDK 多分区引导加载程序示例不工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1332543/mcu-plus-sdk-am243x-ospi-multi-partition-bootloader-example-not-working

器件型号:MCU-PLUS-SDK
主题中讨论的其他器件:TMDS243EVMSysConfig

您好、TI 团队:

我目前面临运行成为 DATA_ABORT 异常的 OSPI 多分区引导加载程序的问题。 我调试了异常并了解了根本原因、但无法弄清为什么我一开始就面临异常。

首先是我的环境的一些细节:

我在 TMDS243EVM 上的 HS_FS 型号中的 AM2434B SoC 上运行代码。
我正在使用的引导加载程序代码基于 MCU+ SDK 9.1.0.41中的 sbl_ospi_multi_partition 示例工程。 对 SYSCFG 未进行任何更改。 在首次调用 Bootloader_parseMultiCoreAppImage()以连接调试器之前添加了一个自旋锁。
全部 有符号 appimages 和引导加载程序本身已经在 SYSCFG (偏移量0x0处的引导加载程序)中配置的相应偏移值处写入闪存、并验证它们是否已被写入。

问题描述

 当被调用的函数 Bootloader_getMsgLen () 试图对 FSS0_DAT_REG1 存储器区域中的指针(x509_cert_ptR)进行无效引用时,异常抛出。 似乎该函数想要作为存储器映射的外设访问闪存。 在验证和实际加载应用映像期间调用的所有其他函数实际上都是通过 OSPI 从闪存中读取的。

问题

该示例未将 DAC 配置为 OSPI。  在不配置 OSPI DAC 的情况下、存储器映射访问如何工作?
2.是否有其他可能未记录的步骤来使示例正常工作?

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

    您好、Simon、

    我注意到这个问题。 请允许我花一天时间浏览查询并回复您。

    谢谢!

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

    您好、Simon、

    使用默认图像时、问题也会重现。 问题似乎是由于 SBL SysConfig 中未启用 PHY。 如果我按如下所示启用 PHY、SBL 将正常启动。

    附加的是成功日志

    Starting OSPI Multi-Partition Bootloader ...
    
    DMSC Firmware Version 9.1.6--v09.01.06 (Kool Koala)
    DMSC Firmware revision 0x9
    DMSC ABI revision 3.1
    
    INFO: Bootloader_runCpu:155: CPU r5f1-0  is initialized to 800000000 Hz !!!
    INFO: Bootloader_runCpu:155: CPU r5f1-1 is initialized to 800000000 Hz !!!
    INFO: Bootloader_runCpu:155: CPU m4f0-0 is initialized to 400000000 Hz !!!
    INFO: Bootloader_loadSelfCpu:207: CPU r5f0-0 is initialized to 800000000 Hz !!!
    INFO: Bootloader_loadSelfCpu:207: CPU r5f0-1 is initialized to 800000000 Hz !!!
    [IPC NOTIFY ECHO] Message exchange started by main core !!!
    [m4f0-0]     0.092018s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f0-1]     0.002099s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f0-1]     2.283646s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [r5f1-0]     0.157146s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f1-0]     2.438682s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [r5f1-1]     0.126153s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f1-1]     2.408399s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [IPC NOTIFY ECHO] All echoed messages received by main core from 4 remote cores !!!
    [IPC NOTIFY ECHO] Messages sent to each core = 1000000
    [IPC NOTIFY ECHO] Number of remote cores = 4
    All tests have passed!!
    [m4f0-0]     3.551528s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!

    您能否尝试一下、并告诉我它是否也适合您。

    此致、

    普拉桑特

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

    尊敬的 Prashant:

    这确实解决了我的问题。 但是、我想知道为什么在不使用带 PHY 模式的 OSPI 的情况下通用 SDK 引导加载程序代码会中断。 它不应该知道可能未启用 PHY 模式吗? 这对我来说似乎是一个疏忽。

    您好!

    西蒙

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

    您好、Simon、

    它是否应该知道 PHY 模式可能未启用?

    您完全是对的。 我们主要研究 v9.1中的一些错误。

    我刚刚尝试了 v9.0和显然它工作没有任何变化。 所以、在 v9.1中、可能是闪存驱动程序中发生的变化导致了问题。

    我将在内部创建一个 bug 标签、如果有任何进展、我将在此处进行更新。

    谢谢!

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

    尊敬的 Prashant:

    好的,谢谢保持张贴我. 我将等待您的回答。

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

    您好、Simon、

    我已经将 MCU+ SDK rep 的 Git 提交分为两份、发现第一个提交导致了该问题。 提交为:

    am243x/am64x:ospi:make 读/写 Fxns Honor DAC TexasInstruments/mcupsdk-core·@3183735 github ·

    提交此内容实际上是为了带来按需启用和立即禁用 DAC 模式的设计选择。 这就是为什么`Bootloader_getMsgLen ()`中会出现数据中止的原因、因为它试图在 DAC 模式下访问 OSPI、而不首先启用 DAC。

    现在、当 PHY 和 DAC 是两个不相关的方面时、简单启用 PHY 解决了该问题、原因是 OSPI 驱动程序在 SysConfig 中启用 PHY 时、使用`OSPI_phyReadAttackVector ()`读取 PHY 调优数据、 如下所示

    我们可以看到、这启用了 DAC 模式以读取 PHY、但不会禁用它(设计中出现错误)。 这意味着按照`Bootloader_getMsgLen ()`的要求、任何对 OSPI 的进一步直接访问都将正常工作。

    因此、我们将根据设计选择处理两个故障:

    1) 1)在 `OSPI_phyReadAttackVector ()`中使用后禁用 DAC 模式。

    2) 2)在`Bootloader_verifyMulticoreImage ()`中根据需要启用和禁用 DAC 模式。

    我将使用发现更新错误通知单、并希望修复程序能够将其更新到计划在3月的最后一周发布的 v9.2版本。

    此致、

    普拉桑特