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.

[参考译文] TMS320F28379D:安全诊断库

Guru**** 2538950 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1397183/tms320f28379d-safety-diagnostic-library

器件型号:TMS320F28379D
Thread 中讨论的其他器件:C2000WARE

工具与软件:

你(们)好

抱歉、我在 e2e 论坛的其他邮件链中提出了类似的问题。 不过、 几个月后我一直忙于其他事情。 这是冻结我想,所以创建新的问题,关于它。

我在产品开发(EADI)中使用 F28379D。 需要将 TI 安全诊断库从 COFF 更改为 AEDI。 TI 团队建议使用 f2837xd_test_application 作为转换起点。

我在转换前做了一些步骤

新功能

1.硬件: Lunchpad-F28379D, 2. CCS:12.7/0.000007.

步骤:

a.将工程导入 CCS

b.将 UART 端口从 A 更改为 B、因为原始工程会向 UART A 发送消息。这是因为 LaunchPad 的这些连接器引脚中没有 UART A 的引脚、如下所示

空 STA_Comm_configSCIA (空)

#if! 配合使用
   //
   // GPIO28是 SCI Rx 引脚。
   //
   GPIO_setMasterCore (55、GPIO_CORE_CPU1);
   GPIO_setPinConfig (GPIO_55_SCIRXDB);
   GPIO_setPadConfig (55、GPIO_PIN_TYPE_STD);
   GPIO_setDirectionMode (55、GPIO_DIR_MODE_IN);
   GPIO_setQualificationMode (55、GPIO_QUAL_ASYNC);

   //
   // GPIO29是 SCI Tx 引脚。
   //
   GPIO_setMasterCore (54、GPIO_CORE_CPU1);
   GPIO_setPinConfig (GPIO_54_SCITXDB);
   GPIO_setPadConfig (54、GPIO_PIN_TYPE_STD);
   GPIO_setDirectionMode (54、GPIO_DIR_MODE_OUT);
   GPIO_setQualificationMode (54、GPIO_QUAL_ASYNC);
#else
   //
   // GPIO85是 SCI Rx 引脚。
   //
   GPIO_setMasterCore (85、GPIO_CORE_CPU1);
   GPIO_setPinConfig (GPIO_85_SCIRXDA);
   GPIO_setPadConfig (85、GPIO_PIN_TYPE_STD);
   GPIO_setDirectionMode (85、GPIO_DIR_MODE_IN);
   GPIO_setQualificationMode (85、GPIO_QUAL_ASYNC);

   //
   // GPIO84是 SCI Tx 引脚。
   //
   GPIO_setMasterCore (84、GPIO_CORE_CPU1);
   GPIO_setPinConfig (GPIO_84_SCITXDA);
   GPIO_setPadConfig (84、GPIO_PIN_TYPE_STD);
   GPIO_setDirectionMode (84、GPIO_DIR_MODE_OUT);
   GPIO_setQualificationMode (84、GPIO_QUAL_ASYNC);
#endif

   //
   //初始化 SCIA 及其 FIFO。
   //
   SCI_performSoftwareReset (SCIB_BASE);

   SCI_setConfig (SCIB_BASE、SYSCTL_getLowSpeedClock (DEVICE_OSCSRC_FREQ)、9600、
                                                     (SCI_CONFIG_WLEN_8 |
                                                     SCI_CONFIG_STOP_ONE |
                                                     SCI_CONFIG_PAR_NONE));
   SCI_resetChannels (SCIB_BASE);
   SCI_resetTxFIFO (SCIB_BASE);
   SCI_clearInterruptStatus (SCIB_BASE、SCI_INT_TXFF | SCI_INT_RXFF);
   SCI_enableFIFO (SCIB_BASE);
   SCI_enableModule (SCIB_BASE);
   SCI_performSoftwareReset (SCIB_BASE);
}

c.将活动配置从 RAM 设置为 RAM 释放、因为如果使用 RAM 配置会出错

结果。

1. UART B 没有发出任何消息

2."STA_Tests_passCount"的值为28。 但是、许多测试用例应该是38。

请告知如何修复。

