lmyyjx
发表于 2024-6-4 16:23:31
什么时候移植GUI
CosyOS
发表于 2024-6-4 21:08:18
lmyyjx 发表于 2024-6-4 16:23
什么时候移植GUI
还得过段时间
Yang.Lian
发表于 2024-6-6 12:01:26
我完全仿照 os_debug.c 中的方法,写了一个 modbus rtu 从机,
很尴尬的是
每秒查询一次
在运行到大约 735 次查询的时候,就会“死机”,停止响应
所有内存都是静态分配
CosyOS
发表于 2024-6-6 12:44:13
本帖最后由 CosyOS 于 2024-6-6 12:52 编辑
Yang.Lian 发表于 2024-6-6 12:01
我完全仿照 os_debug.c 中的方法,写了一个 modbus rtu 从机,
很尴尬的是
每秒查询一次
那你提供相关代码,我看一下有没有问题。
或者,你自己再多方面查找原因。
重点是“死机”时还有哪些迹象?
如果是STC32的话,仔细查看 内存方案配置与编译器配置的关系:
方案三 和 方案五,内存池指针 均指向 xdata,但要注意:
方案三:内存池指针 从 0x10000 开始;
方案五:内存池指针 从 0 开始。
CosyOS
发表于 2024-6-6 13:16:39
Yang.Lian 发表于 2024-6-6 12:01
我完全仿照 os_debug.c 中的方法,写了一个 modbus rtu 从机,
很尴尬的是
每秒查询一次
注意 任务栈 是否有溢出的可能,尤其是 PSP模式,搞不好是容易任务栈溢出的。
Yang.Lian
发表于 2024-6-6 13:46:07
CosyOS 发表于 2024-6-6 12:44
那你提供相关代码,我看一下有没有问题。
或者,你自己再多方面查找原因。
重点是“死机”时还有哪些迹象 ...
我先研究研究,
死机以后,不管多久,任务还可以调度一次(仅仅一次),通过 iResumeTask 还可以触发另一个Task运行一次,至此之后就完全不响应了
我先增加 任务栈 试一试
Yang.Lian
发表于 2024-6-6 15:39:54
CosyOS 发表于 2024-6-6 13:16
注意 任务栈 是否有溢出的可能,尤其是 PSP模式,搞不好是容易任务栈溢出的。 ...
补充信息:
1. 我使用的 STC32G12K128
2. 我开启了 Debugger/TaskMgr,记录见本文附录
3. PMB1 就是 MODBUS的任务,
4. 用UART3,Debugger/TaskMgr 占用UART1
5. 自从开了 Debug/TaskManager,感觉又没有死机的迹象了
350次左右的时候
CosyOS-II 任务管理器 0.18%
名称 TID PRI状态 CPU 内存
Taskmgr 1 7 RDY 0.07% 56B/s192B
Debugger 4 7 SPD 0% 43B/s160B
PMB1 5 7 SPD 0.04% 43B/s128B
EARC 7 7 SPD 0% 39B/s128B
RNTC 8 6 SPD 0.02% 55B/s128B
THC 6 5 SPD 0.02% 51B/s128B
Sysidle 3 0 RDY 99.82% 39B/s160B
PSVFIFO: 1/32.
Task-PC: 00FF0161.
SysTick: 23.20us.
550次左右的时候
CosyOS-II 任务管理器 0.18%
名称 TID PRI状态 CPU 内存
Taskmgr 1 7 RDY 0.07% 56B/s192B
Debugger 4 7 SPD 0% 43B/s160B
PMB1 5 7 SPD 0.04% 43B/s128B
EARC 7 7 SPD 0% 39B/s128B
RNTC 8 6 SPD 0.02% 55B/s128B
THC 6 5 SPD 0.02% 51B/s128B
Sysidle 3 0 RDY 99.82% 39B/s160B
PSVFIFO: 1/32.
Task-PC: 00FF0161.
SysTick: 23.20us
800次左右的时候
CosyOS-II 任务管理器 0.18%
名称 TID PRI状态 CPU 内存
Taskmgr 1 7 RDY 0.07% 56B/s192B
Debugger 4 7 SPD 0% 43B/s160B
PMB1 5 7 SPD 0.04% 43B/s128B
EARC 7 7 SPD 0% 39B/s128B
RNTC 8 6 SPD 0.02% 55B/s128B
THC 6 5 SPD 0.02% 51B/s128B
Sysidle 3 0 RDY 99.82% 39B/s160B
PSVFIFO: 1/32.
Task-PC: 00FF0161.
SysTick: 23.21us.
1200次左右的时候
CosyOS-II 任务管理器 0.18%
名称 TID PRI状态 CPU 内存
Taskmgr 1 7 RDY 0.07% 56B/s192B
Debugger 4 7 SPD 0% 43B/s160B
PMB1 5 7 SPD 0.04% 43B/s128B
EARC 7 7 SPD 0% 47B/s128B
RNTC 8 6 SPD 0.02% 55B/s128B
THC 6 5 SPD 0.02% 51B/s128B
Sysidle 3 0 RDY 99.82% 39B/s160B
PSVFIFO: 5/32.
Task-PC: 00FF0161.
SysTick: 23.20us.
2100次左右的时候
CosyOS-II 任务管理器 0.18%
名称 TID PRI状态 CPU 内存
Taskmgr 1 7 RDY 0.07% 56B/s192B
Debugger 4 7 SPD 0% 43B/s160B
PMB1 5 7 SPD 0.04% 43B/s128B
EARC 7 7 SPD 0% 47B/s128B
RNTC 8 6 SPD 0.02% 55B/s128B
THC 6 5 SPD 0.02% 51B/s128B
Sysidle 3 0 RDY 99.82% 39B/s160B
PSVFIFO: 5/32.
Task-PC: 00FF0161.
SysTick: 23.20us.
还在持续运行中,没有任何问题
CosyOS
发表于 2024-6-6 16:06:42
本帖最后由 CosyOS 于 2024-6-6 16:08 编辑
Yang.Lian 发表于 2024-6-6 15:39
补充信息:
1. 我使用的 STC32G12K128
2. 我开启了 Debugger/TaskMgr,记录见本文附录
检查一下 Alias checking on pointer accesses 打勾了吗?
不要打勾。
你用的是 PSP模式吗?mcucfg中,是内存方案一吗?
Yang.Lian
发表于 2024-6-6 16:13:15
本帖最后由 Yang.Lian 于 2024-6-6 16:16 编辑
CosyOS 发表于 2024-6-6 16:06
检查一下 Alias checking on pointer accesses 打勾了吗?
不要打勾。
你用的是 PSP模式吗?mcucfg中,是 ...
Alias checking on pointer accesses 没有打钩
mcucfg_80251.h 选择是方案一: PSP
我怀疑是 PSVFIFO 溢出了
CosyOS
发表于 2024-6-6 16:47:26
Yang.Lian 发表于 2024-6-6 16:13
Alias checking on pointer accesses 没有打钩
mcucfg_80251.h 选择是方案一: PSP
那 你 PENDSV_FIFO 深度 设置大一些,
测试一段时间,观察它的最大值