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.

[参考译文] 编译器/TMS320C6748:SYSBIOS 6.37与 CGT 8.3.35编译器不兼容

Guru**** 2560180 points
Other Parts Discussed in Thread: SYSBIOS, MATHLIB

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/881701/compiler-tms320c6748-incompatibility-sysbios-6-37-with-cgt-8-3-35-compiler

器件型号:TMS320C6748
主题中讨论的其他器件:SYSBIOSMATHLIB

工具/软件:TI C/C++编译器

您好!

使用7.2.24和8.3.35 CGT 编译器时、SYSBIOS 6.37是否存在一定的不兼容性? 我的项目使用下面的库、但如果我使用7.2.24进行编译、该项目运行正常(已经使用了5年)、但如果使用8.3.35进行编译、则在几分钟到几个小时之间的任何时间内随机崩溃。

UIAPATH:=/ti/uia_1_03_01_08
XDCPATH:=/ti/xdctools_3_25_06_96
EDMA3:=/ti/edma3_lld_02_11_11_13
DSPLIB:=/ti/dsplib_c674x_3_1_1_1
MATHLIB:=/ti/mathlib_c674x_3_0_1_1
SYSBIOS:=/ti/bios_6_37_05_35
xDAIS:=/ti/xdais_7_21_01_07

最常见的例外是:

TI.SYSBIOS.堆.HeapMem:第371行:断言失败:a_invalidFree:无效空闲
xdc.runtime.Error.raise:终止执行

或:

A0=0x1 A1=0x0
a2=0xc0a760a8 a3=0xc29a99d4
A4=0xc29d6a38 A5=0xc0a7933c
A6=0x8e A7=0xc282c5d8
A8=0x2 A9=0x20
A10=0x90 A11=0xc29d6a38
A12=0x5101920 A13=0xc29a9a2c
A14=0xc2987f78 A15=0x0
A16=0xc0a761c0 A17=0x0
A18=0x0 A19=0x0
A20 = 0x0 A21 = 0x0
A22=0xc09ac254 A23=0x0
A24=0x95 A25=0xff
A26=0xc A27=0x100
A28=0x100 A29=0x0
A30=0x5 A31=0x20
B0=0xa480010 B1=0x0
b2=0x1 b3=0xc2987f78
B4=0x0 B5=0xc29a5de6
B6=0xa480010 B7=0xc0a1cebc
B8=0xc B9=0xc2930180
B10=0x90 B11=0x83421160
B12=0xc0a79334 B13=0xc29a7e2c
b14=0xc29e19f8 b15=0xc0a1ce68
B16=0x1 B17=0x7e4
B18=0x51eb851f B19=0x7e6
B20=0x7e8 B21=0x7e7
B22=0xF B23=0x0
B24=0x0 B25=0x6b
B26=0xca B27=0x38
B28=0x91 B29=0x70
B30=0xc0a15170 B31=0xffffff
NTSR=0x1820f
ITSR=0x20f
IRP=0xc28eab94
SSR=0x0
AMR=0x0
RILC = 0x0
ILC = 0x0
0xc2924c1c 时出现异常
EFR=0x40000002 NRP=0xc2924c1c
内部异常:IERR=0x8
操作码异常
DMC 异常 MPFAR=0x83421160 MPFSR=0x120
安全违规、本地 L1/L2高速缓存存储器故障
监控器读取违反、故障 ID = 0x0
TI.SYSBIOS.family.c64p.exception:第256行:E_exceptionMax:PC = 0xc2924c1c、sp = 0xc0a1ce68。
xdc.runtime.Error.raise:终止执行

我在寻找 ROV、异常模块返回以下结果:

异常调用栈、
0 ti_sysbios_b堆_HeapTrack_free (struct ti_sysbios_b堆_HeapTrack_Object *、void *、unsigned int) at HeapTrack.c:145、PC = 0xC2924C1C FP = 0xC0A1CE68
1 xdc_runtime_Memory_free (struct xdc_runtime_IHeap____Object *、void *、unsigned int) at Memory.c:90、PC = 0xC2987F78 FP = 0xC0A1CE90
2 [在 Vla_alloc_c]本地::在 Vla_alloc.c:177、PC = 0xC294EEE8 FP = 0xC0A1CE98时、释放_死区分配(void *)
3 _VLA_alloc (void *) at VLA_alloc.c:245、PC = 0xC2913140 FP = 0xC0A1CEB8
4标准:__2 <char, std::__2::ostreambuf_iterator<char, std::__2::char_traits :num >><char, std::__2::char_traits :do_put (std:__2:ostreambuf _ >、std::__2::ios_base &、char、unsigned long) const (unsigned int) at locale:1514、PC = 0xC294C014 FP = 0xC0A1CEE0
5标准:__2::<char, std::__2::char_traits >:运算符<<(无符号短整型)位于 ostream:1292,PC = 0xC2933CF0 FP = 0xC0A1CF28

