Esempio n. 1
0
 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)
Esempio n. 2
0
    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)
Esempio n. 3
0
 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)