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/am3359:EtherCAT 问题

Guru**** 2614265 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/655863/rtos-am3359-ethercat-issue

器件型号:AM3359
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

尊敬的 David:

这是一篇新文章,但它涉及我之前的文章 RTOS/AM3359- EtherCAT 问题:我认为它已经解决,但有一个新问题。

在更新 Try PRU-ICSS-EtherCAT-SLAVE 01_00_05_00时、我遇到了一个小问题!!!

在此之前、我还更新了 PDK pdk_am335x_1_0_9、并重新构建了所有组件的库。

然后、我从 PRU 生成了两个项目:EtherCAT_SLAVE_FULL_AM335x_ARM (使用 Beckoff 栈5.12进行补丁)和 EtherCAT_SLAVE_DEMO_AM335x_ARM。

我想编译这两个项目并且:不可能!!!

编译时出现相同的错误:osal 库中存在未定义类型的问题(在我之前的文章中、我包含了日志的图片、但我列出了它、抱歉...)

我尝试调查并找到错误。

在文件 am335x_app_pa8fg.c 中,在文件夹 am335x_release\ConfigPkg\cfg 中 ,我可以找到 indirection:

/* Module_startupDoneFxn_C */
_far__ const CT_ti_osal_Settings_Module_startupDoneFxn ti_osal_Settings_startupDoneFxn_C =((ct_ti_osal_Settings_Module_startupDoneFxn) 0);
但是、如果我搜索类型 CT__ti_osal_Settings_Module_startupDoneFxn、则此类型没有定义

例如,在上一个命令中:

/* Module__loggerFxn8__C */
__far__ const CT_ti_osal_Settings_Module_loggerFxn8 ti_osal_Settings_Module_loggerFxn8_C =((ct_ti_osal_Settings_Module_loggerFxn8) 0);
如果我搜索类型 CT_ti_osal_Settings_Module_loggerFxn8、我可以找到其定义文件 C:\ti\pdk_am335x_1_0_9\packages/ti\osal\Settings.h:

/* Module_loggerFxn8 */
typedef xdc_runtime_Types_LoggerFxn8 ct_ti_osal_Settings_Module_logerFxn8;
_extern __far__ const CT_ti_osal_Settings_Module_loggerFxn8 ti_osal_Settings_Module_loggerFxn8__C;
#ifdef ti_osal_Settings_Module_loggerFxn8__CR
#define ti_osal_Settings_Module_loggerFxn8_C (*((ct_ti_osal_Settings_Module_loggerFxn8*)(xdcRomConstPtr + ti_osal_Settings_Module_loggerFxn8_C_offset))))
其他
#define ti_osal_Settings_Module_loggerFxn8 (ti_osal_Settings_Module_loggerFxn8__C)
#结束

定义的所有类型的 TI 都是相同的!!!!

Module_startupDoneFxn_C 上只有一个错误

当然、我尝试在文件 Settings.h 中添加相同的定义:

/* Module_startupDoneFxn_C */
typedef xdc_runtime_types_startupDoneFxn ct__ti_osal_Settings_Module_startupDoneFxn;
_extern __far__ const CT_ti_osal_Settings_Module_starpDoneFxn ti_osal_Settings_Module_starpDoneFxn_C;
#ifdef ti_osal_Settings_Module_startup DoneFxn__CR
#define ti_osal_Settings_Module_startupDoneFxn_C (*(((ct_ti_osal_Settings_Module_startupDoneFxn*)(xdcRomConstPtr + ti_osal_Settings_Module_startupDoneFxn_C_offset)))
其他
#define ti_osal_Settings_Module_startupDoneFxn (ti_osal_Settings_Module_startupDoneFxn_C)
#endif

但它当然不起作用、我在编译 osal 库时出错:

在/ti/PDK_AM~2/packages/ti/binary/pruss_app_sorte_slave/obj/icev2AM335x/a8host/release/pruss_app_sorte_slave_configuro/packages/cfg/sorte_icev2am335x_app_pa8fg.c:43:0中包含的文件中:
/ti/PDK_AM~2/packages/ti/osal/Settings.h:191:9:错误:未知类型名称"XDC_RUNITY_TYS_STARTupDoneFxn"
 typedef xdc_runtime_types_startupDoneFxn ct__ti_osal_Settings_Module_startupDoneFxn;

您是否曾为这些项目进行过编译?

成功了吗?

您能告诉我它为什么不起作用,并帮助我解决问题吗?

非常感谢您的帮助。

 

