Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FinSH
telnet
【已解决】msh使用telnet方式很容易死机,哪里问题呢?
发布于 2019-09-09 16:41:35 浏览:2856
订阅该版
* 本帖最后由 sync 于 2019-9-10 16:58 编辑 * 使用了f407的板子,msh使用串口时,可以正常工作,一旦执行telnet_server命令后,很容易死机, 发现其他线程里面遇到LOG_D就死机。啥原因呢?一开始telnet线程内存是2048,能看到死机故障是从rt_kprinf引起的,我修改为4096后,死机时调用关系截图如下: ![1568018328(1).png](/uploads/201909/09/163917dhc87k86n823jyj2.png) --- 问题最终解决了,但原因却不是十分明白 telnet.c修改地方1:将telnet_thread中主循环内的send_to_client(telnet);注销掉。 ```c while (1) { /* try to send all data in tx ringbuffer */ //send_to_client(telnet); /* do a rx procedure */ if ((recv_len = recv(telnet->client_fd, recv_buf, RECV_BUF_LEN, 0)) > 0) { process_rx(telnet, recv_buf, recv_len); } else { /* close connection */ client_close(telnet); break; } } ``` 修改地方2:将函数telnet_write 内的send_to_client(telnet);注销掉。 ```c static rt_size_t telnet_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) { const rt_uint8_t *ptr; ptr = (rt_uint8_t*) buffer; rt_mutex_take(telnet->tx_ringbuffer_lock, RT_WAITING_FOREVER); while (size) { if (*ptr == '
') rt_ringbuffer_putchar(&telnet->tx_ringbuffer, ' '); if (rt_ringbuffer_putchar(&telnet->tx_ringbuffer, *ptr) == 0) /* overflow */ break; ptr++; size--; } rt_mutex_release(telnet->tx_ringbuffer_lock); /* send data to telnet client */ // send_to_client(telnet); return (rt_uint32_t) ptr - (rt_uint32_t) buffer; } ``` 修改地方3:新建一个发送线程,里面单独放置send_to_client(telnet); ```c while (1) { /* try to send all data in tx ringbuffer */ send_to_client(telnet); rt_thread_mdelay(100); } ``` 这样处理后,原来msh死机的情况就没有了
查看更多
富士山下_LJH
2021-01-21
这家伙很懒,什么也没写!
楼主 我的情况是telnet运行时,只打印了一条信息就没了 你也是吗
8
个回答
默认排序
按发布时间排序
sync
2019-09-10
这家伙很懒,什么也没写!
有时调用关系是这样的,有谁遇到过吗?[attach]10877[/attach]
sync
2019-09-10
这家伙很懒,什么也没写!
[i=s] 本帖最后由 sync 于 2019-9-10 15:29 编辑 [/i] 能力有限,telnet下,msh打印信息时,感觉是哪里内存泄漏造成的,但一时半会不知道怎么找原因了
pc9527
2019-11-26
这家伙很懒,什么也没写!
修改3,这里的新建发送线程,只放while()吗,原本的发送线程需要屏蔽吗
sync
2019-11-27
这家伙很懒,什么也没写!
将前面两处send_to_client(telnet) 注销掉就行了 不过使用时,仍要注意,msh此时使用的网口进行通讯的,网络部分代码的一些debug信息也将使用网口打印, 若同时使用网口会有死机情况出现
pc9527
2019-11-28
这家伙很懒,什么也没写!
>将前面两处send_to_client(telnet) 注销掉就行了 >不过使用时,仍要注意,msh此时使用的网口进行通讯的,网 ... --- 把前面的注销掉了也不行,可能是由于我用的芯片是LPC54616(NXP芯片) ![](C:/Users/Administrator/Desktop/TEST)
sync
2019-11-28
这家伙很懒,什么也没写!
检查一下你的程序,你的程序里面除了msh使用网口,是不是其他线程也有使用网口的地方, 看图片,是已经连接成功了,随后才失败的
cychen
2019-11-29
这家伙很懒,什么也没写!
请检查串口开关接收中断地方 Lpc54618已解决 msh和Telnet 任意切换没问题了
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
sync
这家伙很懒,什么也没写!
提问
12
回答
413
被采纳
78
关注TA
发私信
相关问题
1
RT-THREAD shell无反应呢?
2
RT-thread2.0beta下用类似linux风格MSH,参数如何输入和导出
3
rt-thread finsh windows下的那个终端软件叫什么来着
4
板子上只有485接口,能把FINSH改造成485的么?
5
finsh最大字符问题
6
finsh命令个数是不是有限制啊
7
finsh支持转义字符吗
8
不用finsh如何知道堆栈使用量
9
强烈建议 RT-Thread下finsh原理深入分析
10
finsh输入命令全部返回null node
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部