工具/软件:Code Composer Studio
xPendingReadyList 在 RM57L843ZWT 的 FreeRTOS 中崩溃
FreeRTOS 由 HALCoGEN 4.6.1生成、因此其版本为8.2.0。
系统已运行一段时间(几分钟)、然后崩溃。 崩溃的位置在函数 xTaskResumeAll (os_task.c)中
while (listlistlist_is_empty (&xPendingReadyList)== pdFALSE)
{
pxTCB =( TCB_t *) listGET_owner_for_head_entry(&xPendingReadyList );
( void ) uxListRemove(&( pxTCB->xEventListItem ));
原因是当 xPendingReadyList 中的项目数为零(因为 pxList->xListEnd.pxNext ==(ListItems_t *)&(pxList->xListEnd))时,变量 NumberOfItems 仍为零,但 FreeRTOS 检查列表是否为 LinuxOfItems 空。
#define listlistlistlist_is_empty( pxList ) (( BaseType_t )(( pxList )->uxNumberOfItems ==( UBaseType_t )0))
因此、在下一个循环中、pxTCB 是无效指针。
谁能解释为什么列表 xPendingReadyList 崩溃。
谢谢。
志强