Laurence

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

    'ct_ti_osal_Settings_Module_startupDoneFxn'在此未声明(不在函数中)AM335x_app_pa8fg.c/EtherCAT_SLAVE_FULL_AM335x_ARM/AM335x_DEBUG/CONFIGPkg/PACKAGE/CFG行6888C/C++问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Lawrence

    我能够构建安装并运行最新版本。 我发现您的安装有问题。

    PRU-ICSS EtherCAT 1.0.5需要处理器 SDK 4.1.0。 这在《PRU-ICSS EtherCAT 用户指南 》http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Component_Version 的组件版本部分进行了说明 。  不保证使用其他版本的 Processor SDK。

    这不是最新版本的 Processor SDK 4.2.0。

    通过转至 当前处理器 SDK 下载页面中的先前版本部分、可以找到处理器 SDK 的早期版本链接。 对于 Windows 上的 RTOS、可在本页底部 http://software-dl.ti.com/processor-sdk-rtos/esd/AM335X/latest/index_FDS.html 附近找到该文件

    对于 Windows 上的 RTOS、这将使您转至 http://software-dl.ti.com/processor-sdk-rtos/esd/AM335X/04_01_00_06/index_FDS.html 

    请注意、Processor SDK 4.1.0需要 CCS 7.2.0.00013。  同一页面上包含此版本 CCS 的在线下载链接。 我通常更喜欢 CCS 的离线下载。 这 可以在 http://processors.wiki.ti.com/index.php/Download_CCS 上找到

    有关 CCS 功能的安装说明、请参阅 http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Getting_Started_Guide#Download_and_install_software 下载和安装软件部分的 Processor SDK 入门指南

    安装 CCS 后需要注意的一点。 CCS 将提供的更新。 这是好的、但 我们可能希望避免更新。 其中一个更新可以 是从当前版本(例如 CCS 7.2)转到 CCS 7.3。 取消选中该复选框很重要、 不要执行该更新!

    为避免出现问题-我 始终在  空 的 ti 目录中启动 PRU-ICSS-EtherCAT 和 Processor SDK 安装。  如果我希望保持我正在处理的早期版本 、 我首先卸载 CCS、然后 将现有的 ti 目录重命名为 另一个名称、如 ti_ver5_save。

     安装 CCS、Processor SDK 和 PRU-ICSS EtherCAT 后、有必要启动 CCS、以便它能够检测已安装的器件、等待几分钟、让 CCS 完成扫描、然后关闭 CCS。  

      如果您使用的是 TI AM335x ICEv2或  http://processors.wiki.ti.com/index.php?title=PRU_ICSS_EtherCAT&oldid=230968#Supported_Devices 中列出的任何受支持的 EVM  ,则无需在 Processor SDK 中构建任何内容即可支持 PRU-ICSS EtherCAT 示例。

    要创建项目文件、请按照 http://processors.wiki.ti.com/index.php?title=PRU_ICSS_EtherCAT&oldid=230968#Generating_Project_files 中的步骤操作  

    David

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

    尊敬的 David:

    最后一个消息...

    我成功地使用 pdk_am335x_1_0_8 (由 Processor SDK 4.1.0提供)和 PRU-ICSS-EtherCAT_Slave_01.00.05.00编译了我的项目。

    一切都正常、但我有一个新问题...

    为了链接我的项目、我使用了几个 libairies:

    • ti.drv.gpmc.aa8fg
    • ti.drv.spi.aa8fg
    • ti.board.aa8fg

    这些 libairies 在 am335x_app.cfg 文件中提供、设置如下:

    • VAR GPMC = XDC.loadPackage ('ti.drv.GPMC');

    • VAR SPI = XDC.loadPackage ('ti.drv.SPI');
    • VAR 板= XDC.loadPackage ('ti.board');

    实际上、这些 libairies 的位置的完整路径为:

    • "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\gpmc\lib\am335x\a8\release\ti.drv.gpmc.aa8fg
    • C:\ti\pdk_am335x_1_0_8\packages/ti\drv\spi\lib\am335x\a8\release\ti.drv.spi.aa8fg
    • C:\ti\pdk_am335x_1_0_8\packages/ti\board\lib\lectraAxis\a8\release\ti.board.aa8fg

    对于版本控制重新启动、我希望将所有这些库保存在我放置所有自己项目的其他位置

    但我没有找到如何改变找到利伯利的路径。

    实际上,文件夹中的 linker.cmd 文件中提到了路径。。。 AM335x_release\configPkg

    但该文件由 文件夹 C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\ARM 中的脚本 linkcmd_BM_v7a.xdt 生成

    此文件中的命令如下:

    %if ($args.length > 0){
    输入(
       %for (var i = 0;i <$args.length;i++){
       "`$args[i]`"
       %}
    )
    %}

    结果是:

    输入(
       "D:\Users\l.cazaban\Projets\Pilotage\6_Products\CNumDsp2015\src\ethercat_slave_full_lectra_pdk8_pru5\AM335x_release\configPkg\package\cfg\am335x_app_pa8fg.oa8fg"
       "D:\Users\l.cazaban\Projets\Pilotage\6_Products\CNumDsp2015\src\ethercat_slave_full_lectra_pdk8_pru5\src\sysbios\sysbios.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\gpmc\lib\am335x\a8\release\ti.drv.gpmc.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\spi\lib\am335x\a8\release\ti.drv.spi.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\board\lib\lectraAxis\a8\release\ti.board.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\csl\lib\am335x\a8\release\ti.csl.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\gpio\lib\a8\release\ti.drv.gpio.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\pruss\lib\a8\release\ti.drv.pruss.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\i2c\lib\a8\release\ti.drv.i2c.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\drv\uart\lib\a8\release\ti.drv.uart.aa8fg"
       "C:\ti\pdk_am335x_1_0_8\packages/ti\osal\lib\tirtos\am335x\a8\release\ti.osal.aa8fg"
       "C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\arm\rtsv7a\lib\GNU.targets.arm.rtsv7a.aa8fg"
       "C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\arm\rtsv7a\lib\boot.aa8fg"
       "C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\arm\rtsv7a\lib\syscalls.aa8fg"

    因此、我的问题是在哪里可以找到并更改所描述的数组参数:

     $args[]    -应链接的零个或多个库的数组 (按它们在参数列表中的显示顺序)

    您能再帮我一点吗?

    非常感谢

     

    Laurence

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我发现了它!!!
    它在工程属性中进行了分隔:tab XDCTools/Package Repository!
    谢谢

    Laurence