IOTMCU 发表于 2019-3-13 21:01:46

关于任务调度

汉哥,最近整FreeRTOS碰到个问题,百撕不得其姐,描述如下:有两个任务A,B,它们有不同的优先级,但运行时OS只调度优先级高的来运行,低优先级的任务始终不得运行,不知咋整,热血求教。。

sanit 发表于 2019-3-13 22:27:27

高优先级的任务里面有让出CPU使用权的操作吗?比如延时函数。

IOTMCU 发表于 2019-3-15 09:30:00

sanit 发表于 2019-3-13 22:27
高优先级的任务里面有让出CPU使用权的操作吗?比如延时函数。

多谢回复。。。。。。

IOTMCU 发表于 2019-3-15 17:18:27

现在情况是这样滴,我再描述详细点。。
1. A,B任务是否创建成功(已创建成功);
2. A任务是否成功阻塞,调试发现能进入vTaskDelay(5 * portTICK_RATE_MS);这个函数并且判断是否溢出或者未溢出,说明可以进入阻塞状态;
3. A任务是否调用任务切换,taskYIELD()也调用了;
4. A任务堆栈空间加大也不行,

eric2013 发表于 2019-3-15 17:58:19

IOTMCU 发表于 2019-3-15 17:18
现在情况是这样滴,我再描述详细点。。
1. A,B任务是否创建成功(已创建成功);
2. A任务是否成功阻塞, ...
注意FreeRTOSConfig.h文件中支持的最大任务优先级设置参数,你任务的设置是否满足此要求

IOTMCU 发表于 2019-3-15 23:04:23

汉哥,这是我的配置文件,按说没错。
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

#define configUSE_PREEMPTION                        1
#define configUSE_IDLE_HOOK                        1
#define configUSE_TICK_HOOK                        1
#define configCPU_CLOCK_HZ                        ( ( unsigned long ) 120000000 )
#define configTICK_RATE_HZ                        ( ( portTickType ) 1000 )
#define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 190 )
#define configTOTAL_HEAP_SIZE                        ( ( size_t ) ( 19 * 1024 ) )
#define configMAX_TASK_NAME_LEN                ( 12 )
#define configUSE_TRACE_FACILITY                0
#define configUSE_16_BIT_TICKS                0
#define configIDLE_SHOULD_YIELD                0
#define configUSE_CO_ROUTINES                 0
#define configUSE_MUTEXES                                0
#define configUSE_RECURSIVE_MUTEXES        0
#define        configUSE_COUNTING_SEMAPHORES 0
#define        configUSE_ALTERNATIVE_API                0
#define configCHECK_FOR_STACK_OVERFLOW        1
#define configQUEUE_REGISTRY_SIZE                0

#define configMAX_PRIORITIES                                        ( ( unsigned portBASE_TYPE ) 10 )
#define configMAX_CO_ROUTINE_PRIORITIES                 ( 2 )

#define INCLUDE_vTaskPrioritySet                                1
#define INCLUDE_uxTaskPriorityGet                                1
#define INCLUDE_vTaskDelete                                        1
#define INCLUDE_vTaskCleanUpResources                        0
#define INCLUDE_vTaskSuspend                                        1
#define INCLUDE_xTaskResumeFromISR                        1
#define INCLUDE_vTaskDelayUntil                                1
#define INCLUDE_vTaskDelay                                        1
#define INCLUDE_uxTaskGetStackHighWaterMark        1

#define configYIELD_INTERRUPT_VECTOR                        16UL
#define configKERNEL_INTERRUPT_PRIORITY                 255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY         191

void vApplicationSetupInterrupts( void );

#endif /* FREERTOS_CONFIG_H */

eric2013 发表于 2019-3-16 19:31:13

IOTMCU 发表于 2019-3-15 23:04
汉哥,这是我的配置文件,按说没错。

那只能怀疑你的工程模板设计有问题了。

IOTMCU 发表于 2019-3-17 12:17:36

情况是这样滴(之前描述有点仓促):正常情况下2个任务都可以正常运行,然后运行一段时间(约一星期)后,某些设备会自动复位(某些又没有问题),然后就卡在任务高的优先级一直处在运行状态,低优先级的任务根本不执行,我们开始怀疑是硬件问题,但周立功硬说是软件问题,现在成了悬案:(。。。。。。

IOTMCU 发表于 2019-3-17 12:22:04

我把包发过来,望汉哥在百忙之中抽空一看,不胜感激。。

IOTMCU 发表于 2019-3-17 12:24:23

系统运行图。

byccc 发表于 2019-3-17 18:25:52

IOTMCU 发表于 2019-3-17 12:22
我把包发过来,望汉哥在百忙之中抽空一看,不胜感激。。

你发的是空文件?

mksu 发表于 2019-3-19 23:08:08

IOTMCU 发表于 2019-3-17 12:17
情况是这样滴(之前描述有点仓促):正常情况下2个任务都可以正常运行,然后运行一段时间(约一星期)后, ...

你在高优先级的任务里面 加了taskdelay 没有?

IOTMCU 发表于 2019-3-21 12:31:57

这端时间忙坏了搞啥都是火急火燎的,我这就把包再重新传一下(通过编译),望各位大大帮忙分析,巨谢(问题还是之前的那个问题)。。
页: [1]
查看完整版本: 关于任务调度