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.

[参考译文] AM2434 MCU-PLUS-SDK 从 8.6.0.43 迁移到 11.01.00.17

Guru**** 2874030 points

Other Parts Discussed in Thread: IND-COMMS-SDK, AM6442, SYSCONFIG, AM2434

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1619507/mcu-plus-sdk-am243x-am2434-mcu-sdk-migration-from-8-6-0-43-to-11-01-00-17

器件型号: AM243X - MCU-PLUS-SDK
主题中讨论的其他器件: SysConfig、IND-COMMS-SDK 、AM6442、 AM2434

尊敬的 TI:

我有一个工程正在使用 SDK 8.6.0.43 和 SysConfig 1.16.2。

现在我想将其升级到 SDK 11.1.0.17 或 Industrial Comm SDK 11.0.0.13。 但我无法构建:

错误:调用 scripting.AddModule() 时发生异常:没有这样的资源:/ industrial_comms/Profinet / Profinet / syscfg.js 

我尝试了不同的 SysConfigs (1.25.0、1.23.2)、但没有成功。

没有此类资源:/ news/1.aspx 

我做得更好吗?

此致、Kalman

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

    您好、Kalman:  

    您使用的是独立的 SysConfig GUI(而不是 CCS 中的 GUI)?

    在这种情况下、您需要手动更新 SysConfig 文件的标头以引用正确的产品。 PROFINET 已从 MCU+SDK 转移到两个版本之间的 Ind-comms-SDK。  

    您可以将 其与 11.x ind-comms-SDK 中 Profinet 示例的 SysConfig 进行比较。  

    应该有一个与 am64 类似的标头:

    /**
    *这些参数是在生成此文件时使用的。 它们将自动应用于后续载荷
    *通过 GUI 或 CLI 运行带有“--help"的“的 CLI 以获取有关如何覆盖这些参数的更多信息。
    *@cliArgs --device “AM64x"--part"“--part"默认“默认值“--package “ALV"--context“--context “r5fss0-0"--product“--product “INDUSTRIAL_COMMUNICATIONS_SDK@11.00.00
    *@v2CliArgs --器件“AM6442"--封“封装“FCBGA (ALV)“--变体“AM6442-D"--“--上下文“r5fss0-0"--“--产品“INDUSTRIAL_COMMUNICATIONS_SDK@11.00.00
    *@版本{“tool":“:“1.22.0+3893"}“}
    */

    更改后、尝试再次打开它。  

    如果您仍有问题、请验证 GUI 是否包含在 SDK 列表中、以及您要使用的 SDK。 如果没有、您可以添加它并指向正确的文件夹。 您还可以创建一个空的 SysConfig、以便获取具有该版本正确标头的 SysConfig。  

    在 SysConfig 之间的更大步骤中、一些字段描述可能也发生了变化。 如果您不确定、也可以对比一下、或者告知我们。  

    此致

    Christof

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

    您好 Christof、

    感谢您的提示。 我通过从 c:\ti\ind_comms_sdk_am243x_11_00_00_13\examples\industrial_comms\Profinet device_demo\rt_mii\am243x-evm\r5fss0-0_freertos\example.syscfg 中复制粘贴操作、对我的 syscfg 文件进行了黑客攻击

    * @cliArgs --device "AM243x_ALV_beta" --part "ALV" --package "ALV" --context "r5fss0-0" --product "INDUSTRIAL_COMMUNICATIONS_SDK@11.00.00"
    * @v2CliArgs --device "AM2434" --package "FCBGA (ALV)" --context "r5fss0-0" --product "INDUSTRIAL_COMMUNICATIONS_SDK@11.00.00"
    * @versions {"tool":"1.22.0+3893"}

    然后在 我的 CCS 工程中调整了“产品“:Industrial SDK 11.0.0.13 和 SysConfig 1.23.2。 我收到了以下错误消息:构建时:

    TypeError: Cannot read properties of undefined (reading 'EDC_SYNC_OUT0')

    由于收到相同的错误消息、因此我无法使用内置 SysConfig 编辑器在 CCS 中打开 syscfg 文件。

    以下是我的 syscfg 文件中的关键行:

    pruicss1.AdditionalICSSSettings[0].PruIepIO[0].PRU_ICSSG0_IEP.EDC_SYNC_OUT0.$used = true;
    pruicss1.AdditionalICSSSettings[0].PruIepIO[0].PRU_ICSSG0_IEP.EDC_SYNC_OUT1.$used = true;

    我试图评论他们,但我得到了下一个错误在另一行... 以此类推。

    也许我必须使用新集 SysConfig 重新创建配置。 我想避开这个,因为我有一个漂亮的复杂的设计,我很高兴 让它准备好 一次。 此外、我无法并排运行新的 1.26 和旧的 1.16 SysConfig。

    你有什么更好的想法吗?

    此致、Kalman

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

    您好、Kalman:

    从 SDK 8.6 迁移到 SDK 11.0 后发生了多项更改。 主要变化是 将工业通信示例移到了单独的封装中。 由于这种通过更改 syscfg 标头进行的直接迁移可能不起作用。

    您能否参考 SDK 8.6 和 ICSDK 11.0 中 PROFINET 示例的打包 syscfg、检查这两个版本之间的差异? 您可以尝试通过比较这两个文件来调整配置差异、并检查这样是否解决了问题。  

    如果您已经进行了更改、请告诉我您在发布更改后发现了什么错误、我会在我这边检查一次。

    此致、

    Laxman

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

    您好、Laxman:

    我已在 1.26.2 中手动重新创建了 sys config 文件、然后  使用 Industrial SDK 11.0.0.13 和 SysConfig 1.26.2 配置了我的 CCS 工程。 现在、我必须手动将 inlude 路径添加到工程属性、否则生成的源文件无法看到所需的 include 文件。 我还不知道。

    我希望在这个 SDK 升级版中能减少处理工作和复杂问题...

    此致、Kalman

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

    我已修复包含路径、编译可以! 下一个问题是在链接:我必须破解库路径也.

    顺便说一句:我不得不借 cslr_ecap.h 构建较旧的 SDK、因为新的  c:\ti\ind_comms_sdk_am243x_11_00_00_13\mcu_plus_sdk\source\drivers\eCAP\v0\ hw_ecap.h 不兼容。 你为什么要这么大幅度地改变它?

    此致、Kalman

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

    您好、Laxman:

    生成时的下一个错误消息:

    Python:无法打开文件'C:\\ti\\ind_comms_sdk_am243x_11_00_00_13\\MCU_PLUS_sdk\\tools\\boot\\signing\appimage_x509_cert_gen.py

    原因:tools/boot/signing 目录来自 SDK。

    Shelli 从旧的 SDK 复制缺少的目录、或者我应该在项目中更改什么?

    此致、Kalman

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

    您好、Kalman:

    对延迟响应表示歉意。

    在最新的 SDK 中更改了证书的路径。 您可以在以下路径中找到证书:“IND_comms_sdk_am243x_11_00_00_13\MCU_PLUS_sdk\source\security\security_common\tools\boot\signing\appimage_x509_cert_gen.py"</s>“

    此致、

    Laxman

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

    您好、Laxman:

    谢谢、我相应地破解了 make 文件、我可以构建该工程!

    下一个问题是调试:读取 0x48250004 时、启动代码转至数据中止:

    在 spruim2h TRM 中未找到有关 0x48250004 的任何内容。 最接近的是 DMASS0_BCDMA_CRED、2kB 范围为 0x48250000、如任何故障。

    我以前在启动时从未见过此类数据中止。 这是由一些意外的存储器保护造成的吗?

    此致、Kalman

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

    您好、Kalman:

    对延迟深表歉意。 您能否确认所有 MPU 区域均已正确设置?

    此外、请与我们共享 linker.cmd 和 example.syscfg 文件。

    此致、

    Tushar

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

    您好、Tushar、

    以下是 sysconfgig 文件中的区域(与原始工程中相同)

    MPU_armv71.$name =“CONFIG_MPU_REGION0";“;
    mpu_armv71.size = 31;
    mpu_armv71.attributes =“Device";“;
    mpu_armv71.allowExecute = false;

    mpu_armv72.$name =“CONFIG_MPU_REGION1";“;
    mpu_armv72.size = 15;
    MPU_armv72.accessPermissions =“Supervisor RD+WR、User RD“;

    mpu_armv73.$name =“CONFIG_MPU_Region2";“;
    mpu_armv73.baseAddr = 0x41010000;
    mpu_armv73.size = 15;
    MPU_armv73.accessPermissions =“Supervisor RD+WR、User RD“;

    mpu_armv74.$name =“CONFIG_MPU_Region3";“;
    mpu_armv74.size = 21;
    mpu_armv74.baseAddr = 0x70000000;
    MPU_armv74.accessPermissions =“Supervisor RD+WR、User RD“;

    mpu_armv75.$name =“CONFIG_MPU_REGION4";“;
    mpu_armv75.size = 28;
    mpu_armv75.baseAddr = 0x60000000;
    MPU_armv75.accessPermissions =“Supervisor RD、User RD“;

    MPU_armv76.$name =“CONFIG_MPU_REGION5";“;
    mpu_armv76.size = 23;
    mpu_armv76.baseAddr = 0x50000000;

    mpu_armv77.$name =“CONFIG_MPU_REGION6";“;

    mpu_armv78.$name =“CONFIG_MPU_REGION7";“;

    移动数据

    R5F_VECS:origin = 0x00000000、length = 0x00000040
    R5F_TCMA:origin = 0x00000040、length = 0x00007FC0
    R5F_TCMB0:origin = 0x41010000、length = 0x00008000

    /*内存段用于保存特定于 CPU 的非缓存数据、make 以添加 MPU 条目以将其标记为非缓存*/
    non_cache_MEM:origin = 0x70060000、长度= 0x8000

    /*使用多核应用(即多个 R5F/M4F 处于活动状态)时、请确保
    *此存储器不与其他 R5F 重叠
    */
    MSRAM:原点= 0x70080000、长度= 0x80000

    /*本节可用于将应用程序的 XIP 部分放入闪存中、确保不与重叠
    *其他 CPU。 另外、请确保为此段添加一个 MPU 条目、并将其标记为缓存和代码可执行文件
    */
    Flash:origin = 0x60100000、length = 0x80000

    /*共享存储器段*/
    /*在 R5F 上、
    *-确保有一个 MPU 条目将下方区域映射为非缓存
    */
    USER_SHM_MEM:origin = 0x701D0000、长度= 0x180
    Log_SHM_MEM:origin = 0x701D0000 + 0x180、length = 0x00004000 - 0x180
    RTOS_NORTOS_IPC_SHM_MEM:origin = 0x701D4000、length = 0x0000C000
    }

    此致、Kalman

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

    尊敬的 Tushar:

    访问地址 0x48250004 会导致数据中止中断。 我看到内存浏览器中有 0 个内容,但我认为它不可用/可访问。 然后我欺骗了我的旧程序,它运行正常和 foujnhd 这:

    内容可以读取且不为 0!

    在调用 main 之前必须执行一些操作、这在 SDK 中有所不同!

    也许我必须 在新代码中找到 MpuP_init ...

    此致、Kalman

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

    您好、Kalman:

    感谢您分享上述文件。 此外、我已经在 TRM 中检查了上述地址、似乎来自 DMASS0_SEC_PROXY。 您是否尝试控制 DMA SEC 代理 MMR 寄存器?

    我可以看到地址 0x48250004 处的寄存器是只读寄存器。 请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    我什么都不做,所有这一切都发生在 ti 初始化, System_Init 被称为 main 的第一行,它想读出该代理寄存器的 MSG_SIZE 部分。

    我已经调查了代码的启动过程、发现 8xx 和 11.xx SDK 之间的差异:

    C:\ti\mcu_plus_sdk_am243x_08_06_00_43\source\kernel\nortos\dp\r5\boot_armv7r_asm.S 不包含此部分:

    (从  c:\ti\mcu_plus_sdk_am243x_08_06_00_43\source\kernel\nortos\dp\r5\boot_armv7r_asm.S 中切换)

    //*------------------------------------------------------------------------
    //*为 R5F 缓存启用 ECC
    //*------------------------------------------------------------------------
    MRC P15、0、r0、C1、c0、 0 //读取系统控制寄存器
    BIC r0、r0、#0x1 << 2 //禁用数据缓存位
    BIC r0、r0、#0x1 << 12 //禁用指令缓存位
    DSB
    MCR P15、0、r0、C1、c0、 0 //写入系统控制寄存器
    isb //确保不从缓存执行以下指令
    MRC P15、0、R1、C1、c0、 1 //读取辅助控制寄存器
    ORR R1、R1、#(0x1 << 3)//为高速缓存启用 ECC
    ORR R1、R1、#(0x1 << 5)
    MCR P15、0、R1、C1、c0 1 //写入辅助控制寄存器

    MCR P15、0、r0、C15、C5、 0 //使整个数据缓存无效
    MCR P15、0、r0、C7、C5、 0 //使整个指令缓存无效
    MRC P15、0、r0、C1、c0、 0 //读取系统控制寄存器
    ORR r0、r0、#0x1 << 2 //启用数据缓存位
    ORR r0、r0、#0x1 << 12 //启用指令缓存位
    DSB
    MCR P15、0、r0、C1、c0、 0 //写入系统控制寄存器
    ISB.

    标记的行会关闭对 0x48250004 的访问!

    稍后 在 MpuP_ENABLE 函数中调用 CacheP_DISABLE (CacheP_TYPE_L1) 可使代理寄存器再次可见。

    最后、MpuP_enableAsm 会关闭中的可见性 我的 编程(并产生数据中止中断)。

    但很有远见  mcspi_loopback_DMA_LLD_am243x-evm_r5fss0-0_freertos_ti-arm-clang 示例工程。

    我的程序可能有什么问题?

    此致、 Kalman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    、但 visibilty 会留在这里  mcspi_loopback_DMA_LLD_am243x-evm_r5fss0-0_freertos_ti-arm-clang 示例项目。

    这是不带更改抛出数据中止的默认示例项目吗?

    数据中止异常是指访问无效的存储器时、该存储器不存在或用户没有所需的访问权限。

    此致、

    Tushar

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

    尊敬的 Tushar:

    示例工程还可以、我使用它作为参考。

    我再次检查了我的 syscfg 中的区域、并添加了两个缺失的定义:

    128KB @ 0x04B00000 MCU_MCSPI

    256KB @ 0x20100000 MCSPI

    现在我的程序终于开始了:-)

    感谢您提出有关地区的好问题、这让我走向了正确的方向。

    此致、Kalman

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

    感谢您的确认。 很高兴知道这个示例现在可以正常工作。

    很高兴为您提供帮助。

    此致、

    Tushar