Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AT
at_socket
AT设备Socket移植问题
发布于 2019-08-29 13:41:03 浏览:3296
订阅该版
[tocm] 在AT Device 里面有很多网路模块,里面已经做好了网卡设备和SAL的移植接口。但是关于这方面的介绍请问在哪可以找到呢? 因为在实际应用中,我发现了AT DEVICE一些问题,已经找到了问题的根源,但是看不到SAL接口更深层次的调用关系,所以不知道该如何更改。 ## 比如: 以下接口体,对应着SAL的网络连接接口,但是我找到不到调用的入口,不知道应该如何去追踪 ```c static const struct at_socket_ops sim76xx_socket_ops = { sim76xx_socket_connect, sim76xx_socket_close, sim76xx_socket_send, sim76xx_domain_resolve, sim76xx_socket_set_event_cb, }; ```
查看更多
24
个回答
默认排序
按发布时间排序
bernard
2019-08-29
这家伙很懒,什么也没写!
感觉这块后续集成到stduio中会更好,例如弄个gd32vf + wifi或2G模块的硬件,形成一个简单的参考设计
bevis
2019-08-29
这家伙很懒,什么也没写!
以下是最新版AT DEVICE调试发现的问题,因为加入了网卡设备管理的特性,(SIM7600)第一次开机初始化完成后总会去执行CDNSGIP,然后创建UDP连接(此处占用0号链路),而且这个UDP连接的IP还是空的,i并且还CIPSEND了一些东西出去,完成后就关闭0号链路,这些操作看起来好像也没什么问题。 ## 问题1: 但是当用户再次创建TCP时,分配的链路不再是0号,尽管此时检查到链路全是空的,**链路序列号依然会递增到1号链路。** ## 问题2: 在问题1的基础上,因为第一次开机先CDNSGIP,再创建UDP连接。而此时用户在网卡驱动初始化完成后需要打开webclient, POS一个URL,并等待HTTP Read FIFO的过程中。及其容易与正在创建的UDP+发送某些东西 ,这个步骤冲突而导致用户的网络应用错乱。而最后定位在了第一次开机后总会调用这个 “sim76xx_domain_resolve”,才会触发UDP。 尝试过规避这个现象 1. 初始化完成后,加3秒延时,让`sim76xx_domain_resolve`跑完,再执行我用户网络应用。但是会出现链路一直递增的问题(问题1). 2. 把 `“sim76xx_domain_resolve”`函数里面实现屏蔽,相当于网卡设备执行了个空函数,也依然会触发`UDP+`发送一些东西上去,到头来程序触发的异常更诡异。
Cheney_Chen
2019-08-29
这家伙很懒,什么也没写!
不知道楼主是否是使用的 laster 版本的 at_deivce,最近 at_device 修复了 sim76xx 设备驱动存在的一些网络连接问题,包括 sim76xx 设备 socket 创建和关闭时存在的失败问题以及多线程处理问题。你先试着使用 laster 最新版本测试一下。 具体改动可参考如下 PR 内容 [https://github.com/RT-Thread-packages/at_device/commit/fef127cc505a60ea732b48647c06483aba9a22e2](https://github.com/RT-Thread-packages/at_device/commit/fef127cc505a60ea732b48647c06483aba9a22e2)
Cheney_Chen
2019-08-29
这家伙很懒,什么也没写!
>以下是最新版AT DEVICE调试发现的问题,因为加入了网卡设备管理的特性,(SIM7600)第一次开机初始化完成后总 ... --- 我整理一下楼主的问题, 第一个问题,就是每次开机都会创建一个 UDP 连接,并且发送数据后关闭,这个 UDP 连接的主要作用是同步网卡 INTERNET_UP 状态,每个能连接外网的设备都需要执行。 第二个问题, UDP 关闭之后,很快再次建立一个 TCP 连接,这时候 socket 值从 1 开始创建,而不是从 0。这个问题,我最新在修复 sim76xx 驱动时有注意到,主要是因为 socket 0 关闭过程需要一定时间,这段时间里 socket 0 值还是被占用,如果立刻再创建 scoket ,就会从第二个 socket 开始创建。这个问题我应该在上述 PR 中已经修复。 第三个问题,关于 AT Socket 移植介绍,有时间最近会出一个《RT-Thread AT 设备移植指南》中会详细介绍 AT Device 软件包中实现原理和移植方式。
bevis
2019-08-29
这家伙很懒,什么也没写!
>不知道楼主是否是使用的 laster 版本的 at_deivce,最近 at_device 修复了 sim76xx 设备驱动存在的一些网络 ... 因为我一直在关注的AT DEVICE的更新状况,昨天我就已经更新最新了,所以我才觉得这次版本结构做的比之前好太多太多。今天测试才发现这些小问题。你说的上述PR中已经修复是指,最近还会发版吗?
bevis
2019-08-29
这家伙很懒,什么也没写!
>我整理一下楼主的问题, > >第一个问题,就是每次开机都会创建一个 UDP 连接,并且发送数据后关闭,这个 UDP ... --- 我有个担心是,如果当用户socket因为网络原因,一直快速反复开启与关闭,链路号会不会一直递增下去,链路总数只有9个哟
Cheney_Chen
2019-08-29
这家伙很懒,什么也没写!
>因为我一直在关注的AT DEVICE的更新状况,昨天我就已经更新最新了,所以我才觉得这次版本结构做的比之前 ... 你指的现在的问题是什么,是 socket 值一直会增加吗?我从上面日志上没看出什么错误,能把现在错误定位截图给我看一下吗? 你试一下再创建再执行以下 webclient 例程,看分配的 socket 是从链路 3 开始吗,确定一下是否真有这个问题?
bevis
2019-08-29
这家伙很懒,什么也没写!
>你指的现在的问题是什么,是 socket 值一直会增加吗?我从上面日志上没看出什么错误,能把现在错误定位截 ... --- 按照你说的方法我测了。 初始化成功后,我必须延时3秒,让DNS+UDP先跑完,然后再跑我的网络应用,连接TCP,然后再断开,反复进行。我的TCP永远会占用在1号链路。 测试通过OK。 有个小疑问,UDP既然用完就关,上述测试现象来看,0号链路却是一直被占用着。是驱动的特性吗?? 以下是我给驱动改善的建议,我已经改好部分: 1. 开机时序上对比上一个版本,不知道是不是多了网卡管理,AT执行的时间好像比开机时序调用的时间更快,每次reboot经常会误判已经开机了,然后发送AT,串口却没响应的报错。我改了一下后效果稍微好一点点,但是偶尔还是会发生。 2. 网络RTC的原生同步,免除NTP的同步,这样更快捷方便。 3. NETOPEN 和 CIPCLOSE (不带问号的)执行的返回值其实是第四行显示,resp不应该写0参数,以下是我改好的NETOPEN, CIPCLOSE因为你是使用带?的轮训,所以没有发生意外。
Cheney_Chen
2019-08-29
这家伙很懒,什么也没写!
[i=s] 本帖最后由 Cheney_Chen 于 2019-8-29 16:24 编辑 [/i] >按照你说的方法我测了。 >初始化成功后,我必须延时3秒,让DNS+UDP先跑完,然后再跑我的网络应用,连接TCP ... --- 感谢你的问题反馈和改动建议,我逐一回答一下: 1. UDP 关闭之后链路一直被占用问题,我这边没有测试复现过,这边 UDP 关闭之后,0 端口都可以一直使用,我想问一下 端口一直被占用时 AT+IPCLOSE? 命令是不是一直显示 0 端口状态为1,能否保存一份完整的错误复现日志我帮你分析一下问题。 2. 开机时序调用过快不知道是不是我删除了 开机函数之后的 1秒延时导致的,你可以改回去测试一下,如下图所示: [attach]10503[/attach] 3. RTC 你这样改动没问题,欢迎你提交 PR 4. NETOPEN 和 CIPCLOSE 确实可以改动,也欢迎提交 PR。 PS:上述端口被占用问题我还是觉得是模块内部判断问题或者可能是上述 AT+CIPCLOSE 命令接收响应问题,我需要详细确定一下。
bevis
2019-08-29
这家伙很懒,什么也没写!
[i=s] 本帖最后由 bevis 于 2019-8-29 17:00 编辑 [/i] >感谢你的问题反馈和改动建议,我逐一回答一下: > >1. UDP 关闭之后链路一直被占用问题,我这边没有测试复现 ... --- 附件是链路占用日志, 连接成功后3秒断开再重连,0号链路一直存在
撰写答案
登录
注册新账号
关注者
0
被浏览
3.3k
关于作者
bevis
这家伙很懒,什么也没写!
提问
79
回答
266
被采纳
0
关注TA
发私信
相关问题
1
rt-thread 2g/3g/4g通信模块的教程有吗?
2
基于AT指令,用esp8266如何连接mqtt?
3
AT组件使用问题
4
官方AT客户端应用笔记的几个小tip
5
RTT的SAL能够判断使用LWIP或者AT?
6
rt_therad AT组件移植不成功(结贴)
7
AT组件在哪个版本的?
8
AT组件 连接 Onenet 连接失败
9
esp8266 AT指令 MQTT连接问题
10
AT组件使用问题之模块主动上报【已解决】
推荐文章
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
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
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
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部