Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
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
Beispiel #4
0
    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('"', '')
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #7
0
    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)
Beispiel #8
0
 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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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.')
Beispiel #12
0
    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)
Beispiel #13
0
    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.')
Beispiel #14
0
    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)
Beispiel #15
0
    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)