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.

关于freertos收发TCP数据的问题

Other Parts Discussed in Thread: CC3200

使用FREERTOS开发TCP SERVER,CC3200作为AP,电脑连接到AP后使用网络调试助手持续发数据,CC3200收到数据后马上原数据返回。

一段时间后CC3200就无法收到数据,TCP连接断开,但是可以ping通网络,设置循环周期为0ms持续发送数据,这里考虑是否有发送间隔的问题,

我设置成10ms也会出现类似的问题,如果需要间隔,间隔时间是多长?

另一个现象,我通过打印任务列表发现,无法收到网络数据后SLSPAWN任务一直处于准备就绪状态,不能进入阻塞状态,正常情况下SLSPAWN是在阻塞

状态,有消息交互时处理完后也应该马上进入阻塞。

红色框为正常收发,蓝色为无法收发时任务的状态。

一直处于准备就绪,没办法进入运行状态,但是该任务的优先级是最高的,并且其它任务均有延时,监控信息为1秒打印一次。

期待有解答,非常感谢。

  • 已经assign给相关专家,请等待回复
  • 这种情况,怀疑有数据溢出了。建议观察一下堆栈的使用,还有内存的分配情况
  • 内存分配我尝试了提高CCS中HEAP SIZE和STACK SIZE为0x8000,这个已经足够大了,还提高了FreeRTOS中configTOTAL_HEAP_SIZE为8000,虽然TI的FreeRTOS使用的是heap_3.c内存分配方式,不使用configTOTAL_HEAP_SIZE大小定义总堆栈。

    因为这套代码是由已经完成开发的ESP8266移植过来的,使用的是通用socket API。数据溢出的问题我需要再翻看下代码,数据溢出有可能导致高优先级任务不切换吗?

    任务堆栈可以由主题帖中截图的任务列表打印中看出产生问题前后的任务堆栈剩余空间是没有变化的,这个让我很疑惑。

    非常感谢您的答复。

  • 数据溢或内存空间不足是有可能导致不能进行任务切换的,比如分配不到足够的内存资源等