高级会员

- 积分
- 559
- 金钱
- 559
- 注册时间
- 2019-7-3
- 在线时间
- 342 小时
|
50金钱
本帖最后由 momentrocky 于 2020-3-30 17:33 编辑
项目中,有两个任务(A和B)都会调用netconn_write发送数据到上位机。任务A优先级为7,堆栈3k*OS_STK,功能是主动上传采集数据;任务B优先级5,堆栈为5K*OS_STK,功能为通过TCP/IP接收上位机命令,并上传存于本地的文件(文件大小2~8K),文件存于SD卡中,上传时读出来存于缓冲区并发送(缓冲区为外扩SDRAM中的全局变量)。当任务B未运行时,单片机工作正常;但当任务A与任务B同时运行时,过一会单片机就死机了,进入HARDFAULT。有没有遇到过类似情况的老铁呀,大概是什么原因呢?
LWIP部分设置:
#define SYS_LIGHTWEIGHT_PROT 1
#define NO_SYS 0
#define MEM_ALIGNMENT 4
#define MEM_SIZE 18000
#define MEMP_NUM_PBUF 20
#define MEMP_NUM_UDP_PCB 6
#define MEMP_NUM_TCP_PCB 10
#define MEMP_NUM_TCP_PCB_LISTEN 6
#define MEMP_NUM_TCP_SEG 15
#define MEMP_NUM_SYS_TIMEOUT 8
//pbuf选项
#define PBUF_POOL_SIZE 20
#define PBUF_POOL_BUFSIZE 512
|
最佳答案
查看完整内容[请看2#楼]
查看日志,可能是任务B优先级太高,一致占用协议栈,导致任务A阻塞。将任务A与任务B优先级交换一下,测试了十来次,没有再出现死机了。
|