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 |
|
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
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
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
Module-Wide Built-Ins |
|
// Get this module's unique id
Bool AMMU_Module_startupDone();
// Test if this module has completed startup
// 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
metaonly enum AMMU.AllocatePolicy |
|
values of type AMMU.AllocatePolicy
const AMMU.AllocatePolicy_NON_ALLOCATE;
const AMMU.AllocatePolicy_ALLOCATE;
metaonly enum AMMU.CachePolicy |
|
values of type AMMU.CachePolicy
const AMMU.CachePolicy_NON_CACHEABLE;
const AMMU.CachePolicy_CACHEABLE;
metaonly enum AMMU.Clean |
|
values of type AMMU.Clean
const AMMU.DO_NOT_CLEAN;
const AMMU.CLEAN;
metaonly enum AMMU.Enable |
|
values of type AMMU.Enable
const AMMU.Enable_NO;
const AMMU.Enable_YES;
metaonly enum AMMU.Invalidate |
|
values of type AMMU.Invalidate
const AMMU.DO_NOT_INVALIDATE;
const AMMU.INVALIDATE;
metaonly enum AMMU.Large |
|
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 |
|
values of type AMMU.Lock
const AMMU.DO_NOT_LOCK;
const AMMU.LOCK;
metaonly enum AMMU.Maintenance |
|
values of type AMMU.Maintenance
const AMMU.DO_NOT_PERFORM;
const AMMU.PERFORM;
metaonly enum AMMU.Medium |
|
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 |
|
values of type AMMU.PostedPolicy
const AMMU.PostedPolicy_NON_POSTED;
const AMMU.PostedPolicy_POSTED;
metaonly enum AMMU.Small |
|
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 |
|
values of type AMMU.Unlock
const AMMU.DO_NOT_UNLOCK;
const AMMU.UNLOCK;
metaonly enum AMMU.Volatile |
|
values of type AMMU.Volatile
const AMMU.Volatile_DO_NOT_FOLLOW;
const AMMU.Volatile_FOLLOW;
metaonly enum AMMU.WritePolicy |
|
values of type AMMU.WritePolicy
const AMMU.WritePolicy_WRITE_THROUGH;
const AMMU.WritePolicy_WRITE_BACK;
metaonly struct AMMU.DebugPage |
|
var obj = new AMMU.DebugPage;
obj.translatedAddress = Ptr ...
metaonly struct AMMU.LargePage |
|
var obj = new AMMU.LargePage;
obj.logicalAddress = Ptr ...
obj.translatedAddress = Ptr ...
metaonly struct AMMU.LinePage |
|
var obj = new AMMU.LinePage;
obj.logicalAddress = Ptr ...
obj.translatedAddress = Ptr ...
struct AMMU.MMU |
|
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 |
|
var obj = new AMMU.MediumPage;
obj.logicalAddress = Ptr ...
obj.translatedAddress = Ptr ...
metaonly struct AMMU.SmallPage |
|
var obj = new AMMU.SmallPage;
obj.logicalAddress = Ptr ...
obj.translatedAddress = Ptr ...
metaonly struct AMMU.SmallPageMaintenance |
|
var obj = new AMMU.SmallPageMaintenance;
config AMMU.configureAmmu // module-wide |
|
By default the AMMU module will configure the AMMU at startup
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
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 |
|
metaonly config AMMU.largePages // module-wide |
|
The number of Large Page Desciptors is target/device specific
metaonly config AMMU.linePages // module-wide |
|
The number of Line Page Desciptors is target/device specific
metaonly config AMMU.mediumPages // module-wide |
|
The number of Medium Page Desciptors is target/device specific
metaonly config AMMU.smallPages // module-wide |
|
The number of Small Page Desciptors is target/device specific