예제 #1
0
def main():
    from greatfet.utils import GreatFETArgumentParser

    # Set up a simple argument parser.
    parser = GreatFETArgumentParser(
        description="Utility for experimenting with GreatFET's DAC")
    parser.add_argument('-S',
                        '--set',
                        nargs=1,
                        type=int,
                        help="DAC value to set on ADC0_0 (0-1023)")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.set:
        set(device, args.set[0])
예제 #2
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for I2C communication via GreatFET")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    parser.add_argument('-z', '--scan', action='store_true', help="Scan all possible i2c addresses")
    parser.add_argument('-a', '--address', nargs=1, type=str, help="Address to transmit data to over the I2C Bus") 
    parser.add_argument('-t', '--transmit', metavar='data', default=[], help="Data to transmit over the I2C Bus")
    parser.add_argument('-r', '--receive_length', default=1, help="Number of bytes expecting to receive from the I2C Bus")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.scan:
        scan(device, log_function)
    if args.address:
        transmit(device, args.address[0], args.transmit, int(args.receive_length), log_function)
예제 #3
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="JTAG debug utility for MSP430")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    print(
        device.comms._vendor_request_in(vendor_requests.MSP430_JTAG, length=1))
예제 #4
0
def main():
    logfile = 'log.bin'
    parser = argparse.ArgumentParser(
        description="Utility for experimenting with GreatFET's ADC")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-f',
                        dest='filename',
                        metavar='<filename>',
                        type=str,
                        help="Write data to file",
                        default=logfile)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    parser.add_argument('-a',
                        dest='adc',
                        action='store_true',
                        help="Use internal ADC")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.adc:
        device.vendor_request_out(vendor_requests.ADC_INIT)
    #else:
    #    device.vendor_request_out(vendor_requests.SDIR_RX_START)

    while True:
        data = device.vendor_request_in(vendor_requests.ADC_READ, length=2)
        print('%d' % (data[1] << 8 | data[0]))
        time.sleep(1)

    if not args.adc:
        device.vendor_request_out(vendor_requests.SDIR_RX_STOP)
예제 #5
0
def main():
    parser = argparse.ArgumentParser(description="Drive ADF7242 via SPI")
    parser.add_argument('-r', '--read-register', dest='read_reg', metavar='<addr>', default=None,
                        type=auto_int, help="Read register")
    parser.add_argument('-w', '--write-register', dest='write_reg', default=None,
                        nargs=2, metavar=('<addr>', '<value>'),
                        type=auto_int, help="Write register")
    parser.add_argument('-c', '--command', dest='command', default=None,
                        type=auto_int, metavar='<command>', help="SPI command")
    parser.add_argument('-S', '--status', action='store_true', help='Get status byte')
    parser.add_argument('-t', '--temperature', action='store_true', help='Read temperature')
    parser.add_argument('--reset', action='store_true', help='Reset ADF7242')
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    args = parser.parse_args()

    # Determine whether we're going to log to the stdout, or not at all.
    log_function = log_verbose if args.verbose else log_silent

    # Create our GreatFET connection.
    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.vendor_request_out(vendor_requests.SPI_INIT)

    if args.reset:
        adf7242_command(device, 0xC7)

    if args.read_reg:
        print('Register value: {:02x}'.format(adf7242_read_reg(device, args.read_reg)))

    if args.write_reg:
        adf7242_write_reg(device, args.write_reg[0], args.write_reg[1])

    if args.command:
        adf7242_command(device, args.command)

    if args.status:
        print('Status: {:02x}'.format(adf7242_status(device)))

    if args.temperature:
        temp = adf7242_temperature(device)
        temp_f = temp * 9 / 5 + 32
        print('Temperature: {:0.1f} °F / {:.01f} °C'.format(temp_f, temp))
예제 #6
0
def main():
    logfile = 'log.bin'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Logic analyzer implementation for GreatFET")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-f',
                        dest='filename',
                        metavar='<filename>',
                        type=str,
                        help="Write data to file",
                        default=logfile)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.apis.logic_analyzer.start()

    time.sleep(1)

    f = open(args.filename, 'wb')
    try:
        while True:
            d = device.comms.device.read(0x81, 16384, 1000)
            f.write(d)
    except KeyboardInterrupt:
        pass

    device.apis.logic_analyzer.stop()
