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.

[参考译文] SK-AM62A-LP:在启动期间、在 Linux 加载 MCU-R5固件(程序)时出现错误。 (无法加载程序段:-22)尝试运行"ePWM 占空比"示例位于 EVK (SK-AM62A-LP)上、Linux 运行在 EVK 上(SK-AM62A-LP)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1349472/sk-am62a-lp-facing-error-in-mcu-r5-firmware-program-loading-with-linux-during-boot-up-time-failed-to-load-program-segments--22-when-tried-to-run-epwm-duty-cycle-example-on-our-evk-sk-am62a-lp-with-linux-running-on-evk-sk-am62

器件型号:SK-AM62A-LP
主题中讨论的其他器件: SysConfig

团队、您好!

为此、我们通过以下链接 "ePWM 占空比" 我们的 EVK (SK-AM62A-LP)上的示例(示例 路径:  mcu_plus_sdk_am62ax_09_01_00_39\examples\drivers\epwm\ePWM_Duty_cycle\am62ax-sk\r5fs0-0_FreeRTOS)


1) 1) https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/09_01_00_39/exports/docs/api_guide_am62ax/EXAMPLES_DRIVERS_EPWM_DUTY_CYCLE.html

2) 2) https://dev.ti.com/tirex/explore/node?node=A__AeO-0ljXOpe7uiPS6ozGxg__AM62A-ACADEMY__WeZ9SsL__LATEST


我们已经尝试运行 "ePWM 占空比" 示例位于我们的 EVK (SK-AM62A-LP)上、但在启动期间、我们在使用 Linux 加载 R5固件时遇到错误。 (无法加载程序段:-22)

处理器 SDK: 版本:09.01.00.02 (PROCESSOR-SDK-LINUX-RT - AM62A)

MCU-SDK:版本: 09.01.00.39 (AM62A-AM62A—适用于 MCU-PLUS-SDK 的 MCU+ SDK)

EVK 上 Linux 启动期间的错误消息:
====================
[ 4.283608] remoteproc remoteproc1:启动79000000.r5f
[ 4.283629] remoteproc remoteproce1:启动固件映像 am62a-mcu-r5f0_0-fw、大小为1318400
[4.288046] remoteproc remoteproce1:错误的 phdr da 0x9ca08000 mem 0x26360
正在启动 Weston 套接字...
[4.288062] remoteproc remoteproce1:未能加载程序段:-22
====================

e2e.ti.com/.../8551.Boot_2D00_Up_2D00_Log_2D00_firmware_2D00_load_2D00_failed.txt

根据 TI 论坛的建议、我们已查看 "鼠" 数据输入 "SYSCFG" 项目的源文件并选中、但在 Linux 板启动期间、我们仍然在固件加载方面遇到故障

TI 论坛链接: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1340174/sk-am62a-lp-sk-am62a-lp-real-time-core-usecase/5136718#5136718

我还附加了我们的 "linker.cmd" 报头文件以供参考。

e2e.ti.com/.../1526.linker.zip

请查看上述详细信息、并告知我们是否错过了上述详细信息中的任何步骤或数据。 此外、请为我们的 EVK 提供适当的 RAT 详细信息:SK-AM62A-LP 以运行此 "ePWM 占空比" 一起提供示例。

我们需要运行/测试一个 ePWM 来自 MCU-R5-Core 的示例以及运行 A-53-Core 的 Linux (SK-AM62A-LP EVK)。 请提供相关帮助。

谢谢。

