示例#1
0
文件: pyupdi.py 项目: ffilipus/pyupdi
def _main():
    parser = argparse.ArgumentParser(description="Simple command line"
                                     " interface for UPDI programming")
    parser.add_argument("-d",
                        "--device",
                        choices=Device.get_supported_devices(),
                        required=True,
                        help="Target device")
    parser.add_argument(
        "-c",
        "--comport",
        required=True,
        help="Com port to use (Windows: COMx | *nix: /dev/ttyX)")
    parser.add_argument("-e",
                        "--erase",
                        action="store_true",
                        help="Perform a chip erase (implied with --flash)")
    parser.add_argument("-b", "--baudrate", type=int, default=115200)
    parser.add_argument("-f", "--flash", help="Intel HEX file to flash.")
    parser.add_argument("-fs",
                        "--fuses",
                        action="append",
                        nargs="*",
                        help="Fuse to set (syntax: fuse_nr:0xvalue)")
    parser.add_argument("-v",
                        "--verbose",
                        action="store_true",
                        help="Set verbose mode")

    args = parser.parse_args(sys.argv[1:])

    if args.fuses is None and args.flash is None and not args.erase:
        print("No action (erase, flash or fuses)")
        sys.exit(0)

    if args.verbose:
        logging.basicConfig(
            format="%(asctime)s %(levelname)s:%(name)s %(message)s",
            level=logging.INFO)
    else:
        logging.basicConfig(format="%(levelname)s:%(name)s %(message)s",
                            level=logging.WARNING)

    nvm = UpdiNvmProgrammer(comport=args.comport,
                            baud=args.baudrate,
                            device=Device(args.device))

    try:
        nvm.enter_progmode()
    except:
        print("Device is locked. Performing unlock with chip erase.")
        nvm.unlock_device()

    nvm.get_device_info()

    if not _process(nvm, args):
        print("Error during processing")

    nvm.leave_progmode()
示例#2
0
文件: pyupdi.py 项目: leonerd/pyupdi
def _main():
    if sys.version_info[0] < 3:
        print("WARNING: for best results use Python3")

    parser = argparse.ArgumentParser(description="Simple command line"
                                     " interface for UPDI programming")
    parser.add_argument("-d",
                        "--device",
                        choices=Device.get_supported_devices(),
                        required=True,
                        help="Target device")
    parser.add_argument(
        "-c",
        "--comport",
        required=True,
        help="Com port to use (Windows: COMx | *nix: /dev/ttyX)")
    parser.add_argument("-e",
                        "--erase",
                        action="store_true",
                        help="Perform a chip erase (implied with --flash)")
    parser.add_argument("-b", "--baudrate", type=int, default=115200)
    parser.add_argument("-f", "--flash", help="Intel HEX file to flash.")
    parser.add_argument("-r", "--reset", action="store_true", help="Reset")
    parser.add_argument("-i", "--info", action="store_true", help="Info")
    parser.add_argument("-fs",
                        "--fuses",
                        action="append",
                        nargs="*",
                        help="Fuse to set (syntax: fuse_nr:0xvalue)")
    parser.add_argument("-fr",
                        "--readfuses",
                        action="store_true",
                        help="Read out the fuse-bits")
    parser.add_argument("-fe",
                        "--eeprom",
                        help="Intel HEX file to write to EEPROM.")
    parser.add_argument("-v",
                        "--verbose",
                        action="store_true",
                        help="Set verbose mode")

    args = parser.parse_args(sys.argv[1:])

    if not any((args.fuses, args.flash, args.erase, args.reset, args.readfuses,
                args.info, args.eeprom)):
        print("No action (erase, flash, eeprom, reset, fuses or info)")
        sys.exit(0)

    if args.verbose:
        logging.basicConfig(format="%(levelname)s:%(name)s %(message)s",
                            level=logging.INFO)
    else:
        logging.basicConfig(format="%(levelname)s:%(name)s %(message)s",
                            level=logging.WARNING)

    nvm = UpdiNvmProgrammer(comport=args.comport,
                            baud=args.baudrate,
                            device=Device(args.device))
    if not args.reset:  # any action except reset
        # Reteieve info before building the stack to be sure its the correct device
        nvm.get_device_info()
        try:
            nvm.enter_progmode()
        except:
            print("Device is locked. Performing unlock with chip erase.")
            nvm.unlock_device()

        print("Device info: {0:s}".format(str(nvm.get_device_info())))

        if not _process(nvm, args):
            print("Error during processing")

    # Reset only needs this.
    nvm.leave_progmode()