def main():
    try:
        device = GreatFET()
    except DeviceNotFoundError:
        print('No GreatFET devices found!', file=sys.stderr)
        sys.exit(errno.ENODEV)

    # Print the board's information...
    print("Found a {}!".format(device.board_name()))
    print("  Board ID: {}".format(device.board_id()))
    print("  Firmware version: {}".format(device.firmware_version()))
    print("  Part ID: {}".format(device.part_id()))
    print("  Serial number: {}".format(device.serial_number()))
예제 #8
0
def main():
    try:
        device = GreatFET()
    except DeviceNotFoundError:
        print('No GreatFET devices found!', file=sys.stderr)
        sys.exit(errno.ENODEV)

    # Print the board's information...
    print("Found a {}!".format(device.board_name()))
    print("  Board ID: {}".format(device.board_id()))
    print("  Firmware version: {}".format(device.firmware_version()))
    print("  Part ID: {}".format(device.part_id()))
    print("  Serial number: {}".format(device.serial_number()))
예제 #9
0
def main():
    from greatfet.utils import GreatFETArgumentParser

    # Set up a simple argument parser.
    parser = GreatFETArgumentParser(
        description="Utility for I2C communication via GreatFET")
    parser.add_argument(
        '-a',
        '--address',
        nargs=1,
        type=ast.literal_eval,
        help="7-bit address for communication over the I2C Bus")
    parser.add_argument(
        '-r',
        '--read',
        default=0,
        help="Number of bytes expecting to receive from the I2C Bus")
    parser.add_argument('-w',
                        '--write',
                        nargs='*',
                        type=ast.literal_eval,
                        default=[],
                        help="Bytes to send over the I2C Bus")
    parser.add_argument('-z',
                        '--scan',
                        action='store_true',
                        help="Scan all possible i2c addresses")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.scan:
        scan(device, log_function)
    if args.write:
        write(device, args.address[0], args.write, log_function)
    if args.read:
        read(device, args.address[0], int(args.read), log_function)
예제 #10
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Periodically print temperature from DS18B20 sensor")
    parser.add_argument('-S', dest='s20', action='store_true', help='DS18S20')
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    while True:
        data = device.vendor_request_in(vendor_requests.DS18B20_READ,
                                        length=2,
                                        timeout=2000)
        # temperature data is 16 bit signed
        temp = struct.unpack('<h', data)[0]
        if args.s20:
            temp /= 2.0
        else:
            temp /= 16.0
        print(time.strftime("%H:%M:%S"), temp,
              '{:.01f}'.format(temp * 9 / 5 + 32))
        time.sleep(1)
예제 #11
0
def main():
    from greatfet.utils import GreatFETArgumentParser
    # Set up a simple argument parser.
    parser = GreatFETArgumentParser(
        description="Utility for LED configuration on GreatFET")
    parser.add_argument('-t',
                        '--toggle',
                        nargs='*',
                        type=ast.literal_eval,
                        default=[],
                        help="LED numbers to toggle (0-3)")
    parser.add_argument('--on',
                        nargs='*',
                        type=ast.literal_eval,
                        default=[],
                        help="LED numbers to turn on (0-3)")
    parser.add_argument('--off',
                        nargs='*',
                        type=ast.literal_eval,
                        default=[],
                        help="LED numbers to turn off (0-3)")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.toggle:
        toggle(device, args.toggle, log_function)
    if args.on:
        on(device, args.on, log_function)
    if args.off:
        off(device, args.off, log_function)
def main():
    logfile = 'log.bin'
#    logfile = '/tmp/fifo'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for experimenting with GreatFET's ADC")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-f', dest='filename', metavar='<filename>', type=str, help="Write data to file", default=logfile)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    parser.add_argument('-a', dest='adc', action='store_true', help="Use internal ADC")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.adc:
        device.vendor_request_out(vendor_requests.ADC_INIT)
    else:
        device.vendor_request_out(vendor_requests.SDIR_RX_START)

    time.sleep(1)
    print(device.device)

    with open(args.filename, 'wb') as f:
        try:
            while True:
                d = device.device.read(0x81, 0x4000, 1000)
                # print(d)
                f.write(d)
        except KeyboardInterrupt:
            pass

    if not args.adc:
        device.vendor_request_out(vendor_requests.SDIR_RX_STOP)
예제 #13
0
def main():
    logfile = 'log.bin'