尼萨尔格

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

    您好 Nisarg:

    你是否将资源表添加到你的 linker.cmd 文件中、如你所链接的页面上所记录的那样? 我在您的 linker.cmd 文件中看不到资源表段。

    请参阅"更新 linker.cmd 文件"部分
    https://dev.ti.com/tirex/explore/node?node=A__AeO-0ljXOpe7uiPS6ozGxg__AM62A-ACADEMY__WeZ9SsL__LATEST

    仅供参考、我目前正在调整该页面、以便更易于跟踪(基于您在此处的主题帖等反馈)。 我要进行的更改之一是将"选项2:手动将空的资源表添加到 MCU+项目"部分移到另一页、以便 linker.cmd 文件更新显示在"选项1:将 Linux IPC 添加到 MCU+项目"部分的正下方。

    此致、

    尼克

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

    你是否将资源表添加到你的 linker.cmd 文件中、如你所链接的页面上所记录的那样? 我在您的 linker.cmd 文件中看不到资源表段。

    请参阅"更新 linker.cmd 文件"部分
    https://dev.ti.com/tirex/explore/node?node=A__AeO-0ljXOpe7uiPS6ozGxg__AM62A-ACADEMY__WeZ9SsL__LATEST

    [/报价]

    您好、Nick、

    根据您的建议、我已更新 "linker.cmd" 文件位置   "ePWM 占空比"  然后重新构建固件。  我尝试 运行  "ePWM 占空比"  EVK (SK-AM62A-LP)上的示例、但我们面临的是 R5固件中出现相同错误 在启动期间使用 Linux 加载。  (无法加载程序段:-22)

    请检查以下附件(更新的 "linker.cmd"文件)、并告诉 我们、除了此附件(SK-AM62A-LP)外、是否需要对 EVK (SK-AM62A-LP)进行任何其他更改。 请检查并提供您的输入。

    e2e.ti.com/.../1803.linker.zip

    启动日志:-

    e2e.ti.com/.../Boot_2D00_up_2D00_Log_2D00_Firmware_2D00_load_2D00_programm_2D00_failed_2D00_Final_2D00_log.txt

    Lon Snippet:-

    ================================

    [4.181845] remoteproc remoteproc1:启动79000000.r5f
    正在启动 Weston 套接字...
    [ 4.181866] remoteproc remoteproc1:启动固件映像 am62a-mcu-r5f0_0-FW、大小为1323588
    [4.182546] remoteproc remoteproce1:错误的 phdr da 0x9ca08000 mem 0x264e0
    [4.182559] remoteproc remoteproce1:未能加载程序段:-22

    ================================

    谢谢。

    尼萨尔格

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

    您好 Nisarg:

    我将深入了解  错误的 phdr da 0x9ca08000 mem 0x264e0  状态。 在 linker.cmd 文件中、看起来您在偏移0x9ca0_8000处定义了 DDR_FS_STMB 和 DDR?

    首先、如果我正确了解了 MCU+工程、尤其是 DM R5F 内核的工程、那么您的 MCU R5F 中就不应该有 DDR_fs_stub。

    其次、该操作与默认情况下为 DM R5F 内核分配的存储器区域重叠。 请仔细检查您的内存分配、以确保 MCU R5F 存储器区域不是 并且 DM R5F 存储器区域不会重叠(或在 Linux devicetre 中为 wkup_r5fs0)。 您还应确保 linker.cmd 文件中的存储器分配与 Linux 中的存储器分配相匹配。

    Linux 端的默认分配:
    k3-am62a7-sk.dts

                    wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
                            compatible = "shared-dma-pool";
                            reg = <0x00 0x9c800000 0x00 0x100000>;
                            no-map;
                    };
    
                    wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
                            compatible = "shared-dma-pool";
                            reg = <0x00 0x9c900000 0x00 0x01e00000>;
                            no-map;
                    };
    
                    mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
                            compatible = "shared-dma-pool";
                            reg = <0x00 0x9b800000 0x00 0x100000>;
                            no-map;
                    };
    
                    mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
                            compatible = "shared-dma-pool";
                            reg = <0x00 0x9b900000 0x00 0x0f00000>;
                            no-map;
                    };
    

    此致、

    尼克

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

    我将深入了解  错误的 phdr da 0x9ca08000 mem 0x264e0  状态。 在 linker.cmd 文件中、看起来您在偏移0x9ca0_8000处定义了 DDR_FS_STMB 和 DDR?

    首先、如果我正确了解了 MCU+工程、尤其是 DM R5F 内核的工程、那么您的 MCU R5F 中就不应该有 DDR_fs_stub。

    [/报价]

    您好、Nick、

    我们正在使用 "EPWM_DUTY_CYCLE" TI MCU+SDK 中提供的 EVK 示例(SK-AM62A-LP)

    路径示例: "mcu_plus_sdk_am62ax_09_01_00_39\examples\drivers\epwm\ePWM_Duty_cycle\am62ax-sk\r5fss0-0_freertos\ti-arm-clang"

    注意:"linker.cmd" 在导入的项目文件中已可用。 ("epwm_Duty_cycle" TI 示例项目)

    我们已尝试您的建议更改

    1) 1)从现有中删除"DDR_fs_stb"条目  "linker.cmd"文件

    2) 2)添加了 "DDR_0"  根据您的建议链接输入  

    还启用 "IPC" 对于远程核心 Linux (我们需要运行/测试一个  ePWM  来自 MCU-R5-Core 的示例以及运行 A-53-Core 的 Linux (SK-AM62A-LP EVK)

    通过上述更改、我们构建了代码并在启动时检查了 MCU-R5固件、并且电路板启动时间出现错误。 (  无法加载程序段:-22 )

    启动日志:-

    ====================

    [4.129860] remoteproc remoteproc1:启动79000000.r5f
    [4.129881] remoteproc remoteproc1:正在启动固件映像 am62a-mcu-r5f0_0-fw、大小为1321760
    [4.131282] remoteproc remoteproce1:错误的 phdr da 0x43c00000 mem 0x8000
    [4.131298] remoteproc remoteproce1:未能加载程序段:-22

    ====================

    已附加的完整日志:

    e2e.ti.com/.../Boot_2D00_Up_2D00_log_2D00_DDR0_2D00_entry.txt

    并且在中未观察到跟踪日志 "remoteproc1/trace0"   

    "EPWM_DUTY_CYCLE"  TI 样片示例仍然无法直接在 EVK 板(SK-AM62A-LP)上运行。

    我们需要运行/测试一个  ePWM  TI 示例( "EPWM_DUTY_CYCLE")  配合运行 A-53-Core 的 Linux (SK-AM62A-LP EVK)

    请提供  在 EVK (SK-AM62A-LP) 和运行 A-53-Core 的 Linux 上运行此示例("EPWM_DUTY_CYCLE")所需的所有更改。

    附加文件:

    1) linker.cmd 文件  

     e2e.ti.com/.../6837.linker.zip

    2)电路板 DTS 文件 (k3-am62a7-sk.dts)

     e2e.ti.com/.../k3_2D00_am62a7_2D00_sk.zip

    谢谢。

    尼萨尔格

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

    您好 Nisarg:

    发生什么事了?

    您正在尝试让 Linux 加载为 DM R5F 而不是 MCU R5F 创建的项目。 这就是 Linux 在这些方面带来错误的原因  
    HSM_RAM:origin = 0x43C00000 length = 0x3FF00

    您需要将 MCU R5F 项目加载到 MCU R5F 中、而不是 DM R5F 项目。

    更多详细信息

    与 examples/drivers/ePWM/ePWM/ePWM_Duty_cycle/am62ax-sk/r5fs0-0_FreeRTOS 项目相关的文档不是很清楚、但是该项目是为 DM R5F 而不是 MCU R5F 创建的。

    如果我们看一下 Linux IPC 示例、您会看到文件夹 r5fss0-0_FreeRTOS 适用于 DM R5F、而文件夹 mcu-r5fss0-0_freeRTOS 适用于 MCU R5F:

    mcu_plus_sdk_am62ax_09_01_00_39/examples/drivers/ipc/ipc_rpmsg_echo_linux/am62ax-sk$ ls
    c75ss0-0_freertos  mcu-r5fss0-0_freertos  r5fss0-0_freertos
    

      从为 MCU R5F 构建的不同工程开始、可能会更容易。

    如果您需要指导、可以查看 AM62Ax Academy 的 MCU 模块中的一些有用入门信息:
    https://dev.ti.com/tirex/explore/node?node=A__AJi7DQYi3ubqRUvJuSJ60w__AM62A-ACADEMY__WeZ9SsL__LATEST

    此致、

    尼克

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

    您好、Nick、

    如有可能、请提供  "ePWM 占空比" TI 示例- MCU-R5 。 我们需要一个适用于以下项目的 TI 样片示例:  "ePWM 占空比"  打开  MCU-R5。 (EVK (SK-AM62A-LP) 以及运行 A-53内核的 Linux。)

    谢谢。

    尼萨尔格

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

    您好 Nisarg:

    我正在将您的主题重新分配给我某个专注于 MCU+的团队成员、以提供额外的指导。

    此致、

    尼克

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

    大家好、Nisarg、 我将 在内部与同事进行核实、以探索潜在的解决方案。

    我看到、一个选项是利用现有的项目  "hello_world\am62ax-sk\mcu-r5fss0-0_freertos"  基准。 从此处、您可以添加/移植  "epwm_Duty_cycle\am62ax-sk\r5fss0-0_freertos" 默认项目。

    谢谢!

    保拉

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

    Nisarg、也是一个问题、您能否给我们解释或向我们提供更多信息、为什么您需要为 ePWM 使用 MCU-R5F?  

    谢谢!

    保拉

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

    Nisarg、也是一个问题、您能否给我们解释或向我们提供更多信息、为什么您需要为 ePWM 使用 MCU-R5F?  

    谢谢!

    保拉

    [/报价]
    您好、Paula、
    我们需要为特定操作生成 PWM、并且该 PWM 信号应 在规定的时间内以微秒精度生成。 假设已配置100us、那么在某些情况下、我们希望仅驱动100us 而不是更多时间的 PWM。 我们正在考虑在 MCU-R5内核中进行这种处理、因为它可以提供以微秒为单位的精度。
    如果 PWM 中有任何寄存器可用、并且我们可以通过 A53内核实现相同的功能、那么这就适合我们了。 如果有相同的功能、请提供建议。
    谢谢。
    尼萨尔格
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Nisarg、非常感谢您的答复。 如果您使用 DM R5F 来驱动 ePWM、是否会在您的用例中遇到任何问题/限制?

    保拉

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

    您好、Paula、

    目前、我们将 MCU-R5用于固件和其他接口驱动程序、因此、因此、我们需要在 MCU-R5内核中使用 ePWM。  我们希望根据 MCU-R5上的一些 MCU-GPIO 事件来驱动 ePWM、因此我们不更喜欢使用 DM-R5。 此外、TRM 文档还提到、可以通过 RAT 在 MCU-R5上访问 ePWM。 因此、我们在 MCU-R5内核上查找 PWM 访问示例代码。

    我们的另一种选择是仅通过 MCU-R5启用/禁用 ePWM、这已通过 Linux 驱动程序通过 A53内核进行了预配置。 这种情况可能吗?

    谢谢。

    尼萨尔格

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

    尊敬的 Nisarg:  

    TI 不支持第二种方法。 我们仅支持由单个软件实例控制的外设。 如需了解多核 Academy 模块的更多信息、 请访问:https://dev.ti.com/tirex/explore/node?node=A__ASuOzonPJpyBzKFrqEN1fg__AM62A-ACADEMY__WeZ9SsL__LATEST 

    对于第一个选项、大家都知道、我们的 MCU-SDK 中目前还没有支持和测试过的演示。 但是、我做了快速移植练习。 请参考以下示例、以了解  以帮助您继续。 与此同时、我将在内部检查在 MCU-RF5上支持 ePWM 是否存在任何硬件限制、如果不存在、则可以在未来的 MCU-SDK 中添加此演示。

    移植练习:

    1) 1)使用 MCU-RF5作为基准。  

    • 我能够将 ePWM 添加到 MCU-RF5 Hello World SysConfig 文件。
    • 我还添加了来自 DM-RF5 ePWM 示例的"epwm_Duty_cycle.c"和"main.c"。
    • 我从正在生成的 Hello World 文件中删除了该文件。
    • 在新添加的 main.c 中,我在 main_thread ()内注释了 sciSERVER_INIT()。
    • 下面提供了一些快照

    2) 2)将"EPWM"添加到 MCU-RF5驱动程序库中

    • 以便在驱动程序"libs"中添加"ePWM"。 我在下方将添加到  source\drivers\makefile.am62ax.r5f.ti-arm-clang  (与我在 sources\drivers\makefile.am62ax.dm-r5f.ti-arm-clang 中看到的类似)

    • 然后、我重新编译所有库、但如果您愿意、可以查看 makefile.am62ax 如何仅编译 R5F 的驱动程序库。
    • 对于重新构建库、我执行了:

    CD C:\ti\mcu_plus_sdk_am62ax_09_02_00_38

    gmake libs profile=调试

    • 完成以上更改后、我能够重建修改后的 HelloWorld。
    • 我使用示波器进行了测试、我在 J3的引脚24 (扩展接头)中看到输出1KHz 信号   

    如上所述、我目前正在内部进行检查以确认、但与此同时、如果您愿意、可以尝试上述操作、看看这是否适用于您。

    谢谢!

    保拉