mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
* Clean up minor warnings from LGTM.com LGTM (Semmie) is a tool, bought by GitHub last year, that conducts basic linting tasks on code and HTML. Clean up the warnings identified in the latest report: https://lgtm.com/projects/g/esp8266/Arduino/?mode=list No functionality should change, however this may fix some issues with the perl utilities not exiting properly on a Ctrl-C from the command line. * Back out HTML changes and rerun boards.txt.py
69 lines
2.2 KiB
Python
Executable File
69 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Wrapper for Arduino core / others that can call esptool.py possibly multiple times
|
|
# Adds pyserial to sys.path automatically based on the path of the current file
|
|
|
|
# First parameter is pyserial path, second is esptool path, then a series of command arguments
|
|
# i.e. upload.py tools/pyserial tools/esptool write_flash file 0x0
|
|
|
|
import sys
|
|
import os
|
|
import tempfile
|
|
|
|
sys.argv.pop(0) # Remove executable name
|
|
toolspath = os.path.dirname(os.path.realpath(__file__)).replace('\\', '/') # CWD in UNIX format
|
|
try:
|
|
sys.path.insert(0, toolspath + "/pyserial") # Add pyserial dir to search path
|
|
sys.path.insert(0, toolspath + "/esptool") # Add esptool dir to search path
|
|
import esptool # If this fails, we can't continue and will bomb below
|
|
except Exception:
|
|
sys.stderr.write("pyserial or esptool directories not found next to this upload.py tool.\n")
|
|
sys.exit(1)
|
|
|
|
cmdline = []
|
|
write_option = ''
|
|
write_addr = '0x0'
|
|
erase_addr = ''
|
|
erase_len = ''
|
|
|
|
while len(sys.argv):
|
|
thisarg = sys.argv.pop(0)
|
|
|
|
# We silently replace the 921kbaud setting with 460k to enable backward
|
|
# compatibility with the old esptool-ck.exe. Esptool.py doesn't seem
|
|
# work reliably at 921k, but is still significantly faster at 460kbaud.
|
|
if thisarg == "921600":
|
|
thisarg = "460800"
|
|
|
|
# 'erase_flash' command is translated to the write_flash --erase-all option
|
|
# https://github.com/esp8266/Arduino/issues/6755#issuecomment-553208688
|
|
if thisarg == "erase_flash":
|
|
write_option = '--erase-all'
|
|
elif thisarg == 'erase_region':
|
|
erase_addr = sys.argv.pop(0)
|
|
erase_len = sys.argv.pop(0)
|
|
elif thisarg == 'write_flash':
|
|
write_addr = sys.argv.pop(0)
|
|
binary = sys.argv.pop(0)
|
|
elif len(thisarg):
|
|
cmdline = cmdline + [thisarg]
|
|
|
|
cmdline = cmdline + ['write_flash']
|
|
if len(write_option):
|
|
cmdline = cmdline + [write_option]
|
|
cmdline = cmdline + [write_addr, binary]
|
|
|
|
erase_file = ''
|
|
if len(erase_addr):
|
|
# Generate temporary empty (0xff) file
|
|
eraser = tempfile.mkstemp()
|
|
erase_file = eraser[1]
|
|
os.write(eraser[0], bytearray([255] * int(erase_len, 0)))
|
|
os.close(eraser[0])
|
|
cmdline = cmdline + [ erase_addr, erase_file ]
|
|
|
|
esptool.main(cmdline)
|
|
|
|
if len(erase_file):
|
|
os.remove(erase_file)
|