#    logfile = '/tmp/fifo'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for experimenting with GreatFET's ADC")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-f', dest='filename', metavar='<filename>', type=str, help="Write data to file", default=logfile)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    parser.add_argument('-a', dest='adc', action='store_true', help="Use internal ADC")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.adc:
        device.vendor_request_out(vendor_requests.ADC_INIT)
    else:
        device.vendor_request_out(vendor_requests.SDIR_RX_START)

    time.sleep(1)
    print(device.device)

    with open(args.filename, 'wb') as f:
        try:
            while True:
                d = device.device.read(0x81, 0x4000, 1000)
                # print(d)
                f.write(d)
        except KeyboardInterrupt:
            pass

    if not args.adc:
        device.vendor_request_out(vendor_requests.SDIR_RX_STOP)
예제 #14
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-i', '--info', dest='info', action='store_true',
                        help="Read Jedec information from target")
    parser.add_argument('-d', '--dump', dest='dump', metavar='<filename>',
                        type=str, help="Dump flash into file")
    parser.add_argument('-a', '--address', metavar='<n>', default=0,
                        type=int, help="Flash dump starting address")
    parser.add_argument('-l', '--length', metavar='<n>', type=int,default=None,
                        help="number of bytes to read (default: flash size)")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    args = parser.parse_args()

    # If we don't have an option, print our usage.
    if not args.info and not args.dump:
        parser.print_help()
        sys.exit()

    # Determine whether we're going to log to the stdout, or not at all.
    log_function = log_verbose if args.verbose else log_silent

    # Create our GreatFET connection.
    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.vendor_request_out(vendor_requests.SPI_INIT)

    if args.info:
        spi_info(device, log_function=log_verbose)
    if args.dump:
        dump_flash(device, filename=args.dump, address=args.address,
                   length=args.length, log_function=log_verbose)
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-i', '--info', dest='info', action='store_true',
                        help="Read Jedec information from target")
    parser.add_argument('-d', '--dump', dest='dump', metavar='<filename>',
                        type=str, help="Dump flash into file")
    parser.add_argument('-a', '--address', metavar='<n>', default=0,
                        type=int, help="Flash dump starting address")
    parser.add_argument('-l', '--length', metavar='<n>', type=int,default=None,
                        help="number of bytes to read (default: flash size)")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    args = parser.parse_args()

    # If we don't have an option, print our usage.
    if not args.info and not args.dump:
        parser.print_help()
        sys.exit()

    # Determine whether we're going to log to the stdout, or not at all.
    log_function = log_verbose if args.verbose else log_silent

    # Create our GreatFET connection.
    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.vendor_request_out(vendor_requests.SPI_INIT)

    if args.info:
        spi_info(device, log_function=log_verbose)
    if args.dump:
        dump_flash(device, filename=args.dump, address=args.address,
                   length=args.length, log_function=log_verbose)
예제 #16
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    while True:
        data = device.vendor_request_in(vendor_requests.DS18B20_READ, length=2)
        # print(data)
        temp = (data[1] << 8 | data[0]) / 16.0
        print(time.strftime("%H:%M:%S"), temp)
        time.sleep(1)
