module ti.sysbios.hal.ammu.AMMU

Attribute MMU configuration module

Responsible for initializing the Attribute MMU [ more ... ]
C synopsis target-domain sourced in ti/sysbios/hal/ammu/AMMU.xdc
DETAILS
Responsible for initializing the Attribute MMU
RESTRICTIONS
When used within a dual M3 core (Ducati) arrangement, care must be taken when initializing this shared resource. The "Shared Resources" note provided in the ducati package discusses the management of the various hardware and software resources shared by the two M3 cores.
As the AMMU is shared between the two M3 cores, it should only be initialized and enabled once. It is intended that Core 0 will configure the AMMU at startup.
 
struct AMMU_MMU
C synopsis target-domain
typedef struct AMMU_MMU {
    Char *LARGE_ADDR[8];
    Char *LARGE_XLTE[8];
    UInt32 LARGE_POLICY[8];
    Char *MEDIUM_ADDR[16];
    Char *MEDIUM_XLTE[16];
    UInt32 MEDIUM_POLICY[16];
    Char *SMALL_ADDR[32];
    Char *SMALL_XLTE[32];
    UInt32 SMALL_POLICY[32];
    UInt32 SMALL_MAINT[32];
    Char *LINE_ADDR[32];
    Char *LINE_XLTE[32];
    UInt32 LINE_POLICY[32];
    Char *DEBUG_XLTE;
    UInt32 DEBUG_POLICY;
    UInt32 MAINT;
    Char *MSTART;
    Char *MEND;
    UInt32 MSTAT;
} AMMU_MMU;
 
 
config AMMU_configureAmmu  // module-wide

By default the AMMU module will configure the AMMU at startup

C synopsis target-domain
extern const Bool AMMU_configureAmmu;
 
DETAILS
By setting this flag to false (ie for Ducati core1), the AMMU module APIs are available but the initialization step is suppressed.
 
extern AMMU_mmu

This device's AMMU register set address. Initialized internally according to build target/device

C synopsis target-domain
AMMU_MMU AMMU_mmu; // linked as extern ti_sysbios_hal_ammu_AMMU_mmu
 
 
AMMU_invAll()  // module-wide

Invalidate entire L1 and L2 caches Waits for completion

C synopsis target-domain
Void AMMU_invAll();
 
Module-Wide Built-Ins

C synopsis target-domain
Types_ModuleId AMMU_Module_id();
// Get this module's unique id
 
Bool AMMU_Module_startupDone();
// Test if this module has completed startup
 
IHeap_Handle AMMU_Module_heap();
// The heap from which this module allocates memory
 
Bool AMMU_Module_hasMask();
// Test whether this module has a diagnostics mask
 
Bits16 AMMU_Module_getMask();
// Returns the diagnostics mask for this module
 
Void AMMU_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
 
