嵌入式开发者社区

标题: 请教一个SYSBIOS的问题 [打印本页]

作者: 378087736    时间: 2015-6-1 22:32
标题: 请教一个SYSBIOS的问题
       大神们好,我想在SYSBIOS下实现一个功能:一边不停地采集FPGA发来的数据,一边对每一次采集到的数据进行一个算法处理,采集通过HWI硬件中断线程实现,算法处理使用Task线程,那么,我可以通过信号量同步,让Task线程阻塞等待HWI线程采集好数据吗?也就是每次HWI采集完一次数据,发送信号量给Task线程。请问这样做有问题吗?要保证采集数据不间断,每1MS一次,算法线程处理时间小于1MS。
       另外,当我创建多个Task线程时,设置优先级后系统不能正常运行,像下面代码所示:
    Task_Params taskParams1;
    Task_Params_init(&taskParams1);
    taskParams1.instance->name = "parse";
    taskParams1.arg0 = (UArg)upp;
    taskParams1.arg1 = (UArg)upp;
    taskParams1.stackSize = 0x1000;
    taskParams1.priority = 16;

    /* 启动parse线程 */
    upp->parse_task = Task_create(parse_task_func, &taskParams1, NULL);
    if (upp->parse_task == NULL)
        LOG_FATAL("failed to creat calc task");

   如果不 taskParams1.priority = 16;系统可以运行。。。我看手册上说6748默认的Task线程优先级不是16吗?

作者: 希望缄默    时间: 2015-6-2 05:27
光盘有这样的例程哦 另外16级优先级是 0-15 哦
作者: 378087736    时间: 2015-6-2 09:35
希望缄默 发表于 2015-6-2 05:27
光盘有这样的例程哦 另外16级优先级是 0-15 哦

C6748的Task优先级也是0-15吗?
作者: tenny    时间: 2015-6-2 10:29
本帖最后由 tenny 于 2015-6-2 10:34 编辑
378087736 发表于 2015-6-2 09:35
C6748的Task优先级也是0-15吗?

Task 的优先级的层级是32, 即有32个优先级,实际的priority的值是 0~31。
16是它的默认的优先级层级,即第16级,它的实际的priority的值是15。

另:
关于程序不能运行,给出的可供分析的信息太少。不能运行,具体行为是怎样的?多少个task,它们的启动时机,所做的工作,它们间是否有关联,信号量的 post 和 wait 的时机
作者: tenny    时间: 2015-6-2 15:09
也有很大可能是你设置为16的优先级后,有默认优先级(15)的任务抢占了优先级(16)的任务




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4