def main():
    logfile = 'log.bin'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-f', dest='filename', metavar='<filename>', type=str, help="Write data to file", default=logfile)
    parser.add_argument('-v', dest='verbose', action='store_true', help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.vendor_request_out(vendor_requests.LOGIC_ANALYZER_START)

    time.sleep(1)

    f = open(args.filename, 'wb')
    try:
        while True:
            d = device.device.read(0x81, 16384, 1000)
            f.write(d)
    except KeyboardInterrupt:
        pass

    device.vendor_request_out(vendor_requests.LOGIC_ANALYZER_STOP)
예제 #18
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    # 0 - 1024
    dac_value = 1024
    device.vendor_request_out(vendor_requests.DAC_SET, value=dac_value)
    print("DAC value set to", dac_value)
예제 #19
0
def main():
    parser = argparse.ArgumentParser(
        description="Utility for reading GreatFET debug information")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    #Read and print the logs
    logs = device.read_debug_ring()

    log_function("Ring buffer contained {} bytes of data:\n".format(len(logs)))
    print(logs)
def main():
    logfile = 'log.bin'
#    logfile = '/tmp/fifo'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(description="Utility for experimenting with GreatFET's ADC")
    parser.add_argument('-s', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-S', dest='samplerate', metavar='<samplerate>', type=int,
                        help="Sample rate for IR Tx", default=1000000)
    parser.add_argument('-f', dest='filename', metavar='<filename>', type=str, help="File to read or write", default=logfile)
    parser.add_argument('-r', dest='receive', action='store_true', help="Write data to file")
    parser.add_argument('-R', dest='repeat', action='store_true', help="Repeat file data (tx only)")
    parser.add_argument('-v', dest='verbose', action='store_true', help="Increase verbosity of logging")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.receive:
        device.vendor_request_out(vendor_requests.SDIR_RX_START)
        time.sleep(1)
        with open(args.filename, 'wb') as f:
            try:
                while True:
                    d = device.device.read(0x81, 0x4000, 1000)
                    # print(d)
                    f.write(d)
            except KeyboardInterrupt:
                pass
        device.vendor_request_out(vendor_requests.SDIR_RX_STOP)

    else:
        index = args.samplerate & 0xFFFF
        value = (args.samplerate >> 16) & 0xFFFF
        device.vendor_request_out(vendor_requests.SDIR_TX_START, value=value, index=index)
        time.sleep(1)
        with open(args.filename, 'rb') as f:
            try:
                while True:
                    data = f.read(0x4000)
                    if len(data) != 0x4000:
                        if args.repeat:
                            print("End of file reached. Looping")
                            f.seek(0,0)
                        else:
                            break
                        if len(data) == 0:
                            data = f.read(0x4000)
                    # print(data[:10])
                    device.device.write(0x02, data)
            except KeyboardInterrupt:
                pass
        device.vendor_request_out(vendor_requests.SDIR_TX_STOP)
예제 #21
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Logic analyzer implementation for GreatFET")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument(
        '-o',
        '-b',
        '--binary',
        dest='binary',
        metavar='<filename>',
        type=str,
        help="Generate a binary file contianing the captured data.")
    parser.add_argument('-p',
                        '--pulseview',
                        dest='pulseview',
                        metavar="<filename>",
                        type=str,
                        help="Generate a PulseView session file.")
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Write data from file")
    args = parser.parse_args()

    capture_data_name = 'logic-1'

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    device.apis.logic_analyzer.start()
    time.sleep(1)

    _, path = tempfile.mkstemp(None, None, os.getcwd())
    if args.binary:
        bin_file_name = arc_name = args.output
        sr_name = args.output + ".sr"
    else:
        bin_file_name = path

    print("Press Ctrl+C to stop reading data from device")
    try:
        with open(bin_file_name, "wb") as bin_file:
            try:
                while True:
                    d = device.comms.device.read(0x81, 16384, 1000)
                    bin_file.write(d)
            except KeyboardInterrupt:
                print()

            if args.binary:
                print("Binary data written to file '%s'" % args.output)

            if args.pulseview:
                metadata_str = "[device 1]\n" \
                    "capturefile={}\n" \
                    "total probes=8\n" \
                    "samplerate=17 MHz\n" \
                    "total analog=0\n" \
                    "probe1=SGPIO0\n" \
                    "probe2=SGPIO1\n" \
                    "probe3=SGPIO2\n" \
                    "probe4=SGPIO3\n" \
                    "probe5=SGPIO4\n" \
                    "probe6=SGPIO5\n" \
                    "probe7=SGPIO6\n" \
                    "probe8=SGPIO7\n" \
                    "unitsize=1\n".format(capture_data_name)
                # pulseview compatible .sr archive
                with ZipFile(args.pulseview, "w") as zip:
                    zip.write(bin_file_name, arcname='logic-1')
                    zip.writestr("metadata", metadata_str)
                    zip.writestr("version", "2")
                print("Pulseview compatible session file created: '%s'" %
                      args.pulseview)
    finally:
        try:
            os.remove(path)
        except OSError:
            pass

    device.apis.logic_analyzer.stop()
