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

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

C synopsis target-domain
#define IpcMgr_NODMAWRITE (Bits32)2
 
 
const IpcMgr_NOFETCH

This value is used for setting sharedMemoryAccess. If value specified, fetch is not allowed by owner

C synopsis target-domain
#define IpcMgr_NOFETCH (Bits32)1
 
 
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_ipcSetFlag  // module-wide

The IPC set flag used for generating 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 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

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

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_sharedMemoryAccess  // module-wide

Shared RAM write configuration

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

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

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

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
 
XDCscript usage meta-domain sourced in ti/sdo/ipc/family/f28m35x/IpcMgr.xdc
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
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

XDCscript usage meta-domain
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

XDCscript usage meta-domain
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

XDCscript usage meta-domain
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

XDCscript usage meta-domain
IpcMgr.E_internal = Error.Desc {
    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
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

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