Configuration settings sourced in ti/sysbios/hal/ammu/AMMU.xdc
var AMMU = xdc.useModule('ti.sysbios.hal.ammu.AMMU');
module-wide constants & types
    values of type AMMU.AllocatePolicy// 
        const AMMU.AllocatePolicy_NON_ALLOCATE;
        const AMMU.AllocatePolicy_ALLOCATE;
 
    values of type AMMU.CachePolicy// 
        const AMMU.CachePolicy_NON_CACHEABLE;
        const AMMU.CachePolicy_CACHEABLE;
 
    values of type AMMU.Clean// 
        const AMMU.DO_NOT_CLEAN;
        const AMMU.CLEAN;
 
    values of type AMMU.Enable// 
        const AMMU.Enable_NO;
        const AMMU.Enable_YES;
 
    values of type AMMU.Invalidate// 
        const AMMU.DO_NOT_INVALIDATE;
        const AMMU.INVALIDATE;
 
    values of type AMMU.Large// 
        const AMMU.Large_2M;
        const AMMU.Large_4M;
        const AMMU.Large_8M;
        const AMMU.Large_16M;
        const AMMU.Large_32M;
        const AMMU.Large_64M;
        const AMMU.Large_128M;
        const AMMU.Large_256M;
        const AMMU.Large_512M;
 
    values of type AMMU.Lock// 
        const AMMU.DO_NOT_LOCK;
        const AMMU.LOCK;
 
    values of type AMMU.Maintenance// 
        const AMMU.DO_NOT_PERFORM;
        const AMMU.PERFORM;
 
    values of type AMMU.Medium// 
        const AMMU.Medium_128K;
        const AMMU.Medium_256K;
        const AMMU.Medium_512K;
        const AMMU.Medium_1M;
 
    values of type AMMU.PostedPolicy// 
        const AMMU.PostedPolicy_NON_POSTED;
        const AMMU.PostedPolicy_POSTED;
 
    values of type AMMU.Small// 
        const AMMU.Small_4K;
        const AMMU.Small_8K;
        const AMMU.Small_16K;
        const AMMU.Small_32K;
 
    values of type AMMU.Unlock// 
        const AMMU.DO_NOT_UNLOCK;
        const AMMU.UNLOCK;
 
    values of type AMMU.Volatile// 
        const AMMU.Volatile_DO_NOT_FOLLOW;
        const AMMU.Volatile_FOLLOW;
 
    values of type AMMU.WritePolicy// 
        const AMMU.WritePolicy_WRITE_THROUGH;
        const AMMU.WritePolicy_WRITE_BACK;
 
    var obj = new AMMU.DebugPage// ;
        obj.pageEnabled = AMMU.Enable  ...
        obj.translationEnabled = AMMU.Enable  ...
        obj.translatedAddress = Ptr  ...
 
    var obj = new AMMU.LargePage// ;
        obj.pageEnabled = AMMU.Enable  ...
        obj.logicalAddress = Ptr  ...
        obj.translationEnabled = AMMU.Enable  ...
        obj.translatedAddress = Ptr  ...
        obj.size = AMMU.Large  ...
        obj.volatileQualifier = AMMU.Volatile  ...
        obj.executeOnly = AMMU.Enable  ...
        obj.readOnly = AMMU.Enable  ...
        obj.prefetch = AMMU.Enable  ...
        obj.exclusion = AMMU.Enable  ...
        obj.L1_cacheable = AMMU.CachePolicy  ...
        obj.L1_posted = AMMU.PostedPolicy  ...
        obj.L1_allocate = AMMU.AllocatePolicy  ...
        obj.L1_writePolicy = AMMU.WritePolicy  ...
        obj.L2_cacheable = AMMU.CachePolicy  ...
        obj.L2_posted = AMMU.PostedPolicy  ...
        obj.L2_allocate = AMMU.AllocatePolicy  ...
        obj.L2_writePolicy = AMMU.WritePolicy  ...
 
    var obj = new AMMU.LinePage// ;
        obj.pageEnabled = AMMU.Enable  ...
        obj.logicalAddress = Ptr  ...
        obj.translationEnabled = AMMU.Enable  ...
        obj.translatedAddress = Ptr  ...
 
    var obj = new AMMU.MMU// ;
        obj.LARGE_ADDR = Char*[8]  ...
        obj.LARGE_XLTE = Char*[8]  ...
        obj.LARGE_POLICY = UInt32[8]  ...
        obj.MEDIUM_ADDR = Char*[16]  ...
        obj.MEDIUM_XLTE = Char*[16]  ...
        obj.MEDIUM_POLICY = UInt32[16]  ...
        obj.SMALL_ADDR = Char*[32]  ...
        obj.SMALL_XLTE = Char*[32]  ...
        obj.SMALL_POLICY = UInt32[32]  ...
        obj.SMALL_MAINT = UInt32[32]  ...
        obj.LINE_ADDR = Char*[32]  ...
        obj.LINE_XLTE = Char*[32]  ...
        obj.LINE_POLICY = UInt32[32]  ...
        obj.DEBUG_XLTE = Char*  ...
        obj.DEBUG_POLICY = UInt32  ...
        obj.MAINT = UInt32  ...
        obj.MSTART = Char*  ...
        obj.MEND = Char*  ...
        obj.MSTAT = UInt32  ...
 
    var obj = new AMMU.MediumPage// ;
        obj.pageEnabled = AMMU.Enable  ...
        obj.logicalAddress = Ptr  ...
        obj.translationEnabled = AMMU.Enable  ...
        obj.translatedAddress = Ptr  ...
        obj.size = AMMU.Medium  ...
        obj.volatileQualifier = AMMU.Volatile  ...
        obj.executeOnly = AMMU.Enable  ...
        obj.readOnly = AMMU.Enable  ...
        obj.prefetch = AMMU.Enable  ...
        obj.exclusion = AMMU.Enable  ...
        obj.L1_cacheable = AMMU.CachePolicy  ...
        obj.L1_posted = AMMU.PostedPolicy  ...
        obj.L1_allocate = AMMU.AllocatePolicy  ...
        obj.L1_writePolicy = AMMU.WritePolicy  ...
        obj.L2_cacheable = AMMU.CachePolicy  ...
        obj.L2_posted = AMMU.PostedPolicy  ...
        obj.L2_allocate = AMMU.AllocatePolicy  ...
        obj.L2_writePolicy = AMMU.WritePolicy  ...
 
    var obj = new AMMU.SmallPage// ;
        obj.pageEnabled = AMMU.Enable  ...
        obj.logicalAddress = Ptr  ...
        obj.translationEnabled = AMMU.Enable  ...
        obj.translatedAddress = Ptr  ...
        obj.size = AMMU.Small  ...
        obj.volatileQualifier = AMMU.Volatile  ...
        obj.executeOnly = AMMU.Enable  ...
        obj.readOnly = AMMU.Enable  ...
        obj.prefetch = AMMU.Enable  ...
        obj.exclusion = AMMU.Enable  ...
        obj.L1_cacheable = AMMU.CachePolicy  ...
        obj.L1_posted = AMMU.PostedPolicy  ...
        obj.L1_allocate = AMMU.AllocatePolicy  ...
        obj.L1_writePolicy = AMMU.WritePolicy  ...
        obj.L2_cacheable = AMMU.CachePolicy  ...
        obj.L2_posted = AMMU.PostedPolicy  ...
        obj.L2_allocate = AMMU.AllocatePolicy  ...
        obj.L2_writePolicy = AMMU.WritePolicy  ...
 
    var obj = new AMMU.SmallPageMaintenance// ;
        obj.maintL2Cache = AMMU.Maintenance  ...
        obj.maintL1Cache2 = AMMU.Maintenance  ...
        obj.maintL1Cache1 = AMMU.Maintenance  ...
        obj.cpuInterrupt = AMMU.Enable  ...
        obj.hostInterrupt = AMMU.Enable  ...
        obj.invalidate = AMMU.Invalidate  ...
        obj.clean = AMMU.Clean  ...
        obj.unlock = AMMU.Unlock  ...
        obj.lock = AMMU.Lock  ...
        obj.preload = AMMU.Enable  ...
