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:根据来源或示例创建自定义以太网/IP 项目

Guru**** 2589280 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1082879/lp-am243-creating-a-custom-ethernet-ip-project-from-source-or-based-on-example

部件号:LP-AM243
“Thread:sysconfigtest”中讨论的其他部件

首先,我在 Ubuntu 18.04系统上安装了 CSS v11,MCU+ SDK 8.01.00,独立 sysconfig 1.11.0和 ti-CGT-armlvm_1.3.LTS。 CSS 可以识别 sysconfig 和 TI ARM 编译器。 我还成功地从 CSS 内部的 SDK 构建并运行了 hello_world 应用程序,并通过了所有测试。

我正在尝试创建一个 Ehthernet/IP 项目,以从 Lidar 传感器获取数据。 我想设置一个利用启动板的以太网功能的项目。 在尝试创建新项目时,我尝试创建要添加的 syscfg 文件,但 在基于设备创建文件时,我的选项为 AM243x_ALV_BETA 和 AM243x_ALX_BETA。 我已经尝试过这两种方式,但目前看不到任何不同。 配置打开后,我看不到以太网/IP 的任何选项。 我认为这是因为我错过了 TI 驱动程序,需要以某种方式将其链接起来,但看不到任何选项。 有人能解释如何做到这一点吗?

我的另一个尝试是从 SDK 导入示例,但所有源文件都保留在本地 SDK 位置。 因此,我的工作站中启用了 git 的 repo 无法上传对文件“App.c”所做的任何更改,例如,大多数代码都是根据文档实施的。 这并不理想,我不确定这是否是启动项目的正确途径。 除此之外,我不确定哪些函数调用完全必须保留,以及我可以写些什么。 我的假设是,我可以在 for (;)循环中的函数“void EI_APP_mainTask”中开始实施自定义项目。 是否有更好的方法来设置自定义以太网/IP 项目,或者我是否走了正确的路,也许我只需要将一些源文件移动到我自己的本地工作空间 repo?