def main():
    from greatfet.utils import GreatFETArgumentParser

    # Set up a simple argument parser.
    parser = GreatFETArgumentParser(
        description="JTAG debug utility for MSP430")
    parser.add_argument('-I',
                        '--identify',
                        dest='ident',
                        action='store_true',
                        help="Show target identification")
    parser.add_argument('-e',
                        '--erase',
                        dest='erase',
                        action='store_true',
                        help="Erase target flash")
    parser.add_argument('-E',
                        '--erase_info',
                        dest='erase_info',
                        action='store_true',
                        help="Erase target info flash")
    parser.add_argument('-f',
                        '--flash',
                        dest='flash',
                        type=str,
                        metavar='<filename>',
                        help="Write target flash")
    parser.add_argument('-V',
                        '--verify',
                        dest='verify',
                        type=str,
                        metavar='<filename>',
                        help="Verify target flash")
    parser.add_argument('-d',
                        '--dump',
                        dest='dump',
                        type=str,
                        metavar='<filename>',
                        help="Dump target flash")
    parser.add_argument('-r',
                        '--run',
                        dest='run',
                        action='store_true',
                        help="Run target device")
    parser.add_argument('-R',
                        '--peek',
                        dest='peek',
                        action='store_true',
                        help="Read from memory location")
    parser.add_argument('-W',
                        '--poke',
                        dest='poke',
                        type=ast.literal_eval,
                        metavar='<value>',
                        help="Write to memory location")
    parser.add_argument(
        '-a',
        '--address',
        dest='address',
        default=0,
        type=ast.literal_eval,
        metavar='<address>',
        help="Address for peek/poke/flash/dump/verify actions (default 0x00)")
    parser.add_argument('-l',
                        '--length',
                        dest='length',
                        type=ast.literal_eval,
                        metavar='<length>',
                        help="Length for peek/dump actions in bytes")
    parser.add_argument('-t',
                        '--test',
                        dest='test',
                        action='store_true',
                        help="Test MSP430 JTAG functions (destructive)")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    jtag = msp430_jtag.JTAG_MSP430(device)
    jtag_id = jtag.start()
    if jtag_id in (0x89, 0x91):
        log_function("Target dentified as 0x%02x." % jtag_id)
    else:
        print("Error, misidentified as 0x%02x." % jtag_id)
        print("Check wiring, as this should be 0x89 or 0x91.")
        sys.exit(errno.ENODEV)

    if args.ident:
        print("Identifies as %s (0x%04x)" %
              (jtag.ident_string(), jtag.ident()))

    if args.dump:
        if args.length:
            end = args.address + args.length
        else:
            end = 0xffff
        log_function("Dumping from 0x%04x to 0x%04x to %s." %
                     (args.address, end, args.dump))
        with open(args.dump, 'wb') as f:
            address = args.address
            while address < end:
                data = jtag.peek_block(address)
                f.write(data)
                address += len(data)

    if args.erase:
        log_function("Erasing main flash memory.")
        jtag.erase_flash()

    if args.erase_info:
        log_function("Erasing info flash.")
        jtag.erase_info()

    if args.flash:
        with open(args.flash, 'rb') as f:
            address = args.address
            if args.length:
                end = address + args.length
            else:
                end = address + f.seek(0, 2)
                f.seek(0)
            log_function("Writing %d bytes of %s to 0x%04x." %
                         (end - address, args.flash, address))
            while address < end:
                if end - address < 0x400:
                    block_size = end - address
                else:
                    block_size = 0x400
                data = f.read(block_size)
                result = jtag.poke_flash_block(address, data)
                address += block_size
            else:
                log_function("Flash contents written.")

    if args.verify:
        with open(args.verify, 'rb') as f:
            address = args.address
            if args.length:
                end = address + args.length
            else:
                end = address + f.seek(0, 2)
                f.seek(0)
            log_function("Verifying %d bytes of %s from 0x%04x." %
                         (end - address, args.verify, address))
            while address < end:
                if end - address < 0x400:
                    block_size = end - address
                else:
                    block_size = 0x400
                data = jtag.peek_block(address, block_size)
                buffer = f.read(len(data))
                if data != buffer:
                    print("File does not match flash.")
                    break
                address += len(data)
            else:
                print("Flash contents verified.")

    if args.poke:
        log_function("Writing 0x%04x to 0x%04x." % (args.poke, args.address))
        written = jtag.poke(args.address, args.poke)
        if written != args.poke:
            print("Failed to write 0x%04x to 0x%04x" %
                  (args.poke, args.address))

    if args.peek:
        if args.length:
            length = args.length
            if length % 2:
                length += 1
        else:
            length = 2
        log_function("Reading %d bytes from 0x%04x." % (length, args.address))
        values = jtag.peek(args.address, length)
        for i, v in enumerate(values):
            print("%04x: %04x" % (args.address + i * 2, v))

    if args.run:
        log_function("Resuming target execution.")
        jtag.run()

    if args.test:
        log_function("Running test.")
        msp430_test(jtag)
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-a', '--address', metavar='<n>', type=int,
                        help="starting address (default: 0)", default=0)
    parser.add_argument('-l', '--length', metavar='<n>', type=int,
                        help="number of bytes to read (default: {})".format(MAX_FLASH_LENGTH),
                        default=MAX_FLASH_LENGTH)
    parser.add_argument('-r', '--read', dest='read', metavar='<filename>', type=str,
                        help="Read data into file", default='')
    parser.add_argument('-w', '--write', dest='write', metavar='<filename>', type=str,
                        help="Write data from file", default='')
    parser.add_argument('-s', '--serial', dest='serial', metavar='<serialnumber>', type=str,
                        help="Serial number of device, if multiple devices", default=None)
    parser.add_argument('-q', '--quiet', dest='quiet', action='store_true',
                        help="Suppress messages to stdout")
    parser.add_argument('-R', '--reset', dest='reset', action='store_true',
                        help="Reset GreatFET after performing other operations.")
    args = parser.parse_args()

    # Validate our options.

    # If we don't have an option, print our usage.
    if not any((args.read, args.write, args.reset,)):
        parser.print_help()
        sys.exit(0)

    # Determine whether we're going to log to the stdout, or not at all.
    log_function = log_silent if args.quiet else log_verbose

    # Create our GreatFET connection.
    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(device.board_name(), device.serial_number()))
    except DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(args.serial), file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    # Ensure that the device supports an onboard SPI flash.
    try:
        device.onboard_flash
    except AttributeError:
        print("The attached GreatFET ({}) doesn't appear to have an SPI flash to program!".format(device.board_name()), file=sys.stderr)
        sys.exit(errno.ENOSYS)

    # If we have a write command, write first, to match the behavior of hackrf_spiflash.
    if args.write:
        log_function("Writing data to SPI flash...")
        spi_flash_write(device, args.write, args.address, log_function)
        log_function("Write complete!")
        if not args.reset:
            log_function("Reset not specified; new firmware will not start until next reset.")

    # Handle any read commands.
    if args.read:
        log_function("Reading data from SPI flash...")
        spi_flash_read(device, args.read, args.address, args.length, log_function)
        log_function("Read complete!")

    # Finally, reset the target
    if args.reset:
        log_function("Resetting GreatFET...")
        device.reset()
        log_function("Reset complete!")
