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.

[参考译文] Hercules_SAFETY_MCU_DEMOS:TMS570LC43x SAFETI 诊断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1241051/hercules_safety_mcu_demos-tms570lc43x-safeti-diagnostic

器件型号:hercules_safety_mcu_demos

大家好!

我使用 RTOS 开发 SafeTI 诊断库。 我们正在使用的 MCU 是 TMS570LC43xx。

我面临着一些问题、  

在 main 函数前面(" _c_int00 ()和 fterSTC () ")中完成的所有初始化 监控器模式"ARM_MODE_SVC  0x13" 。 但是对于 RTOS schedular 的初始化,我们需要在 系统模式"ARM_MODE_SYS 0x1F"。

我曾尝试从 SVC 更改为系统模式、但代码将为 r ESET SWRST。 我试图改变  sl_Init_R5Registers ();和  sl_Init_StackPointers () ;也. 但没有结果。

 问题1:   我们如何将模式从监控器模式 "ARM_MODE_SVC  0x13"更改为系统模式 "ARM_MODE_SYS 0x1F"。

问题2.  从 监控器模式 "ARM_MODE_SVC  0x13"切 换到系统模式 "ARM_MODE_SYS 0x1F"后、我们可以在任务中运行所有 SL 测试用例吗?

感谢并尊重  

V·潘卡

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

    尊敬的 Pankaj Verma:

    您能否请参阅以下主题以及下述主题中的附加代码

    (+) TMS570LC4357:TI FEE 函数在 FreeRTOS 任务内挂起。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    在本线程中、我在 FreeRTOS 代码中切换了模式。

    --

    谢谢。此致、
    Jagadish。

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

    Jagdish、您好!

    我已经尝试使用汇编指令来更改处理器模式  

    .def _CPU_SYSTEM_MODE_Switch
    .asmFunc
    CPU_SYSTEM_MODE_Switch

    r0夫人、CPSR      ;将 CPSR 读入 r0
    Orr r0、r0、#0x1f      ;将模式设置为 SYS
    MSR CPSR、r0      ;将 r0写回 CPSR
    BX LR;返回

    .endasmfunc

    在执行该指令系统后、将出现复位条件并且 MCU 系统寄存器显示 SWRST。

    我认为我们还需要在下一部分中使用_SVC 进行更改 "您能将代码分享给切换模式吗、先前已厌倦"  

    .ref _c_int00
    .REF vUndefAbort
    .ref vSafeRTOSSVCHandler
    .REF vPrefetchAbort
    .REF vDataAbort
    .REF 远程中断
    .def resetEntry

    优点:
    ;中断向量

    复位入口
    b _c_int00
    B vUndefAbort
    B vSafeRTOSSVCHandler
    B vPrefetchAbort
    b vDataAbort
    反向中断
    LDR PC、[PC,#-0x1b0]
    LDR PC、[PC,#-0x1b0]

    谢谢  

    V·潘卡

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

    尊敬的 Pankaj:

    请参阅我上一个共享主题中的以下附加代码:

    如果您验证此处的代码、我将调用以下两行以将模式切换到管理员模式

    寄存器 uint32_t u32Mode = 0x13ul;/* Supervisor */

    u32Mode = switchCpuMode (u32Mode);

    我们传递了模式值0x13、因为您可以看到监控模式的模式值。

    同样、您可以将所需的模式值传递给上述函数。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的努力。

    我会尝试更新您的。

    但与此同时,我还面临着一些其他的问题。

    您能回答这个问题吗?

    请参阅此主题

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1242577/safeti_diag_lib-tms570lc43x-safeti-diagnostic

    谢谢  

    V·潘卡

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

    尊敬的 Pankaj:

    我将回答您提到的问题、我将关闭该问题。

    --

    谢谢。此致、
    Jagadish。