docs: def read_reg(self, addr):
          """ Read memory address in target """
          # we don't call check_command here because read_reg() function is called
          # when detecting chip type, and the way we check for success (STATUS_BYTES_LENGTH) is different
          # for different chip types (!)
          val, data = self.command(self.ESP_READ_REG, struct.pack('<I', addr))
          if byte(data, 0) != 0:
              raise FatalError.WithResult("Failed to read register address %08x" % addr, data)
          return val