我们非常感谢您提供有关需要采取哪些措施来完成此任务的任何指导,我可以提供任何可能缺少的信息。

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

    你(们)好

    [引用 userid="514951" url="~/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/基于 ARM 的微控制器-forum/1082879/lp-am243-creating -a-custom 以太网-ip-project-from -source-or-based -On-example]I 正在尝试创建一个来自 Lidethernet /ip-project 的数据,以获取来自该传感器的数据。 我想设置一个利用启动板的以太网功能的项目。 在尝试创建新项目时,我尝试创建要添加的 syscfg 文件,但 在基于设备创建文件时,我的选项为 AM243x_ALV_BETA 和 AM243x_ALX_BETA。 我已经尝试过这两种方式,但目前看不到任何不同。 配置打开后,我看不到以太网/IP 的任何选项。 我认为这是因为我错过了 TI 驱动程序,需要以某种方式将其链接起来,但看不到任何选项。 有人能解释如何做到这一点吗?

    首先, AM243x_ALV_BETA 对应 于 TMDS243GPEVM , AM243x_ALX_BETA 对应 于 LP-AM243

    打开 sysconfig 工具后,如果选择以下选项并选择“开始”,则应在“TI 工业通信工具包”下看到“以太网/IP”的模块。

    但建议从 SDK 示例开始。

    [引用 userid="514951" url="~/support/icles/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1082879/lp-am243-creating -a-custom-ethernet-ip-project-from -source-or-based -On-example]"我的另一个尝试是从本地 SDK 导入所有文件,但是从源位置导入所有 SDK 文件。 因此,我的工作站中启用了 git 的 repo 无法上传对文件“App.c”所做的任何更改,例如,大多数代码都是根据文档实施的。 这并不理想,我不确定这是否是启动项目的正确途径。 除此之外,我不确定哪些函数调用完全必须保留,以及我可以写些什么。 我的假设是,我可以在 for (;)循环中的函数“void EI_APP_mainTask”中开始实施自定义项目。 是否有更好的方法来设置自定义以太网/IP 项目,或者我是否走了正确的路,也许我只需要将一些源文件移动到我自己的本地工作空间 repo?

    “MCI_plus_SDK\examples\industrial_comms”中的示例使用“链接”选项来处理示例项目中使用的文件。 其他 SDK 示例使用“副本”,因此您不应该在其他示例中遇到此问题。 我正在附加一个修补程序,您可以将该修补程序应用于以太网/IP 项目的.projectspec 文件,以便将文件“复制”到工作空间,而不是从 SDK 链接。
    修补程序: e2e.ti.com/.../Patch_2D00_for_2D00_copy_2D00_option_2D00_for_2D00_files_2D00_in_2D00_EtherNet_2D00_IP_2D00_example.zip

    SDK 示例为您提供了开始开发示例的基础。 您可以查看示例文档以了解所需的 API 和需要遵循的顺序。  

    您提到要测试以太网功能。 因此,如果您想使用标准以太网, 请查看  SDK 中的网络示例。 请注意 ,以太网/IP 适配器演示 提供 了基于 PRU-ICSS 的解决方案 ,用于集成以太网/IP 适配器功能。  以太网/IP 是一系列网络协议的成员,这些协议在上层实施共同工业协议(CIP)。

    此致

    达瓦尔·坎德拉

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

    感谢达瓦尔的回应并消除了 sysconfig 的混乱。 我将从推荐的 SDK 示例开始,并使用您的修补程序制作本地副本。 我的任务是移植使用以太网/IP 与传感器通信的 c++代码。 面向对象的编程非常抽象,因此设置并不那么困难(至少要看表面)。 示例代码看起来更复杂,但我将再详细介绍几次,我确信我将能够看到我要移植的代码的通用性。 目前我一直在查看 MCU+文档,特别是对以太网示例部分的剖析。 当我再次思考这个例子并看看我是否可以开始时,我会将这个问题标记为已解决。 我不需要完成我的端口,就可以将其视为解决方案,就像我理解这个例子一样。

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

    此外,为了对修补程序进行澄清,该示例已导入到我的工作空间中以用于代码撰写器(~ë/worksapce_vXX/EtherNetIP_adapter_MII_DEMO_am243x-LP_r5fs0-_FreeRTOS_ti-arm-clang)。 在该文件夹中,我运行了 git init,git add .,git commit -m "message",然后推入 repo。 我认为修补程序应该从特定位置运行。 我是否可以将 git 修补程序中的文件路径更改为与我的项目文件夹相关,并按照您的计划执行修补程序?

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

    雅各布
     我提供的修补程序应该从 SDK 的根文件夹运行。 该修补程序仅修改用于创建 CCS 项目的 projectspec 文件。

    因此,我不理解更新修补程序的必要性。 请您澄清这一需求吗?

    此致
    达瓦尔·坎德拉

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

    好的,我知道在哪里运行它。 在补丁程序中,diff 将文件夹 am64x-EVM 显示为更改的文件位置,我认为,我只需要将其更改为 am243x-LP,因为这是我正在使用的主板?

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

    你(们)好
    好的,我现在理解你的问题。  

    是的,请将其更新为“am243x-lp”。 例如,我在 am64x-EVM 上创建了修补程序。

    此致
    达瓦尔·坎德拉

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

    我收到此错误:

    错误:修补程序失败:examples/industrial_comms/ethernetip_adapter_demo/MII/am243x-lp/r5fs0-0_FreeRTOS/ti-arm-clang/example.projectspec:108
    错误:examples/industrial_comms/ethernetip_adapter_demo/MII/am243x-lp/r5fs0-0_FreeRTOS/ti-arm-clang/example.projectspec:补丁不适用

    的内部

    ~/ti/mc_plus_sdk_am243x_08_01_00_36/examples/industrial_comms/ethernetip_adapter_demo/MII/am243x-lp/r5fs0-0_FreeRTOS/ti-arm-clang

    由于修补程序不起作用,我根据修补程序文件中的差异手动编辑了 example.projectspec 文件。 更改的文件位于根 SDK 文件夹中的 idustrial comms 示例中。

    当我打开资源管理器并从“用于 AM243x-08.01.00.36->示例->开发工具->AM243x LaunchPad -> INDUSTRIAL_COMs->EtherNetIP_adapter_DEMO->MII->r5fs0-0_freetos 的 Software->MCU+ SDK”导入项目时,文件不会在本地移动。 我的导入方式是否错误?

    下面是 example.projectspec 现在的样子

    ></configuration>
            <pathVariable name="MCU_PLUS_SDK_PATH" path="${COM_TI_MCU_PLUS_SDK_AM243X_INSTALL_DIR}" scope="project" />
            <file path="../../../../board/am243x-lp/AppPerm.c" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../board/am243x-lp/AppPerm.h" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../board/am243x-lp/Board.c" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../board/am243x-lp/Board.h" openOnCreation="false" excludeFromBuild="false" action="copy">
     				</file>
            <file path="../../../../App.c" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../App.h" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../AppClass71.c" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../AppClass71.h" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../appPhyReset.c" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../../../../appPhyReset.h" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>
            <file path="../example.syscfg" openOnCreation="false" excludeFromBuild="false" action="copy">
            </file>

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

    很抱歉,我直接导入了 CCS 项目,而不是使用资源管理器。 我现在已经有了我要找的本地副本了。 感谢你的帮助。

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

    你(们)好
    您是否可以尝试使用“将 SDK 与 CCS 项目配合使用”中提到的步骤导入项目?

    此致
    达瓦尔·坎德拉

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

    达瓦尔,我想问几个关于 EtherNetIP 演示的问题。

    1. AppPerm.c 专用于向板载 QSPI 闪存写入数据,对吗? 此示例设置为将配置数据写入永久闪存并更新板载 LED 阵列。  

    2.配置中确切包含什么内容? 它是供应商 ID,设备类型,版本...? 本示例中供应商 ID,设备类型,版本是指什么? 这是一个与之交织的芯片,还是仅仅是任意的芯片?

    3.运行 ETHPHY 是否需要配置数据? 或者它仅用于显示如何与 QSPI 闪存连接。

    4.类 ID 是否具有任意性,可以随意选择任何 ID 号?

    对于我自己的应用程序,我需要修改回调和 cipSetup 的设置。 然后我也可以修改运行方法,我认为我不一定需要 QSPI 闪存。 它看起来就像在示例中用于演示目的,我可以删除 I2C,因为我不需要实施 LED 阵列。 我真的只需要通过以太网/IP 协议通过以太网与传感器通信。

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

    你(们)好

    [引用 userid="514951" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1082879/lp-am243-creating -a-custom 以太网-ip-project-fer-source-or-based on example/40104010379#4010379]1]1。 AppPerm.c 专用于向板载 QSPI 闪存写入数据,对吗? 此示例设置为将配置数据写入永久闪存并更新板载 LED 阵列。  [/引用]

    是的,此文件侧重 于永久数据存储的处理。 启动时将从永久存储中提取某些配置。 请检查示例代码中的“EI_APP_INIT()->EI_APP_ADpInit()->EI_APP_Perm_Read()”函数。

    如文档中所述, “AM24x 的以太网/IP 适配器示例实现了一个特定于供应商的对象,类 ID 为0x0070,属性在0x0300之后的供应商特定索引范围内。 索引0x0300到0x0304处的属性被添加到生产装配体中,索引0x0308到0x030C 处被添加到消费装配体中。 其中,索引0x0308处的属性链接到 AM24x 评估套件上的 LED 阵列。

    [引用 userid="514951" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1082879/lp-am243-creating -a-custom 以太网-ip-project-fer-based 源代码或基于源代码的-example/40104010379#4010379]2"。 配置中确切包括哪些内容? 它是供应商 ID,设备类型,版本...? 本示例中供应商 ID,设备类型,版本是指什么? 这是一个与之交织的芯片,还是仅仅是任意的芯片?

    有关永久存储中存储的内容的详细信息,请参阅 AppPerm.h 文件中的“EI_APP_Perm_SCfgData_t”结构。

    有关供应商 ID,设备类型等的详细信息,请参见 Identity Object (Class Code: 0x01) API 文档。

    [引用 userid="514951" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1082879/lp-am243-creating -a-custom 以太网-ip-project-fer-based 源代码或基于 ARM 的微控制器-example/401040104010379]'

    3.运行 ETHPHY 是否需要配置数据? 或者它仅用于显示如何与 QSPI 闪存连接。

    [/引用]

    如果您在 AppPerm.c 中看到“EI_APP_Perm_Read()”,则会调用大量堆栈 API,并将值存储在永久存储中。 如果您不想从永久存储设置这些 API,则可以删除闪存使用量,但可以根据所需的配置进行所需的堆栈 API 调用。  

    此永久数据还会受到0x01类的1/2重置服务的影响。 有关详细信息,请参阅“EI_APP_Perm_reset()”。

    [引用 userid="514951" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1082879/lp-am243-creating -a-custom 以太网-ip-project-fer-based 源代码或基于 ARM 的微控制器-example/401040104010379]'

    4.类 ID 是否具有任意性,可以随意选择任何 ID 号?

    对于我自己的应用程序,我需要修改回调和 cipSetup 的设置。 然后我也可以修改运行方法,我认为我不一定需要 QSPI 闪存。 它看起来就像在示例中用于演示目的,我可以删除 I2C,因为我不需要实施 LED 阵列。 我真的只需要通过以太网/IP 协议通过以太网与传感器通信。

    [/引用]

    是的 ,您可以根据需要修改示例。AppClass71.c 演示类,实例和属性的创建,并修改其参数值。  

    I2C LED 与 SDK 示例中的一个属性相关联,仅供演示。 您可以将其删除。

    此致
    达瓦尔·坎德拉

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

    谢谢,我相信你已经帮助我全面 了解了该示例中的情况 和要去哪里。 我感谢这些回答并帮助理解。