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.

task1 task22-3秒不执行 调度

Other Parts Discussed in Thread: SYSBIOS

我的sysbios只有两个任务task1 task2 优先级都是1
task1往buff存数。task2从buff取数 然后通过srio发送给FPGA
先执行task1 休眠Task_sleep(5ms) 切换到task2 休眠Task_sleep(4ms)
数据正常输出 没有丢数 但有个现象 就是输出固定个数的字节后 停顿2-3秒 然后继续正常输出 感觉在那2-3秒task1 task2没有执行 调度

是很有规律的停顿2-3秒 不知道这个时间是怎么空闲出来的???

  • 有没有啥工具 方法?
    有人建议用print打印 我在task1的for循环里使用了print 输出的字符个数 和 我在for循环建立的count++计数值结果不一致
    print()的输出有什么要求么?我的休眠时间太短?Task_sleep(5ms) Task_sleep(4ms)?
  • 利用UIA看一下能否看出这段时间是在执行什么线程。
    www.ti.com/.../spruh43f.pdf
  • 深夜回复 强 厉害 赞 真棒
    我在main()里加了setvbuf(stdout,NULL,_IONBF, 0);现在 print 输出的字符个数 和 count++计数值结果一致了
    任务1:
    {
    printf("A1");
    {函数}......
    printf("A2\n");

    count++;

    Task_sleep(5);/
    }

    任务2:
    {
    printf("M1");
    {函数}......
    printf("M2\n");

    Task_sleep(4);
    }
    停顿时 打印老是在A1A2 和 M1M2之间 说明我的函数应该没问题吧 应该是停在任务切换之间
    我没有建立HWI SWI线程 只有clock
    我尝试关闭asserts诊断 logs记录 load记录 问题依旧!!!

    靠!
  • 深夜回复 强 厉害 赞 真棒
    我在main()里加了setvbuf(stdout,NULL,_IONBF, 0);现在 print 输出的字符个数 和 count++计数值结果一致了
    任务1:
    {
    printf("A1");
    {函数}......
    printf("A2\n");

    count++;

    Task_sleep(5);/
    }

    任务2:
    {
    printf("M1");
    {函数}......
    printf("M2\n");

    Task_sleep(4);
    }
    停顿时 打印老是在A1A2 和 M1M2之间 说明我的函数应该没问题吧 应该是停在任务切换之间
    我没有建立HWI SWI线程 只有clock
    我尝试关闭asserts诊断 logs记录 load记录 问题依旧!!!

    靠!
  • 我建议还是利用UIA工具再仔细分析看一下,这个工具会给出一些详细的数据,可能会更直观。
    比如4.13 提到的 Task Profiler 可以分析出每个task在每个状态花费的时间。