You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
3 years ago
|
# 边缘网关升级程序
|
||
|
>本文档描写IOT边缘网关升级的设计思想及方案概要,不涉及具体实现方案和技术实现方案。
|
||
|
##功能
|
||
|
实现边缘设备升级功能,edge server 下发软件信息(OTA.)即版本,watchdog间隔10s后台监听对比要升级的版本和设备版本,不同则升级,wd.shell监听watchdog保证进程运行。
|
||
|
##模块框架设计
|
||
|
|
||
|
### edge server
|
||
|
web下发软件信息
|
||
|
### edge
|
||
|
存储软件信息和当前设备版本信息,提供http接口方便获取以上信息
|
||
|
### WatchDog
|
||
|
间隔对比版本信息,通过http方式获取。如果版本不一致,修改
|
||
|
`docker-compose.yml`中版本信息,执行
|
||
|
`docker-compose up` 自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器
|
||
|
### wd.shell
|
||
|
10s定时监听WatchDog进程是否运行
|
||
|
|
||
|
|
||
|
##系统处理流程
|
||
|
Mqtt Topic:MSG_TOPIC_CONFIG_VER
|
||
|
EDGE SERVER: onSoftWareRequest 推送
|
||
|
EDGE: onConfigVer 保存信息(SetUpdateVersion)
|
||
|
|
||
|
HTTP:
|
||
|
WatchDog: http://localhost:8828/ver GetVerFromEdge 获取版本信息
|
||
|
EDGE: VersionGet 收到请求返回保存信息
|
||
|
|
||
|
##开发和运行环境
|
||
|
###开发环境
|
||
|
系统:win10x64 Goland 2021.3.3 go版本 1.16
|
||
|
###硬件环境
|
||
|
飞凌OK3399C开发板
|
||
|
###软件环境
|
||
|
Unix/Docker
|
||
|
|
||
|
##可靠性设计
|
||
|
|
||
|
###wd.shell
|
||
|
监听WatchaDog的看门狗,即在监控升级的进程后再放一只看门狗
|
||
|
|
||
|
#!/bin/bash
|
||
|
|
||
|
#判断进程是否存在,如果不存在就启动它如果存在就重启它
|
||
|
|
||
|
while true; do
|
||
|
|
||
|
cd /home/forlinx
|
||
|
|
||
|
#启动一个循环,定时检查进程是否存在
|
||
|
|
||
|
server=`ps aux | grep WatchDog | grep -v grep`
|
||
|
|
||
|
if [ ! "$server" ]; then
|
||
|
|
||
|
#如果不存在就重新启动
|
||
|
|
||
|
#./WatchDog 8553 -c 1 &
|
||
|
|
||
|
./WatchDog 8553 &
|
||
|
|
||
|
#启动后沉睡10s
|
||
|
|
||
|
sleep 10
|
||
|
|
||
|
fi
|
||
|
|
||
|
#每次循环沉睡10s
|
||
|
|
||
|
sleep 10
|
||
|
|
||
|
done
|
||
|
|