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/PRU-ICSS-INDUSTRIAL-SW:EtherCAT 从站的二进制映像

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/602817/rtos-pru-icss-industrial-sw-binary-image-for-ethercat-slave

器件型号:PRU-ICSS-INDUSTRIAL-SW

工具/软件:TI-RTOS

我正在使用 PRU-ICSS-EtherCAT_Slave_01.00.02.01工业软件包、并且能够构建 EtherCAT_SLAVE_FULL_AM335x_ARM 项目。

但该项目不再生成"_ti.bin"文件。 它 生成  EtherCAT_SLAVE_FULL_AM335x_ARM.out 和  EtherCAT_SLAVE_FULL_AM335x_ARM.bin。 我可以使用调试器下载".out"文件并运行应用程序。 但是、当我加载".bin"文件时、它不起作用。

我们是否需要立即生成_ti.bin 文件、还是不再需要它?

此致

Mohit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    EtherCAT 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    有关使用引导加载程序的说明和创建_ti.bin 的说明、请访问:
    processors.wiki.ti.com/.../AM437x

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    我能够生成"_ti.bin"文件、但它不起作用。 同一个文件夹生成了".out"应用程序、如果我使用调试器运行、该应用程序工作正常。
    使用 SPI 闪存器工具将"_ti.bin"加载到闪存中。 我还连接了 UART 以获取调试日志、我可以引导加载程序日志。 它打印"跳转到 StarterWare 应用程序..." 然后我看不到应用程序中的任何日志。 此外、TwinCAT 未检测到 EtherCAT 器件、因此这意味着如果我尝试从闪存运行、EtherCAT 应用程序不会运行。

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

    Mohit、

    您在什么电路板上尝试此操作、AM335x ICEv2或定制硬件。 您使用的是 Processor SDK RTOS 或旧版 ISDK 软件中的引导加载程序吗? 您能否确认引导加载程序和应用程序均为_ti.bin 格式、并且该应用程序已刷写到 SPI 闪存上的偏移量0x20000。 从您的n`t 来看、ROM 引导加载程序似乎能够加载次级引导加载程序(SBL)、但却能够跳转到应用程序。 通常、为了调试此类问题、我们在 ARM 上加载次级引导加载程序(.out)并单步执行代码。 您是否尝试查看代码在何处挂起?

    对此,
    Rahul

    PS:请运行诊断测试以确认 DDR 和 SPI 或闪存读取写入在您的定制板上正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Rahul、
    它是使用 AM335x 处理器的定制板。 我正在使用 Processor SDK RTOS 中的引导加载程序。
    是的、我将两个文件都设置为"_ti.bin"格式、并且在 SPI 闪存上将 APP 刷写到偏移量0x20000。 我加载了次级引导加载程序、但它没有挂起任何位置。
    如果我们按照 SBL_main.c 中引导加载程序的代码流程进行操作 因此、它一直运行到下一个点、然后什么也不会发生。

    /*为应用程序提供控制权*/
    pfnSBLAppEntry =(void (*)(void)) gSblEntryPoint;
    (*pfnSBLAppEntry)();

    PDK 版本为 pdk_am335x_1_0_5。

    以下是 UART 控制台上显示的完整日志:

    StarterWare 引导加载程序
    BOARDInit 状态[0x0]
    SoC :[AM335X]
    内核 :[A8]
    检测到电路板 :[ICE 版本2]
    基板版本:[未知]
    子卡版本:[未知]
    GPIO 实例编号:0
    引脚编号:18
    MCSPI 实例编号:0
    通道/芯片选择编号:0
    实例地址为48030000

    正在复制图像的标题
    将映像从闪存复制到 DDR
    跳转到 StarterWare 应用程序...



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

    Mohit、

    以下是几个问题:

    1.是否尝试使用引导加载程序引导任何其他更简单的应用程序,如自定义电路板上的 LED 闪烁示例。 我们需要了解这是否适用于 EtherCAT 从站应用。

    2.在测试引导加载程序之前、您是否已修改电路板库以考虑 DDR、时钟和引脚多路复用器的更改?  

    请提供 Processor SDK RTOS 和 PRU-ICSS FW 的版本号,以便我们可以检查是否存在已知问题或在最后尝试报告此问题。引导加载程序复制应用后,您可以检查二进制文件是否加载到 DDR 的预期位置? 您可以在 CCS 中从.out By (run- Load Program -> Load Symbols)加载符号、以查看二进制文件是否正确加载以及 main 是否位于正确的位置。

    此外、如果您可以共享引导加载程序和应用程序以及输出二进制文件、以便我们重现此问题、这可能会很有用。

    此致、

    Rahul  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rahul、
    我尝试使用分步执行进行调试、发现引导加载程序读取的 SPI 不起作用、因为 imageHdr 的变量未更新。 我检查了 pinmux 并与官方 pinmux 文件进行了比较。 我发现 MCSPI 引脚配置存在一些差异(PIN_RX_ACTIVE、PIN_PULL_UD_EN、PIN_PULL_TYPE_SEL)。 因此、我更新了这一部分、以使用与 PDK 官方文件夹中相同的引脚配置。 现在它正在工作、应用程序在刷写映像后正在运行。
    我使用 Pinmux 实用工具生成了 pinmux 文件、但我仅通过选择引脚使用了默认配置、而没有检查其他标志。 如果我在 Pinmux 实用程序中加载".pinmux"文件、然后进行更新可能是因为这种错误不会发生。

    此致
    Mohit