谢谢

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

    我认为 LaunchPad 支持在 GPIO 43和42上通过 SCI A 使用 USB/UART。 你怎么知道的? 请参阅 LP 用户指南: https://www.ti.com/lit/pdf/sprui77

    需要注意的 LaunchPad 和 controlCARD 之间的另一项差异是外部振荡器速度的差异、该差异将影响 SYSCLK 配置。 我相信、如果将_LAUNCHXL_F28379D 放入项目的预定义符号中、device.h 中有#ifdef 来处理更改。

    惠特尼

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

    你好、惠特尼

    感谢您的推进。 串行终端上显示消息。 请找到以下日志数据

    开始测试


     启动测试环路


     测试失败:引导 ROM CPU1测试!
     测试失败:引导 ROM CPU2测试
     测试通过:引导 ROM CRC 测试
     未指定测试
     未指定测试
     未指定测试
     测试通过:CLA 微型测试!
     测试通过:CLA 完整测试!
     测试通过:DEVCFG 测试!
     测试通过:PER REG 测试!
     测试失败:错误状态引脚测试!
     测试通过:PIE RAM 测试!
     测试通过:PIE RAM 处理程序测试!
     测试通过:OSC 定时器2测试!
     测试通过:振荡器 HRPWM 测试!
     测试通过:CPU 计时器开机自检!
     测试通过:CPU 计时器 PEST!
     测试通过:缺少时钟检测!
     测试通过:WD 测试!
     测试通过:中断时序监控测试! W▒D
     测试通过:SCI 监控测试!
     测试通过:SCI 回送测试!
     测试通过:SPI 环回测试!
     测试通过:I2C 环回测试!
     测试通过:McBSP 环回测试!
     测试通过:CAN 环回测试!
     测试通过:SP 测试!
     测试通过:闪存 ECC 逻辑测试!
     测试通过:闪存 ECC 检测测试!
     测试通过:闪存 CRC 测试!
     测试通过:RAM 错误逻辑测试!
     测试通过:RAM 错误检测测试!
     测试通过:March13N 无复制测试!
     测试通过:March13N 复制测试!
     测试通过:GPIO 输入测试!
     测试通过:GPIO 输出测试!
     测试通过:PWM 跳变占空比测试!
     测试失败:eQEP 测试!
     测试失败:SDFM 测试!
     测试失败:ADC/DAC 12位测试!
     测试失败:ADC/DAC 12位 DMA 测试!
     测试失败:ADC/DAC 16位测试!
     测试失败:ADC/DAC 16位 DMA 测试!
     43项测试中有31项通过

    您可以看到某些测试失败。 我查看了代码、测试失败、但没有对其注入任何错误。

    谢谢

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

    说完、我便想不出有任何具体的原因将它们移植到 LaunchPad 会导致失败。 对于需要在电路板上进行外部连接的失败测试、我会仔细检查 GPIO 配置并确保连接了正确的引脚。

    如果您已经检查了这些检查、则需要进行一些调试以获得有关测试如何失败的更多信息。 例如、如果查看 ADC 测试、您是否获得了有效的 ADC 结果? 您是只需要稍微扩展允许的误差裕量、还是它们非常错误?

    惠特尼

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

    你好、惠特尼

    感谢您的答复。 您说对于 ADC 测试、有必要向每个 ADC 模块输入引脚提供一个类比信号?

    实际上……我想以 EABI 格式创建库。 我的想法是在 COFF 中运行 TI 测试应用程序作为基于的参考、以便我可以将其用于比较 EABI 的结果

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您说对于 ADC 测试、有必要向每个 ADC 模块输入引脚提供一个模拟信号吗?

    是的、如果您查看自检应用程序用户指南、有一个关于硬件设置的部分告诉您每次测试需要建立什么连接。

    我的想法是在 COFF 中运行 TI 测试应用程序作为基础参考、以便能够用它来比较 EABI 的结果

    我认为、让 STA 在针对 COFF 的板上正常工作是个好主意、这样您就会有一个工作基线来检查您的 EABI 端口

    惠特尼

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

    你好、惠特尼

    我在将库从 COFF 转换为 EABI 时遇到问题。 请查找显示 error.e2e.ti.com/.../safety_5F00_log.txt 的日志文件

    请查找随附文件以供参考、并了解如何修复。

    谢谢

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

    你好、惠特尼

    我通过从 test_application 项目中删除 STA_F283FXD_FLASHH_CPU1.cmd 内的"_"来解决此问题、如下所示

         STL_CLA_seg01   :load = FLASHK | FLASHL | FLASHM、
                            Load_Start (Seg01LoadStart)
                            Load_Size (Seg01LoadSize)、
                            Load_End (Seg01LoadEnd)、
                            对齐(4)

    现在、我收到一条新的错误消息、如附加的日志 filee2e.ti.com/.../safety1_5F00_log.txt 所示

    请告知如何修复。

    我还有一个问题。 是否已成功创建 EABI 库。 是否可以在 C2000Ware_5_02_00_00中使用它?

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

    你好、惠特尼

    我通过从 test_application 项目中删除 STA_F283FXD_FLASHH_CPU1.cmd 内的"_"来解决此问题、如下所示

         STL_CLA_seg01   :load = FLASHK | FLASHL | FLASHM、
                            Load_Start (Seg01LoadStart)
                            Load_Size (Seg01LoadSize)、
                            Load_End (Seg01LoadEnd)、
                            对齐(4)

    现在、我收到一条新的错误消息、如附加的日志 file.e2e.ti.com/.../safety1_5F00_log.txt 所示

    请告知如何修复。 仅供参考、我在产品开发中使用的是 C2000Ware_5_02_00_00

    我还有一个问题。 是否已成功创建 EABI 库。 是否可以在 C2000Ware_5_02_00_00中使用它?

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

    _stack 和_stack_end 应分别更改为_stack 和_TI_stack_end:

                STA_User_spObj.startAddress = (uint32_t)_symval(&__stack);
                STA_User_spObj.endAddress = (uint32_t)_symval(&__TI_STACK_END);

    对于 HwbistLoad*/HwbistRun*问题、您需要像对 CLA"段所做的那样从 cmd 文件中删除下划线。

    STL_Util_getST1问题可能是另一个与下划线相关的问题。 您需要编辑 stl_util_s.asm、以删除下划线或将旧名称映射到新名称、如下所示:

        .if $defined(__TI_EABI__)
            .asg    STL_Util_getST1, _STL_Util_getST1
        .endif

    除了移植到 EABI 之外、您是否在较新版本的 C2000Ware 中使用 SDL? 您正在使用哪个版本? 您是否还在使用 EABI 版本的 driverlib 和 SFO 库?

    惠特尼

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

    啊抱歉、刚刚意识到您已经提到了您的 C2000Ware 版本。 是的、您可以将其与 C2000Ware 5.02.00配合使用、只需稍作更改。 我认为 GPIO_setMasterCore 和 MemCfg_setLSRAMMasterSel 函数 分别重命名为 GPIO_setControllerCore 和 MemCfg_setLSRAMControllerSel。

    惠特尼

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

    这些"隐式声明"警告通常意味着在某个位置缺少#include。

    Type.h 问题看起来在 driverlib hw_types.h 和闪存 API Types.h 文件之间存在冲突。 hw_types.h 中定义 true 和 false 的方式与 Types.h 使用 true 和 false 值的方式不兼容。 我想您现在可能可以从 Types.h 中删除判断正/误的代码。 但我会向 C2000Ware 团队报告此冲突、看看我们是否可以在将来的版本中解决该问题。

    惠特尼

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

    你好、惠特尼

    我在 types.h 中对第129 - 134行作了评论、但仍然有同样的问题

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

    对他们的评论对我来说是有效的。 在注释的行上会遇到这些错误是没有道理的。 您是否看到相同的"ERROR #18:Expected a ')"错误或一些新的错误?

    惠特尼

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

    你好、惠特尼

    我发现问题是由于 Types.h 中存在一个特殊字符、如下所示

    #if ((已定义(__TMS470__)||已定义(__TI_ARM__))&&(__TI_Compiler_version__< 5002000)
    #if ! defined(__GNU__)
    #error “F021 Flash API 需要 GCC 语言扩展。 使用 â€"gcc option.â€
    #endif
    #endif

    以#error 开头的行包含一个特殊字符并导致出现问题。

    我用其他编辑器打开了它、但看不到。 然后我把它删除了。 错误"error #18:expected a ")"已修复、但仍有一些小警告、如下所示


    ****为项目 f2837xd_test_application 构建配置闪存****

    "C:\\ti\\ccs1260\\ccs\\utils\\bin\\gmake"-k -j 22 all -O
     
    生成目标:"f2837xd_test_application.out"
    调用:C2000链接器
    "c_linkInfo"/ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/cl2000 -v28 -ml -mt -cla_support=cla1 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -Ooff --define=flash --define=cpu1-diag_diag=10063 --diag_warning=-vm_wrap=off /ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/lib /ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include /ti/C2000Ware_5_01_00_00/libraries/flash_api/f2837xd/lib/F021_API_F2837xD_FPU32_EABI.lib /Users/hkwoo/OneDrive/Documents/Projects Safety_Function /ti/C2000Ware_5_01_00_00/libraries/calibration/hrpwm/f2837xd/lib/SFO_v8_fpu_lib_build_c28_eabi.lib  

    "../STA_F2837xD_FLASH_CPU1_CLASWBIST.cmd"、第33行:警告#10456-D:在不使用统一存储器模型时、必须为"UNION_3"的特定放置指定页面。
    完成构建目标:"f2837xd_test_application.out"

    您可以在下面找到.cmd 文件行33


    部分中)

      联合体:run = 0x8000   //行33
      {
         STL_CLA_seg01   :load = FLASHK | FLASHL | FLASHM、
                            Load_Start (Seg01LoadStart)
                            Load_Size (Seg01LoadSize)、
                            Load_End (Seg01LoadEnd)、
                            对齐(4)

    请告知如何修复

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

    我想它希望你指定一个类似这样的页面:

      联合体:run = 0x8000 、PAGE = 0
      {
         STL_CLA_seg01   :load = FLASHK | FLASHL | FLASHM、
                            Load_Start (Seg01LoadStart)
                            Load_Size (Seg01LoadSize)、
                            Load_End (Seg01LoadEnd)、
                            对齐(4)

    惠特尼