def write_dm_block(self, start_addr, data): """Writes the specified data to data memory. 'start_addr' must be word aligned on byte addressable platforms. 'data' is a list of integer values to write""" data_array = to_ctypes_array(data, c_uint) err = self._cfuncs['ka_write_dm_block'](self._core._get_ka(), start_addr, data_array, len(data)) self._core._handle_error(err)
def write_register_set(self, registers, values): """Writes values to the set of registers specified in the iterable 'registers'. Elements of 'registers' may be register names or register ids.""" num_registers = len(registers) if len(values) != num_registers: raise ValueError("Not enough values specified to write to register set") reg_ids_for_c = self._get_c_reg_ids(registers) values_for_c = to_ctypes_array(values, c_uint) err = self._cfuncs['ka_write_register_set'](self._core._get_ka(), reg_ids_for_c, values_for_c, num_registers) self._core._handle_error(err)
def _get_c_reg_ids(self, registers): registers = map(lambda r: self.get_register_id(r) if isinstance(r, str) else r, registers) return to_ctypes_array(registers, c_int)