module-wide config parameters
 
    AMMU.debugPage//  = AMMU.DebugPage undefined;
 
 
metaonly enum AMMU.AllocatePolicy
Configuration settings
values of type AMMU.AllocatePolicy
    const AMMU.AllocatePolicy_NON_ALLOCATE;
    const AMMU.AllocatePolicy_ALLOCATE;
 
 
metaonly enum AMMU.CachePolicy
Configuration settings
values of type AMMU.CachePolicy
    const AMMU.CachePolicy_NON_CACHEABLE;
    const AMMU.CachePolicy_CACHEABLE;
 
 
metaonly enum AMMU.Clean
Configuration settings
values of type AMMU.Clean
    const AMMU.DO_NOT_CLEAN;
    const AMMU.CLEAN;
 
 
metaonly enum AMMU.Enable
Configuration settings
values of type AMMU.Enable
    const AMMU.Enable_NO;
    const AMMU.Enable_YES;
 
 
metaonly enum AMMU.Invalidate
Configuration settings
values of type AMMU.Invalidate
    const AMMU.DO_NOT_INVALIDATE;
    const AMMU.INVALIDATE;
 
 
metaonly enum AMMU.Large
Configuration settings
values of type AMMU.Large
    const AMMU.Large_2M;
    const AMMU.Large_4M;
    const AMMU.Large_8M;
    const AMMU.Large_16M;
    const AMMU.Large_32M;
    const AMMU.Large_64M;
    const AMMU.Large_128M;
    const AMMU.Large_256M;
    const AMMU.Large_512M;
 
 
metaonly enum AMMU.Lock
Configuration settings
values of type AMMU.Lock
    const AMMU.DO_NOT_LOCK;
    const AMMU.LOCK;
 
 
metaonly enum AMMU.Maintenance
Configuration settings
values of type AMMU.Maintenance
    const AMMU.DO_NOT_PERFORM;
    const AMMU.PERFORM;
 
 
metaonly enum AMMU.Medium
Configuration settings
values of type AMMU.Medium
    const AMMU.Medium_128K;
    const AMMU.Medium_256K;
    const AMMU.Medium_512K;
    const AMMU.Medium_1M;
 
 
