| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #!/usr/bin/python3
- # -*- coding: UTF-8 -*-
- import os
- import sys
- import platform
- import multiprocessing
- import serial
- import time
- from tools.Download import build
- def usage():
- print('''
- ZeusOS版本SDK的编译命令如下:
- python zos.py [action]
- <-menu> 功能描述: 开启图形化代码裁剪功能
- <-dl> 功能描述: 往UE下载程序
- 参数: <PortNo.>: 串口号(例如com4)
- <-s> 功能描述: 拆分文件
- 示例1, 开启图形化代码裁剪功能
- python zos.py -menu
- 示例2, 下载固件到模组
- python zos.py -dl com3
- 示例3, 拆分固件
- python zos.py -s
-
- ''')
- def enter_download_mode(com):
- print(com)
- dev = serial.Serial(com, 9600,timeout=1, parity=serial.PARITY_NONE, stopbits=1)
- if dev.isOpen(): # 判断串口是否打开
- print("open success")
- else :
- dev.open()
- dev.write('AT\r\n'.encode("utf8"))
- data = dev.read(50)
- time.sleep(1)
- dev.write('AT\r\n'.encode("utf8"))
- data = dev.read(50)
- if ( "OK" in str(data)):
- print("当前是AT固件\r\n")
- dev.write('AT+NV=SET,STANDBY,0\r\n'.encode("utf8"))
- time.sleep(2)
- dev.write('AT+NV=SET,WDT,0\r\n'.encode("utf8"))
- time.sleep(2)
- dev.write('AT+FORCEDL\r\n'.encode("utf8"))
- time.sleep(2)
- data = dev.read(4)
- print(data)
- else :
- dev.baudrate = 115200
- dev.write('AT\r\n'.encode("utf8"))
- data = dev.read(50)
- dev.write('enter_download_mode\r\n'.encode("utf8"))
- data = dev.read(50)
- if ( "OK" in str(data)):
- print("当前已经进入二次开发模式,即将下载固件\r\n")
- else :
- print("设备连接失败\r\n")
- dev.close()
- time.sleep(3)
- def main():
- argc = 1
- test_list = ['-menu','-b','-c','-m','-mdl','-dl','-s','-h']
- os_ver = platform.system()
- while len(sys.argv) > argc:
- if sys.argv[argc] == "-menu" :
- menu_cmd = "python ./../../tools/config/menuconfig.py"
- if os_ver == "Windows":
- menu_cmd = "start cmd /c " + menu_cmd
- else :
- menu_cmd = "gnome-terminal -x " + menu_cmd
- os.system(menu_cmd)
- print("Zeusos menuconfig 配置已开启")
- if os_ver == "Windows":
- print("如果在windows下看不到图形化配置界面,请使用调用以下命令安装python包: \r\npip install windows-curses ")
- elif sys.argv[argc] == '-m':
- if len(sys.argv) > argc+1:
- if sys.argv[argc+1] in test_list:
- passward = ''
- else :
- passward = sys.argv[argc+1]
- argc +=1
- else :
- passward = ''
- print(passward)
- build.do_pack(passward)
- print('\r\n固件合并完成,现在可以执行以下命令进行下载固件了.')
- print('\r\n当前程序为AT固件或者shell命令可以正常运行,请使用 python zos.py -dl com3 进行下载')
- print('\r\n如果程序处于死机状态请按住boot按键后再上电,然后使用 python zos.py -mdl com3 进行下载')
- elif sys.argv[argc] == '-mdl':
- cmd_list = []
- if len(sys.argv) > argc+1:
- if sys.argv[argc+1] in test_list:
- print("执行下载命令,需要输入串口信息。")
- print("例如:python zos.py -dl com3")
- return
- else :
- cmd_list.append(sys.argv[argc+1])
- if len(sys.argv) > argc+2:
- if sys.argv[argc+2] not in test_list:
- cmd_list.append(sys.argv[argc+2])
- build.do_download(cmd_list)
- argc +=1
- else :
- print("执行下载命令,需要输入串口信息。")
- print("例如:python zos.py -dl com3")
- return
- elif sys.argv[argc] == '-dl':
- cmd_list = []
- if len(sys.argv) > argc+1:
- if sys.argv[argc+1] in test_list:
- print("执行下载命令,需要输入串口信息。")
- print("例如:python zos.py -dl com3")
- return
- else :
- cmd_list.append(sys.argv[argc+1])
- if len(sys.argv) > argc+2:
- if sys.argv[argc+2] not in test_list:
- cmd_list.append(sys.argv[argc+2])
- enter_download_mode(cmd_list[0])
- build.do_download(cmd_list)
- argc +=1
- else :
- print("执行下载命令,需要输入串口信息。")
- print("例如:python zos.py -dl com3")
- return
- elif sys.argv[argc] == '-s':
-
- if len(sys.argv) > argc+1:
- if sys.argv[argc+1] in test_list:
- passward = ''
- else :
- passward = sys.argv[argc+1]
- argc +=1
- else :
- passward = ''
- print(passward)
- build.do_unpack(passward)
- print('\r\n固件拆分完成')
- elif sys.argv[argc] == '-h':
- usage()
- else :
- usage()
- argc += 1
- print("***********************************************************************")
- print("操作已完成,再见")
- if len(sys.argv) == 1 :
- usage()
- else :
- main()
|