예제 #24
0
def main():
    logfile = 'log.bin'
    #    logfile = '/tmp/fifo'
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Utility for experimenting with GreatFET's ADC")
    parser.add_argument('-s',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-S',
                        dest='samplerate',
                        metavar='<samplerate>',
                        type=int,
                        help="Sample rate for IR Tx",
                        default=1000000)
    parser.add_argument('-f',
                        dest='filename',
                        metavar='<filename>',
                        type=str,
                        help="File to read or write",
                        default=logfile)
    parser.add_argument('-r',
                        dest='receive',
                        action='store_true',
                        help="Write data to file")
    parser.add_argument('-R',
                        dest='repeat',
                        action='store_true',
                        help="Repeat file data (tx only)")
    parser.add_argument('-v',
                        dest='verbose',
                        action='store_true',
                        help="Increase verbosity of logging")
    args = parser.parse_args()

    log_function = log_verbose if args.verbose else log_silent

    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except greatfet.errors.DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    if args.receive:
        device.vendor_request_out(vendor_requests.SDIR_RX_START)
        time.sleep(1)
        with open(args.filename, 'wb') as f:
            try:
                while True:
                    d = device.device.read(0x81, 0x4000, 1000)
                    # print(d)
                    f.write(d)
            except KeyboardInterrupt:
                pass
        device.vendor_request_out(vendor_requests.SDIR_RX_STOP)

    else:
        index = args.samplerate & 0xFFFF
        value = (args.samplerate >> 16) & 0xFFFF
        device.vendor_request_out(vendor_requests.SDIR_TX_START,
                                  value=value,
                                  index=index)
        time.sleep(1)
        with open(args.filename, 'rb') as f:
            try:
                while True:
                    data = f.read(0x4000)
                    if len(data) != 0x4000:
                        if args.repeat:
                            print("End of file reached. Looping")
                            f.seek(0, 0)
                        else:
                            break
                        if len(data) == 0:
                            data = f.read(0x4000)
                    # print(data[:10])
                    device.device.write(0x02, data)
            except KeyboardInterrupt:
                pass
        device.vendor_request_out(vendor_requests.SDIR_TX_STOP)