metaonly enum AMMU.PostedPolicy
Configuration settings
values of type AMMU.PostedPolicy
    const AMMU.PostedPolicy_NON_POSTED;
    const AMMU.PostedPolicy_POSTED;
 
 
metaonly enum AMMU.Small
Configuration settings
values of type AMMU.Small
    const AMMU.Small_4K;
    const AMMU.Small_8K;
    const AMMU.Small_16K;
    const AMMU.Small_32K;
 
 
metaonly enum AMMU.Unlock
Configuration settings
values of type AMMU.Unlock
    const AMMU.DO_NOT_UNLOCK;
    const AMMU.UNLOCK;
 
 
metaonly enum AMMU.Volatile
Configuration settings
values of type AMMU.Volatile
    const AMMU.Volatile_DO_NOT_FOLLOW;
    const AMMU.Volatile_FOLLOW;
 
 
metaonly enum AMMU.WritePolicy
Configuration settings
values of type AMMU.WritePolicy
    const AMMU.WritePolicy_WRITE_THROUGH;
    const AMMU.WritePolicy_WRITE_BACK;
 
 
metaonly struct AMMU.DebugPage
Configuration settings
var obj = new AMMU.DebugPage;
 
    obj.pageEnabled = AMMU.Enable  ...
    obj.translationEnabled = AMMU.Enable  ...
    obj.translatedAddress = Ptr  ...
 
 
metaonly struct AMMU.LargePage
Configuration settings
var obj = new AMMU.LargePage;
 
    obj.pageEnabled = AMMU.Enable  ...
    obj.logicalAddress = Ptr  ...
    obj.translationEnabled = AMMU.Enable  ...
    obj.translatedAddress = Ptr  ...
    obj.size = AMMU.Large  ...
    obj.volatileQualifier = AMMU.Volatile  ...
    obj.executeOnly = AMMU.Enable  ...
    obj.readOnly = AMMU.Enable  ...
    obj.prefetch = AMMU.Enable  ...
    obj.exclusion = AMMU.Enable  ...
    obj.L1_cacheable = AMMU.CachePolicy  ...
    obj.L1_posted = AMMU.PostedPolicy  ...
    obj.L1_allocate = AMMU.AllocatePolicy  ...
    obj.L1_writePolicy = AMMU.WritePolicy  ...
    obj.L2_cacheable = AMMU.CachePolicy  ...
    obj.L2_posted = AMMU.PostedPolicy  ...
    obj.L2_allocate = AMMU.AllocatePolicy  ...
    obj.L2_writePolicy = AMMU.WritePolicy  ...
 
 
metaonly struct AMMU.LinePage
Configuration settings
var obj = new AMMU.LinePage;
 
    obj.pageEnabled = AMMU.Enable  ...
    obj.logicalAddress = Ptr  ...
    obj.translationEnabled = AMMU.Enable  ...
    obj.translatedAddress = Ptr  ...
 
 
struct AMMU.MMU
Configuration settings
var obj = new AMMU.MMU;
 
    obj.LARGE_ADDR = Char*[8]  ...
    obj.LARGE_XLTE = Char*[8]  ...
    obj.LARGE_POLICY = UInt32[8]  ...
    obj.MEDIUM_ADDR = Char*[16]  ...
    obj.MEDIUM_XLTE = Char*[16]  ...
    obj.MEDIUM_POLICY = UInt32[16]  ...
    obj.SMALL_ADDR = Char*[32]  ...
    obj.SMALL_XLTE = Char*[32]  ...
    obj.SMALL_POLICY = UInt32[32]  ...
    obj.SMALL_MAINT = UInt32[32]  ...
    obj.LINE_ADDR = Char*[32]  ...
    obj.LINE_XLTE = Char*[32]  ...
    obj.LINE_POLICY = UInt32[32]  ...
    obj.DEBUG_XLTE = Char*  ...
    obj.DEBUG_POLICY = UInt32  ...
    obj.MAINT = UInt32  ...
    obj.MSTART = Char*  ...
    obj.MEND = Char*  ...
    obj.MSTAT = UInt32  ...
 
C SYNOPSIS
 
