完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 辛一_e1e 于 2022-3-6 23:35 编辑 NTP全称Network time Protocol,即网络时间协议,顾名思义就是通过与网络服务器之间通信来达到时间校准的协议,它是基于UDP的协议,记住这里的UDP,和后面遇到的WiFi驱动Bug密切相关。有了这个协议加上RTC外设的配合,便可以使运行的设备精准报时。 要实现这个功能,首先必须连接网络。RV2601板载一颗WiFi芯片W800,提供了基于AT命令的驱动接口:W800模组AT指令集。 在YoC架构下,所有的网络由网络管理器netmgr负责,这里也不例外。我们需要将W800挂载到netmgr下。
这段代码来自例程webplayer,已经帮我们搭好了WiFi驱动和网络管理器之间的连接,只需要将“netmgr_config_wifi ”的第二个参数设为自己WiFi的SSID,第三个参数为SSID长度,然后第四个和第五个分别是密码和密码长度。 不过光有netmgr,我们的联网体验还不能达到最好。可以加入微服务组件uService,让系统为我们提供消息的发布服务。通过下面代码中的订阅方式,用户可以轻松掌握网络连接状况,通过回调函数network_event根据当前网络状况及时做出反应。
为了达到每次开机不用手动输入SSID和密码的繁琐,可以利用YoC的partition(分区管理)和KV(Key-Value存储系统),将SSID和密码以键值对的方式保存在Flash中。 做好上述工作,便可以使我们的板子轻松连接到互联网中,连接后最习惯的操作就是ping一下。 确保ping通之后开始加入NTP功能。 YoC提供了两个组件ntp和sntp。看全称sntp的s代表的是simple,那就选择简单的入门,原想着快速达成功能,可这才是一波三折的开始…… 第一次编译,系统提示我没有找到“sntp_setservername”函数。感觉被泼冷水一般,心想着官方的例子也会出错?抱着肯定是自己使用不当的态度,开始追源代码。发现这个sntp的simple和协议没多大关系,是直接调用了lwip的ntp的app。 好吧,看来是我没有加入lwip才导致的这个错误。手动添加lwip之后再次编译,噢吼,又有error。CDK告诉我,lwip的sys_init()这个函数被重复定义了。怎么可能?拿出八倍镜细细看了一下错误信息,原来是我手动添加的lwip之前,系统就有lwip这个组件了。 那么这个“罪魁祸首”是谁呢?SAL,Socket Adapter Layer。SAL的官方描述如下,那么对于RVB2601来说外挂的W800刚好属于运行了TCP/IP协议栈的通讯模组。
可是SAL中并没有加入完整的lwip,那么现实就是对于RVB2601来说有SAL就没有SNTP,为了保住联网功能,只能放弃SNTP了。后来也咨询了OCC的技术小二,验证了这个想法。 幸好还有一条路,使用NTP组件。这次编译的过程倒是很顺,但是我依然不敢放松警惕。果不其然,还是出“幺蛾子”了:系统显示WiFi连接成功了,ping也通了,而且W800也完成了“doamin to IP”的解析,获取了服务器的实际IP,但是最后却告诉我时间同步失败了,见下图最后一行“NTP sync error”。 分析这段log发现,有一行“w800_dev conn_start fail”。就很纳闷,w800不是连接正常的吗。继续思考,对照W800的AT指令逐条分析,回想着基于UDP的NTP协议,发现驱动的一个Bug。 先说结论,这个Bug会导致所有基于UDP的网络请求连接失败。那么是什么导致这个Bug呢?w800_api.c这个文件的“w800_connect_remote”这个函数在发起UDP请求时的AT命令格式错误,正确的UDP AT命令应该是
而驱动竟然是
不仅把udp_unicast写成udp_client(只有tcp才有tcp_client),还漏写了local_port这个参数。 代码追到这里已经快到凌晨24点了,如果还是连接不上那我也只能放弃了。好在并没有其他的Bug出现,成功完成了NTP网络时间校准功能。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15667 浏览 1 评论
13720 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19639 浏览 2 评论
59049 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
87819 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
751浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
648浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 05:03 , Processed in 0.707308 second(s), Total 60, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号