B.2.9. CADIMemSpaceInfo_t

Memory space info data. Each memory space (program and data, for example) in the system has a separate set of addresses. Any location in the memory of a device can be fully specified with no less than an indication of the memory space and the address within that space. Only one space can have the isProgramMemory flag set.

Example B.18. CADIMemSpaceInfo_t

struct CADIMemSpaceInfo_t 
{ 
public: // methods 
        CADIMemSpaceInfo_t(const char *memSpaceName_par = "", 
                         const char *description_par = "",
                         uint32_t memSpaceId = 0,
                         uint32_t bitsPerMau = 0,
                         CADIAddrSimple_t maxAddress = 0,
                         uint32_t nrMemBlocks = 0,
                         int32_t isProgramMemory = false,
                         CADIAddrSimple_t minAddress = 0, 
                         int32_t isVirtualMemory = false,
                         uint32_t isCache = false, 
                         uint8_t endianness = 0,
                         uint8_t invariance = 0, 
                         uint32_t dwarfMemSpaceId = NO_DWARF_ID) : 
                memSpaceId(memSpaceId),
                bitsPerMau(bitsPerMau),
                maxAddress(maxAddress),
                nrMemBlocks(nrMemBlocks),
                isProgramMemory(isProgramMemory),
                minAddress(minAddress), 
                isVirtualMemory(isVirtualMemory),
                isCache(isCache),
                endianness(endianness),
                invariance(invariance),
                dwarfMemSpaceId(dwarfMemSpaceId) 
        { 
            AssignString(memSpaceName, memSpaceName_par, CADI_NAME_SIZE); 
            AssignString(description, description_par, CADI_DESCRIPTION_SIZE); 
        } 
public: // data 
        char       memSpaceName[CADI_NAME_SIZE]; 
        char       description[CADI_DESCRIPTION_SIZE]; 
        uint32_t   memSpaceId; 
        uint32_t   bitsPerMau;  
        CADIAddrSimple_t maxAddress;   
        uint32_t   nrMemBlocks; 
        int32_t    isProgramMemory; 
        CADIAddrSimple_t minAddress; 
        int32_t    isVirtualMemory;  
        uint32_t   isCache;   
        uint8_t    endianness;  
        uint8_t    invariance;  
        enum { NO_DWARF_ID = 0xffffffff }; 
        uint32_t   dwarfMemSpaceId;
        uint32_t   canonicalMemoryNumber; 
};

The data members are:

memSpaceName

is the memory space name

description

is the memory space description

memSpaceId

is the memory space ID

bitsPerMau

specifies its per Minimum Addressable Unit (for example, 8 for byte).

maxAddress

is the maximum address of this memory space

nrMemBlocks

is the number of memory blocks

isProgramMemory

specifies program memory. Only one space can have the isProgramMemory flag set

minAddress

specifies the minimum address of this memory space.

isVirtualMemory

specifies that this memory space is a Virtual/Physical space

isCache

specifies that this memory space is a cache

endianness

is the endianness, 0=mono-endian (arch defined), 1=LE, 2=BE

invariance

is the unit of invariance in bytes, 0=fixed invariance (arch defined).

dwarfMemSpaceId

is the DWARF memory space ID (NO_DWARF_ID if memory space has no DWARF memory space ID)

canonicalMemoryNumber

is the canonical memory number as defined by the scheme specified in CADITargetFeatures_t::canonicalMemoryDescription. If the scheme is the empty string then no meaning can be ascribed to this field.

Copyright © 2008-2010 ARM Limited. All rights reserved.ARM DUI 0444F
Non-ConfidentialID110210