B.2.10. CADIMemBlockInfo_t

This is a single block of memory addresses (inside a single memory space) that all have the same properties. For example, different memory blocks in the same memory space might be read-only. Blocks can be nested within one another. Blocks at the root level have CADI_MEMBLOCK_ROOT as the parent ID.

name is used to give you an idea of the type of memory ("off chip", for example). If cyclesToAccess is 0, the number is unknown or irrelevant.

Example B.19. CADIMemBlockInfo_t

 
struct CADIMemBlockInfo_t 
{ 
public: // methods 
    CADIMemBlockInfo_t(const char *name_par = "", 
                const char *description_par = "",
                uint16_t id = 0, uint16_t parentID = 0, 
                CADIAddrSimple_t startAddr = 0,
                CADIAddrSimple_t endAddr = 0, 
                uint32_t cyclesToAccess = 0,
                CADIMemReadWrite_t readWrite = CADI_MEM_ReadWrite, 
                uint32_t *supportedMultiplesOfMAU_ = 0,
                uint32_t endianness = 0, 
                uint32_t invariance = 0) : 
            id(id),
            parentID(parentID),
            startAddr(startAddr),
            endAddr(endAddr), 
            cyclesToAccess(cyclesToAccess),
            readWrite(readWrite),
            endianness(endianness), 
            invariance(invariance) 
        { 
            AssignString(name, name_par, CADI_NAME_SIZE); 
            AssignString(description, description_par, CADI_DESCRIPTION_SIZE); 
            if (supportedMultiplesOfMAU_) 
                std::memcpy(supportedMultiplesOfMAU, supportedMultiplesOfMAU_,
                           sizeof(supportedMultiplesOfMAU)); 
            else 
                std::memset(supportedMultiplesOfMAU, 0, sizeof(supportedMultiplesOfMAU)); 
        } 
 
public: // data 
    char          name[CADI_NAME_SIZE]; 
    char          description[CADI_DESCRIPTION_SIZE]; 
    uint16_t      id;    
    uint16_t      parentID;  
    CADIAddrSimple_t  startAddr;
    CADIAddrSimple_t  endAddr;   
    uint32_t      cyclesToAccess; 
    CADIMemReadWrite_t readWrite;  
    uint32_t      supportedMultiplesOfMAU[CADI_MAU_MULTIPLES_LIST_SIZE];  
    uint8_t    endianness;  
    uint8_t    invariance;   
};

name

is the memory block name.

description

is the memory block description.

id

is the memory block ID.

parentID

The ID of the parent. CADI_MEMBLOCK_ROOT if no parent.

startAddr

is the start address of this memory block.

endAddr

is the end address of this memory block.

cyclesToAccess

specifies the number of cycles required for an access to this block.

readWrite

specifies the read/write type of this block.

supportedMultiplesOfMAU

indicates the multiples on one byte. If for example the MAU size is 8 bits and the supported access is 32 bits, the corresponding value is 4 (from 32bits/8bits).

endianness

endianness, 0=same as owning memory space, 1=LE, 2=BE.

invariance

is the unit of invariance in bytes, 0=same as owning memory space.

Copyright © 2014 ARM. All rights reserved.ARM DUI 0842B
Non-ConfidentialID111014