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.

[参考译文] TMS570LS3137:带有 FreeRTOS 程序的复位指令

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1295028/tms570ls3137-reset-instruction-with-freertos-program

器件型号:TMS570LS3137

大家好!!


我对我的 FreeRTOS 应用程序有疑问。 我正在运行一些任务、并且我发送了一个 CAN 命令来用复位指令激活一个任务。 命令执行顺利、但软件未复位。 好像它卡在了这条指令上。

                         sciSend(scilinREG, 7, (unsigned char *)"RESET\n\r");

                        systemREG1->SYSECR = (0x10) << 14;

我在没有 FreeRTOS 的应用程序中执行了另一次重置、并且指令效果很好。

如果程序在使用 FreeRTOS 运行、我们可能需要另一条指令来重置该程序?

感谢您的帮助!!

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

    尊敬的 Federico:

    根据我的理解、您不是写入 SYSECR 寄存器的复位位、而是写入代码中的一些保留位。

    根据 TRM、复位位位位于第15位和第14位、对吧?

    systemREG1->SYSECR =(0x10)<< 14;

    但在代码中、您是在位18写入、而不是在位15尝试写入。

    正确的指示是:

    systemREG1->SYSECR =(0x2)<< 14;

    请更正并重新测试。  

    您可能会问为什么在没有免费 RTOS 的情况下重置了它们、因为它们是保留位、我们不知道它们的行为以及它们的用途。

    --
    谢谢。此致、
    Jagadish。

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

    您好, Jagadish! 感谢您的答复。

    我尝试了指令,但我有同样的结果。

    似乎软件无法重新启动。 我认为 在该指令  systemREG1->SYSECR =(0x2)<< 14;之后输入_dabort

     FreeRTOS 程序存在此问题。 是否有其他指令、我应该在其中复位我的程序?

    感谢您发送编修。

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

    尊敬的 Federico:

    我在下面的主题中发现了一个类似的问题:

    (10) TMS570LS1227:在 GIO 模式中使用 ECLK、而不生成 dabort。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    实际上、如果我们使用 FreeRTOS、任务函数通常在用户模式下执行。 但问题是、用户模式没有访问系统资源的权限。 并且这  系统 REG1  也将仅包含在系统资源部分。 可能是由于这个原因、只有您无法重置器件。

    解决此问题的方法是将模式从用户模式切换到任何优先模式。 我提供了一个在链接线程中切换模式的示例。 请将其作为参考并进行模式转换和测试。

    --
    谢谢。此致、
    Jagadish。

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

    您是对的! 非常感谢  Jagadish。

    y 复制以下代码行:

    寄存器 uint32_t u32Mode = 0x13ul;/* Supervisor */
    u32Mode = switchCpuMode (u32Mode);
    断言(0x1Ful == u32Mode);

    我添加了 scv.h 和.c 文件。

    现在、复位函数可以正常工作。

    非常感谢!

    法德

     

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

    您好, Jagadish!

    我尝试在我的项目上测试 EEPROM 示例。

    但它无法 正常工作

    它卡在循环中:

    TI_TI_ Fee_Init ();
    正确
    {
    TI_45V Fee_Main ();
    delay();
    status=TI_SC70 Fee_Get (0 );

    while (状态!=空闲);

    变量"oduleState"始终处于"business"

    您知道我可以执行什么操作来使用这些函数吗?

    谢谢你!

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

    尊敬的 Federico:

    我想这是同样的问题、在执行 FEE 功能之前、你必须将模式切换为主管。

    请查看我的以下主题:
    (+) TMS570LC4357:TI FEE 函数在 FreeRTOS 任务内挂起。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。