GPT中文小秘书挑几下就能开工
我积分

算任务栈排优先级表

关于「算任务栈排优先级表」:能拿到什么、要点选什么、怎么办

任务清单进,栈大小和优先级表出。任务栈估算排优先级是给 RTOS 各任务定栈大小和优先级的活;在 GPT中文网点选几项,能直接拿到配置表和参数代码草稿。

能拿到什么

  • 推荐:任务优先级/栈大小配置表(任务名、优先级、估算栈、余量、中断关系一列排开)

要你点选的几项

RTOS 类型、芯片架构、任务清单、中断优先级、栈余量比例、开栈水位检测、上传配置材料。多数点一下就行,没选的按常见情况替你定,交付时说清哪几项是按默认的。

怎么办

  1. 填入任务清单、调用深度和局部变量
  2. 选 RTOS 类型和栈余量比例
  3. 核对生成的中断与任务优先级关系
  4. 导出配置表并按代码草稿建任务

别人还这样说

  • 帮我按这几个任务和调用深度估一下栈大小,排个优先级。
  • 任务清单在这,给我出一份优先级和栈大小配置表。
直接说你要办的事。下面是别人怎么办的,点任何一项就换成你自己的。左边是别人怎么办的,右边是你的,点一项就开始改。
示范 · 别人这样说

「这几个任务的局部变量和调用链是这样,帮我算栈并生成任务创建代码。」

按示范选好的 点一项就变成你的

你的成品会在这里出现
示例成品 · 不是你的按示范写的,看个样子
示例: 任务优先级/栈大小配置表(RTOS:FreeRTOS,架构:Cortex-M4) 任务名 | 优先级 | 调用最大深度 | 局部变量估算 | 估算栈 | 余量后栈 | 说明 采集任务 | 3 | 4 | 96 B | 4×(96+8)=416 B | 512 B | 周期 10ms,不阻塞 通信任务 | 2 | 6 | 128 B | 6×(128+8)=816 B | 1024 B | 队列接收,可能阻塞 协议解析 | 4 | 8 | 256 B | 8×(256+8)=2112 B | 3072 B | 递归解析,留余量大 日志任务 | 1 | 3 | 64 B | 3×(64+8)=216 B | 256 B | 最低优先级 看门狗喂狗 | 5 | 2 | 32 B | 2×(32+8)=80 B | 128 B | 最高,短周期 中断优先级(仅列调用 OS 接口的中断): 中断名 | 优先级 | 是否调 OS 接口 USART1_IRQ | 6 | 否 DMA1_IRQ | 5 | 是(需高于 configMAX_SYSCALL_INTERRUPT_PRIORITY) OS 配置代码草稿(FreeRTOS): #define TASK_COLLECT_STACK 512 #define TASK_COMM_STACK 1024 #define TASK_PROTO_STACK 3072 #define TASK_LOG_STACK 256 #define TASK_WDG_STACK 128 xTaskCreate(CollectTask, "collect", TASK_COLLECT_STACK, NULL, 3, NULL); xTaskCreate(CommTask, "comm", TASK_COMM_STACK, NULL, 2, NULL); xTaskCreate(ProtoTask, "proto", TASK_PROTO_STACK, NULL, 4, NULL); xTaskCreate(LogTask, "log", TASK_LOG_STACK, NULL, 1, NULL); xTaskCreate(WdgTask, "wdg", TASK_WDG_STACK, NULL, 5, NULL); 注:栈估算按调用链深度×(局部变量+返回地址+对齐)计,余量 30%;优先级和栈大小由持证人员核对后才能用。

GPT中文 也可能出错,成品请自己核对关键数字和事实。条款 · 隐私