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 ... ]
C synopsis target-domain sourced in ti/sdo/ipc/family/f2837x/IpcMgr.xdc
#include <ti/sdo/ipc/family/f2837x/IpcMgr.h>
Functions common to all target modules
Constants
extern const Assert_Id 
extern const Assert_Id 
extern const Assert_Id 
extern const Assert_Id 
extern const Bool 
extern const Error_Id 
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

C synopsis target-domain
extern const Assert_Id IpcMgr_A_internal;
 
 
config IpcMgr_A_invParam  // module-wide

Assert raised when a parameter is invalid

C synopsis target-domain
extern const Assert_Id IpcMgr_A_invParam;
 
 
config IpcMgr_A_notEnoughMemory  // module-wide

Assert raised when there's not enough memory for creating instances

C synopsis target-domain
extern const Assert_Id IpcMgr_A_notEnoughMemory;
 
 
config IpcMgr_A_nullArgument  // module-wide

Assert raised when a required argument is null

C synopsis target-domain
extern const Assert_Id IpcMgr_A_nullArgument;
 
 
config IpcMgr_E_internal  // module-wide

Error raised when an internal error occured

C synopsis target-domain
extern const Error_Id IpcMgr_E_internal;
 
 
config IpcMgr_cpu1  // module-wide

Set to false if this is CPU2

C synopsis target-domain
extern const Bool IpcMgr_cpu1;
 
 
config IpcMgr_ipcSetFlag  // module-wide

The IPC set flag that is used for generating the IPC interrupt

C synopsis target-domain
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

C synopsis target-domain
extern const UInt16 IpcMgr_messageQEventId;
 
 
config IpcMgr_messageQSize  // module-wide

The largest MessageQ size (in bytes) supported by the transport

C synopsis target-domain
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

C synopsis target-domain
extern const UInt16 IpcMgr_nameServerEventId;
 
 
config IpcMgr_numMessageQMsgs  // module-wide

The number of messages for the MessageQ transport's circular buffer

C synopsis target-domain
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

C synopsis target-domain
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

C synopsis target-domain
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

C synopsis target-domain
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

C synopsis target-domain
Types_ModuleId IpcMgr_Module_id();
// Get this module's unique id
 
Bool IpcMgr_Module_startupDone();
// Test if this module has completed startup
 
IHeap_Handle IpcMgr_Module_heap();
// 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
 
Configuration settings sourced in ti/sdo/ipc/family/f2837x/IpcMgr.xdc
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

Configuration settings
IpcMgr.A_internal = Assert.Desc {
    msg: "A_internal: An internal error has occurred"
};
 
C SYNOPSIS
 
config IpcMgr.A_invParam  // module-wide

Assert raised when a parameter is invalid

Configuration settings
IpcMgr.A_invParam = Assert.Desc {
    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

Configuration settings
IpcMgr.A_notEnoughMemory = Assert.Desc {
    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

Configuration settings
IpcMgr.A_nullArgument = Assert.Desc {
    msg: "A_nullArgument: Required argument is null"
};
 
C SYNOPSIS
 
config IpcMgr.E_internal  // module-wide

Error raised when an internal error occured

Configuration settings
IpcMgr.E_internal = Error.Desc {
    msg: "E_internal: An internal error occurred"
};
 
C SYNOPSIS
 
config IpcMgr.cpu1  // module-wide

Set to false if this is CPU2

Configuration settings
IpcMgr.cpu1 = Bool true;
 
C SYNOPSIS
 
config IpcMgr.ipcSetFlag  // module-wide

The IPC set flag that is used for generating the IPC interrupt

Configuration settings
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

Configuration settings
IpcMgr.messageQEventId = UInt16 2;
 
C SYNOPSIS
 
config IpcMgr.messageQSize  // module-wide

The largest MessageQ size (in bytes) supported by the transport

Configuration settings
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

Configuration settings
IpcMgr.nameServerEventId = UInt16 4;
 
C SYNOPSIS
 
config IpcMgr.numMessageQMsgs  // module-wide

The number of messages for the MessageQ transport's circular buffer

Configuration settings
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

Configuration settings
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

Configuration settings
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

Configuration settings
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

Configuration settings
IpcMgr.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 IpcMgr.genLinkerSections  // module-wide

For generating or not generating the linker sections

Configuration settings
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