def erase_firmware(device, mcu_id): '''erase a firmware''' cmd = GDB logger.info("Erasing firmware for '%s'" % mcu_id) try: util.kill_processes([GDB]) gdb = pexpect.spawn(cmd, logfile=sys.stdout, timeout=10) gdb.expect("(gdb)") gdb.send("target extended %s\n" % device) gdb.expect("Remote debugging using") gdb.expect("(gdb)") gdb.send("monitor swdp_scan\n") ids = CPUID_IO + CPUID_FMU cpu = gdb.expect(ids) if ids[cpu] not in mcu_id: util.failure("Incorrect CPU ID '%s' - expected '%s'" % (ids[cpu], mcu_id)) gdb.expect("(gdb)") gdb.send("attach 1\n") gdb.expect("(gdb)") gdb.send("set mem inaccessible-by-default off\n") gdb.expect("(gdb)") gdb.send("monitor erase\n") gdb.expect("(gdb)", timeout=20) gdb.send('quit\n') gdb.expect('Quit anyway') gdb.send('y\n') gdb.expect("Detached from remote") gdb.close() logger.info("closed") except Exception as ex: util.show_error('Erasing firmware', ex) logger.info("Erase done")
def erase_firmware(device, mcu_id): '''erase a firmware''' cmd = GDB logger.info("Erasing firmware for '%s'" % mcu_id) try: util.kill_processes([GDB]) gdb = pexpect.spawn(cmd, logfile=sys.stdout, timeout=10) gdb.expect("(gdb)") gdb.send("target extended %s\n" % device) gdb.expect("Remote debugging using") gdb.expect("(gdb)") gdb.send("monitor swdp_scan\n") cpu = gdb.expect([CPUID_IO, CPUID_FMU]) if cpu == 0: if mcu_id != CPUID_IO: util.failure("Incorrect CPU ID '%s' - expected '%s'" % (CPUID_IO, mcu_id)) else: if mcu_id != CPUID_FMU: util.failure("Incorrect CPU ID '%s' - expected '%s'" % (CPUID_FMU, mcu_id)) gdb.expect("(gdb)") gdb.send("attach 1\n") gdb.expect("(gdb)") gdb.send("set mem inaccessible-by-default off\n") gdb.expect("(gdb)") gdb.send("monitor erase\n") gdb.expect("(gdb)", timeout=20) gdb.send('quit\n') gdb.expect('Quit anyway') gdb.send('y\n') gdb.expect("Detached from remote") gdb.close() logger.info("closed") except Exception as ex: util.show_error('Erasing firmware', ex) logger.info("Erase done")
def run_chrome(): # закрываем хром, если запущен, и открываем заного с нужным настройками pid = get_processes('chrome.exe') kill_processes(pid) chrome_dir = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" chrome = Application(backend='uia') chrome.start( chrome_dir + ' --remote-debugging-port=9222 --force-renderer-accessibility --start-maximized' ) time.sleep(2)
def __init__(self, ref_only=False): util.kill_processes(['mavproxy.py', GDB]) self.reflog = StringIO() self.testlog = StringIO() self.ref = None self.test = None self.nsh = None self.refmav = None self.testmav = None try: if not ref_only: self.nsh = nsh_console.nsh_console() except Exception as ex: self.close() util.show_error('Connecting to nsh console', ex, self.testlog) try: self.ref = mav_reference.mav_reference(self.reflog) except Exception as ex: self.close() util.show_error('Connecting to reference board1', ex, self.reflog) try: if not ref_only: self.test = mav_test.mav_test(self.testlog) except Exception as ex: self.close() util.show_error('Connecting to test board1', ex, self.testlog) try: logger.info("CONNECTING MAVLINK TO REFERENCE BOARD") self.refmav = mavutil.mavlink_connection('127.0.0.1:14550') util.wait_heartbeat(self.refmav, timeout=30) util.wait_mode(self.refmav, IDLE_MODES) except Exception as ex: self.close() util.show_error('Connecting to reference board2', ex, self.reflog) try: if not ref_only: logger.info("CONNECTING MAVLINK TO TEST BOARD at %s" % time.ctime()) self.testmav = mavutil.mavlink_connection('127.0.0.1:14551') util.wait_heartbeat(self.testmav, timeout=30) logger.info("got heartbeat at %s" % time.ctime()) util.wait_mode(self.testmav, IDLE_MODES) logger.info("Waiting for 'Ready to FLY'") self.test.expect('Ready to FLY', timeout=20) except Exception as ex: self.close() util.show_error('Connecting to test board2 at %s' % time.ctime(), ex, self.testlog) if self.nsh is not None: # log any extra nsh data logger.debug("Draining nsh") try: self.nsh.read_nonblocking(4096, 1) except Exception as ex: pass try: if not ref_only and not ref_gyro_offset_ok(self.refmav): self.close() util.failure("Bad reference gyro - FAILED") except Exception as ex: self.close() util.show_error('testing reference gyros', ex) logger.info("Setting rotation level") try: rotate.set_rotation(self, 'level', wait=False) except Exception as ex: self.close() util.show_error("unable to set safety off", ex)
def __init__(self, ref_only=False): util.kill_processes(['mavproxy.py', GDB]) self.reflog = StringIO() self.testlog = StringIO() self.ref = None self.test = None self.nsh = None self.refmav = None self.testmav = None try: if not ref_only: self.nsh = nsh_console.nsh_console() except Exception as ex: self.close() util.show_error('Connecting to nsh console', ex, self.testlog) try: self.ref = mav_reference.mav_reference(self.reflog) except Exception as ex: self.close() util.show_error('Connecting to reference board1', ex, self.reflog) try: if not ref_only: self.test = mav_test.mav_test(self.testlog) except Exception as ex: self.close() util.show_error('Connecting to test board1', ex, self.testlog) try: logger.info("CONNECTING MAVLINK TO REFERENCE BOARD") self.refmav = mavutil.mavlink_connection('127.0.0.1:14550') util.wait_heartbeat(self.refmav, timeout=30) util.wait_mode(self.refmav, IDLE_MODES) except Exception as ex: self.close() util.show_error('Connecting to reference board2', ex, self.reflog) try: if not ref_only: logger.info("CONNECTING MAVLINK TO TEST BOARD") self.testmav = mavutil.mavlink_connection('127.0.0.1:14551') util.wait_heartbeat(self.testmav, timeout=30) logger.info("got heartbeat") util.wait_mode(self.testmav, IDLE_MODES) logger.info("Waiting for 'Ready to FLY'") self.fw_version = None self.px4_version = None self.nuttx_version = None self.stm32_serial = None ready = False self.test.send("param fetch\n") # log version information for later reference while (self.fw_version is None or self.px4_version is None or self.nuttx_version is None or self.stm32_serial is None or not ready): i = self.test.expect([ 'APM: ([^\r\n]*Copter[^\r\n]*)\r\n', 'APM: PX4: ([0-9a-f]+) NuttX: ([0-9a-f]+)\r\n', 'APM: PX4v2 ([0-9A-F]+ [0-9A-F]+ [0-9A-F]+)\r\n', '(Ready to FLY)' ], timeout=20) if i == 3: ready = True elif i == 0: self.fw_version = self.test.match.group(1) elif i == 1: self.px4_version = self.test.match.group(1) self.nuttx_version = self.test.match.group(2) elif i == 2: self.stm32_serial = self.test.match.group(1) except Exception as ex: self.close() util.show_error('Connecting to test board2', ex, self.testlog) if self.nsh is not None: # log any extra nsh data logger.debug("Draining nsh") try: self.nsh.read_nonblocking(4096, 1) except Exception as ex: pass try: if not ref_only and not ref_gyro_offset_ok(self.refmav): self.close() util.failure("Bad reference gyro - FAILED") except Exception as ex: self.close() util.show_error('testing reference gyros', ex) logger.info("Setting rotation level") try: rotate.set_rotation(self, 'level', wait=False) except Exception as ex: self.close() util.show_error("unable to set safety off", ex)
def __init__(self, ref_only=False): util.kill_processes(['mavproxy.py', GDB]) self.reflog = StringIO() self.testlog = StringIO() self.ref = None self.test = None self.nsh = None self.refmav = None self.testmav = None try: if not ref_only: self.nsh = nsh_console.nsh_console() except Exception as ex: self.close() util.show_error('Connecting to nsh console', ex, self.testlog) try: self.ref = mav_reference.mav_reference(self.reflog) except Exception as ex: self.close() util.show_error('Connecting to reference board1', ex, self.reflog) try: if not ref_only: self.test = mav_test.mav_test(self.testlog) except Exception as ex: self.close() util.show_error('Connecting to test board1', ex, self.testlog) try: logger.info("CONNECTING MAVLINK TO REFERENCE BOARD") self.refmav = mavutil.mavlink_connection('127.0.0.1:14550') util.wait_heartbeat(self.refmav, timeout=30) util.wait_mode(self.refmav, IDLE_MODES) except Exception as ex: self.close() util.show_error('Connecting to reference board2', ex, self.reflog) try: if not ref_only: logger.info("CONNECTING MAVLINK TO TEST BOARD") self.testmav = mavutil.mavlink_connection('127.0.0.1:14551') util.wait_heartbeat(self.testmav, timeout=30) logger.info("got heartbeat") util.wait_mode(self.testmav, IDLE_MODES) logger.info("Waiting for 'Ready to FLY'") self.fw_version = None self.px4_version = None self.nuttx_version = None self.stm32_serial = None ready = False self.test.send("param fetch\n") # log version information for later reference while (self.fw_version is None or self.px4_version is None or self.nuttx_version is None or self.stm32_serial is None or not ready): i = self.test.expect(['APM: ([^\r\n]*Copter[^\r\n]*)\r\n', 'APM: PX4: ([0-9a-f]+) NuttX: ([0-9a-f]+)\r\n', 'APM: PX4v2 ([0-9A-F]+ [0-9A-F]+ [0-9A-F]+)\r\n', '(Ready to FLY)'], timeout=20) if i == 3: ready = True elif i == 0: self.fw_version = self.test.match.group(1) elif i == 1: self.px4_version = self.test.match.group(1) self.nuttx_version = self.test.match.group(2) elif i == 2: self.stm32_serial = self.test.match.group(1) except Exception as ex: self.close() util.show_error('Connecting to test board2', ex, self.testlog) if self.nsh is not None: # log any extra nsh data logger.debug("Draining nsh") try: self.nsh.read_nonblocking(4096, 1) except Exception as ex: pass try: if not ref_only and not ref_gyro_offset_ok(self.refmav): self.close() util.failure("Bad reference gyro - FAILED") except Exception as ex: self.close() util.show_error('testing reference gyros', ex) logger.info("Setting rotation level") try: rotate.set_rotation(self, 'level', wait=False) except Exception as ex: self.close() util.show_error("unable to set safety off", ex)
import rotate import barcode import savedstate import otp_program_mod from pymavlink import mavutil logger.info("Setting Pixhawk into Factory Mode %s" % time.ctime()) power_control.power_cycle(down_time=4) # disable stdout buffering sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) # wait for the power to come on again while not util.wait_devices([FMU_JTAG, IO_JTAG, FMU_DEBUG]): logger.info("waiting for power up....") util.kill_processes(['mavproxy.py', GDB]) time.sleep(2) while not util.wait_devices([USB_DEV_TEST, USB_DEV_REFERENCE]): logger.error("FAILED to find USB test and reference devices") power_control.power_cycle(down_time=4) conn = connection.Connection() logger.info("FW version: %s" % conn.fw_version) logger.info("PX4 version: %s" % conn.px4_version) logger.info("NuttX version: %s" % conn.nuttx_version) logger.info("STM32 serial: %s" % conn.stm32_serial) # lock the two telemetry ports to prevent the COMMAND_ACK messages in accel cal # from looping back between the two telemetry ports logger.info("Locking telemetry ports")
================================================ ''' % (device_barcode, (time.time() - start_time))) logger.info("Factory install complete (%u seconds)" % (time.time() - start_time)) return True # load the jig state file savedstate.init() savedstate.reset('current_cycles') while True: logger.get_ftdi() jigstate = savedstate.get() logger.info("jigstate: total_cycles = %i" % jigstate['total_cycles']) logger.info("jigstate: current_cycles = %i" % jigstate['current_cycles']) util.kill_processes(['mavproxy.py', GDB]) if args.test: # power cycle each time, simulating new board put in power_control.power_cycle() else: # wait for the power to be switched off, disable serial logging logger.info("waiting for power off") util.wait_no_device([FMU_JTAG, IO_JTAG], timeout=600) device_barcode = args.barcode if not args.test and device_barcode is None: colour_text.print_blue(''' ========================================== | PLEASE SWIPE DEVICE BARCODE ==========================================