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

add: air302和air640w均可生成升级包和后备回滚包

Wendal Chen 5 лет назад
Родитель
Сommit
620fcf2c63
2 измененных файлов с 36 добавлено и 6 удалено
  1. 34 0
      bsp/air302/air302.py
  2. 2 6
      bsp/air640w/air640w.py

+ 34 - 0
bsp/air302/air302.py

@@ -242,6 +242,8 @@ def _lfs(_path=None):
     # 然后遍历user目录
     for name in os.listdir(_path) :
         _paths.append(_path + name)
+    TAG_PROJECT = ""
+    TAG_VERSION = ""
     for name in _paths :
         # 如果是lua文件, 编译之
         if name.endswith(".lua") :
@@ -249,6 +251,14 @@ def _lfs(_path=None):
             if name.endswith("main.lua") :
                 if not MAIN_LUA_DEBUG :
                     cmd += ["-s"]
+                with open(name, "rb") as f :
+                    for line in f.readlines() :
+                        if line :
+                            line = line.strip().decode()
+                            if line.startswith("PROJECT =") :
+                                TAG_PROJECT = line[line.index("\"") + 1:][:-1]
+                            elif line.startswith("VERSION =") :
+                                TAG_VERSION = line[line.index("\"") + 1:][:-1]
             elif not LUA_DEBUG :
                 cmd += ["-s"]
             else:
@@ -260,6 +270,30 @@ def _lfs(_path=None):
         else:
             print("COPY", name, FTC_PATH + "disk/" + os.path.basename(name))
             shutil.copy(name, FTC_PATH + "disk/" + os.path.basename(name))
+    if TAG_PROJECT == "" or TAG_VERSION == "" :
+        print("!!!!!!!miss PROJECT or/and VERSION!!!!!!!!!!")
+
+    for root, dirs, files in os.walk(FTC_PATH + "disk", topdown=False):
+        import struct
+        print("write flashx.tlv", root)
+        with open(FTC_PATH + "disk/flashx.tlv", "wb") as f :
+            # 写入文件头
+            f.write(struct.pack("<HHI", 0x1234, 0x00, 0x00))
+            for name in files:
+                # 写入文件名
+                f.write(struct.pack("<HHI", 0x0101, 0x00, len(name)))
+                f.write(name.encode())
+                # 写入文件内容
+                _path = os.path.join(root, name)
+                _size = os.path.getsize(_path)
+                f.write(struct.pack("<HHI", 0x0202, 0x00, _size))
+                with open(_path, "rb") as f2 :
+                    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)
+
     print("CALL mklfs for disk.fs")
     subprocess.check_call([TOOLS_PATH + "mklfs.exe"], cwd=FTC_PATH)
 

+ 2 - 6
bsp/air640w/air640w.py

@@ -222,12 +222,8 @@ def _lfs(_path=None):
     for name in _paths :
         # 如果是lua文件, 编译之
         if name.endswith(".lua") :
-            ## 如果使用32bits的底层,需要用luac_536_32bits编译lua文件
             cmd = [TOOLS_PATH + "luac_536_32bits.exe"]
             print ("Using Lua 32bits!!!")
-            ## 如果使用64bits的底层,需要用luac编译lua文件
-            #cmd = [TOOLS_PATH + "luac.exe"]
-            #print ("Using Lua 64bits!!!")
             if name.endswith("main.lua") :
                 if not MAIN_LUA_DEBUG :
                     cmd += ["-s"]
@@ -270,8 +266,8 @@ def _lfs(_path=None):
                 with open(_path, "rb") as f2 :
                     shutil.copyfileobj(f2, f, _size)
     if TAG_PROJECT != "" and TAG_VERSION != "":
-        # otademo_1.2.7_LuatOS_V0002_w60x
-        TAG_NAME = "%s_%s_LuatOS_V0002_w60x.tlv" % (TAG_PROJECT, 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)
 
 def main():