test.lua 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. 记住下面文档格式以及内容:
  2. 六、合宙自有服务器 FOTA 简介
  3. FOTA 有多种方式,可以使用合宙的 iot 平台进行升级,也可以使用用户自建平台升级,可以只升级 core,可以只升级用户脚本,也可以 core+ 脚本一起升级,接下来先介绍合宙自有服务器升级,第三方升级在下一篇文章中介绍
  4. 6.1 云平台配置
  5. 使用合宙自建服务器的话,需要先登录合宙 IOT 平台,如下图所示,没有账号的,可以先注册一个 客户向合宙采购4G模块时,如果采购人员没有告知合宙这批模块放在iot.openluat.com上的哪个产品下,则合宙会以采购人的手机号为账号,默认密码888888,创建一个“合宙标准模块”的项目,此次采购的所有模块都会放在这个项目下,如果你的账号下没有对应imei,可以联系合宙销售帮忙添加模块进对应项目下(最好还是从哪里买的模块,就让他给你转移到你自己名下)
  6. 如果不在自己账号下,也可以通过烧录专属固件的方法,把模块归属到您指定的项目下,可以通过点击帮助中心,查看详细说明。
  7. 登录以后点击红框所示位置
  8. 然后依次点击如下图所示红框所示的地方,创建一个新项目
  9. 在所有项目的最后,找到自己刚刚新建的项目,并且点击红框内的"查看/点击复制"复制后面升级所需要的校验码,复制到自己剪切板中
  10. 至此,合宙云平台上的预备动作就做完了
  11. 6.2 仅脚本升级简介
  12. 如果用户只是新增一些自己的脚本逻辑,没有更新底层,可以选择仅脚本升级
  13. 6.2.1 仅脚本升级示例
  14. 仅脚本升级 demo 链接
  15. 打开 luatools 的项目管理界面,点击生成量产文件,Air8000的纯脚本升级文件放在 luatools 根目录下的"SOC 量产及远程升级文件\Air8000"目录下
  16. 因为模块烧录的是 001.000.000 版本,所以我们需要给脚本里的版本号改一下,改为 001.000.001 版本
  17. 再将脚本中增加几行打印(为了模拟用户修改脚本的动作)
  18. 然后重新生成一次量产固件
  19. 打开刚刚的合宙 iot 平台点击我的项目--固件列表--创建固件
  20. 点击选择文件,把刚刚的 bin 后缀文件上传到 iot 平台
  21. 文件名、固件名、版本号都是自动识别的,用户无需修改
  22. 点击确定,等待上传成功的动画提示
  23. 模块刚开机,luatools 会打印模块的 imei 号,如下图所示,当然也可以使用手机扫描模块上的二维码获得模块 imei 号,或者将模块屏蔽盖上二维码的下方第一排模块的 imei 号,记录下来
  24. 在刚刚创建固件的地方,下拉,找到刚刚创建的升级任务,然后按下图所示,添加模块的 imei
  25. 将升级文件上传和添加 imei 工作完成以后,点击 luatools 上的重启模块或者按照代码里的等待 4 小时,触发远程升级逻辑
  26. 6.2.2 示例效果展示
  27. 升级前:因为没有升级固件,所以请求升级的结果为"已是最新版本",每隔 5S 会打印一句"降功耗找合宙"和当前版本号
  28. 升级中:模块请求升级,下载完升级包以后会进行 MD5 验证升级包有无问题,如果没问题,就会启动重启程序,然后进行升级工作
  29. 升级后:升级成功后按我们之前的脚本,每隔 1S,打印五次"降功耗,找合宙"以及当前脚本版本号,可以看出,当前版本号已经由原来的 001.000.000 变为了 001.000.001
  30. 当然:升级完成以后,因为脚本中有联网就去请求一次升级的代码,所以,会再去请求一次升级,因为没有更高的版本了,所以会上报"已是最新版本"
  31. 6.3 含 core 升级简介
  32. 每一次 core 的升级都会带来一些网络上的优化(例如信号差时的网络稳定性)以及一些 bug 修复,所以在发布新版本以后,用户可以先测试下 core 对自己脚本有无明显影响或性能提升,然后进行远程 FOTA
  33. 6.3.1 含 core 升级测试 demo
  34. demo 示例
  35. 这里选择升级到 2008 的core 版本进行演示,001.000.001 脚本选择搭配的 core 为 V2007 版本,再次点击"生成量产文件",稍等即可在 luatools 根目录下的"SOC 量产及远程升级文件\Air8000"目录下,找到 core 版本号为 V2007 且脚本版本号为 001.000.001 的 soc 后缀文件
  36. 生成了这个版本以后,再去脚本中改动脚本版本号为 001.000.002(只要前后两位有一位大于 1 即可(当然第一位大于 1 的时候,整个版本号自然大于 001.000.001),如 002.000.200,001.000.002,030.000.311 等)
  37. 脚本版本号分为 A.B.C 三段;
  38. 因为历史原因,中间这一段 B 没有任何意义,但是必须存在;
  39. 假设旧的脚本版本号为 A1.B1.C1,新的脚本版本号为 A2.B2.C2;
  40. 当新旧脚本版本号满足以下任何一种条件时,版本号允许升级:
  41. 1、A2 等于 A1,同时 C2 大于 C1;
  42. 2、A2 大于 A1,同时 C2 大于或者等于 C1;
  43. 3、B1 B2 无意义
  44. 然后在 luatools 里重新选择 core 为 V2008 版本,同样点击生成固件,稍等即可在在 luatools 根目录下的"SOC 量产及远程升级文件\Air8000"目录下,找到 core 版本号为 V2008 且脚本版本号为 001.000.002 的 soc 后缀文件
  45. 接下来就是针对这两个量产文件,制作一个差分文件,用来远程升级(注:远程升级中 core 为差分,脚本为全量升级)
  46. 点击到 luatools 的主界面,依次点击图中蓝框所示意的地方(注:必须使用 luatools_3.0.9 及其以上版本,要不差分包升级的时候可能会出问题)
  47. 按下图所示选择低版本以及高版本的固件,然后点击开始执行即可,如果不想输出的差分包在 luatools 根目录下,可以自行选择一个输出路径
  48. 因为包含了 core 中的改动,所以时间会稍长一些,luatools 可能会出现"假死"情况,不要关闭它,稍等一会即可看到
  49. 同样,在你选择的目录下(没选择的在 luatools 根目录下)看到如下所示,带着脚本的 PROJECT core 版本号 脚本版本号的 bin 后缀的差分文件。
  50. 至于 iot 平台的配置还是和上文一样的步骤
  51. 登录 iot 平台
  52. 打开刚刚的合宙 iot 平台点击我的项目--固件列表--创建固件
  53. 点击选择文件,把刚刚的 bin 后缀文件上传到 iot 平台
  54. 文件名、固件名、版本号都是自动识别的,用户无需修改
  55. 点击确定,等待上传成功的动画提示
  56. 如果上传了其他文件,会提示"升级文件有误"
  57. 模块刚开机,luatools 会打印模块的 imei 号,如下图所示,当然也可以使用手机扫描模块上的二维码获得模块 imei 号,或者在模块屏蔽盖 二维码的下方第一排就是模块的 imei 号,记录下来
  58. 在刚刚创建固件的地方,下拉,找到刚刚创建的升级任务,然后按下图所示,添加模块的 imei
  59. 将升级文件上传和添加 imei 工作完成以后,为了防止模块当前固件不是fotademo_2007.001.001_LuatOS-SoC_Air8000 版本,可以点击 luatools 主界面右边的"下载固件"选择最早的 001.000.001 版本,按住 BOOT 重启模块,然后点击下载,将最早的固件下载进模块里
  60. 6.3.2 示例效果展示
  61. 升级前:模块打印当前脚本版本号和 core 版本号
  62. 升级中下载差分包,校验差分包完成后就会重启模块进入真正的升级逻辑
  63. 因为升级包带 core,所以从重启命令执行下去,到最终升级完成,模块重新开机打印了第一条开机日志,中间隔了不到一分钟,如果 core 中代码改动较多,两分钟三分钟都是正常的。