示例#1
0
    def __init__(self,
            data_area_size = DEFAULT_DATA_AREA_SIZE,
            code_area_size = DEFAULT_CODE_AREA_SIZE,
            max_threads    = DEFAULT_MAX_THREADS
            ):
        self.mailbox = MailBox()
        self.mailbox.enable_qpu(1)
        self.memory  = None
        try:
            self.data_area_size = data_area_size
            self.code_area_size = code_area_size
            self.max_threads = max_threads

            self.code_area_base = 0
            self.data_area_base = self.code_area_base + self.code_area_size
            self.msg_area_base  = self.data_area_base + self.data_area_size

            self.code_pos = self.code_area_base
            self.data_pos = self.data_area_base

            total = data_area_size + code_area_size + max_threads * 64
            self.memory = Memory(self.mailbox, total)

            self.message = Array(
                    address = self.memory.baseaddr + self.msg_area_base,
                    buffer  = self.memory.base,
                    offset = self.msg_area_base,
                    shape = (self.max_threads, 2),
                    dtype = np.uint32)
        except:
            if self.memory:
                self.memory.close()
            self.mailbox.enable_qpu(0)
            self.mailbox.close()
            raise
示例#2
0
    def __init__(self,
            data_area_size = DEFAULT_DATA_AREA_SIZE,
            code_area_size = DEFAULT_CODE_AREA_SIZE,
            max_threads    = DEFAULT_MAX_THREADS,
            cache_mode     = rpi_vcsm.CACHE_NONE
            ):
        self.mailbox = MailBox()
        self.mailbox.enable_qpu(1)
        self.vcsm = rpi_vcsm.VCSM.VCSM()

        if cache_mode in [rpi_vcsm.CACHE_HOST, rpi_vcsm.CACHE_BOTH]:
            self.is_cacheop_needed = True
        else:
            self.is_cacheop_needed = False

        self.max_threads = max_threads
        message_area_size = max_threads * 2 * 4

        try:
            # Non-cached memory area for code and message.
            self.ctlmem = Mempool({'message': message_area_size,
                                   'code': code_area_size},
                                  vcsm = self.vcsm,
                                  cache_mode = rpi_vcsm.CACHE_NONE)
            # Memory area for uniforms and data with cache mode cache_mode.
            self.datmem = Mempool({'data': data_area_size},
                                  vcsm = self.vcsm, cache_mode = cache_mode)

            self.message = self.ctlmem.alloc('message',
                                             shape = (self.max_threads, 2),
                                             dtype = np.uint32)

        except:
            self.close()
            raise
示例#3
0
from videocore.mailbox import MailBox

with MailBox() as mb:
    print('firmware revision: %x' % mb.get_firmware_revision())
    print('board model: %x' % mb.get_board_model())
    print('board revision: %x' % mb.get_board_revision())
    print('board serial: %016x' % mb.get_board_serial())