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/TMS320C6678:SYS/BIOS 崩溃

Guru**** 2596905 points
Other Parts Discussed in Thread: SYSBIOS, TMS320C6678

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647805/rtos-tms320c6678-sys-bios-crashes

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

工具/软件:TI-RTOS

大家好、

CCS:5.5.0.00077

BIOS_6_37_05_35

PDK_C6678_1_1_2_6

xdctools_3_25_06_96

我们使用的是 TMS320C6678L EVM、我们的应用在大多数时间都能正常工作。 当我们重新启动电源时、BIOS 有时会崩溃、除了重新启动电源外、任何东西都不会再次启动系统。 我们在应用程序中添加了看门狗计时器、这两者都没有帮助。 我们在代码中添加了"platform_write()"、并注意到系统会继续运行、直到我们调用"BIOS_start()"。 当我们使用 CCS/JTAG 调试项目(无引导)时、得到以下结果:

 A0=0x1 A1=0x81da2a8e
a2=0x0 a3=0x81da284c
A4=0xc350 A5=0x81e48b3c
A6=0xc350 A7=0x2530008
A8=0x1 A9=0x9
A10=0x10 A11=0x81e48b2c
A12=0x81e48b2c A13=0x80
A14=0x0 A15=0x0
A16=0x81e48b5c A17=0x0
A18=0x81e48ac8 A19=0x90
A20=0xd005111d A21=0x1436302f
A22=0x804b09a0 A23=0x1a09392c
A24=0xa0018000 A25=0x92a8026
A26=0xac2ec20b A27=0x898a0820
A28=0x80 A29=0x83
A30=0x80 A31=0x2e0
B0=0xF B1=0x518574f2
b2=0xc350 b3=0x81e03358
B4=0x81e48b2c B5=0x2530024
B6=0x2530024 B7=0x2530024
B8=0x1d B9=0x838710
B10=0x0 B11=0x0
B12=0x0 B13=0x0
B14=0x85ff50 B15=0x83e330
B16=0x85f858 B17=0x0
B18=0xff B19=0x20
B20=0x20 B21=0x0
B22=0x0 B23=0x40000000
B24=0x838cec B25=0x4210299a
B26=0x28f58a6 B27=0x10414c13
B28=0x82803c02 B29=0x0
B30=0x0 B31=0x81d82e74
NTSR=0x10204
ITSR=0xF
IRP=0x81d82e92
SSR=0x0
AMR=0x0
RILC = 0x0
ILC = 0x0
0x860de8时出现异常
EFR=0x2 NRP=0x860DE8
内部异常:IERR=0x9
取指令异常
操作码异常
TI.SYSBIOS.family.c64p.exception:第256行:E_exceptionMax:PC = 0x00860de8、sp = 0x0083e330。
xdc.runtime.Error.raise:终止执行

问题:

1-为什么 BIOS 崩溃?

2-为什么 WDT 不会导致系统复位(我们测试了 WDT,如果在我们的应用中没有复位,它会使系统复位)

3-如何在 BIOS 崩溃时强制系统复位(异常处理程序?)

此致、

Murad

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

    我已通知 RTOS 团队。 他们的反馈将直接发布在此处。

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

    内部异常:IERR=0x9
    取指令异常

    是否启用 L2 EDC? 如果是、您是否可以禁用它并重试?

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

    我不知道 L2 EDC 意味着什么、因此很可能我没有更改默认值!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PS:我们还注意到 C6678LXE 板不会崩溃...但 C6678L 板确实如此...我们有3个 LXE 和6个 L 板、并且在所有这些板上都有相同的观察结果!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我查看 了 www2.advantech.com/.../6678le_of.aspx。 只有 L 和 LE EVM:
    TMDXEVM6678L - TMS320C6678 Lite 评估模块
    TMDXEVM6678L EVM 附带 XDS100板载仿真功能。 此外、还可以使用通过 JTAG 仿真接头的外部仿真器。
    TMDXEVM6678LE -具有 XDS560V2仿真功能的 TMS320C6678 Lite 评估模块
    TMDXEVM6678LE EVM 附带 XDS560V2板载仿真功能。 附带的 XDS560夹层卡使用 TI 60引脚 JTAG 仿真接头。

    什么是 LXE EVM、可能是 SA (安全加速器)附带的 DSP 芯片? 您在 EVM 上运行了哪些类型的程序? 简单的 SYSBIOS hello world 会崩溃吗? 碰撞是100%还是有时发生?

    您是否使用默认 GEL 文件进行 DSP 初始化? 如果是,则有名为 EnableEDC_OneForAll()的函数。 是否可以将其删除以进行测试?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eric:
    LXE 是 TMDSEVM6678LXE - TMS320C6678 Lite 评估模块、带加密功能和 XDS560V2。 我认为我们直接从 TI 获得了它
    应用是 MAD (多核应用开发)、它使用6个内核用于我们的定制应用(处理 ADC 样本)。 当我们每5到10次循环一次电源时、会发生崩溃。 在 LXE (3个不同的电路板)上、我们会对电源进行100次循环利用、系统启动正常。
    我们使用默认 GEL。 我看到"DisableEDC_OneforAll"。 但是、我使用 MAD 实用程序来构建存储在 NOR 中的.bin 文件、然后使用 IBL/I2C 进行引导...如何调用此函数?

    此致、

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

    此外、
    我在.cfg 文件中添加了以下内容:

    VAR 错误= XDC.MODULE ('xdc.runtime.Error');
    error.raiseHook ="错误处理程序";

    在.c 文件中、我添加了:

    空 MyErrorHandler (Error_Block *EB)

    //闪烁5次以指示已设置默认状态
    int 计数器= 0;
    for (counter = 0;counter < 5;counter++){
    (空) platform_led (0、platform_led_on、platform_user_LED_class);
    (空) platform_led (1、platform_led_on、platform_user_LED_class);
    (空) platform_led (2、platform_led_on、platform_user_LED_class);
    (空) platform_led (3、platform_led_on、platform_user_LED_class);
    (void) platform_delay (50000);
    (空) platform_led (0、platform_led_off、platform_user_LED_class);
    (空) platform_led (1、platform_led_off、platform_user_LED_class);
    (空) platform_led (2、platform_led_off、platform_user_LED_class);
    (空) platform_led (3、platform_led_off、platform_user_LED_class);
    (void) platform_delay (50000);

    platform_write ("MyErrorHandles %d\n"、eb->id);
    (void) platform_delay (50000);

    返回;



    每次我们回收电源时、LED 闪烁和 RS232终端显示器:
    MyErrorHandles390135808

    系统复位并重复上述操作(我们有一个 WDT 使能)