module ti.sdo.ipc.family.f28m35x.IpcMgr |
|
|
IPC Manager
This modules is used only for F28M35x devices. Users can statically
configure which shared memory segments to enable, the owner processor
and the owner's write access. This module used for specifying shared
memory for IPC between the M3 and C28 processors.
[
more ... ]
#include <ti/sdo/ipc/family/f28m35x/IpcMgr.h>
Functions common to all target modules |
|
|
Defines |
#define | |
#define | |
#define | |
Constants |
| |
| |
| |
| |
| |
extern const UInt32 | |
extern const UInt16 | |
extern const UInt32 | |
extern const UInt16 | |
extern const UInt32 | |
extern const UInt32 | |
extern const Ptr | |
extern const Bits32 | |
extern const Bits32 | |
extern const Bits32 | |
extern const Ptr | |
DETAILS
This modules is used only for F28M35x devices. Users can statically
configure which shared memory segments to enable, the owner processor
and the owner's write access. This module used for specifying shared
memory for IPC between the M3 and C28 processors.
There are no API's that need to be called. The necessary drivers for
IPC are all created within this module's startup function. The shared
memory is also programmed within this function. There is handshake
between the processors. The M3 releases the C28 and both processors
will synchronize at this point.
The
readAddr must point to shared memory which is writeable
by the remote core while the
writeAddr must point to shared
memory which is writeable by the local core. The
readAddr
and
writeAddr pointers must point to different shared memory
blocks. Memory addresses must be specified in the local core's
memory space.
For example on the M3:
var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
IpcMgr.readAddr = 0x20016000;
IpcMgr.writeAddr = 0x20014000;
IpcMgr.sharedMemoryOwnerMask = 0x80;
On the C28:
var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
IpcMgr.readAddr = 0x12000;
IpcMgr.writeAddr = 0x13000;
const IpcMgr_NOCPUWRITE |
|
This value is used for setting sharedMemoryAccess.
If value specified, CPU writes are not allowed by owner
#define IpcMgr_NOCPUWRITE (Bits32)4
const IpcMgr_NODMAWRITE |
|
This value is used for setting sharedMemoryAccess.
If value specified, DMA writes are not allowed by owner
#define IpcMgr_NODMAWRITE (Bits32)2
const IpcMgr_NOFETCH |
|
This value is used for setting sharedMemoryAccess.
If value specified, fetch is not allowed by owner
#define IpcMgr_NOFETCH (Bits32)1
config IpcMgr_A_internal // module-wide |
|
Assert raised when an internal error is encountered
config IpcMgr_A_invParam // module-wide |
|
Assert raised when a parameter is invalid
config IpcMgr_A_notEnoughMemory // module-wide |
|
Assert raised when there's not enough memory for creating instances
extern const Assert_Id IpcMgr_A_notEnoughMemory;
config IpcMgr_A_nullArgument // module-wide |
|
Assert raised when a required argument is null
extern const Assert_Id IpcMgr_A_nullArgument;
config IpcMgr_E_internal // module-wide |
|
Error raised when an internal error occured
extern const Error_Id IpcMgr_E_internal;
config IpcMgr_ipcSetFlag // module-wide |
|
The IPC set flag used for generating IPC interrupt
extern const UInt32 IpcMgr_ipcSetFlag;
DETAILS
Only a value of 0, 1, 2, or 3 are valid since only those flags
have an interrupt associated with them. This value must be the
same on both processors.
config IpcMgr_messageQEventId // module-wide |
|
Notify event ID for MessageQ transport
extern const UInt16 IpcMgr_messageQEventId;
config IpcMgr_messageQSize // module-wide |
|
The largest MessageQ size (in bytes) supported by the transport
extern const UInt32 IpcMgr_messageQSize;
DETAILS
This value must be large enough to handle the largest message.
The size must be specified in bytes.
config IpcMgr_nameServerEventId // module-wide |
|
Notify event ID for NameServer
extern const UInt16 IpcMgr_nameServerEventId;
config IpcMgr_numMessageQMsgs // module-wide |
|
The number of messages for the MessageQ transport's circular buffer
extern const UInt32 IpcMgr_numMessageQMsgs;
DETAILS
This is use to determine the size of the put and get buffers.
This value must be a power of 2. A value of 'N' allows 'N-1'
outstanding notifications.
config IpcMgr_numNotifyMsgs // module-wide |
|
The number of messages for the Notify driver's circular buffer
extern const UInt32 IpcMgr_numNotifyMsgs;
DETAILS
This is use to determine the size of the put and get buffers.
This value must be a power of 2. A value of 'N' allows 'N-1'
outstanding notifications.
config IpcMgr_readAddr // module-wide |
|
The base address of read-only shared memory
extern const Ptr IpcMgr_readAddr;
DETAILS
The address must be specified in the local core's memory space.
It must point to the same physical address as the writeAddr for
the remote processor.
config IpcMgr_sharedMemoryAccess // module-wide |
|
Shared RAM write configuration
extern const Bits32 IpcMgr_sharedMemoryAccess[8];
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MSxSRCR register from the M3.
It determines the owner write access to each shared RAM segment.
By default, the owner is allowed to fetch, DMA write, and CPU write.
config IpcMgr_sharedMemoryEnable // module-wide |
|
Shared RAM memory configuration
extern const Bits32 IpcMgr_sharedMemoryEnable;
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MEMCNF register from the M3.
By default, all shared RAM segments will be enabled at runtime.
To disable a shared RAM segment, set the corresponding bit to 0.
If any data is loaded to a shared RAM segment, the segment must
be enabled prior to loading the program through other means.
config IpcMgr_sharedMemoryOwnerMask // module-wide |
|
Shared RAM owner select configuration
extern const Bits32 IpcMgr_sharedMemoryOwnerMask;
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MSxMSEL register from the M3.
By default, each value of each shared RAM select bit is '0'.
This means the M3 is the owner and has write access based upon
the sharedMemoryAccess bits. Setting a '1' in any bit position
makes the C28 the owner of that shared RAM segment.
config IpcMgr_writeAddr // module-wide |
|
The base address of read/write shared memory
extern const Ptr IpcMgr_writeAddr;
DETAILS
The address must be specified in the local core's memory space.
It must point to the same physical address as the readAddr for
the remote processor.
Module-Wide Built-Ins |
|
// Get this module's unique id
Bool IpcMgr_Module_startupDone();
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool IpcMgr_Module_hasMask();
// Test whether this module has a diagnostics mask
Bits16 IpcMgr_Module_getMask();
// Returns the diagnostics mask for this module
Void IpcMgr_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
module-wide constants & types
module-wide config parameters
msg: "A_internal: An internal error has occurred"
};
msg: "A_invParam: Invalid configuration parameter supplied"
};
msg: "A_notEnoughMemory: There is not enough memory for operation"
};
msg: "A_nullArgument: Required argument is null"
};
msg: "E_internal: An internal error occurred"
};
const IpcMgr.NOCPUWRITE |
|
This value is used for setting sharedMemoryAccess.
If value specified, CPU writes are not allowed by owner
XDCscript usage |
meta-domain |
const IpcMgr.NOCPUWRITE = 4;
C SYNOPSIS
const IpcMgr.NODMAWRITE |
|
This value is used for setting sharedMemoryAccess.
If value specified, DMA writes are not allowed by owner
XDCscript usage |
meta-domain |
const IpcMgr.NODMAWRITE = 2;
C SYNOPSIS
const IpcMgr.NOFETCH |
|
This value is used for setting sharedMemoryAccess.
If value specified, fetch is not allowed by owner
XDCscript usage |
meta-domain |
const IpcMgr.NOFETCH = 1;
C SYNOPSIS
config IpcMgr.A_internal // module-wide |
|
Assert raised when an internal error is encountered
XDCscript usage |
meta-domain |
msg: "A_internal: An internal error has occurred"
};
C SYNOPSIS
config IpcMgr.A_invParam // module-wide |
|
Assert raised when a parameter is invalid
XDCscript usage |
meta-domain |
msg: "A_invParam: Invalid configuration parameter supplied"
};
C SYNOPSIS
config IpcMgr.A_notEnoughMemory // module-wide |
|
Assert raised when there's not enough memory for creating instances
XDCscript usage |
meta-domain |
msg: "A_notEnoughMemory: There is not enough memory for operation"
};
C SYNOPSIS
config IpcMgr.A_nullArgument // module-wide |
|
Assert raised when a required argument is null
XDCscript usage |
meta-domain |
msg: "A_nullArgument: Required argument is null"
};
C SYNOPSIS
config IpcMgr.E_internal // module-wide |
|
Error raised when an internal error occured
XDCscript usage |
meta-domain |
msg: "E_internal: An internal error occurred"
};
C SYNOPSIS
config IpcMgr.ipcSetFlag // module-wide |
|
The IPC set flag used for generating IPC interrupt
XDCscript usage |
meta-domain |
IpcMgr.ipcSetFlag = UInt32 3;
DETAILS
Only a value of 0, 1, 2, or 3 are valid since only those flags
have an interrupt associated with them. This value must be the
same on both processors.
C SYNOPSIS
config IpcMgr.messageQEventId // module-wide |
|
Notify event ID for MessageQ transport
XDCscript usage |
meta-domain |
IpcMgr.messageQEventId = UInt16 2;
C SYNOPSIS
config IpcMgr.messageQSize // module-wide |
|
The largest MessageQ size (in bytes) supported by the transport
XDCscript usage |
meta-domain |
IpcMgr.messageQSize = UInt32 128;
DETAILS
This value must be large enough to handle the largest message.
The size must be specified in bytes.
C SYNOPSIS
config IpcMgr.nameServerEventId // module-wide |
|
Notify event ID for NameServer
XDCscript usage |
meta-domain |
IpcMgr.nameServerEventId = UInt16 4;
C SYNOPSIS
config IpcMgr.numMessageQMsgs // module-wide |
|
The number of messages for the MessageQ transport's circular buffer
XDCscript usage |
meta-domain |
IpcMgr.numMessageQMsgs = UInt32 4;
DETAILS
This is use to determine the size of the put and get buffers.
This value must be a power of 2. A value of 'N' allows 'N-1'
outstanding notifications.
C SYNOPSIS
config IpcMgr.numNotifyMsgs // module-wide |
|
The number of messages for the Notify driver's circular buffer
XDCscript usage |
meta-domain |
IpcMgr.numNotifyMsgs = UInt32 32;
DETAILS
This is use to determine the size of the put and get buffers.
This value must be a power of 2. A value of 'N' allows 'N-1'
outstanding notifications.
C SYNOPSIS
config IpcMgr.readAddr // module-wide |
|
The base address of read-only shared memory
XDCscript usage |
meta-domain |
IpcMgr.readAddr = Ptr undefined;
DETAILS
The address must be specified in the local core's memory space.
It must point to the same physical address as the writeAddr for
the remote processor.
C SYNOPSIS
config IpcMgr.sharedMemoryAccess // module-wide |
|
Shared RAM write configuration
XDCscript usage |
meta-domain |
IpcMgr.sharedMemoryAccess = Bits32[8] undefined;
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MSxSRCR register from the M3.
It determines the owner write access to each shared RAM segment.
By default, the owner is allowed to fetch, DMA write, and CPU write.
C SYNOPSIS
config IpcMgr.sharedMemoryEnable // module-wide |
|
Shared RAM memory configuration
XDCscript usage |
meta-domain |
IpcMgr.sharedMemoryEnable = Bits32 0xffffffff;
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MEMCNF register from the M3.
By default, all shared RAM segments will be enabled at runtime.
To disable a shared RAM segment, set the corresponding bit to 0.
If any data is loaded to a shared RAM segment, the segment must
be enabled prior to loading the program through other means.
C SYNOPSIS
config IpcMgr.sharedMemoryOwnerMask // module-wide |
|
Shared RAM owner select configuration
XDCscript usage |
meta-domain |
IpcMgr.sharedMemoryOwnerMask = Bits32 0;
DETAILS
This parameter is only applicable to the M3 processor. It is
used for writing the MSxMSEL register from the M3.
By default, each value of each shared RAM select bit is '0'.
This means the M3 is the owner and has write access based upon
the sharedMemoryAccess bits. Setting a '1' in any bit position
makes the C28 the owner of that shared RAM segment.
C SYNOPSIS
config IpcMgr.writeAddr // module-wide |
|
The base address of read/write shared memory
XDCscript usage |
meta-domain |
IpcMgr.writeAddr = Ptr undefined;
DETAILS
The address must be specified in the local core's memory space.
It must point to the same physical address as the readAddr for
the remote processor.
C SYNOPSIS
metaonly config IpcMgr.common$ // module-wide |
|
Common module configuration parameters
XDCscript usage |
meta-domain |
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 IpcMgr.genLinkerSections // module-wide |
|
For generating or not generating the linker sections
XDCscript usage |
meta-domain |
IpcMgr.genLinkerSections = Bool true;
DETAILS
By default this is set to 'true' so the following linker sections
are generated for the amount of memory used for IPC. For the
read address - "ti.sdo.ipc.family.f28m35x.IpcMgr.readSect" and for
the write address - "ti.sdo.ipc.family.f28m35x.IpcMgr.writeSect".
To disable generation, set this to 'false'.
generated on Sat, 11 Feb 2012 00:37:52 GMT