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.
SysConfig 版本1.17.0和1.18.0
SimpleLink MSP432e4 SDK 6.41.00.17
更改 SysConfig 中 NDK 创建的线程部分的默认值时、将使用 ti_ndk_config.c 中未声明的变量"u32cval"。
.syscfg
General.kernPriLevel = 20; General.highPriTaskPriLevel = 15; General.normPriTaskPriLevel = 10; General.stackThreadPriLevel = 15; General.lowPriTaskPriLevel = 5;
自动生成的 ti_ndk_config.c:
/* config low priority task level */ u32cval = ; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRILOW, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char *)&u32cval, 0); /* config normal priority task level */ u32cval = 10; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRINORM, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char *)&u32cval, 0); /* config high priority task level */ u32cval = 15; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRIHIGH, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char *)&u32cval, 0); /* config kernel priority task level */ u32cval = 20; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRIKERN, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char *)&u32cval, 0);
"General.lowPrithaskPriLevel = 5;"条目被转换为一个空值、其他值被正确设置、只是之前从未声明过"u32cval"。
尊敬的 Peter:
不幸的是、我实际上并不知道生成的代码出了什么问题。 如果我更 改为 General.lowPrithaskPriLevel = 5、我确实看到 u32cval 变为未分配。
当我查看 SDK 中针对 tcpecho 的库存示例时、u32cval 应该是任务堆栈的指针、而不是优先级。 优先级应 在 CFGITEM_OS_TASKPRILOW 中进行编码。 在我看来、似乎不止是 没有正确声明 u32cval。 似乎还有其他问题、我对生成的代码一无所知。
我添加了一个设置 PRIO 级别的函数作为权变措施、因此我不依赖 SysConfig 设置、不过这里有问题。
尊敬的 Peter:
同意这里有什么问题。 请告诉我、您添加的功能是否能够完全解决此问题。
是的是、添加该函数可解决该问题。 我只是告诉你,以防有人想修复这个...
/* config low priority task level */ p = TASK_PRIO_LOW; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRILOW, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), &p, 0); /* config normal priority task level */ p = TASK_PRIO_MEDIUM; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRINORM, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char*) &p, 0); /* config high priority task level */ p = TASK_PRIO_HIGH; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRIHIGH, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (unsigned char*) &p, 0);
尊敬的 Peter:
感谢您的分享。