Просмотр исходного кода

change: 升级文件的后缀还是用bin吧, 否则用户上传到合宙iot平台的时候还得改路径
update: 把air302的ota demo也加上

Wendal Chen 5 лет назад
Родитель
Сommit
b6ec90dd0b

+ 2 - 2
bsp/air302/air302.py

@@ -291,8 +291,8 @@ def _lfs(_path=None):
                     shutil.copyfileobj(f2, f, _size)
     if TAG_PROJECT != "" and TAG_VERSION != "":
         # otademo_1.2.7_LuatOS_V0003_ec616
-        TAG_NAME = "%s_%s_LuatOS_V0003_ec616.tlv" % (TAG_PROJECT, TAG_VERSION)
-        shutil.copy(FTC_PATH + "disk/flashx.tlv", TAG_NAME)
+        TAG_NAME = "%s_%s_LuatOS_V0003_ec616.bin" % (TAG_PROJECT, TAG_VERSION)
+        shutil.copy(FTC_PATH + "disk/flashx.bin", TAG_NAME)
 
     print("CALL mklfs for disk.fs")
     subprocess.check_call([TOOLS_PATH + "mklfs.exe"], cwd=FTC_PATH)

+ 47 - 0
bsp/air302/demo/ota/main.lua

@@ -0,0 +1,47 @@
+
+-- 必须有PROJECT和VERSION这两个信息
+
+-- 这个DEMO需要V0003及以上的固件
+
+PROJECT = "otademo"
+VERSION = "1.0.0"
+PROJECT_KEY = "01kgGFLlsfAabFuwJosS4surDNWOQCVH"
+
+log.info("version", VERSION) -- 打印版本号,就能知道是否升级成功
+
+local sys = require "sys"
+
+-- 生成OTA的URL
+local iot_url = "http://iot.nutz.cn/api/site/firmware_upgrade"
+local ota_url = string.format("%s?project_key=%s&imei=%s&firmware_name=%s&version=%s", 
+                        iot_url,
+                        PROJECT_KEY, 
+                        nbiot.imei(),
+                        PROJECT .. "_" .. rtos.firmware(),
+                        VERSION
+                    )
+
+log.info("ota", "url", ota_url)
+
+sys.taskInit(function()
+    while 1 do
+        if socket.isReady() then
+            -- 联网后轮询
+            http.get(ota_url, {dw="/update.bin"}, function(code,headers,body)
+                if code == 200 then
+                    -- 当且仅当服务器返回200时,升级文件下载成功
+                    log.info("ota", "http ota ok!!", "reboot!!")
+                    rtos.reboot()
+                else
+                    log.info("ota", "resp", code, body)
+                end
+            end)
+            sys.wait(60*60*1000) -- 一小时检查一次
+        else
+            sys.wait(3000)
+        end
+    end
+end)
+
+-- 结尾总是这一句哦
+sys.run()

+ 2 - 2
bsp/air640w/air640w.py

@@ -267,8 +267,8 @@ def _lfs(_path=None):
                     shutil.copyfileobj(f2, f, _size)
     if TAG_PROJECT != "" and TAG_VERSION != "":
         # otademo_1.2.7_LuatOS_V0003_w60x
-        TAG_NAME = "%s_%s_LuatOS_V0003_w60x.tlv" % (TAG_PROJECT, TAG_VERSION)
-        shutil.copy("disk/flashx.tlv", TAG_NAME)
+        TAG_NAME = "%s_%s_LuatOS_V0003_w60x.bin" % (TAG_PROJECT, TAG_VERSION)
+        shutil.copy("disk/flashx.bin", TAG_NAME)
 
 def main():
     argc = 1

+ 2 - 2
bsp/air640w/demo/88.ota/main.lua

@@ -4,7 +4,7 @@
 -- 这个DEMO需要V0003及以上的固件
 
 PROJECT = "otademo"
-VERSION = "1.0.2"
+VERSION = "1.0.0"
 PROJECT_KEY = "5aae50f068d9408c92b0fb5911834029"
 
 log.info("version", VERSION) -- 打印版本号,就能知道是否升级成功
@@ -29,7 +29,7 @@ sys.taskInit(function()
     while 1 do
         if socket.isReady() then
             -- 联网后轮询
-            http.get(ota_url, {dw="/update.tlv"}, function(code,headers,body)
+            http.get(ota_url, {dw="/update.bin"}, function(code,headers,body)
                 if code == 200 then
                     -- 当且仅当服务器返回200时,升级文件下载成功
                     log.info("ota", "http ota ok!!", "reboot!!")

+ 2 - 2
luat/modules/luat_main.c

@@ -81,10 +81,10 @@ static int panic (lua_State *L) {
   return 0;  /* return to Lua to abort */
 }
 
-#define UPDATE_BIN_PATH "/update.tlv"
+#define UPDATE_BIN_PATH "/update.bin"
 #define ROLLBACK_MARK_PATH "/rollback_mark"
 #define UPDATE_MARK "/update_mark"
-#define FLASHX_PATH "/flashx.tlv"
+#define FLASHX_PATH "/flashx.bin"
 
 int luat_bin_unpack(const char* path);