嵌入式北斗网络时间服务器的Web网页实现

2022-05-30 12:09董希彦
电子产品世界 2022年8期
关键词:链表

董希彦

摘 要:本文介绍了嵌入式北斗网络时间服务器的基本功能,重点讲述了如何在该设备中添加Web网页的方法及实现过程,以及在嵌入式设备中添加此功能应该考虑的资源因素。

关键词:TCP/IP;HTTP;Cortex-M4;RAM;链表

1 时间服务器功能描述

北斗卫星接收终端接收北斗导航卫星发射的RNSS(Radio Navigation Satellite System,无线导航卫星系统)无线电波信号,在设备内部通过PVT解算,计算出用户当前的位置、速度以及时间信息。北斗的时间信息具有非常好的特性,其中包括年、月、日、时、分、秒等完整信息,并且其输出的1pps秒脉冲上升沿,对时精度可达到20ns以内,是一种非常好的时间基准源。北斗网络时间服务器就是利用北斗接收终端中精确的时间信息,通过格式转换,将其转换成标准NTP(Network Time Protocol,网络时间协议)协议传输,在以太网端口实现对其它设备的授时功能,将北斗时间转换成网络时间服务器的基准时间。在网络时间服务器中授时和数据传输都使用网口,添加Web网页,可以使参数的配置和监测也使用网口,一口多用,灵活方便,并且简化了设备的对外接口。

2 Web网页实现方法

北斗网络时间服务器内部采用STM32的Cortex-M4芯片作为主控MCU,芯片内部带有网络媒体控制器(MAC),只需要外接接口芯片就可以完成以太网的硬件功能设计。在软件设计中,使用开源的Lwip协议栈来实现嵌入式网络功能。Lwip是一套专门为嵌入式系统设计的轻量级网络协议栈,支持TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)传输层协议,支持HTTP(Hyper Text Transfer Protocol,超文本传输协议)应用层协议。HTTP应用层协议在TCP/IP传输层基础上,使用TCP/ IP的端口80,实现与IE(Internet Explorer,网络浏览器)之间的网络通信。在嵌入式数据存储方面,软件设计中将M4芯片的内嵌FLASH分成两部分,一部分用于存储程序,一部分用于存储参数。芯片内嵌的Flash具有掉电保存功能,设置好的配置参数每次设备上电后都可以自动调入使用。设备中嵌入的Web网页采用HTML(Hyper Text Markup Language,超文本标记语言)脚本语言编写,要使用的网页首先在PC(个人电腦)机上的编辑环境中设计完成,然后将网页生成二进制流的格式存储到嵌入式FLASH中,嵌入的方法是在程序中创建数组,将数据拷贝输入。多张网页以链表的数据结构存储,便于IE调用时查找。北斗网络时间服务器在与PC机通信时,将FLASH中的网页调入Cortex-M4的RAM中实现参数更新,PC机上的IE浏览器可以直接打开HTML语言网页,进行浏览和参数修改。Cortex-M4程序中定义的变量参数,根据现场数据变化后,将参数替换到HTML脚本的二进制流中,通过HTTP协议与IE浏览器进行数据交互。在IE中设置的参数通过HTTP协议传输给嵌入式设备,一方面更新到HTML脚本的二进制流中,用于下次IE点击时调用,另一方面存储到嵌入式系统的数据FLASH中保存,这些被保存的参数在设备上电时,会根据程序调用,实时更新到网页中。

在嵌入式设备中添加Web网页,要充分评估有限的硬件资源,既要功能完善,也要考虑可靠性及实时性,网页在设计中不宜太过繁琐,毕竟底层硬件资源有限,增加硬件资源就是增加成本。在网页参数设置和更新时间段,要充分考虑网页任务和北斗网络时间服务器其它任务的配合,做到任务执行时间的合理分配,既不互相影响,保证其它任务的实时性,也要提高网页执行效率,更不能丢失设备数据。

3 结语

现代的嵌入式设备中,以太网通信功能越来越普遍,在北斗接收终端中添加以太网功能,形成北斗网络时间服务器,拓展了北斗时间的应用形式。同时,将Web网页也嵌入到北斗网络时间服务器中,设备在与PC机通信时,就可以通过IE浏览器直接查看和设置服务器参数,不需要额外配置软件,非常方便。

参考文献:

[1] 朱升林,欧阳骏,杨晶.嵌入式网络那些事[M].北京:中国水利水电出版社,2015.

[2] 阮晓龙,李朋楠,于冠军,等.Web前端开发从学到用完美实现[M].北京:中国水利水电出版社,2016.

[3] STM32F4XX参考手册[G].2018.

[4] DP83640参考手册[G].2021.

[5] 北斗三号民用终端通用数据接口要求[S].北京:中国卫星导航定位应用管理中心,2021.

猜你喜欢
链表
蒙特卡罗模拟中基于双向链表的元胞链表方法
如何用链表实现一元多项式相加
基于二进制链表的粗糙集属性约简
基于链表多分支路径树的云存储数据完整性验证机制
一种基于链表的战场态势显示方法
基于MTF规则的非阻塞自组织链表
C++的基于函数模板实现单向链表
一种基于有序双端链表的高效排序算法
单向链表快速排序算法*
链表方式集中器抄表的设计