It's not like UNIX tools.
This commit is contained in:
@@ -435,12 +435,12 @@ def help():
|
|||||||
print "stlinkv2.py [-u]: Unlock flash ROM"
|
print "stlinkv2.py [-u]: Unlock flash ROM"
|
||||||
print "stlinkv2.py [-s]: Show status"
|
print "stlinkv2.py [-s]: Show status"
|
||||||
print "stlinkv2.py [-b] [-n] [-r] FILE: Write content of FILE to flash ROM"
|
print "stlinkv2.py [-b] [-n] [-r] FILE: Write content of FILE to flash ROM"
|
||||||
print " -b: Enable blanck check"
|
print " -b: Blank check before write (auto erase when not blank)"
|
||||||
print " -n: Don't enable read protection"
|
print " -n: Don't enable read protection after write"
|
||||||
print " -r: Don't reset after write"
|
print " -r: Don't reset after write"
|
||||||
|
|
||||||
|
|
||||||
def main(show_help, erase, no_protect, reset_after_successful_write,
|
def main(show_help, erase_only, no_protect, reset_after_successful_write,
|
||||||
skip_blank_check, status_only, unlock, data):
|
skip_blank_check, status_only, unlock, data):
|
||||||
if show_help or len(sys.argv) != 1:
|
if show_help or len(sys.argv) != 1:
|
||||||
help()
|
help()
|
||||||
@@ -462,7 +462,12 @@ def main(show_help, erase, no_protect, reset_after_successful_write,
|
|||||||
print "ON"
|
print "ON"
|
||||||
else:
|
else:
|
||||||
print "off"
|
print "off"
|
||||||
print "Option bytes: %08x" % stl.option_bytes_read()
|
option_bytes = stl.option_bytes_read()
|
||||||
|
print "Option bytes: %08x" % option_bytes
|
||||||
|
if (option_bytes & 0xff) == RDP_KEY:
|
||||||
|
ob_protection_enable = False
|
||||||
|
else:
|
||||||
|
ob_protection_enable = True
|
||||||
|
|
||||||
stl.enter_debug()
|
stl.enter_debug()
|
||||||
status = stl.get_status()
|
status = stl.get_status()
|
||||||
@@ -474,8 +479,7 @@ def main(show_help, erase, no_protect, reset_after_successful_write,
|
|||||||
print "The MCU is now stopped."
|
print "The MCU is now stopped."
|
||||||
return 0
|
return 0
|
||||||
elif not unlock:
|
elif not unlock:
|
||||||
print "Please unlock flash ROM protection, at first. By invoking with -u option."
|
raise OperationFailure("Flash ROM is protected")
|
||||||
return 1
|
|
||||||
else:
|
else:
|
||||||
if not skip_blank_check:
|
if not skip_blank_check:
|
||||||
blank = stl.blank_check()
|
blank = stl.blank_check()
|
||||||
@@ -487,35 +491,36 @@ def main(show_help, erase, no_protect, reset_after_successful_write,
|
|||||||
stl.run()
|
stl.run()
|
||||||
stl.exit_debug()
|
stl.exit_debug()
|
||||||
return 0
|
return 0
|
||||||
elif unlock:
|
elif unlock and not ob_protection_enable:
|
||||||
print "No need to unlock. Protection is not enabled."
|
print "No need to unlock. Protection is not enabled."
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
if erase_only:
|
||||||
|
if blank:
|
||||||
|
print "No need to erase"
|
||||||
|
return 0
|
||||||
|
|
||||||
|
stl.setup_gpio()
|
||||||
|
|
||||||
if unlock:
|
if unlock:
|
||||||
stl.reset_sys()
|
stl.reset_sys()
|
||||||
stl.option_bytes_write(OPTION_BYTES_ADDR,RDP_KEY)
|
stl.option_bytes_write(OPTION_BYTES_ADDR,RDP_KEY)
|
||||||
print "Flash ROM read protection disabled. Reset the board, now."
|
print "Flash ROM read protection disabled. Reset the board, now."
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if erase:
|
|
||||||
if blank:
|
|
||||||
print "No need to erase"
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if not blank:
|
if not blank:
|
||||||
print "ERASE ALL"
|
print "ERASE ALL"
|
||||||
stl.reset_sys()
|
stl.reset_sys()
|
||||||
stl.flash_erase_all()
|
stl.flash_erase_all()
|
||||||
|
|
||||||
if erase:
|
if erase_only:
|
||||||
|
stl.finish_gpio()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
time.sleep(0.100)
|
time.sleep(0.100)
|
||||||
|
|
||||||
stl.setup_gpio()
|
|
||||||
print "WRITE"
|
print "WRITE"
|
||||||
stl.flash_write(0x08000000, data)
|
stl.flash_write(0x08000000, data)
|
||||||
stl.finish_gpio()
|
|
||||||
|
|
||||||
print "VERIFY"
|
print "VERIFY"
|
||||||
data_received = ()
|
data_received = ()
|
||||||
@@ -540,12 +545,14 @@ def main(show_help, erase, no_protect, reset_after_successful_write,
|
|||||||
stl.reset_sys()
|
stl.reset_sys()
|
||||||
stl.run()
|
stl.run()
|
||||||
stl.exit_debug()
|
stl.exit_debug()
|
||||||
|
else:
|
||||||
|
stl.finish_gpio()
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
show_help = False
|
show_help = False
|
||||||
erase = False
|
erase_only = False
|
||||||
no_protect = False
|
no_protect = False
|
||||||
reset_after_successful_write = True
|
reset_after_successful_write = True
|
||||||
skip_blank_check=True
|
skip_blank_check=True
|
||||||
@@ -556,10 +563,12 @@ if __name__ == '__main__':
|
|||||||
while len(sys.argv) > 1:
|
while len(sys.argv) > 1:
|
||||||
if sys.argv[1] == '-h':
|
if sys.argv[1] == '-h':
|
||||||
sys.argv.pop(1)
|
sys.argv.pop(1)
|
||||||
|
show_help = True
|
||||||
break
|
break
|
||||||
elif sys.argv[1] == '-e':
|
elif sys.argv[1] == '-e':
|
||||||
sys.argv.pop(1)
|
sys.argv.pop(1)
|
||||||
erase = True
|
erase_only = True
|
||||||
|
skip_blank_check=False
|
||||||
break
|
break
|
||||||
elif sys.argv[1] == '-u':
|
elif sys.argv[1] == '-u':
|
||||||
sys.argv.pop(1)
|
sys.argv.pop(1)
|
||||||
@@ -586,7 +595,8 @@ if __name__ == '__main__':
|
|||||||
colorama_init()
|
colorama_init()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = main(show_help, erase, no_protect, reset_after_successful_write,
|
r = main(show_help, erase_only, no_protect,
|
||||||
|
reset_after_successful_write,
|
||||||
skip_blank_check, status_only, unlock, data)
|
skip_blank_check, status_only, unlock, data)
|
||||||
if r == 0:
|
if r == 0:
|
||||||
print Fore.WHITE + Back.BLUE + Style.BRIGHT + "SUCCESS" + Style.RESET_ALL
|
print Fore.WHITE + Back.BLUE + Style.BRIGHT + "SUCCESS" + Style.RESET_ALL
|
||||||
|
|||||||
Reference in New Issue
Block a user