module ti.sdo.ipc.family.f2837x.IpcMgr |
|
IPC Manager
This modules is used only for F2837x devices. Users can statically
configure which shared memory segments to enable, the owner processor
and the owner's write access. This module is used for specifying shared
memory for IPC between the two C28 processors (CPU1 master and
CPU2 slave).
[
more ... ]
#include <ti/sdo/ipc/family/f2837x/IpcMgr.h>
Functions common to all target modules |
|
|
Constants |
| |
| |
| |
| |
extern const Bool | |
| |
extern const UInt32 | |
extern const UInt16 | |
extern const UInt32 | |
extern const UInt16 | |
extern const UInt32 | |
extern const UInt32 | |
extern const Ptr | |
extern const Ptr | |
DETAILS
This modules is used only for F2837x devices. Users can statically
configure which shared memory segments to enable, the owner processor
and the owner's write access. This module is used for specifying shared
memory for IPC between the two C28 processors (CPU1 master and
CPU2 slave).
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 handshaking
between the processors. CPU1 releases CPU2 from reset 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.
The
cpu1 configuration parameter specifies whether or not
the executable will be run on CPU1 or CPU2.
For example on CPU1:
var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f2837x.IpcMgr');
IpcMgr.readAddr = 0x3F800;
IpcMgr.writeAddr = 0x3FC00;
On the CPU2:
var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f2837x.IpcMgr');
IpcMgr.readAddr = 0x3FC00;
IpcMgr.writeAddr = 0x3F800;
IpcMgr.cpu1 = false;
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_cpu1 // module-wide |
|
Set to false if this is CPU2
extern const Bool IpcMgr_cpu1;
config IpcMgr_ipcSetFlag // module-wide |
|
The IPC set flag that is used for generating the 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 used 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 used 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_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.f2837x.IpcMgr');
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"
};
config IpcMgr.A_internal // module-wide |
|
Assert raised when an internal error is encountered
msg: "A_internal: An internal error has occurred"
};
C SYNOPSIS
config IpcMgr.A_invParam // module-wide |
|
Assert raised when a parameter is invalid
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
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
msg: "A_nullArgument: Required argument is null"
};
C SYNOPSIS
config IpcMgr.E_internal // module-wide |
|
Error raised when an internal error occured
msg: "E_internal: An internal error occurred"
};
C SYNOPSIS
config IpcMgr.cpu1 // module-wide |
|
Set to false if this is CPU2
C SYNOPSIS
config IpcMgr.ipcSetFlag // module-wide |
|
The IPC set flag that is used for generating the IPC interrupt
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
IpcMgr.messageQEventId = UInt16 2;
C SYNOPSIS
config IpcMgr.messageQSize // module-wide |
|
The largest MessageQ size (in bytes) supported by the transport
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
IpcMgr.nameServerEventId = UInt16 4;
C SYNOPSIS
config IpcMgr.numMessageQMsgs // module-wide |
|
The number of messages for the MessageQ transport's circular buffer
IpcMgr.numMessageQMsgs = UInt32 4;
DETAILS
This is used 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
IpcMgr.numNotifyMsgs = UInt32 32;
DETAILS
This is used 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
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.writeAddr // module-wide |
|
The base address of read/write shared memory
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
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
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.f2837x.IpcMgr.readSect" and for
the write address - "ti.sdo.ipc.family.f2837x.IpcMgr.writeSect".
To disable generation, set this to 'false'.
generated on Fri, 21 Aug 2015 19:35:56 GMT