Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
rt-thread+lwip ENET_RXD0信号到 recvfrom 时延到ms 实时?
发布于 2020-01-14 17:21:12 浏览:1577
订阅该版
* 本帖最后由 parkin 于 2020-1-14 17:24 编辑 * 开发环境: RT-Thread: v4.0.2(master) SOC: i.MX RT1050 Board: 野火 RT1052 系统环境: lwip(2.0.2) + 测试程序(接收(recvfrom)到数据后马上输出IO信号) 测试方法: 探头一:ENET_RXD0引脚 探头二:IO信号引脚 测试这两个信号的时延 目的:网卡接收到数据后立即进行业务处理,这个过程中的时延在us级,抖动控制在100us内 现象:目前经过测试发现时延最高到9ms, 最低时延为97us 问题:如果使“最高时延-最低时延<=100us”
查看更多
12
个回答
默认排序
按发布时间排序
cychen
2020-08-03
这家伙很懒,什么也没写!
这个跟RX线程有很大关系,目前测试发现当发送数据过快时会丢包 发200包udp 丢几十包 .丢包出现在recvfrom,因为rt lwip流程是中断发邮箱 通知lwip 通知lwip其他 然后再通知rx线程 最后才到recvfrom 这里花的时间比较长 。目前未真正找出丢数据点 。利用同样的发送时间 freertos 未出现丢包.目前正改造采用NO-RX-thread 方式接收处理
parkin
2020-01-15
这家伙很懒,什么也没写!
自顶,不要沉下去:lol
parkin
2020-01-16
这家伙很懒,什么也没写!
自顶,不要沉下去:)
aozima
2020-01-16
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
UDP的话,直接放中断里面的去处理吧。 原来的驱动接收队列也要做一下修改,为了实时性就要损失些性能。
bernard
2020-01-16
这家伙很懒,什么也没写!
为了考虑实时性,还是需要做更多的一些特殊考虑的。例如如果是任务中处理,则这个任务的优先级;如果是在中断中处理,则这个中断的 优先级。 离开这些谈实时性,是不现实的
parkin
2020-01-16
这家伙很懒,什么也没写!
[i=s] 本帖最后由 parkin 于 2020-1-16 14:45 编辑 [/i] >UDP的话,直接放中断里面的去处理吧。 >原来的驱动接收队列也要做一下修改,为了实时性就要损失些性能。 ... --- 谢谢你的回复, 首先,请问你说的“直接放中断中处理”,意思是不使用lwip组件,直接中断处理接收? 然后,如果我使用lwip组件,我又该如何使接收实时呢? 为了实时性,损失吞吐量,性能都没关系。 目前我还在分析 lwip 的源码,有以下发现 1.rtthread 的 邮箱在调度上对于实时性影响不大,没有有超过百us 2.线程的优先级会影响邮箱接收,需要调整其为最高优先级 3.LWIP_SO_RCVBUF也应该对实时性有影响。我计划取消该功能。 4系统启动后 lwip 会创建一个 tcpip 线程,这个县城启动后每间隔1s就会请求邮箱数据,暂时猜测UDP没有使用到 tcpip 线程。我打算关闭它。 如果您有好的建议,请回复。谢谢。
parkin
2020-01-16
这家伙很懒,什么也没写!
>为了考虑实时性,还是需要做更多的一些特殊考虑的。例如如果是任务中处理,则这个任务的优先级;如果是在中 ... --- 首先,谢谢你的回复。 我这边使用的是UDP协议,只要解析UDP数据就可以了。其中你们所说中断中处理,我不太明白,可否详细说明。目前我有一些结果,请看 #6 楼我的回复。
bernard
2020-01-16
这家伙很懒,什么也没写!
>首先,谢谢你的回复。 >我这边使用的是UDP协议,只要解析UDP数据就可以了。其中你们所说中断中处理,我不 ... --- 因为是UDP协议,最简单的方法就是绕过协议栈(或者旁路掉),然后在中断中进行处理(最好是预先把报文准备好,发送数据报文的过程是通过DMA完成),这样接收到EMAC接收中断,就判断下是否是自己的报文,是,则按照预备好的报文稍微做一定调整,然后压到DMA中发出去。 如果中断还有可能被抢占,那就调整中断优先级,甚至是说整个系统运行过程中,这个EMAC中断都不屏蔽,可以持续去响应。这个时候实时性就是最棒的了,比得上(什么事都不干的)裸机了 以前还真这么整过,然后其他的,TCP连接照样交给lwIP去处理,上层跑个web server都没问题
parkin
2020-01-17
这家伙很懒,什么也没写!
[i=s] 本帖最后由 parkin 于 2020-1-17 11:05 编辑 [/i] >因为是UDP协议,最简单的方法就是绕过协议栈(或者旁路掉),然后在中断中进行处理(最好是预先把报文准 ... --- ``` rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
callback(base, handle, kENET_RxEvent, handle->userData);
bernard
2020-01-17
这家伙很懒,什么也没写!
例如这个是EMAC的中断服务例程,大致的程序会是: void emac_isr() { uint8_t * p = emac_fetch_buffer(); if (p[x] = MAGIC) { emac_tx(your_packet, size); } else { device_ready(); } }
撰写答案
登录
注册新账号
关注者
0
被浏览
1.6k
关于作者
parkin
这家伙很懒,什么也没写!
提问
4
回答
16
被采纳
0
关注TA
发私信
相关问题
1
lwip1.4.1连接经常会断开无法连接上,可以ping通
2
LPC1768:RTT+LWIP+webserver用IE刷网页出现硬件中断错误(已经解决)
3
求一些LWIP开发的经验,目前ping一直不稳定。
4
stm32f207+dp83848无法ping通
5
RTT下的LWIP传递机制
6
rtt内lwip的socket是否是线程安全?
7
Lwip+enc28j60无法ping通
8
坑爹的rtconfig.h lwip关掉了checksum
9
花了一个晚上,把RT2.0的LWIP、网卡驱动、文件系统整合起来了,发现一点小问题
10
lwip例程中udp发送时如何指定源端口发送到指定目的地端口
推荐文章
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 2024开发者大会议程正式发布!
2
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
3
RT-Thread EtherKit开源以太网硬件正式发布
4
如何在master上的BSP中添加配置yml文件
5
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
热门标签
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
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
20
个答案
2
次被采纳
张世争
11
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部