显然、ROV 报告 BIOS 模块:"所有 ROV 视图都已运行、并且未遇到错误。 在 BIOS 中、这包括检查系统堆栈使用情况和所有任务堆栈。"

此致、

David。

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

    尊敬的 David:

    我建议您尝试使用 HeapTrack 来隔离问题。 请访问 https://training.ti.com/debugging-common-application-issues-ti-rtos 、了解有关 HeapTrack 的更多详细信息。

    Todd

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

    您好 Todd、

    我按照 TIRTOS_CCSDebugging .pdf 中的说明操作、启用了 HeapTrack、该路径显示我有1564个对象、是否有快速方法可以查看哪个对象溢出或者我是否必须手动检查每个对象? 这是最新的错误:

    A0=0xc0a7d810 A1=0x0
    A2=0x1 A3=0x0
    A4=0xc0a7d7e0 A5=0xc29d10e8
    A6=0xc29d0bf8 A7=0xa5a5a5
    A8=0xc0a244d8 A9=0x0
    A10=0xc0a7d7e7 A11=0xc0a7d818
    A12=0xc0a7d7e0 A13=0xc2938070
    A14=0xc29a56d0 A15=0x0
    A16=0xc0a24478 A17=0x10
    A18=0x0 A19=0x0
    A20 = 0x0 A21 = 0x0
    A22=0x1e5c A23=0x1e4c
    A24=0x1e3c A25=0x1e2c
    A26=0x93 A27=0xfffff3
    A28=0x1c4 A29=0x3
    a30=0xc29a480c a31=0xc0a7d82c
    B0=0xc0a7d808 B1=0x1
    b2=0x1 b3=0xc294e104
    B4=0x21 B5=0xc0a244d8
    B6=0xc0a7d810 B7=0xc0a244e0
    B8=0x14000103 B9=0xa87ea4
    B10=0xc B11=0xc0a7d7e4
    B12=0x20 B13=0xc28afd9a
    b14=0xc29dc860 B15=0xc0a244b8
    B16=0x1 B17=0x676f6c2f
    B18=0x0 B19=0x0
    B20=0x7e8 B21=0x7e7
    B22=0x20f B23=0x0
    B24=0x2e B25=0x0
    B26=0x0 B27=0x10
    B28=0x91 B29=0x70
    B30=0xc0a7d808 B31=0xffffff
    NTSR=0x1020f
    ITSR=0x20f
    IRP=0xc28f3b10
    SSR=0x0
    AMR=0x0
    RILC = 0x0
    ILC = 0x0
    0xc294e10e 发生异常
    EFR=0x40000000 NRP=0xc294e10e
    DMC 异常 MPFAR=0x24 MPFSR=0x120
    安全违规、本地 L1/L2高速缓存存储器故障
    监控器读取违反、故障 ID = 0x0
    UMC 异常 MPFAR=0x24 MPFSR=0x110
    安全违规、本地 L1/L2高速缓存存储器故障
    监控器写入违反、故障 ID = 0x0
    XMC 异常 MPFAR=0xc28e64d0 MPFSR=0x184a008
    监控器异常、故障 ID = 0x50
    TI.SYSBIOS.family.c64p.exception:第265行:E_exceptionMax:PC = 0xc294e10e、sp = 0xc0a244b8。
    xdc.runtime.Error.raise:终止执行

    欢迎提出任何建议。

    此致、

    David。

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

    我尝试调试这些异常、似乎是围绕 std:ostringstream 发生的、代码在各种线程中会发生:

    std::ostringstream *p =新 std::ostringstream;
    (*p)<<"一些随机长度文本";

    此 p 使用邮箱传递到一个中心线程、用于记录调用的内容:

    std::cout << p->str()<< std:endl;  
    删除 p;

    似乎在使用8.3.6编译器时、邮箱有时会发送错误消息、从而导致上述异常。

    我已经花了很多时间来解决这个问题、我怀疑很容易重现、所以我已经降级到了7.4.24、我看不到固件崩溃了。 正如我所说的、这个项目运行多年、直到我决定对环境进行讲解、但7.4.24编译 器在 Linux 环境中似乎出现故障(请参阅 e2e.ti.com/.../861916)。

    此致、

    David。

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

    尊敬的 David:

    是否有一个更简单的项目来重现此问题? 可能存在该错误、并且新编译器已将其公开。

    Kevin

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

    跟进:

    如果您确实找到了一个项目、您能否提供源代码以便我们重新创建问题? 谢谢。

    Kevin