From 0a99a26fcc4bea0f19482f632d5492a905026654 Mon Sep 17 00:00:00 2001 From: Simon Wilks Date: Mon, 19 Jan 2015 16:51:08 +0100 Subject: Cleanup uploader output. --- Tools/px_uploader.py | 53 +++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 23 deletions(-) (limited to 'Tools') diff --git a/Tools/px_uploader.py b/Tools/px_uploader.py index c46f6bede..95a3d4046 100755 --- a/Tools/px_uploader.py +++ b/Tools/px_uploader.py @@ -266,18 +266,19 @@ class uploader(object): self.__getSync() return value - def __drawProgressBar(self, progress, maxVal): + def __drawProgressBar(self, label, progress, maxVal): if maxVal < progress: progress = maxVal percent = (float(progress) / float(maxVal)) * 100.0 - sys.stdout.write("\rprogress:[%-20s] %.2f%%" % ('='*int(percent/5.0), percent)) + sys.stdout.write("\r%s: [%-20s] %.1f%%" % (label, '='*int(percent/5.0), percent)) sys.stdout.flush() # send the CHIP_ERASE command and wait for the bootloader to become ready - def __erase(self): + def __erase(self, label): + print("\n", end='') self.__send(uploader.CHIP_ERASE + uploader.EOC) @@ -288,15 +289,14 @@ class uploader(object): #Draw progress bar (erase usually takes about 9 seconds to complete) estimatedTimeRemaining = deadline-time.time() if estimatedTimeRemaining >= 9.0: - self.__drawProgressBar(20.0-estimatedTimeRemaining, 9.0) + self.__drawProgressBar(label, 20.0-estimatedTimeRemaining, 9.0) else: - self.__drawProgressBar(10.0, 10.0) + self.__drawProgressBar(label, 10.0, 10.0) sys.stdout.write(" (timeout: %d seconds) " % int(deadline-time.time()) ) sys.stdout.flush() if self.__trySync(): - self.__drawProgressBar(10.0, 10.0) - sys.stdout.write("\nerase complete!\n") + self.__drawProgressBar(label, 10.0, 10.0) return; raise RuntimeError("timed out waiting for erase") @@ -350,7 +350,8 @@ class uploader(object): return [seq[i:i+length] for i in range(0, len(seq), length)] # upload code - def __program(self, fw): + def __program(self, label, fw): + print("\n", end='') code = fw.image groups = self.__split_len(code, uploader.PROG_MULTI_MAX) @@ -361,31 +362,40 @@ class uploader(object): #Print upload progress (throttled, so it does not delay upload progress) uploadProgress += 1 if uploadProgress % 256 == 0: - self.__drawProgressBar(uploadProgress, len(groups)) - self.__drawProgressBar(100, 100) - print("\nprogram complete!") + self.__drawProgressBar(label, uploadProgress, len(groups)) + self.__drawProgressBar(label, 100, 100) # verify code - def __verify_v2(self, fw): + def __verify_v2(self, label, fw): + print("\n", end='') self.__send(uploader.CHIP_VERIFY + uploader.EOC) self.__getSync() code = fw.image groups = self.__split_len(code, uploader.READ_MULTI_MAX) + verifyProgress = 0 for bytes in groups: + verifyProgress += 1 + if verifyProgress % 256 == 0: + self.__drawProgressBar(label, verifyProgress, len(groups)) if (not self.__verify_multi(bytes)): raise RuntimeError("Verification failed") + self.__drawProgressBar(label, 100, 100) - def __verify_v3(self, fw): - expect_crc = fw.crc(self.fw_maxsize) + def __verify_v3(self, label, fw): + print("\n", end='') + self.__drawProgressBar(label, 1, 100) + expect_crc = fw.crc(self.fw_maxsize) self.__send(uploader.GET_CRC + uploader.EOC) report_crc = self.__recv_int() self.__getSync() + verifyProgress = 0 if report_crc != expect_crc: print("Expected 0x%x" % expect_crc) print("Got 0x%x" % report_crc) raise RuntimeError("Program CRC failed") + self.__drawProgressBar(label, 100, 100) # get basic data about the board def identify(self): @@ -439,19 +449,16 @@ class uploader(object): except Exception: # ignore bad character encodings pass - print("erase...") - self.__erase() - - print("program...") - self.__program(fw) + + self.__erase("Erase ") + self.__program("Program", fw) - print("verify...") if self.bl_rev == 2: - self.__verify_v2(fw) + self.__verify_v2("Verify ", fw) else: - self.__verify_v3(fw) + self.__verify_v3("Verify ", fw) - print("done, rebooting.") + print("\nRebooting.\n") self.__reboot() self.port.close() -- cgit v1.2.3 From 6f7fa3b4e7e6fd387530a60c800992c5d7bab87b Mon Sep 17 00:00:00 2001 From: Thomas Gubler Date: Fri, 23 Jan 2015 10:33:18 +0100 Subject: header generation script: add option to set output filename prefix --- Tools/px_generate_uorb_topic_headers.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'Tools') diff --git a/Tools/px_generate_uorb_topic_headers.py b/Tools/px_generate_uorb_topic_headers.py index 2ddbd6984..54430cc38 100755 --- a/Tools/px_generate_uorb_topic_headers.py +++ b/Tools/px_generate_uorb_topic_headers.py @@ -60,7 +60,7 @@ def convert_file(filename, outputdir, templatedir, includepath): """ Converts a single .msg file to a uorb header """ - print("Generating uORB headers from {0}".format(filename)) + print("Generating headers from {0}".format(filename)) genmsg.template_tools.generate_from_file(filename, package, outputdir, @@ -85,7 +85,7 @@ def convert_dir(inputdir, outputdir, templatedir): includepath) -def copy_changed(inputdir, outputdir): +def copy_changed(inputdir, outputdir, prefix=''): """ Copies files from inputdir to outputdir if they don't exist in ouputdir or if their content changed @@ -94,7 +94,7 @@ def copy_changed(inputdir, outputdir): fni = os.path.join(inputdir, f) if os.path.isfile(fni): # Check if f exists in outpoutdir, copy the file if not - fno = os.path.join(outputdir, f) + fno = os.path.join(outputdir, prefix + f) if not os.path.isfile(fno): shutil.copy(fni, fno) print("{0}: new header file".format(f)) @@ -108,7 +108,8 @@ def copy_changed(inputdir, outputdir): print("{0}: unchanged".format(f)) -def convert_dir_save(inputdir, outputdir, templatedir, temporarydir): + +def convert_dir_save(inputdir, outputdir, templatedir, temporarydir, prefix): """ Converts all .msg files in inputdir to uORB header files Unchanged existing files are not overwritten. @@ -117,7 +118,7 @@ def convert_dir_save(inputdir, outputdir, templatedir, temporarydir): convert_dir(inputdir, temporarydir, templatedir) # Copy changed headers from temporary dir to output dir - copy_changed(temporarydir, outputdir) + copy_changed(temporarydir, outputdir, prefix) if __name__ == "__main__": parser = argparse.ArgumentParser( @@ -132,6 +133,9 @@ if __name__ == "__main__": help='output directory for header files') parser.add_argument('-t', dest='temporarydir', help='temporary directory') + parser.add_argument('-p', dest='prefix', default='', + help='string added as prefix to the output file ' + ' name when converting directories') args = parser.parse_args() if args.file is not None: @@ -146,4 +150,5 @@ if __name__ == "__main__": args.dir, args.outputdir, args.templatedir, - args.temporarydir) + args.temporarydir, + args.prefix) -- cgit v1.2.3 From 6357fa75976a1d215d263b316d7fe495b82cfff4 Mon Sep 17 00:00:00 2001 From: Thomas Gubler Date: Fri, 23 Jan 2015 15:39:11 +0100 Subject: header generation script: create dir if it does not exist --- Tools/px_generate_uorb_topic_headers.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Tools') diff --git a/Tools/px_generate_uorb_topic_headers.py b/Tools/px_generate_uorb_topic_headers.py index 54430cc38..4bcab4d54 100755 --- a/Tools/px_generate_uorb_topic_headers.py +++ b/Tools/px_generate_uorb_topic_headers.py @@ -90,6 +90,11 @@ def copy_changed(inputdir, outputdir, prefix=''): Copies files from inputdir to outputdir if they don't exist in ouputdir or if their content changed """ + + # Make sure output directory exists: + if not os.path.isdir(outputdir): + os.makedirs(outputdir) + for f in os.listdir(inputdir): fni = os.path.join(inputdir, f) if os.path.isfile(fni): -- cgit v1.2.3 From a25dbb3c8e795b90869c480ae5c62c84b8424b3c Mon Sep 17 00:00:00 2001 From: Simon Wilks Date: Wed, 28 Jan 2015 11:19:52 +0100 Subject: Add a compiler coloring tool to highlight warning and errors in the output. --- Tools/make_color.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 Tools/make_color.sh (limited to 'Tools') diff --git a/Tools/make_color.sh b/Tools/make_color.sh new file mode 100755 index 000000000..81316a932 --- /dev/null +++ b/Tools/make_color.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# make_color.sh +# +# Author: Simon Wilks (simon@uaventure.com) +# +# A compiler color coder. +# +# To invoke this script everytime you run make simply create the alias: +# +# alias make='/Tools/make_color.sh' +# +# Color codes: +# +# white "\033[1,37m" +# yellow "\033[1,33m" +# green "\033[1,32m" +# blue "\033[1,34m" +# cyan "\033[1,36m" +# red "\033[1,31m" +# magenta "\033[1,35m" +# black "\033[1,30m" +# darkwhite "\033[0,37m" +# darkyellow "\033[0,33m" +# darkgreen "\033[0,32m" +# darkblue "\033[0,34m" +# darkcyan "\033[0,36m" +# darkred "\033[0,31m" +# darkmagenta "\033[0,35m" +# off "\033[0,0m" +# +OFF="\o033[0m" +WARN="\o033[1;33m" +ERROR="\o033[1;31m" +INFO="\o033[0;37m" + +make ${@} 2>&1 | sed "s/make\[[0-9]\].*/$INFO & $OFF/;s/.*: warning: .*/$WARN & $OFF/;s/.*: error: .*/$ERROR & $OFF/" -- cgit v1.2.3