示例#3
0
"""
if __name__ == "__main__":
    # Simple command line interface for demo purposes
    import sys

    if len(sys.argv) != 4:
        print("Python UPDI programmer demo")
        print("Usage: pyupdi.py comport device filename")
        sys.exit(1)

    # Retrieve parameters
    comport = sys.argv[1]
    device = Device(sys.argv[2])
    filename = sys.argv[3]

    nvm = UpdiNvmProgrammer(comport=comport, baud=115200, device=device)

    # Retrieve data to write
    data, start_address = nvm.load_ihex(filename)

    # Enter programming mode
    try:
        nvm.enter_progmode()
    except Exception:
        print("Device is locked.  Performing unlock with chip erase.")
        nvm.unlock_device()

    # Read and display device info
    nvm.get_device_info()

    # Erase the device
示例#4
0
def _main():
    if sys.version_info[0] < 3:
        print("WARNING: for best results use Python3")

    parser = argparse.ArgumentParser(description="Simple command line"
                                     " interface for UPDI programming")
    parser.add_argument("-d",
                        "--device",
                        choices=Device.get_supported_devices(),
                        required=True,
                        help="Target device")
    parser.add_argument(
        "-c",
        "--comport",
        required=True,
        help="Com port to use (Windows: COMx | *nix: /dev/ttyX)")
    parser.add_argument("-e",
                        "--erase",
                        action="store_true",
                        help="Perform a chip erase (implied with --flash)")
    parser.add_argument("-b", "--baudrate", type=int, default=115200)
    parser.add_argument("-f", "--flash", help="Intel HEX file to flash.")
    parser.add_argument("-k",
                        "--batch",
                        action="store_true",
                        help="Batch flash with Micro-UPDI Programmer")

    parser.add_argument("-r", "--reset", action="store_true", help="Reset")
    parser.add_argument("-fs",
                        "--fuses",
                        action="append",
                        nargs="*",
                        help="Fuse to set (syntax: fuse_nr:0xvalue)")
    parser.add_argument("-fr",
                        "--readfuses",
                        action="store_true",
                        help="Read out the fuse-bits")
    parser.add_argument("-v",
                        "--verbose",
                        action="store_true",
                        help="Set verbose mode")

    args = parser.parse_args(sys.argv[1:])

    if not any(
        (args.fuses, args.flash, args.erase, args.reset, args.readfuses)):
        print("No action (erase, flash, reset or fuses)")
        sys.exit(0)

    if args.verbose:
        logging.basicConfig(format="%(levelname)s:%(name)s %(message)s",
                            level=logging.INFO)
    else:
        logging.basicConfig(format="%(levelname)s:%(name)s %(message)s",
                            level=logging.WARNING)

    if args.batch:

        nvm = UpdiNvmProgrammer(comport=args.comport,
                                baud=args.baudrate,
                                device=Device(args.device))

        nvm.setLEDs('off')

        while True:
            '''nvm = UpdiNvmProgrammer(comport=args.comport,
                            baud=args.baudrate,
                            device=Device(args.device))'''

            while not nvm.getBTN():
                time.sleep(0.016)

            state = False

            while nvm.getBTN():
                state = not state
                nvm.setLEDs('green' if state else 'off')
                time.sleep(0.055)

            nvm.setLEDs('yellow')

            try:
                nvm.application.datalink.start()
            except:
                nvm.setLEDs('red')
                while not nvm.getBTN():
                    time.sleep(0.016)
                continue

            if not args.reset:  # any action except reset
                try:
                    nvm.enter_progmode()
                except:
                    print(
                        "Device is locked. Performing unlock with chip erase.")
                    nvm.unlock_device()

                nvm.get_device_info()

                try:
                    if not _process(nvm, args):
                        print("Error during processing")
                        nvm.setLEDs('red')
                    else:
                        nvm.setLEDs('green')
                except:
                    nvm.setLEDs('red')

            nvm.leave_progmode()

            while not nvm.getBTN():
                time.sleep(0.016)
    else:
        nvm = UpdiNvmProgrammer(comport=args.comport,
                                baud=args.baudrate,
                                device=Device(args.device))

        nvm.application.datalink.start()

        if not args.reset:  # any action except reset
            try:
                nvm.enter_progmode()
            except:
                print("Device is locked. Performing unlock with chip erase.")
                nvm.unlock_device()

            nvm.get_device_info()

            if not _process(nvm, args):
                print("Error during processing")

    # Reset only needs this.
    nvm.leave_progmode()