import sys

import greatfet
from greatfet import GreatFET
from greatfet.protocol import vendor_requests

if __name__ == '__main__':

    device = GreatFET()
    if not device:
        print('No GreatFET devices found!')
        sys.exit()

    # Print the board's information...
    print("Found a {}!".format(device.board_name()))
    print("  Board ID: {}".format(device.board_id()))
    print("  Firmware version: {}".format(device.firmware_version()))
    print("  Part ID: {}".format(device.part_id()))
    print("  Serial number: {}".format(device.serial_number()))

    # ... and toggle it's third LED, for fun.
    device.vendor_request_out(vendor_requests.LED_TOGGLE, 3)

    # Dev note: you can still easily use this to test low-level interfaces.
    # For example, to send the ENABLE_USB1 request, use:
    #
    #   device.vendor_request_out(vendor_requests.ENABLE_USB1)
    #
    # where ENABLE_USB1 is just an integer constant.
예제 #26
0
def main():
    # Set up a simple argument parser.
    parser = argparse.ArgumentParser(
        description="Utility for flashing the GreatFET's onboard SPI flash")
    parser.add_argument('-a',
                        '--address',
                        metavar='<n>',
                        type=int,
                        help="starting address (default: 0)",
                        default=0)
    parser.add_argument(
        '-l',
        '--length',
        metavar='<n>',
        type=int,
        help="number of bytes to read (default: {})".format(MAX_FLASH_LENGTH),
        default=MAX_FLASH_LENGTH)
    parser.add_argument('-r',
                        '--read',
                        dest='read',
                        metavar='<filename>',
                        type=str,
                        help="Read data into file",
                        default='')
    parser.add_argument('-w',
                        '--write',
                        dest='write',
                        metavar='<filename>',
                        type=str,
                        help="Write data from file",
                        default='')
    parser.add_argument('-s',
                        '--serial',
                        dest='serial',
                        metavar='<serialnumber>',
                        type=str,
                        help="Serial number of device, if multiple devices",
                        default=None)
    parser.add_argument('-q',
                        '--quiet',
                        dest='quiet',
                        action='store_true',
                        help="Suppress messages to stdout")
    parser.add_argument(
        '-R',
        '--reset',
        dest='reset',
        action='store_true',
        help="Reset GreatFET after performing other operations.")
    args = parser.parse_args()

    # Validate our options.

    # If we don't have an option, print our usage.
    if not any((
            args.read,
            args.write,
            args.reset,
    )):
        parser.print_help()
        sys.exit(0)

    # Determine whether we're going to log to the stdout, or not at all.
    log_function = log_silent if args.quiet else log_verbose

    # Create our GreatFET connection.
    try:
        log_function("Trying to find a GreatFET device...")
        device = GreatFET(serial_number=args.serial)
        log_function("{} found. (Serial number: {})".format(
            device.board_name(), device.serial_number()))
    except DeviceNotFoundError:
        if args.serial:
            print("No GreatFET board found matching serial '{}'.".format(
                args.serial),
                  file=sys.stderr)
        else:
            print("No GreatFET board found!", file=sys.stderr)
        sys.exit(errno.ENODEV)

    # Ensure that the device supports an onboard SPI flash.
    try:
        device.onboard_flash
    except AttributeError:
        print(
            "The attached GreatFET ({}) doesn't appear to have an SPI flash to program!"
            .format(device.board_name()),
            file=sys.stderr)
        sys.exit(errno.ENOSYS)

    # If we have a write command, write first, to match the behavior of hackrf_spiflash.
    if args.write:
        log_function("Writing data to SPI flash...")
        spi_flash_write(device, args.write, args.address, log_function)
        log_function("Write complete!")
        if not args.reset:
            log_function(
                "Reset not specified; new firmware will not start until next reset."
            )

    # Handle any read commands.
    if args.read:
        log_function("Reading data from SPI flash...")
        spi_flash_read(device, args.read, args.address, args.length,
                       log_function)
        log_function("Read complete!")

    # Finally, reset the target
    if args.reset:
        log_function("Resetting GreatFET...")
        device.reset()
        log_function("Reset complete!")