Beispiel #1
0
def main():
    " Dawaj, dawaj! "
    args = parse_args()
    # Initialize logger for downstream components
    mpm.get_main_logger().getChild('main')
    master_core = AuroraControl(
        UIO(label=args.uio_dev, read_only=False),
        args.base_addr,
    )
    slave_core = None if args.slave_uio_dev is None else AuroraControl(
        UIO(label=args.slave_uio_dev, read_only=False),
        args.slave_base_addr,
    )
    if args.loopback:
        master_core.reset_core()
        master_core.set_loopback(enable=True)
        return True
    # Run BIST
    if args.test == 'ber':
        print("Performing BER BIST test.")
        master_core.run_ber_loopback_bist(
            args.duration,
            args.rate * 8e6,
            slave_core,
        )
    else:
        print("Performing Latency BIST test.")
        master_core.run_latency_loopback_bist(
            args.duration,
            args.rate * 8e6,
            slave_core,
        )
Beispiel #2
0
 def __init__(self):
     assert self.DEFAULT_FPGA_TYPE is not None
     assert self.device_args is not None
     assert self.usrp_type is not None
     assert self.lv_compat_format is not None
     self.args = self.make_arg_parser().parse_args()
     self.args.option = expand_options(self.args.option)
     # If this is true, trigger a reload of the default FPGA image
     self.reload_fpga_image = False
     try:
         default_rev = self.get_mb_periph_mgr().mboard_max_rev
     except ImportError:
         # This means we're in dry run mode or something like that, so just
         # pick something
         default_rev = self.default_rev
     self.mb_rev = int(self.args.option.get('mb_rev', default_rev))
     self.tests_to_run = set()
     for test in self.args.tests:
         if test in self.collections:
             for this_test in self.expand_collection(test):
                 self.tests_to_run.add(this_test)
         else:
             self.tests_to_run.add(test)
     try:
         # Keep this import here so we can do dry-runs without any MPM code
         from usrp_mpm import get_main_logger
         if not self.args.verbose:
             from usrp_mpm.mpmlog import WARNING
             get_main_logger().setLevel(WARNING)
         self.log = get_main_logger().getChild('main')
     except ImportError:
         print("No logging capability available.")
Beispiel #3
0
 def __init__(self):
     assert self.DEFAULT_FPGA_TYPE is not None
     assert self.device_args is not None
     assert self.usrp_type is not None
     assert self.lv_compat_format is not None
     self.args = self.make_arg_parser().parse_args()
     self.args.option = expand_options(self.args.option)
     # If this is true, trigger a reload of the default FPGA image
     self.reload_fpga_image = False
     try:
         default_rev = self.get_mb_periph_mgr().mboard_last_rev_compat
     except ImportError:
         # This means we're in dry run mode or something like that, so just
         # pick something
         default_rev = self.default_rev
     self.mb_rev = int(self.args.option.get('mb_rev', default_rev))
     self.tests_to_run = set()
     for test in self.args.tests:
         if test in self.collections:
             for this_test in self.expand_collection(test):
                 self.tests_to_run.add(this_test)
         else:
             self.tests_to_run.add(test)
     try:
         # Keep this import here so we can do dry-runs without any MPM code
         from usrp_mpm import get_main_logger
         if not self.args.verbose:
             from usrp_mpm.mpmlog import WARNING
             get_main_logger().setLevel(WARNING)
         self.log = get_main_logger().getChild('main')
     except ImportError:
         print("No logging capability available.")
Beispiel #4
0
def main():
    " Dawaj, dawaj! "
    args = parse_args()
    # Initialize logger for downstream components
    mpm.get_main_logger().getChild('main')
    master_core_uio = UIO(label=args.uio_dev, read_only=False)
    master_core_uio.open()
    if args.slave_uio_dev:
        slave_core_uio = UIO(label=args.uio_dev, read_only=False)
        slave_core_uio.open()
    try:
        master_core = AuroraControl(master_core_uio, args.base_addr)
        slave_core = None if args.slave_uio_dev is None else AuroraControl(
            slave_core_uio,
            args.slave_base_addr,
        )
        if args.loopback:
            master_core.reset_core()
            master_core.set_loopback(enable=True)
            return True
        # Run BIST
        if args.test == 'ber':
            print("Performing BER BIST test.")
            master_core.run_ber_loopback_bist(
                args.duration,
                args.rate * 8e6,
                slave_core,
            )
        else:
            print("Performing Latency BIST test.")
            master_core.run_latency_loopback_bist(
                args.duration,
                args.rate * 8e6,
                slave_core,
            )
    except Exception as ex:
        print("Unexpected exception: {}".format(str(ex)))
        return False
    finally:
        master_core_uio.close()
        if args.slave_uio_dev:
            slave_core_uio.close()
