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/PROCESSOR-SDK-AM335X:睡眠不起作用和#39;不起作用

Guru**** 2558910 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/616261/rtos-processor-sdk-am335x-sleep-doesn-t-work

器件型号:PROCESSOR-SDK-AM335X

工具/软件:TI-RTOS

您好!

开箱即用、由 CCS 和 SYS/BIOS TI-RTOS 生成的"新项目"代码创建一个"任务"。  "Task_sleep (10)"。  而不会返回。  代码就是这样:

/*
=== main.c ======
*/

#include 

#include 
#include 

#include 

#include 

/*
=== taskFxn ====
*/
void taskFxn (UArg a0、UArg A1)
{
system_printf ("enter taskFxn ()\n");

Task_sleep (10);

system_printf ("exit taskFxn ()\n"\});

system_flush();/*强制 SysMin 输出到控制台*/
}

/*
=== main ====
*/
int main()
{
Task_Handle 任务;
ERROR_Block EB;

system_printf ("enter main()\n");

ERROR_INIT (&EB);
任务= Task_create (taskFxn、NULL、&EB);
if (task =NULL){
System_printf ("Task_create() failed!\n");
BIOS_exit (0);
}

BIOS_start();/*不返回*/
返回(0);
}

我有三 个不同的项目、它们都是从 CCS 7.2自动生成的、并使用 GNU 4.0.3、GNU 6.3.1或 TI 16.9mm 构建。  其中一个不起作用。  它们使用 SYS/BIOS 6.46.5.55

我在"Task_sleep (10)"之后放置一个断点、但它从未达到。  当我在"Task_sleep (10)"之前放置一个断点并单步进入它时、它永远不会返回。

我看了 BeagleBone Black 的"闪烁"示例。  它不使用该调用。  它使用"while (...) "循环延迟。  我想、创建该示例的任何人都必须知道该示例已损坏。

4年前,我的搜索使人们产生了问题。  其中任何一项似乎都不适用于当前环境。

(所有这些都是在我发现我必须为 USB 导入几个 StarterWare 项目时开始 的,因为它们已从新的 SYS/BIOS TI-RTOS 中删除。  深入到这里,有一个"Sysdelay()函数,它也不起作用。  我深入了解了代码,看到它正在使用 Timer7,但尽管所有内容都配置正确,但中断永远不会触发。 )

是否有什么关于"开箱即用"样片的想法?  或者更重要的是、为什么这个简单的函数被破坏?  我会发布我的整个项目、但任何人只需创建一 个新的"典型""Sys/BIOS"新项目即可复制它。

-CSW

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

    如果有人想测试这个、我就附加了这个项目。  直接从 CCS 7.2传出

    e2e.ti.com/.../BasicTiSleep.zip

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

    更新... 它似乎在工作。

    但以下是一些建议:

    *** 切勿尝试使用调试器在 Sitara 或 BeagleBone 项目中“单步执行”“Task_sleep()”。 ***

    显然、我可以在 Task_sleep 之后放置一个断点、它将达到该断点。  但我无法在函数处放置断点、然后单步执行它。  它只是冻结和阻断。  尝试暂停只是将调试器带到某个地方的深空间。  

    我使用 TM4C1294XL 电路板重复完全相同的测试、并且可以顺利地单步执行 Task_sleep()。  因此、无论在调试中出现什么问题、它似乎只适用于 BBB (或一般的 Sitara)。

    关于我的陈述"我在"Task_sleep (10)"之后放置了一个断点、但它从未达到。"...  它看起来断点已禁用、尽管它没有以这种方式显示。

    这是一个浪费了半天的时间、试图弄清为什么有东西出现了损坏、为什么没有损坏。

    -CSW

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