metaonly struct AMMU.MediumPage
Configuration settings
var obj = new AMMU.MediumPage;
 
    obj.pageEnabled = AMMU.Enable  ...
    obj.logicalAddress = Ptr  ...
    obj.translationEnabled = AMMU.Enable  ...
    obj.translatedAddress = Ptr  ...
    obj.size = AMMU.Medium  ...
    obj.volatileQualifier = AMMU.Volatile  ...
    obj.executeOnly = AMMU.Enable  ...
    obj.readOnly = AMMU.Enable  ...
    obj.prefetch = AMMU.Enable  ...
    obj.exclusion = AMMU.Enable  ...
    obj.L1_cacheable = AMMU.CachePolicy  ...
    obj.L1_posted = AMMU.PostedPolicy  ...
    obj.L1_allocate = AMMU.AllocatePolicy  ...
    obj.L1_writePolicy = AMMU.WritePolicy  ...
    obj.L2_cacheable = AMMU.CachePolicy  ...
    obj.L2_posted = AMMU.PostedPolicy  ...
    obj.L2_allocate = AMMU.AllocatePolicy  ...
    obj.L2_writePolicy = AMMU.WritePolicy  ...
 
 
metaonly struct AMMU.SmallPage
Configuration settings
var obj = new AMMU.SmallPage;
 
    obj.pageEnabled = AMMU.Enable  ...
    obj.logicalAddress = Ptr  ...
    obj.translationEnabled = AMMU.Enable  ...
    obj.translatedAddress = Ptr  ...
    obj.size = AMMU.Small  ...
    obj.volatileQualifier = AMMU.Volatile  ...
    obj.executeOnly = AMMU.Enable  ...
    obj.readOnly = AMMU.Enable  ...
    obj.prefetch = AMMU.Enable  ...
    obj.exclusion = AMMU.Enable  ...
    obj.L1_cacheable = AMMU.CachePolicy  ...
    obj.L1_posted = AMMU.PostedPolicy  ...
    obj.L1_allocate = AMMU.AllocatePolicy  ...
    obj.L1_writePolicy = AMMU.WritePolicy  ...
    obj.L2_cacheable = AMMU.CachePolicy  ...
    obj.L2_posted = AMMU.PostedPolicy  ...
    obj.L2_allocate = AMMU.AllocatePolicy  ...
    obj.L2_writePolicy = AMMU.WritePolicy  ...
 
 
metaonly struct AMMU.SmallPageMaintenance
Configuration settings
var obj = new AMMU.SmallPageMaintenance;
 
    obj.maintL2Cache = AMMU.Maintenance  ...
    obj.maintL1Cache2 = AMMU.Maintenance  ...
    obj.maintL1Cache1 = AMMU.Maintenance  ...
    obj.cpuInterrupt = AMMU.Enable  ...
    obj.hostInterrupt = AMMU.Enable  ...
    obj.invalidate = AMMU.Invalidate  ...
    obj.clean = AMMU.Clean  ...
    obj.unlock = AMMU.Unlock  ...
    obj.lock = AMMU.Lock  ...
    obj.preload = AMMU.Enable  ...
 
 
config AMMU.configureAmmu  // module-wide

By default the AMMU module will configure the AMMU at startup

Configuration settings
AMMU.configureAmmu = Bool true;
 
DETAILS
By setting this flag to false (ie for Ducati core1), the AMMU module APIs are available but the initialization step is suppressed.
C SYNOPSIS
 
metaonly config AMMU.common$  // module-wide

Common module configuration parameters

Configuration settings
AMMU.common$ = Types.Common$ undefined;
 
DETAILS
All modules have this configuration parameter. Its name contains the '$' character to ensure it does not conflict with configuration parameters declared by the module. This allows new configuration parameters to be added in the future without any chance of breaking existing modules.
 
metaonly config AMMU.debugPage  // module-wide
Configuration settings
AMMU.debugPage = AMMU.DebugPage undefined;
 
 
metaonly config AMMU.largePages  // module-wide

The number of Large Page Desciptors is target/device specific

Configuration settings
AMMU.largePages = AMMU.LargePage[] [ ];
 
 
metaonly config AMMU.linePages  // module-wide

The number of Line Page Desciptors is target/device specific

Configuration settings
AMMU.linePages = AMMU.LinePage[] [ ];
 
 
metaonly config AMMU.mediumPages  // module-wide

The number of Medium Page Desciptors is target/device specific

Configuration settings
AMMU.mediumPages = AMMU.MediumPage[] [ ];
 
 
metaonly config AMMU.smallPages  // module-wide

The number of Small Page Desciptors is target/device specific

Configuration settings
AMMU.smallPages = AMMU.SmallPage[] [ ];
 
generated on Thu, 25 May 2017 22:09:07 GMT