Beispiel #5
0
def main():
    " Dawaj, dawaj! "
    args = parse_args()
    # Initialize logger for downstream components
    mpm.get_main_logger().getChild('main')
    master_core_uio = UIO(label=args.uio_dev, read_only=False)
    master_core_uio.open()
    if args.slave_uio_dev:
        slave_core_uio = UIO(label=args.uio_dev, read_only=False)
        slave_core_uio.open()
    try:
        master_core = AuroraControl(master_core_uio, args.base_addr)
        slave_core = None if args.slave_uio_dev is None else AuroraControl(
            slave_core_uio,
            args.slave_base_addr,
        )
        if args.loopback:
            master_core.reset_core()
            master_core.set_loopback(enable=True)
            return True
        # Run BIST
        if args.test == 'ber':
            print("Performing BER BIST test.")
            master_core.run_ber_loopback_bist(
                args.duration,
                args.rate * 8e6,
                slave_core,
            )
        else:
            print("Performing Latency BIST test.")
            master_core.run_latency_loopback_bist(
                args.duration,
                args.rate * 8e6,
                slave_core,
            )
    except Exception as ex:
        print("Unexpected exception: {}".format(str(ex)))
        return False
    finally:
        master_core_uio.close()
        if args.slave_uio_dev:
            slave_core_uio.close()
Beispiel #6
0
def main():
    """
    Go, go, go!

    Main process loop.
    """
    args = parse_args()
    log = mpm.get_main_logger(
        log_default_delta=args.verbose-args.quiet
    ).getChild('main')
    if args.init_only:
        return init_only(log, args)
    return spawn_processes(log, args)
Beispiel #7
0
def kill_thread():
    """
    Kill all processes after _KILL_EVENT is triggered
    If all processes are properly terminated, this will exit
    """
    _KILL_EVENT.wait()
    log = mpm.get_main_logger().getChild('kill')
    for proc in _PROCESSES:
        proc.terminate()
        log.info("Terminating pid: {0}".format(proc.pid))
    for proc in _PROCESSES:
        proc.join()
    log.info("System exiting")
    sys.exit(0)
Beispiel #8
0
def main():
    """
    Go, go, go!

    Main process loop.
    """
    args = parse_args()
    log = mpm.get_main_logger(log_default_delta=args.verbose -
                              args.quiet).getChild('main')
    if args.override_db_pids is not None:
        log.warning('Overriding daughterboard PIDs!')
        args.default_args['override_db_pids'] = args.override_db_pids
    if args.init_only:
        return init_only(log, args.default_args)
    return spawn_processes(log, args)
Beispiel #9
0
def kill_time(sig, frame):
    """
    kill all processes
    to be used in a signal handler

    If all processes are properly terminated, this will exit
    """
    log = mpm.get_main_logger().getChild('kill')
    for proc in _PROCESSES:
        proc.terminate()
        log.info("Terminating pid: {0}".format(proc.pid))
    for proc in _PROCESSES:
        try:
            proc.join()
        except BlockingSwitchOutError:
            log.debug("Caught BlockingSwitchOutError for {}".format(str(proc)))
    log.info("System exiting")
    sys.exit(0)
Beispiel #10
0
def kill_time(sig, frame):
    """
    kill all processes
    to be used in a signal handler

    If all processes are properly terminated, this will exit
    """
    log = mpm.get_main_logger().getChild('kill')
    for proc in _PROCESSES:
        proc.terminate()
        log.info("Terminating pid: {0}".format(proc.pid))
    for proc in _PROCESSES:
        try:
            proc.join()
        except BlockingSwitchOutError:
            log.debug("Caught BlockingSwitchOutError for {}".format(str(proc)))
    log.info("System exiting")
    sys.exit(0)
Beispiel #11
0
def main():
    """
    Go, go, go!

    Main process loop.
    """
    args = parse_args()
    log = mpm.get_main_logger(log_default_delta=args.verbose -
                              args.quiet).getChild('main')
    version_string = mpm.__version__
    if len(mpm.__githash__):
        version_string += "-g" + mpm.__githash__
    log.info("Launching USRP/MPM, version: %s", version_string)
    if args.override_db_pids is not None:
        log.warning('Overriding daughterboard PIDs!')
        args.default_args['override_db_pids'] = args.override_db_pids
    if args.init_only:
        return init_only(log, args.default_args)
    return spawn_processes(log, args)
Beispiel #12
0
def main():
    """
    Go, go, go!

    Main process loop.
    """
    args = parse_args()
    log = mpm.get_main_logger(log_default_delta=args.verbose -
                              args.quiet).getChild('main')
    version_string = mpm.__version__
    if len(mpm.__githash__):
        version_string += "-g" + mpm.__githash__
    log.info("Launching USRP/MPM, version: %s", version_string)
    if args.init_only:
        # If --init-only is provided, we force disable init during boot time so
        # we can properly time it in init_only().
        args.default_args['skip_boot_init'] = "1"
    if args.override_db_pids is not None:
        log.warning('Overriding daughterboard PIDs!')
        args.default_args['override_db_pids'] = args.override_db_pids
    if args.init_only:
        return init_only(log, args.default_args)
    return spawn_processes(log, args)
Beispiel #13
0
def main():
    """
    Go, go, go!

    Main process loop.
    """
    args = parse_args()
    log = mpm.get_main_logger(
        log_default_delta=args.verbose-args.quiet
    ).getChild('main')
    version_string = mpm.__version__
    if len(mpm.__githash__):
        version_string += "-g" + mpm.__githash__
    log.info("Launching USRP/MPM, version: %s", version_string)
    if args.init_only:
        # If --init-only is provided, we force disable init during boot time so
        # we can properly time it in init_only().
        args.default_args['skip_boot_init'] = "1"
    if args.override_db_pids is not None:
        log.warning('Overriding daughterboard PIDs!')
        args.default_args['override_db_pids'] = args.override_db_pids
    if args.init_only:
        return init_only(log, args.default_args)
    return spawn_processes(log, args)