def is_partition_enabled(self): build_conf = BuildConfiguration(self.cfg.build_dir) if 'CONFIG_USE_DT_CODE_PARTITION' not in build_conf: return False return True
def get_dts_img_offset(self): build_conf = BuildConfiguration(self.cfg.build_dir) if build_conf['CONFIG_HAS_FLASH_LOAD_OFFSET']: return build_conf['CONFIG_FLASH_LOAD_OFFSET'] return 0
def get_flash_offset(cls, cfg): # Pull the bootloader size from the config build_conf = BuildConfiguration(cfg.build_dir) if build_conf['CONFIG_HAS_FLASH_LOAD_OFFSET']: return build_conf['CONFIG_FLASH_LOAD_OFFSET'] return None
def get_board_name(self): build_conf = BuildConfiguration(self.cfg.build_dir) if 'CONFIG_BOARD' not in build_conf: return '<board>' return build_conf['CONFIG_BOARD'][0].replace('"', '')
def do_create(cls, cfg, args): build_conf = BuildConfiguration(cfg.build_dir) flash_addr = cls.get_flash_address(args, build_conf) ret = PyOcdBinaryRunner(cfg, args.target, pyocd=args.pyocd, flash_addr=flash_addr, erase=args.erase, flash_opts=args.flash_opt, gdb_port=args.gdb_port, telnet_port=args.telnet_port, tui=args.tui, board_id=args.board_id, daparg=args.daparg, frequency=args.frequency, tool_opt=args.tool_opt) daparg = os.environ.get('PYOCD_DAPARG') if not ret.daparg_args and daparg: ret.logger.warning('PYOCD_DAPARG is deprecated; use --daparg') ret.logger.debug('--daparg={} via PYOCD_DAPARG'.format(daparg)) ret.daparg_args = ['-da', daparg] return ret
def is_extended_samba_protocol(self): build_conf = BuildConfiguration(self.cfg.build_dir) ext_samba_versions = ['CONFIG_BOOTLOADER_BOSSA_ARDUINO', 'CONFIG_BOOTLOADER_BOSSA_ADAFRUIT_UF2'] for x in ext_samba_versions: if x in build_conf: return True return False
def do_run(self, args, ignored): self.args = args # for check_force # Find the build directory and parse .config and DT. build_dir = find_build_dir(args.build_dir) self.check_force(os.path.isdir(build_dir), 'no such build directory {}'.format(build_dir)) self.check_force(is_zephyr_build(build_dir), "build directory {} doesn't look like a Zephyr build " 'directory'.format(build_dir)) build_conf = BuildConfiguration(build_dir) # Decide on output formats. formats = [] bin_exists = build_conf.getboolean('CONFIG_BUILD_OUTPUT_BIN') if args.gen_bin: self.check_force(bin_exists, '--bin given but CONFIG_BUILD_OUTPUT_BIN not set ' "in build directory's ({}) .config". format(build_dir)) formats.append('bin') elif args.gen_bin is None and bin_exists: formats.append('bin') hex_exists = build_conf.getboolean('CONFIG_BUILD_OUTPUT_HEX') if args.gen_hex: self.check_force(hex_exists, '--hex given but CONFIG_BUILD_OUTPUT_HEX not set ' "in build directory's ({}) .config". format(build_dir)) formats.append('hex') elif args.gen_hex is None and hex_exists: formats.append('hex') # Delegate to the signer. if args.tool == 'imgtool': signer = ImgtoolSigner() elif args.tool == 'rimage': signer = RimageSigner() # (Add support for other signers here in elif blocks) else: raise RuntimeError("can't happen") signer.sign(self, build_dir, build_conf, formats)
def create(cls, cfg, args): build_conf = BuildConfiguration(cfg.build_dir) flash_addr = cls.get_flash_address(args, build_conf) return JLinkBinaryRunner(cfg, args.device, commander=args.commander, flash_addr=flash_addr, erase=args.erase, iface=args.iface, speed=args.speed, gdbserver=args.gdbserver, gdb_port=args.gdb_port, tui=args.tui)
def do_create(cls, cfg, args): # BOSSA means there's a bootloader so always fetch the flash address args.dt_flash = True build_conf = BuildConfiguration(cfg.build_dir) flash_address = cls.get_flash_address(args, build_conf, None) return BossacBinaryRunner(cfg, bossac=args.bossac, port=args.bossac_port, offset=args.offset, flash_address=flash_address)
def create(cls, cfg, args): if args.img is None: args.img = cfg.bin_file if args.dfuse: args.dt_flash = True # --dfuse implies --dt-flash. build_conf = BuildConfiguration(cfg.build_dir) dcfg = DfuSeConfig(address=cls.get_flash_address(args, build_conf), options=args.dfuse_modifiers) else: dcfg = None return DfuUtilBinaryRunner(cfg, args.pid, args.alt, args.img, exe=args.dfu_util, dfuse_config=dcfg)
def do_run(self, command, **kwargs): self.require('nrfjprog') self.build_conf = BuildConfiguration(self.cfg.build_dir) self.ensure_output('hex') self.ensure_snr() self.ensure_family() self.check_force_uicr() if self.recover: self.recover_target() self.program_hex() self.reset_target() self.logger.info(f'Board with serial number {self.snr} ' 'flashed successfully.')
def sign(self, args): cache = cmake.CMakeCache.from_build_dir(args.build_dir) runner_config = cached_runner_config(args.build_dir, cache) bcfg = BuildConfiguration(args.build_dir) # Build a signed .bin if args.gen_bin and runner_config.bin_file: sign_bin = self.sign_cmd(args, bcfg, runner_config.bin_file, args.sbin) log.dbg(quote_sh_list(sign_bin)) subprocess.check_call(sign_bin) # Build a signed .hex if args.gen_hex and runner_config.hex_file: sign_hex = self.sign_cmd(args, bcfg, runner_config.hex_file, args.shex) log.dbg(quote_sh_list(sign_hex)) subprocess.check_call(sign_hex)
def do_run(self, command, **kwargs): self.require('nrfjprog') self.build_conf = BuildConfiguration(self.cfg.build_dir) if not os.path.isfile(self.hex_): raise RuntimeError( f'Cannot flash; hex file ({self.hex_}) does not exist. ' 'Try enabling CONFIG_BUILD_OUTPUT_HEX.') self.ensure_snr() self.ensure_family() self.check_force_uicr() if self.recover: self.recover_target() self.program_hex() self.reset_target() self.logger.info(f'Board with serial number {self.snr} ' 'flashed successfully.')
def do_create(cls, cfg, args): if args.telink_tools_path: spiburn = f'{args.telink_tools_path}/flash/bin/SPI_burn' iceman = f'{args.telink_tools_path}/ice/ICEman' else: # If telink_tools_path arg is not specified then pass to tools shall be specified in PATH spiburn = 'SPI_burn' iceman = 'ICEman' # Get flash address offset if args.dt_flash == 'y': build_conf = BuildConfiguration(cfg.build_dir) address = hex( cls.get_flash_address(args, build_conf) - build_conf['CONFIG_FLASH_BASE_ADDRESS']) else: address = args.addr return SpiBurnBinaryRunner(cfg, address, spiburn, iceman, args.timeout, args.gdb_port, args.gdb_ex, args.erase)
def create(cls, cfg, args): daparg = os.environ.get('PYOCD_DAPARG') if daparg: log.wrn('Setting PYOCD_DAPARG in the environment is', 'deprecated; use the --daparg option instead.') if args.daparg is None: log.dbg('Missing --daparg set to {} from environment'.format( daparg), level=log.VERBOSE_VERY) args.daparg = daparg build_conf = BuildConfiguration(cfg.build_dir) flash_addr = cls.get_flash_address(args, build_conf) return PyOcdBinaryRunner(cfg, args.target, pyocd=args.pyocd, flash_addr=flash_addr, flash_opts=args.flash_opt, gdb_port=args.gdb_port, tui=args.tui, board_id=args.board_id, daparg=args.daparg, frequency=args.frequency)