关于任务调度
汉哥,最近整FreeRTOS碰到个问题,百撕不得其姐,描述如下:有两个任务A,B,它们有不同的优先级,但运行时OS只调度优先级高的来运行,低优先级的任务始终不得运行,不知咋整,热血求教。。 高优先级的任务里面有让出CPU使用权的操作吗?比如延时函数。 sanit 发表于 2019-3-13 22:27高优先级的任务里面有让出CPU使用权的操作吗?比如延时函数。
多谢回复。。。。。。 现在情况是这样滴,我再描述详细点。。
1. A,B任务是否创建成功(已创建成功);
2. A任务是否成功阻塞,调试发现能进入vTaskDelay(5 * portTICK_RATE_MS);这个函数并且判断是否溢出或者未溢出,说明可以进入阻塞状态;
3. A任务是否调用任务切换,taskYIELD()也调用了;
4. A任务堆栈空间加大也不行, IOTMCU 发表于 2019-3-15 17:18
现在情况是这样滴,我再描述详细点。。
1. A,B任务是否创建成功(已创建成功);
2. A任务是否成功阻塞, ...
注意FreeRTOSConfig.h文件中支持的最大任务优先级设置参数,你任务的设置是否满足此要求
汉哥,这是我的配置文件,按说没错。
#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 */
IOTMCU 发表于 2019-3-15 23:04
汉哥,这是我的配置文件,按说没错。
那只能怀疑你的工程模板设计有问题了。 情况是这样滴(之前描述有点仓促):正常情况下2个任务都可以正常运行,然后运行一段时间(约一星期)后,某些设备会自动复位(某些又没有问题),然后就卡在任务高的优先级一直处在运行状态,低优先级的任务根本不执行,我们开始怀疑是硬件问题,但周立功硬说是软件问题,现在成了悬案:(。。。。。。 我把包发过来,望汉哥在百忙之中抽空一看,不胜感激。。 系统运行图。 IOTMCU 发表于 2019-3-17 12:22
我把包发过来,望汉哥在百忙之中抽空一看,不胜感激。。
你发的是空文件?
IOTMCU 发表于 2019-3-17 12:17
情况是这样滴(之前描述有点仓促):正常情况下2个任务都可以正常运行,然后运行一段时间(约一星期)后, ...
你在高优先级的任务里面 加了taskdelay 没有? 这端时间忙坏了搞啥都是火急火燎的,我这就把包再重新传一下(通过编译),望各位大大帮忙分析,巨谢(问题还是之前的那个问题)。。
页:
[1]