summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f3e1246)
raw | patch | inline | side by side (parent: f3e1246)
author | Chris Ring <cring@ti.com> | |
Wed, 9 Sep 2015 18:25:49 +0000 (11:25 -0700) | ||
committer | Angela Stegmaier <angelabaker@ti.com> | |
Fri, 11 Sep 2015 15:30:47 +0000 (10:30 -0500) |
Delete C28-related packages, and remove build-related support.
Signed-off-by: Chris Ring <cring@ti.com>
Signed-off-by: Chris Ring <cring@ti.com>
38 files changed:
diff --git a/ipc-bios.bld b/ipc-bios.bld
index 80fd6c8311e8851a37d2e069bfd007381217a2dc..7a927110b72597344e9f91e50dd2eda5e889f311 100644 (file)
--- a/ipc-bios.bld
+++ b/ipc-bios.bld
*/
var ccOpts = {
- "ti.targets.C28_large" : " -mo -g ",
- "ti.targets.C28_float" : " -mo -g ",
-
"ti.targets.C64P" : c6xOpts,
"ti.targets.C64P_big_endian" : c6xOpts,
"ti.targets.C674" : c6xOpts,
diff --git a/ipc-bios.mak b/ipc-bios.mak
index ef2bdde118c7aa8c4c24fa5bfcbf9b56d9c753fa..d4bbee262e77e9dafff75eb8ba1b401a032a4c36 100644 (file)
--- a/ipc-bios.mak
+++ b/ipc-bios.mak
XDCARGS= \
PLATFORM=\"$(PLATFORM)\" \
BIOS_SMPENABLED=\"$(BIOS_SMPENABLED)\" \
- ti.targets.C28_large=\"$(ti.targets.C28_large)\" \
- ti.targets.C28_float=\"$(ti.targets.C28_float)\" \
ti.targets.C64P=\"$(ti.targets.C64P)\" \
ti.targets.C64P_big_endian=\"$(ti.targets.C64P_big_endian)\" \
ti.targets.C674=\"$(ti.targets.C674)\" \
index 180b384c702c2982c15234be318fd5aa04eefc13..87c0163b66e14eb17ae14ec1925d82d70afef4c4 100644 (file)
var Build = null;
var Ipc = null;
-var custom28xOpts = " -q -mo ";
var custom6xOpts = " -q -mi10 -mo -pdr -pden -pds=238 -pds=880 -pds1110 ";
var customARP32xOpts = " -q --gen_func_subsections ";
var customArmOpts = " -q -ms --opt_for_speed=2 ";
var customGnuArmA15Opts = " ";
var ccOptsList = {
- "ti.targets.C28_large" : custom28xOpts,
- "ti.targets.C28_float" : custom28xOpts,
"ti.targets.C64P" : custom6xOpts,
"ti.targets.elf.C64P" : custom6xOpts,
"ti.targets.C64P_big_endian" : custom6xOpts,
"ti/sdo/ipc/family/omap4430/NotifySetup.c " +
"ti/sdo/ipc/family/omap4430/InterruptDsp.c ";
-var C28Sources = "ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.c " +
- "ti/sdo/ipc/family/f28m35x/IpcMgr.c " +
- "ti/sdo/ipc/family/f28m35x/TransportCirc.c " +
- "ti/sdo/ipc/family/f28m35x/NameServerBlock.c " +
- "ti/sdo/ipc/family/f2837x/NotifyDriverCirc.c " +
- "ti/sdo/ipc/family/f2837x/IpcMgr.c " +
- "ti/sdo/ipc/family/f2837x/TransportCirc.c " +
- "ti/sdo/ipc/family/f2837x/NameServerBlock.c ";
-
var M3Sources = "ti/sdo/ipc/gates/GateHWSpinlock.c " +
"ti/sdo/ipc/family/omap4430/NotifySetup.c " +
"ti/sdo/ipc/family/omap4430/NotifyCircSetup.c " +
"ti/sdo/ipc/family/tda3xx/NotifySetup.c ";
var cList = {
- "ti.targets.C28_large" : commonSources + C28Sources,
- "ti.targets.C28_float" : commonSources + C28Sources,
-
"ti.targets.C64P" : commonSources + C647xSources +
C64PSources,
"ti.targets.C64P_big_endian" : commonSources + C647xSources +
];
var asmList = {
- "ti.targets.C28_large" : asmListNone,
- "ti.targets.C28_float" : asmListNone,
-
"ti.targets.C64P" : asmList64P,
"ti.targets.C64P_big_endian" : asmList64P,
"ti.targets.C674" : asmList64P,
index e8e594a16147d4c12d446d724446a3a43a72a3c4..8c774da874d46ee757da90fe28e4c72ddb525d48 100644 (file)
'OMAP5430' : ["DSP", "IPU", "HOST"],
'Arctic' : ["DSP", "ARP32"],
- 'F28M3.*' : ["M3", "C28"],
- 'F2837.*' : ["CORE0", "CORE1"],
'LM3.*' : [ "" ], /* single core, any name can be used */
'Vayu' : ["DSP1", "DSP2", "EVE1", "EVE2", "EVE3", "EVE4",
"IPU1", "IPU2", "IPU1-0", "IPU1-1", "IPU2-0",
'TMS320C6670' : ["CORE0"],
'TMS320C6472' : ["CORE0"],
'TMS320C6474' : ["CORE0"],
- 'F28M3.*' : ["M3"],
- 'F2837.*' : ["CORE0"],
'TMS320TCI6630K2L' : ["HOST"],
'TMS320C66AK2H12' : ["HOST"],
'TMS320TCI6634' : ["CORE0"],
'TMS320C6474' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify',},
'OMAP4430' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify',},
'Arctic' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify',},
- 'F28M3.*' : { del: 'ti.sdo.ipc.family.f28m35x.NameServerBlock', },
- 'F2837.*' : { del: 'ti.sdo.ipc.family.f2837x.NameServerBlock', },
'Vayu' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify',},
'TDA3X' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify' },
'TMS320TCI6634' : { del: 'ti.sdo.ipc.nsremote.NameServerRemoteNotify',},
'TMS320TCI6634' : { del: 'ti.sdo.ipc.family.tci663x.NotifyCircSetup', },
'OMAP4430' : { del: 'ti.sdo.ipc.family.omap4430.NotifySetup', },
'Arctic' : { del: 'ti.sdo.ipc.family.arctic.NotifyCircSetup', },
- 'F28M3.*' : { del: 'ti.sdo.ipc.notifyDrivers.NotifySetupNull', },
- 'F2837.*' : { del: 'ti.sdo.ipc.notifyDrivers.NotifySetupNull', },
'LM3.*' : { del: 'ti.sdo.ipc.notifyDrivers.NotifySetupNull', },
'Vayu' : { del: 'ti.sdo.ipc.family.vayu.NotifySetup', },
'TDA3X' : { del: 'ti.sdo.ipc.family.tda3xx.NotifySetup' },
'TMS320TCI6634' : { del: 'ti.sdo.ipc.transports.TransportShmNotifySetup', },
'OMAP4430' : { del: 'ti.sdo.ipc.transports.TransportShmSetup', },
'Arctic' : { del: 'ti.sdo.ipc.transports.TransportShmNotifySetup', },
- 'F28M3.*' : { del: 'ti.sdo.ipc.transports.TransportNullSetup', },
- 'F2837.*' : { del: 'ti.sdo.ipc.transports.TransportNullSetup', },
'LM3.*' : { del: 'ti.sdo.ipc.transports.TransportNullSetup', },
'Vayu' : { del: 'ti.sdo.ipc.transports.TransportShmSetup', },
'TDA3X' : { del: 'ti.sdo.ipc.transports.TransportShmSetup' }
'TMS320TI816X' : { del: 'ti.sdo.ipc.family.ti81xx.InterruptDucati', },
'TMS320C6A8149' : { del: 'ti.sdo.ipc.family.c6a8149.InterruptDucati', },
'OMAP4430' : { del: 'ti.sdo.ipc.family.omap4430.InterruptDucati', },
- 'F28M3.*' : { del: 'ti.sdo.ipc.family.f28m35x.InterruptM3', },
},
'ti.catalog.arm.cortexm4' : {
'Vayu' : { del: 'ti.sdo.ipc.family.vayu.InterruptIpu', },
'Vayu' : { del: 'ti.sdo.ipc.family.vayu.InterruptArp32', },
'TDA3X' : { del: 'ti.sdo.ipc.family.tda3xx.InterruptArp32' },
},
- 'ti.catalog.c2800' : {
- 'F28M3.*' : { del: 'ti.sdo.ipc.family.f28m35x.InterruptC28', },
- },
};
for (var family in interruptDelegates) {
setDeviceAliases(interruptDelegates[family], deviceAliases);
diff --git a/packages/ti/sdo/ipc/family/f2837x/IpcMgr.c b/packages/ti/sdo/ipc/family/f2837x/IpcMgr.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.c ========
- */
-
-#include <xdc/std.h>
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/Startup.h>
-
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sdo/ipc/family/f2837x/NotifyDriverCirc.h>
-#include <ti/sdo/ipc/family/f2837x/NameServerBlock.h>
-#include <ti/sdo/ipc/family/f2837x/TransportCirc.h>
-#include <ti/sdo/ipc/_MessageQ.h>
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-
-#include "package/internal/IpcMgr.xdc.h"
-
-#define IPCACK (0x50000)
-#define IPCSTS (IPCACK + 0x2)
-#define IPCSET (IPCACK + 0x4)
-#define IPCCLR (IPCACK + 0x6)
-#define IPCFLG (IPCACK + 0x8)
-
-#define CPU1_IPCFLAG 10
-#define CPU2_IPCFLAG 11
-
-/*
- * ======== IpcMgr_Module_startup ========
- * In this function CPU1 is used to enable shared memory.
- * In addition, the owner of each block of memory initializes its blocks
- * based on the static configuration parameters.
- * IPC flags are used by CPU1 and CPU2 for synchronization.
- *
- * CPU1 starts by creating its driver instances and then sets CPU2's
- * IPC flag, allowing CPU2 proceed. Then CPU1 waits for its
- * IPC flag to be set by CPU2 before proceeding. Once CPU1's IPC flag is set
- * by the CPU2, CPU1 clears its IPC flag and continues.
- *
- * CPU2 starts by waiting for its IPC flag to be set by CPU1.
- * Once its IPC flag is set by CPU1, CPU2 clears its IPC flag and
- * proceeds to create its driver instances. CPU2 then sets CPU1's
- * IPC flag to let CPU1 proceed.
- *
- * The shared memory usage looks like the following:
- *
- * |--------------------|
- * | Notify Driver |
- * | |
- * |--------------------|
- * | NameServer |
- * | Remote Driver |
- * |--------------------|
- * | MessageQ Transport |
- * | |
- * |--------------------|
- */
-Int IpcMgr_Module_startup(Int phase)
-{
- Int status;
- SizeT memReq;
- Ptr writeAddr = (UInt32 *)IpcMgr_writeAddr;
- Ptr readAddr = (UInt32 *)IpcMgr_readAddr;
- UInt16 remoteProcId;
- NotifyDriverCirc_Params notifyDrvParams;
- TransportCirc_Params transportParams;
- volatile UInt32 *set = (volatile UInt32 *)IPCSET;
- volatile UInt32 *stat = (volatile UInt32 *)IPCSTS;
- volatile UInt32 *ack = (volatile UInt32 *)IPCACK;
-
- /*
- * This code assumes that the device's CPU1 and CPU2 MultiProc Ids
- * are next to each other (e.g. n and n + 1) and that the first
- * one is even (e.g. n is even).
- */
- if (MultiProc_self() & 1) {
- /* I'm odd */
- remoteProcId = MultiProc_self() - 1;
- }
- else {
- /* I'm even */
- remoteProcId = MultiProc_self() + 1;
- }
-
- /* Wait for Hwi module to initialize first because of NotifyDriverCirc */
- if (!Hwi_Module_startupDone()) {
- return Startup_NOTDONE;
- }
-
- if (!IpcMgr_cpu1) {
- /* Wait for CPU1 to set CPU2's IPC flag */
- while (!(*stat & (1 << CPU2_IPCFLAG))) {
- }
-
- /* Clear own IPC flag */
- *ack = 1 << CPU2_IPCFLAG;
- }
-
- /* Determine the amount of memory required for NotifyDriverCirc */
- NotifyDriverCirc_Params_init(¬ifyDrvParams);
- notifyDrvParams.writeAddr = writeAddr;
- memReq = NotifyDriverCirc_sharedMemReq(¬ifyDrvParams);
-
- /* Call NotifyCircSetup attach to remote processor */
- status = IpcMgr_notifyCircAttach(remoteProcId,
- writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
- /* Update the read/write address */
- writeAddr = (Ptr)((UInt32)writeAddr + memReq);
- readAddr = (Ptr)((UInt32)readAddr + memReq);
-
- /* Determine the amount of memory required for NameServerBlock */
- memReq = NameServerBlock_sharedMemReq(NULL);
-
- /* Call NameServerBlock attach to remote processor */
- status = IpcMgr_nameServerAttach(remoteProcId, writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
- /* Update the read/write address */
- writeAddr = (Ptr)((UInt32)writeAddr + memReq);
- readAddr = (Ptr)((UInt32)readAddr + memReq);
-
- /* Determine the amount of memory required for TransportCirc */
- TransportCirc_Params_init(&transportParams);
- transportParams.writeAddr = writeAddr;
- memReq = TransportCirc_sharedMemReq(&transportParams);
-
- /* Call TransportCircSetup attach to remote processor */
- status = IpcMgr_transportCircAttach(remoteProcId,
- writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
- if (IpcMgr_cpu1) {
- /* Set CPU2 IPC flag to tell CPU2 to proceed */
- *set = 1 << CPU2_IPCFLAG;
-
- /* Wait for CPU2 to set CPU1's IPC flag */
- while (!(*stat & (1 << CPU1_IPCFLAG))) {
- }
-
- /* Clear own IPC flag */
- *ack = 1 << CPU1_IPCFLAG;
- }
- else {
- /* Set CPU1's IPC flag to tell CPU1 to proceed */
- *set = 1 << CPU1_IPCFLAG;
- }
- return (Startup_DONE);
-}
-
-/*
- * ======== IpcMgr_notifyCircAttach ========
- * Initialize interrupt
- */
-Int IpcMgr_notifyCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr)
-{
- NotifyDriverCirc_Params notifyDrvParams;
- NotifyDriverCirc_Handle notifyDrvHandle;
- ti_sdo_ipc_Notify_Handle notifyHandle;
- Error_Block eb;
- Int status = Notify_S_SUCCESS;
-
- /* Initialize the error block */
- Error_init(&eb);
-
- /* Setup the notify driver to the remote processor */
- NotifyDriverCirc_Params_init(¬ifyDrvParams);
-
- /* Set the read/write address of the param */
- notifyDrvParams.readAddr = readAddr;
- notifyDrvParams.writeAddr = writeAddr;
-
- /* Create the notify driver instance */
- notifyDrvHandle = NotifyDriverCirc_create(¬ifyDrvParams, &eb);
- if (notifyDrvHandle == NULL) {
- return (Notify_E_FAIL);
- }
-
- /* Create the notify instance */
- notifyHandle = ti_sdo_ipc_Notify_create(
- NotifyDriverCirc_Handle_upCast(notifyDrvHandle),
- remoteProcId, 0, NULL, &eb);
-
- if (notifyHandle == NULL) {
- NotifyDriverCirc_delete(¬ifyDrvHandle);
- status = Notify_E_FAIL;
- }
-
- return (status);
-}
-
-/*
- * ======== IpcMgr_nameServerAttach ========
- */
-Int IpcMgr_nameServerAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr)
-{
- NameServerBlock_Params nsbParams;
- NameServerBlock_Handle handle;
- Int status = NameServerBlock_E_FAIL;
- Error_Block eb;
-
- Error_init(&eb);
-
- /* Init the param */
- NameServerBlock_Params_init(&nsbParams);
-
- /* Set the read/write addresses */
- nsbParams.readAddr = readAddr;
- nsbParams.writeAddr = writeAddr;
-
- /* Create only if notify driver has been created to remote proc */
- if (Notify_intLineRegistered(remoteProcId, 0)) {
- handle = NameServerBlock_create(remoteProcId,
- &nsbParams,
- &eb);
- if (handle != NULL) {
- status = NameServerBlock_S_SUCCESS;
- }
- }
-
- return (status);
-}
-
-/*
- * ======== IpcMgr_transportCircAttach ========
- */
-Int IpcMgr_transportCircAttach(UInt16 remoteProcId, Ptr writeAddr,
- Ptr readAddr)
-{
- TransportCirc_Handle handle;
- TransportCirc_Params params;
- Int status = MessageQ_E_FAIL;
- Error_Block eb;
-
- Error_init(&eb);
-
- /* Init the transport parameters */
- TransportCirc_Params_init(¶ms);
- params.readAddr = readAddr;
- params.writeAddr = writeAddr;
-
- /* Make sure notify driver has been created */
- if (Notify_intLineRegistered(remoteProcId, 0)) {
- handle = TransportCirc_create(remoteProcId, ¶ms, &eb);
-
- if (handle != NULL) {
- status = MessageQ_S_SUCCESS;
- }
- }
-
- return (status);
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/IpcMgr.xdc b/packages/ti/sdo/ipc/family/f2837x/IpcMgr.xdc
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.xdc ========
- */
-
-import xdc.runtime.Assert;
-import xdc.runtime.Error;
-
-/*!
- * ======== 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).
- *
- * 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 {@link #readAddr} must point to shared memory which is writeable
- * by the remote core while the {@link #writeAddr} must point to shared
- * memory which is writeable by the local core. The {@link #readAddr}
- * and {@link #writeAddr} pointers must point to different shared memory
- * blocks. Memory addresses must be specified in the local core's
- * memory space.
- *
- * The {@link #cpu1} configuration parameter specifies whether or not
- * the executable will be run on CPU1 or CPU2.
- *
- * For example on CPU1:
- * @p(code)
- * var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f2837x.IpcMgr');
- * IpcMgr.readAddr = 0x3F800;
- * IpcMgr.writeAddr = 0x3FC00;
- * @p
- *
- * On the CPU2:
- * @p(code)
- * var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f2837x.IpcMgr');
- * IpcMgr.readAddr = 0x3FC00;
- * IpcMgr.writeAddr = 0x3F800;
- * IpcMgr.cpu1 = false;
- * @p
- */
-
-@ModuleStartup
-
-module IpcMgr
-{
- /*
- *************************************************************************
- * Generic Errors/Asserts
- *************************************************************************
- */
-
- /*!
- * ======== A_internal ========
- * Assert raised when an internal error is encountered
- */
- config Assert.Id A_internal = {
- msg: "A_internal: An internal error has occurred"
- };
-
- /*!
- * ======== A_invParam ========
- * Assert raised when a parameter is invalid
- */
- config Assert.Id A_invParam = {
- msg: "A_invParam: Invalid configuration parameter supplied"
- };
-
- /*!
- * ======== A_notEnoughMemory ========
- * Assert raised when there's not enough memory for creating instances.
- */
- config Assert.Id A_notEnoughMemory = {
- msg: "A_notEnoughMemory: There is not enough memory for operation"
- };
-
- /*!
- * ======== A_nullArgument ========
- * Assert raised when a required argument is null
- */
- config Assert.Id A_nullArgument = {
- msg: "A_nullArgument: Required argument is null"
- };
-
- /*!
- * ======== E_internal ========
- * Error raised when an internal error occured
- */
- config Error.Id E_internal = {
- msg: "E_internal: An internal error occurred"
- };
-
- /*
- *************************************************************************
- * Module-wide Config Parameters
- *************************************************************************
- */
-
- /*!
- * ======== genLinkerSections ========
- * For generating or not generating the linker sections
- *
- * 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'.
- */
- metaonly config Bool genLinkerSections = true;
-
- /*!
- * ======== cpu1 ========
- * Set to false if this is CPU2.
- */
- config Bool cpu1 = true;
-
- /*!
- * ======== ipcSetFlag ========
- * The IPC set flag that is used for generating the IPC interrupt
- *
- * 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 UInt32 ipcSetFlag = 3;
-
- /*!
- * ======== messageQSize ========
- * The largest MessageQ size (in bytes) supported by the transport
- *
- * This value must be large enough to handle the largest message.
- * The size must be specified in bytes.
- */
- config UInt32 messageQSize = 128;
-
- /*!
- * ======== messageQEventId ========
- * Notify event ID for MessageQ transport.
- */
- config UInt16 messageQEventId = 2;
-
- /*!
- * ======== nameServerEventId ========
- * Notify event ID for NameServer.
- */
- config UInt16 nameServerEventId = 4;
-
- /*!
- * ======== numNotifyMsgs ========
- * The number of messages for the Notify driver's circular buffer
- *
- * 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 UInt32 numNotifyMsgs = 32;
-
- /*!
- * ======== numMessageQMsgs ========
- * The number of messages for the MessageQ transport's circular buffer
- *
- * 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 UInt32 numMessageQMsgs = 4;
-
- /*!
- * ======== readAddr ========
- * The base address of read-only shared memory.
- *
- * 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 Ptr readAddr;
-
- /*!
- * ======== writeAddr ========
- * The base address of read/write shared memory.
- *
- * 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.
- */
- config Ptr writeAddr;
-
-internal:
-
- /* the amount of shared memory used */
- config UInt32 sharedMemSizeUsed;
-
- /* function to create NotifyCirc driver instances */
- Int notifyCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-
- /* function to create NameServer remote instances */
- Int nameServerAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-
- /* function to create MessageQ transport instances */
- Int transportCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/IpcMgr.xs b/packages/ti/sdo/ipc/family/f2837x/IpcMgr.xs
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.xs ========
- */
-
-var IpcMgr = null;
-var MultiProc = null;
-var NotifyDriverCirc = null;
-var NameServerBlock = null;
-var TransportCirc = null;
-var Hwi = null;
-var Boot = null;
-
-/*
- * ======== module$meta$init ========
- */
-function module$meta$init()
-{
- /* Only process during "cfg" phase */
- if (xdc.om.$name != "cfg") {
- return;
- }
-
- IpcMgr = this;
-
- var NameServer = xdc.useModule('ti.sdo.utils.NameServer');
- NameServer.SetupProxy = xdc.useModule('ti.sdo.ipc.family.f2837x.NameServerBlock');
-}
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- NotifyDriverCirc =
- xdc.useModule("ti.sdo.ipc.family.f2837x.NotifyDriverCirc");
- NameServerBlock =
- xdc.useModule("ti.sdo.ipc.family.f2837x.NameServerBlock");
- TransportCirc =
- xdc.useModule("ti.sdo.ipc.family.f2837x.TransportCirc");
- Hwi = xdc.useModule("ti.sysbios.hal.Hwi");
-
- if (IpcMgr.cpu1) {
- Boot = xdc.useModule("ti.catalog.c2800.initF2837x.Boot");
- }
-
- /* Init the number of messages for notify driver */
- NotifyDriverCirc.numMsgs = IpcMgr.numNotifyMsgs;
-
- /* Init the number of messages for messageQ transport */
- TransportCirc.numMsgs = IpcMgr.numMessageQMsgs;
- TransportCirc.maxMsgSizeInBytes = IpcMgr.messageQSize;
- TransportCirc.notifyEventId = IpcMgr.messageQEventId;
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- /* check to make sure readAddr and writeAddr have been set */
- if (params.readAddr == undefined) {
- IpcMgr.$logError("IpcMgr.readAddr is undefined", IpcMgr);
- }
-
- if (params.writeAddr == undefined) {
- IpcMgr.$logError("IpcMgr.writeAddr is undefined", IpcMgr);
- }
-
- /* init the interrupt ids */
- if ((params.ipcSetFlag < 0) || (params.ipcSetFlag > 3)) {
- IpcMgr.$logError("IpcMgr.ipcSetFlag must be 0, 1, 2, or 3 " +
- "because they are the only flags associated with an interrupt.",
- IpcMgr);
- }
-
- /* calculate the amount of shared memory used */
- IpcMgr.sharedMemSizeUsed = NotifyDriverCirc.sharedMemReqMeta(null) +
- NameServerBlock.sharedMemReqMeta(null) +
- TransportCirc.sharedMemReqMeta(null);
-
- /* validate sharedMemoryOwnerMask is correct for the readAddr/writeAddr */
- if (IpcMgr.cpu1) {
- /* TODO: This needs to be tested. */
- /* From linker command file
- * (ti/platforms/tms320x28/include/F28377D.cmd),
- * these are the shared ram blocks:
- * RAMGS0 : origin = 0x00C000, length = 0x001000
- * RAMGS1 : origin = 0x00D000, length = 0x001000
- * RAMGS2 : origin = 0x00E000, length = 0x001000
- * RAMGS3 : origin = 0x00F000, length = 0x001000
- * RAMGS4 : origin = 0x010000, length = 0x001000
- * RAMGS5 : origin = 0x011000, length = 0x001000
- * RAMGS6 : origin = 0x012000, length = 0x001000
- * RAMGS7 : origin = 0x013000, length = 0x001000
- * RAMGS8 : origin = 0x014000, length = 0x001000
- * RAMGS9 : origin = 0x015000, length = 0x001000
- * RAMGS10 : origin = 0x016000, length = 0x001000
- * RAMGS11 : origin = 0x017000, length = 0x001000
- * RAMGS12 : origin = 0x018000, length = 0x001000
- * RAMGS13 : origin = 0x019000, length = 0x001000
- * RAMGS14 : origin = 0x01A000, length = 0x001000
- * RAMGS15 : origin = 0x01B000, length = 0x001000
- */
-
- var Boot = xdc.module('ti.catalog.c2800.initF2837x.Boot');
- if ((IpcMgr.writeAddr >= 0xC000) && (IpcMgr.writeAddr < 0x1C000)) {
- /*
- * Determine segment being used for the writeAddr.
- * The shared RAM base address starts 0xC000 to 0x1A000.
- * Each segment with a length of 0x2000 (byte addressing).
- */
- var writeSeg = (IpcMgr.writeAddr - 0xC000) >> 13;
-
- /* This CPU must be owner of writeAddr shared memory segment */
- if (Boot.sharedMemoryOwnerMask & (1 << writeSeg)) {
- IpcMgr.$logError("IpcMgr.writeAddr is set to address: " +
- utils.toHex(IpcMgr.writeAddr) + "," +
- " but Boot.sharedMemoryOwnerMask bit: " + writeSeg +
- " must not be set. Unset this bit to make CPU1 the owner.",
- IpcMgr);
- }
- }
-
- if ((IpcMgr.readAddr >= 0xC000) &&
- (IpcMgr.readAddr < 0x1C000)) {
- /*
- * Determine segment being used for the CPU2 readAddr.
- * The shared RAM base address starts 0xC000 to 0x1A000.
- * Each segment with a length of 0x2000 (byte addressing).
- */
- var readSeg = (IpcMgr.readAddr - 0xC000) >> 13;
-
- /* CPU2 must be owner of readAddr shared memory segment */
- if (!(Boot.sharedMemoryOwnerMask & (1 << readSeg))) {
- IpcMgr.$logError("IpcMgr.readAddr is set to address: " +
- utils.toHex(IpcMgr.readAddr) + "," +
- " but IpcMgr.sharedMemoryOwnerMask bit: " + readSeg +
- " is not set. This bit must be set so CPU2 is the owner.",
- IpcMgr);
- }
- }
- }
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if ((xdc.module('ti.sdo.ipc.Ipc').$used) ||
- (xdc.module('ti.sdo.ipc.GateMP').$used) ||
- (xdc.module('ti.sdo.ipc.SharedRegion').$used) ||
- (xdc.module('ti.sdo.ipc.ListMP').$used)) {
- IpcMgr.$logError("One or more of the following modules " +
- "[Ipc, GateMP, ListMP, SharedRegion] are being used " +
- "but are not supported on this device.", IpcMgr);
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.c b/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.c ========
- */
-
-#include <xdc/std.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/knl/ISync.h>
-
-#include <ti/sysbios/BIOS.h>
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sysbios/knl/Swi.h>
-#include <ti/sysbios/knl/Semaphore.h>
-
-#include <ti/sdo/ipc/family/f2837x/IpcMgr.h>
-
-#include "package/internal/NameServerBlock.xdc.h"
-
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-#include <ti/sdo/utils/_NameServer.h>
-
-/* Need to use reserved notify events */
-#undef NameServerBlock_notifyEventId
-#define NameServerBlock_notifyEventId \
- ti_sdo_ipc_family_f2837x_NameServerBlock_notifyEventId + \
- (UInt32)((UInt32)Notify_SYSTEMKEY << 16)
-
-
-
-/*
- *************************************************************************
- * Instance functions
- *************************************************************************
- */
-Int NameServerBlock_Instance_init(NameServerBlock_Object *obj,
- UInt16 remoteProcId,
- const NameServerBlock_Params *params,
- Error_Block *eb)
-{
- Int status;
- Semaphore_Params semParams;
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
- Swi_Handle swiHandle;
- Swi_Params swiParams;
-
- /* Assert that a NameServerBlock_Params has been supplied */
- Assert_isTrue(params != NULL, IpcMgr_A_nullArgument);
-
- /* Assert that remoteProcId is valid */
- Assert_isTrue(remoteProcId != MultiProc_self() &&
- remoteProcId != MultiProc_INVALIDID,
- IpcMgr_A_invParam);
-
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
- swiHandle = NameServerBlock_Instance_State_swiObj(obj);
-
- obj->readRequest = (NameServerBlock_Message *)(params->readAddr);
- obj->readResponse = (NameServerBlock_Message *)(
- (UInt32)params->readAddr +
- sizeof(NameServerBlock_Message));
- obj->writeRequest = (NameServerBlock_Message *)(params->writeAddr);
- obj->writeResponse = (NameServerBlock_Message *)(
- (UInt32)params->writeAddr +
- sizeof(NameServerBlock_Message));
- obj->remoteProcId = remoteProcId;
-
- /* construct the Semaphore */
- Semaphore_Params_init(&semParams);
- Semaphore_construct(Semaphore_struct(semRemoteWait), 0, &semParams);
-
- /* construct the semaphore */
- Semaphore_construct(Semaphore_struct(semMultiBlock), 1, &semParams);
-
- /* swi created with lowest priority and fxn = swiFxn */
- Swi_Params_init(&swiParams);
- swiParams.arg0 = (UArg)obj;
- swiParams.priority = 0;
- Swi_construct(Swi_struct(swiHandle),
- (ti_sysbios_knl_Swi_FuncPtr)NameServerBlock_swiFxn,
- &swiParams, eb);
-
- /* initialize own side of message struct only */
- obj->writeRequest->request = 0;
- obj->writeRequest->value = 0;
- obj->writeRequest->valueLen = 0;
-
- memset(obj->writeRequest->instanceName, 0,
- sizeof(obj->writeRequest->instanceName));
- memset(obj->writeRequest->name, 0,
- sizeof(obj->writeRequest->name));
-
- obj->writeResponse->response = 0;
- obj->writeResponse->requestStatus = 0;
-
- /* register the call back function and event Id with notify */
- status = Notify_registerEventSingle(
- remoteProcId,
- 0,
- NameServerBlock_notifyEventId,
- (Notify_FnNotifyCbck)NameServerBlock_cbFxn,
- (UArg)swiHandle);
-
- /* if not successful return */
- if (status < 0) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (1);
- }
-
- /* register the remote driver with NameServer */
- ti_sdo_utils_NameServer_registerRemoteDriver(
- NameServerBlock_Handle_upCast(obj), remoteProcId);
-
- return (0);
-}
-
-/*
- * ======== NameServerBlock_Instance_finalize ========
- */
-Void NameServerBlock_Instance_finalize(NameServerBlock_Object *obj,
- Int status)
-{
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
- Swi_Handle swiHandle;
-
- if (status == 0) {
- /* unregister remote driver from NameServer module */
- ti_sdo_utils_NameServer_unregisterRemoteDriver(obj->remoteProcId);
-
- /* unregister event from Notify module */
- Notify_unregisterEventSingle(
- obj->remoteProcId,
- 0,
- NameServerBlock_notifyEventId);
- }
-
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- if (semRemoteWait != NULL) {
- Semaphore_destruct(Semaphore_struct(semRemoteWait));
- }
-
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
- if (semMultiBlock != NULL) {
- Semaphore_destruct(Semaphore_struct(semMultiBlock));
- }
-
- swiHandle = NameServerBlock_Instance_State_swiObj(obj);
- if (swiHandle != NULL) {
- Swi_destruct(Swi_struct(swiHandle));
- }
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== NameServerBlock_attach ========
- */
-Int NameServerBlock_attach(UInt16 remoteProcId, Ptr sharedAddr)
-{
- return (NameServerBlock_E_FAIL);
-}
-
-/*
- * ======== NameServerBlock_cbFxn ========
- */
-Void NameServerBlock_cbFxn(UInt16 procId,
- UInt16 lineId,
- UInt32 eventId,
- UArg arg,
- UInt32 payload)
-{
- Swi_Handle swiHandle;
-
- /* Swi_Handle was passed as arg in register */
- swiHandle = (Swi_Handle)arg;
-
- /* post the Swi */
- Swi_post(swiHandle);
-}
-
-/*
- * ======== NameServerBlock_detach ========
- */
-Int NameServerBlock_detach(UInt16 remoteProcId)
-{
- return (NameServerBlock_E_FAIL);
-}
-
-/*
- * ======== NameServerBlock_get ========
- */
-Int NameServerBlock_get(NameServerBlock_Object *obj,
- String instanceName,
- String name,
- Ptr value,
- UInt32 *valueLen,
- ISync_Handle syncHandle,
- Error_Block *eb)
-{
- Int len;
- Int retval = NameServer_E_NOTFOUND;
- Int status;
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
-
- Assert_isTrue(*valueLen <= (NameServerBlock_bufLen * sizeof(Bits32)),
- NameServerBlock_A_invalidValueLen);
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
-
- /* prevent multiple threads from entering */
- Semaphore_pend(semMultiBlock, BIOS_WAIT_FOREVER);
-
- /* this is a request message */
- obj->writeRequest->request = 1;
- obj->writeRequest->response = 0;
- obj->writeRequest->valueLen = *valueLen;
-
- /* copy the name of instance into shared memory */
- len = strlen(instanceName);
-
- Assert_isTrue(len < (NameServerBlock_maxNameLen * sizeof(Bits32)),
- NameServerBlock_A_invalidNameLen);
-
- strncpy((Char *)obj->writeRequest->instanceName, instanceName, len + 1);
-
- /* copy the name of nameserver entry into shared memory */
- len = strlen(name);
- Assert_isTrue(len < (NameServerBlock_maxNameLen * sizeof(Bits32)),
- NameServerBlock_A_invalidNameLen);
-
- strncpy((Char *)obj->writeRequest->name, name, len + 1);
-
- /* send the notification to remote processor */
- status = Notify_sendEvent(
- obj->remoteProcId,
- 0,
- NameServerBlock_notifyEventId,
- 0,
- FALSE);
-
- if (status < 0) {
- /* undo previous options */
- obj->writeRequest->request = 0;
- obj->writeRequest->valueLen = 0;
-
- /* post the semaphore to make sure it doesn't block */
- Semaphore_post(semMultiBlock);
-
- return (retval);
- }
-
- /* pend here until we get a notification back from remote processor */
- status = Semaphore_pend(semRemoteWait, BIOS_WAIT_FOREVER);
-
- if (status == FALSE) {
- retval = NameServer_E_OSFAILURE;
- }
- else {
- /* if successful request then copy to value */
- if (obj->readResponse->requestStatus == TRUE) {
- /* copy to value */
- if (obj->readResponse->valueLen <= sizeof(UInt32)) {
- memcpy(value, &(obj->readResponse->value), sizeof(UInt32));
- }
- else {
- memcpy(value, &(obj->readResponse->valueBuf),
- obj->readResponse->valueLen);
- }
-
- /* set length to amount of data that was copied */
- *valueLen = obj->readResponse->valueLen;
-
- /* set the status */
- retval = NameServer_S_SUCCESS;
- }
-
- /* clear out the request */
- obj->writeRequest->request = 0;
- }
-
- Semaphore_post(semMultiBlock);
-
- return (retval);
-}
-
-/*
- * ======== NameServerBlock_sharedMemReq ========
- */
-SizeT NameServerBlock_sharedMemReq(Ptr sharedAddr)
-{
- /*
- * Four Message structs are required.
- * One for sending request and one for sending response.
- * One for receiving request and one for receiving response.
- */
- if (ti_sdo_utils_MultiProc_numProcessors > 1) {
- return (4 * sizeof(NameServerBlock_Message));
- }
-
- return (0);
-}
-
-/*
- * ======== NameServerBlock_swiFxn ========
- */
-Void NameServerBlock_swiFxn(UArg arg)
-{
- UInt32 valueLen;
- UInt hwiKey;
- NameServer_Handle handle;
- NameServerBlock_Object *obj;
- String instanceName;
- String name;
- Int status;
-
- obj = (NameServerBlock_Object *)arg;
-
- /* In case of request */
- if (obj->readRequest->request == TRUE) {
- /* Strings are in the correct format already */
- instanceName = (String)obj->readRequest->instanceName;
- name = (String)obj->readRequest->name;
-
- /* get the NameServer handle */
- handle = NameServer_getHandle((String)instanceName);
- valueLen = obj->readRequest->valueLen;
-
- if (handle != NULL) {
- /* Search for the NameServer entry */
- if (valueLen <= sizeof(UInt32)) {
- status = NameServer_getLocalUInt32(handle,
- (String)name,
- &obj->writeResponse->value);
- }
- else {
- status = NameServer_getLocal(handle,
- (String)name,
- &obj->writeResponse->valueBuf, &valueLen);
- }
- }
- else {
- status = NameServer_E_FAIL;
- }
-
- /*
- * If an entry was found, set requestStatus to TRUE
- * and valueLen to the size of data that was copied.
- */
- if (status == NameServer_S_SUCCESS) {
- obj->writeResponse->requestStatus = TRUE;
- obj->writeResponse->valueLen = valueLen;
- }
- else {
- obj->writeResponse->requestStatus = FALSE;
- obj->writeResponse->valueLen = 0;
- }
-
- /* Send a response back */
- obj->writeResponse->response = TRUE;
-
- /*
- * The Notify line must be active at this point for this processor to
- * have received a request
- */
- status = Notify_sendEvent(obj->remoteProcId,
- 0, NameServerBlock_notifyEventId, 0, FALSE);
-
- /* The NS query could fail, but the reply should never fail */
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
- }
-
- /* in case of response */
- if (obj->readResponse->response == TRUE &&
- obj->writeRequest->response == FALSE) {
-
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* acknowledge receive of response atomically with posting semaphore */
- obj->writeRequest->response = TRUE;
-
- /* post the Semaphore */
- Semaphore_post(
- NameServerBlock_Instance_State_semRemoteWait(obj));
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.xdc b/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.xdc
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.xdc ========
- */
-
-import xdc.runtime.Error;
-import xdc.runtime.Assert;
-import ti.sysbios.knl.Swi;
-import ti.sysbios.knl.Semaphore;
-import ti.sdo.utils.INameServerRemote;
-
-/*! @_nodoc
- * ======== NameServerBlock ========
- * Used by NameServer to communicate to remote processors.
- *
- * This module is used by {@link ti.sdo.utils.NameServer} to communicate
- * to remote processors using {@link ti.sdo.ipc.Notify} and shared memory.
- * There needs to be one instance between each two cores in the system.
- * Interrupts must be enabled before using this module. Currently
- * supports transferring up to 44-bytes between two cores.
- */
-@InstanceInitError
-@InstanceFinalize
-
-module NameServerBlock inherits INameServerRemote
-{
- /*! maximum number of characters for name */
- const UInt maxNameLen = 16;
-
- /* structure in shared memory for retrieving value */
- struct Message {
- Bits32 request; /* if this is a request set to 1 */
- Bits32 response; /* if this is a response set to 1 */
- Bits32 requestStatus; /* if request sucessful set to 1 */
- Bits32 value; /* holds value if len <= 4 */
- Bits32 valueLen; /* len of value */
- Bits32 instanceName[8]; /* name of NameServer instance */
- Bits32 name[8]; /* name of NameServer entry */
- Bits32 valueBuf[bufLen]; /* supports up to 44-byte value */
- };
-
- /*!
- * Assert raised when length of value larger then 44 bytes.
- */
- config xdc.runtime.Assert.Id A_invalidValueLen =
- {msg: "A_invalidValueLen: Invalid valueLen (too large)"};
-
- /*!
- * Assert raised when length of name is too large.
- */
- config xdc.runtime.Assert.Id A_invalidNameLen =
- {msg: "A_invalidNameLen: Invalid name (too long)"};
-
- /*! @_nodoc
- * ======== notifyEventId ========
- * The Notify event ID.
- */
- config UInt32 notifyEventId = 4;
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*!
- * ======== readAddr ========
- * Read address of the shared memory
- *
- * 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 Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Write address of the shared memory
- *
- * 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.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*! used by Message struct for length of valueBuf */
- const UInt bufLen = 11;
-
- /*!
- * ======== cbFxn ========
- * The call back function registered with Notify.
- *
- * This function is registered with Notify as a call back function
- * when the specified event is triggered. This function simply posts
- * a Swi which will process the event.
- *
- * @param(procId) Source proc id
- * @param(lineId) Interrupt line id
- * @param(eventId) the Notify event id.
- * @param(arg) the argument for the function.
- * @param(payload) a 32-bit payload value.
- */
- Void cbFxn(UInt16 procId, UInt16 lineId, UInt32 eventId, UArg arg,
- UInt32 payload);
-
- /*!
- * ======== swiFxn ========
- * The swi function that will be executed during the call back.
- *
- * @param(arg) argument to swi function
- */
- Void swiFxn(UArg arg);
-
- /* instance state */
- struct Instance_State {
- Message *readRequest;
- Message *readResponse;
- Message *writeRequest; /* Ptrs to messages in shared mem */
- Message *writeResponse; /* Ptrs to messages in shared mem */
- UInt16 regionId; /* SharedRegion ID */
- Semaphore.Object semRemoteWait; /* sem to wait on remote proc */
- Semaphore.Object semMultiBlock; /* sem to block multiple threads */
- Swi.Object swiObj; /* instance swi object */
- UInt16 remoteProcId; /* remote MultiProc id */
- };
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.xs b/packages/ti/sdo/ipc/family/f2837x/NameServerBlock.xs
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.xs ========
- */
-
-var NameServerBlock = null;
-var NameServer = null;
-var MultiProc = null;
-var Notify = null;
-var Semaphore = null;
-var Swi = null;
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- NameServerBlock = this;
- NameServer = xdc.useModule("ti.sdo.utils.NameServer");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- Semaphore = xdc.useModule("ti.sysbios.knl.Semaphore");
- Swi = xdc.useModule("ti.sysbios.knl.Swi");
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if (Notify.numEvents <= NameServerBlock.notifyEventId) {
- NameServerBlock.$logFatal(
- "NameServerBlock.notifyEventId (" +
- NameServerBlock.notifyEventId +
- ") is too big: Notify.numEvents = " + Notify.numEvents,
- NameServerBlock);
- }
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- /*
- * Four Message structs are required.
- * One for sending request and one for sending response.
- * One for receiving request and one for receiving response.
- */
- if (MultiProc.numProcessors > 1) {
- return (4 * NameServerBlock.Message.$sizeof());
- }
-
- return (0);
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.c b/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.c ========
- */
-
-#include <xdc/std.h>
-
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Timestamp.h>
-
-#include <ti/sysbios/family/c28/Hwi.h>
-
-#include <ti/sdo/ipc/family/f2837x/IpcMgr.h>
-#include <ti/sdo/ipc/interfaces/INotifyDriver.h>
-
-#include "package/internal/NotifyDriverCirc.xdc.h"
-
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-
-/* Bit mask operations */
-#define SET_BIT(num,pos) ((num) |= (1u << (pos)))
-#define CLEAR_BIT(num,pos) ((num) &= ~(1u << (pos)))
-#define TEST_BIT(num,pos) ((num) & (1u << (pos)))
-
-#define IPCACK (0x50000)
-#define IPCSTS (IPCACK + 0x2)
-#define IPCSET (IPCACK + 0x4)
-#define IPCCLR (IPCACK + 0x6)
-#define IPCFLG (IPCACK + 0x8)
-
-
-/*
- **************************************************************
- * Instance functions
- **************************************************************
- */
-
-/*
- * ======== NotifyDriverCirc_Instance_init ========
- */
-Void NotifyDriverCirc_Instance_init(NotifyDriverCirc_Object *obj,
- const NotifyDriverCirc_Params *params)
-{
- SizeT ctrlSize, circBufSize;
- Hwi_Params hwiParams;
-
- /*
- * This code assumes that the device's C28 and M3 MultiProc Ids
- * are next to each other (e.g. n and n + 1) and that the first
- * one is even (e.g. n is even).
- */
- /* set the remote processor's id */
- if (MultiProc_self() & 1) {
- /* I'm odd */
- obj->remoteProcId = MultiProc_self() - 1;
- }
- else {
- /* I'm even */
- obj->remoteProcId = MultiProc_self() + 1;
- }
-
- /* calculate the circular buffer size one-way */
- circBufSize = sizeof(NotifyDriverCirc_EventEntry) *
- NotifyDriverCirc_numMsgs;
-
- /* calculate the control size one-way */
- ctrlSize = sizeof(Bits32);
-
- /*
- * Init put/get buffer and index pointers.
- */
- obj->putBuffer = params->writeAddr;
-
- obj->putWriteIndex = (Bits32 *)((UInt32)obj->putBuffer + circBufSize);
-
- obj->getReadIndex = (Bits32 *)((UInt32)obj->putWriteIndex + ctrlSize);
-
- obj->getBuffer = params->readAddr;
-
- obj->getWriteIndex = (Bits32 *)((UInt32)obj->getBuffer + circBufSize);
-
- obj->putReadIndex = (Bits32 *)((UInt32)obj->getWriteIndex + ctrlSize);
-
- /* init the putWrite and getRead Index to 0 */
- obj->putWriteIndex[0] = 0;
- obj->getReadIndex[0] = 0;
-
- /* clear interrupt */
- NotifyDriverCirc_intClear();
-
- /* plugged interrupt */
- Hwi_Params_init(&hwiParams);
- hwiParams.arg = (UArg)obj;
- Hwi_create(NotifyDriverCirc_localIntId,
- (Hwi_FuncPtr)NotifyDriverCirc_isr,
- &hwiParams,
- NULL);
-
- /* Enable the interrupt */
- Hwi_enableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_Instance_finalize ========
- */
-Void NotifyDriverCirc_Instance_finalize(NotifyDriverCirc_Object *obj)
-{
- Hwi_Handle hwiHandle;
-
- /* Disable the interrupt source */
- NotifyDriverCirc_intDisable();
-
- /* Delete the Hwi */
- hwiHandle = Hwi_getHandle(NotifyDriverCirc_localIntId);
- Hwi_delete(&hwiHandle);
-}
-
-/*
- * ======== NotifyDriverCirc_registerEvent ========
- */
-Void NotifyDriverCirc_registerEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- UInt hwiKey;
-
- /*
- * Disable interrupt line to ensure that isr doesn't
- * preempt registerEvent and encounter corrupt state
- */
- hwiKey = Hwi_disable();
-
- /* Set the 'registered' bit */
- SET_BIT(obj->evtRegMask, eventId);
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_unregisterEvent ========
- */
-Void NotifyDriverCirc_unregisterEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- UInt hwiKey;
-
- /*
- * Disable interrupt line to ensure that isr doesn't
- * preempt registerEvent and encounter corrupt state
- */
- hwiKey = Hwi_disable();
-
- /* Clear the registered bit */
- CLEAR_BIT(obj->evtRegMask, eventId);
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_sendEvent ========
- */
-Int NotifyDriverCirc_sendEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId,
- UInt32 payload,
- Bool waitClear)
-{
- Bool loop = FALSE;
- UInt hwiKey;
- UInt32 writeIndex, readIndex;
- NotifyDriverCirc_EventEntry *eventEntry;
-
- /* Retrieve the get Index. */
- readIndex = obj->putReadIndex[0];
-
- do {
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* retrieve the put index */
- writeIndex = obj->putWriteIndex[0];
-
- /* if slot available 'break' out of loop */
- if (((writeIndex + 1) & NotifyDriverCirc_maxIndex) != readIndex) {
- break;
- }
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* check to make sure code has looped */
- if (loop && !waitClear) {
- /* if no slot available and waitClear is 'FALSE' */
- return (Notify_E_FAIL);
- }
-
- /* re-read the get count */
- readIndex = obj->putReadIndex[0];
-
- /* convey that the code has looped around */
- loop = TRUE;
-
- } while (1);
-
- /* interrupts are disabled at this point */
-
- /* calculate the next available entry */
- eventEntry = (NotifyDriverCirc_EventEntry *)((UInt32)obj->putBuffer +
- (writeIndex * sizeof(NotifyDriverCirc_EventEntry)));
-
- /* Set the eventId field and payload for the entry */
- eventEntry->eventid = eventId;
- eventEntry->payload = payload;
-
- /* update the putWriteIndex */
- obj->putWriteIndex[0] = (writeIndex + 1) & NotifyDriverCirc_maxIndex;
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* Send an interrupt to the Remote Processor */
- NotifyDriverCirc_intSend();
-
- return (Notify_S_SUCCESS);
-}
-
-/*
- * ======== NotifyDriverCirc_disable ========
- */
-Void NotifyDriverCirc_disable(NotifyDriverCirc_Object *obj)
-{
- /* Disable the incoming interrupt line */
- NotifyDriverCirc_intDisable();
-}
-
-/*
- * ======== NotifyDriverCirc_enable ========
- */
-Void NotifyDriverCirc_enable(NotifyDriverCirc_Object *obj)
-{
- /* Enable the incoming interrupt line */
- NotifyDriverCirc_intEnable();
-}
-
-/*
- * ======== NotifyDriverCirc_disableEvent ========
- * This function disbales all events.
- */
-Void NotifyDriverCirc_disableEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- /* NotifyDriverCirc_disableEvent not supported by this driver */
- Assert_isTrue(FALSE, NotifyDriverCirc_A_notSupported);
-}
-
-/*
- * ======== NotifyDriverCirc_enableEvent ========
- * This function enables all events.
- */
-Void NotifyDriverCirc_enableEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- /* NotifyDriverCirc_enableEvent not supported by this driver */
- Assert_isTrue(FALSE, NotifyDriverCirc_A_notSupported);
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== NotifyDriverCirc_sharedMemReq ========
- */
-SizeT NotifyDriverCirc_sharedMemReq(const NotifyDriverCirc_Params *params)
-{
- SizeT memReq;
-
- /* Ensure that params is non-NULL */
- Assert_isTrue(params != NULL, IpcMgr_A_internal);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer with numMsgs +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr
- */
- memReq =
- (sizeof(NotifyDriverCirc_EventEntry) * NotifyDriverCirc_numMsgs)
- + (2 * sizeof(Bits32));
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * Internal functions
- *************************************************************************
- */
-/*
- * ======== NotifyDriverCirc_intEnable ========
- * Enable remote processor interrupt
- */
-Void NotifyDriverCirc_intEnable()
-{
- Hwi_enableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_intDisable ========
- * Disables remote processor interrupt
- */
-Void NotifyDriverCirc_intDisable()
-{
- Hwi_disableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_intSend ========
- * Send interrupt to the remote processor
- */
-Void NotifyDriverCirc_intSend()
-{
- volatile UInt16 *set = (volatile UInt16 *)IPCSET;
- volatile UInt32 *clear = (volatile UInt32 *)IPCCLR;
- UInt hwiKey;
-
- /* Make sure multiple threads are not hitting this at the same time */
- hwiKey = Hwi_disable();
-
- /* Make sure we get a leading edge... */
- *clear = 1 << IpcMgr_ipcSetFlag;
-
- /* Signal the other side */
- *set = 1 << IpcMgr_ipcSetFlag;
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_intClear ========
- * Clear interrupt
- */
-UInt NotifyDriverCirc_intClear()
-{
- volatile UInt16 *ack = (volatile UInt16 *)IPCACK;
-
- *ack = 1 << IpcMgr_ipcSetFlag;
-
- return (0);
-}
-
-/*
- * ======== NotifyDriverCirc_isr ========
- */
-Void NotifyDriverCirc_isr(UArg arg)
-{
- NotifyDriverCirc_EventEntry *eventEntry;
- NotifyDriverCirc_Object *obj;
- UInt32 writeIndex, readIndex;
-
- obj = (NotifyDriverCirc_Object *)arg;
-
- /* Make sure the NotifyDriverCirc_Object is not NULL */
- Assert_isTrue(obj != NULL, IpcMgr_A_internal);
-
- /* get the writeIndex and readIndex */
- writeIndex = obj->getWriteIndex[0];
- readIndex = obj->getReadIndex[0];
-
- /* get the event */
- eventEntry = &(obj->getBuffer[readIndex]);
-
- /* if writeIndex != readIndex then there is an event to process */
- while (writeIndex != readIndex) {
- /*
- * Check to make sure event is registered. If the event
- * is not registered, the event is not processed and is lost.
- */
- if (TEST_BIT(obj->evtRegMask, eventEntry->eventid)) {
- /* Execute the callback function */
- ti_sdo_ipc_Notify_exec(obj->notifyHandle,
- eventEntry->eventid,
- eventEntry->payload);
- }
-
- /* update the readIndex. */
- readIndex = ((readIndex + 1) & NotifyDriverCirc_maxIndex);
-
- /* set the getReadIndex */
- obj->getReadIndex[0] = readIndex;
-
- /* get the next event */
- eventEntry = &(obj->getBuffer[readIndex]);
- }
-}
-
-/*
- * ======== NotifyDriverCirc_setNotifyHandle ========
- */
-Void NotifyDriverCirc_setNotifyHandle(NotifyDriverCirc_Object *obj,
- Ptr notifyHandle)
-{
- /* Internally used, so no Assert needed */
- obj->notifyHandle = (ti_sdo_ipc_Notify_Handle)notifyHandle;
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.xdc b/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.xdc
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.xdc ================
- */
-
-import ti.sdo.utils.MultiProc;
-import ti.sdo.ipc.interfaces.INotifyDriver;
-import ti.sdo.ipc.notifyDrivers.IInterrupt;
-import ti.sdo.ipc.Notify;
-
-import xdc.rov.ViewInfo;
-
-import xdc.runtime.Assert;
-
-/*!
- * @_nodoc
- * ======== NotifyDriverCirc ========
- * Shared memory driver using circular buffer for F2837x devices.
- *
- * This is a {@link ti.sdo.ipc.Notify} driver that utilizes shared memory
- * and inter-processor hardware interrupts for notification between cores.
- *
- * This driver is designed to work with only the F2837x family of devices.
- * This module needs to be plugged with an appropriate module that implements
- * the {@link ti.sdo.ipc.notifyDrivers.IInterrupt} interface for a given
- * device.
- *
- * The driver utilizes shared memory in the manner indicated by the following
- * diagram.
- *
- * @p(code)
- *
- * NOTE: Processor '0' corresponds to the master C28 and '1' corresponds to
- * the slave C28
- *
- * sharedAddr -> --------------------------- bytes
- * | eventEntry0 (0) | 8
- * | eventEntry1 (0) | 8
- * | ... |
- * | eventEntry15 (0) | 8
- * | |
- * |-------------------------|
- * | eventEntry16 (0) | 8
- * | eventEntry17 (0) | 8
- * | ... |
- * | eventEntry31 (0) | 8
- * | |
- * |-------------------------|
- * | putWriteIndex (0) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (0) | 4
- * | |
- * |-------------------------|
- * | eventEntry0 (1) | 8
- * | eventEntry1 (1) | 8
- * | ... |
- * | eventEntry15 (1) | 8
- * | |
- * |-------------------------|
- * | eventEntry16 (1) | 8
- * | eventEntry17 (1) | 8
- * | ... |
- * | eventEntry31 (1) | 8
- * | |
- * |-------------------------|
- * | putWriteIndex (1) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (1) | 4
- * | |
- * |-------------------------|
- *
- *
- * Legend:
- * (0), (1) : Owned by the respective processor.
- *
- * @p
- */
-
-@InstanceFinalize
-
-module NotifyDriverCirc inherits ti.sdo.ipc.interfaces.INotifyDriver
-{
- /*! @_nodoc */
- metaonly struct BasicView {
- String remoteProcName;
- UInt bufSize;
- UInt spinCount;
- UInt maxSpinWait;
- }
-
- /*! @_nodoc */
- metaonly struct EventDataView {
- UInt index;
- String buffer;
- Ptr addr;
- UInt eventId;
- Ptr payload;
- }
-
- /*!
- * ======== rovViewInfo ========
- */
- @Facet
- metaonly config ViewInfo.Instance rovViewInfo =
- ViewInfo.create({
- viewMap: [
- ['Basic',
- {
- type: ViewInfo.INSTANCE,
- viewInitFxn: 'viewInitBasic',
- structName: 'BasicView'
- }
- ],
- ['Events',
- {
- type: ViewInfo.INSTANCE_DATA,
- viewInitFxn: 'viewInitData',
- structName: 'EventDataView'
- }
- ],
- ]
- });
-
- /*!
- * Assert raised when trying to use Notify_[enable/disable]Event with
- * NotifyDriverCirc
- */
- config Assert.Id A_notSupported =
- {msg: "A_notSupported: [enable/disable]Event not supported by NotifyDriverCirc"};
-
- /*! @_nodoc
- * ======== numMsgs ========
- * The number of messages or slots in the circular buffer
- *
- * This is used to determine the size of the put and get buffers.
- * Each eventEntry is two 32bits wide, therefore the total size
- * of each circular buffer is [numMsgs * sizeof(eventEntry)].
- */
- config UInt numMsgs = 16;
-
- /*!
- * ======== sharedMemReq ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to parameters that will be used in the
- * create
- *
- * @a(returns) Number of MAUs in shared memory needed to create
- * the instance.
- */
- SizeT sharedMemReq(const Params *params);
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*!
- * ======== readAddr ========
- * Address in shared memory where buffer is placed
- *
- * Use {@link #sharedMemReq} to determine the amount of shared memory
- * required.
- */
- config Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Address in shared memory where buffer is placed
- *
- * Use {@link #sharedMemReq} to determine the amount of shared memory
- * required.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*!
- * ======== localIntId ========
- * Local interrupt ID for interrupt line
- *
- * For devices that support multiple inter-processor interrupt lines, this
- * configuration parameter allows selecting a specific line to use for
- * receiving an interrupt. The value specified here corresponds to the
- * incoming interrupt line on the local processor.
- */
- config UInt localIntId;
-
- /*!
- * ======== remoteIntId ========
- * Remote interrupt ID for interrupt line
- *
- * For devices that support multiple inter-processor interrupt lines, this
- * configuration parameter allows selecting a specific line to use for
- * receiving an interrupt. The value specified here corresponds to the
- * incoming interrupt line on the remote processor.
- */
- config UInt remoteIntId;
-
- /*! The max index set to (numMsgs - 1) */
- config UInt maxIndex;
-
- /*!
- * The modulo index value. Set to (numMsgs / 4).
- * Used in the isr for doing cache_wb of readIndex.
- */
- config UInt modIndex;
-
- /*!
- * enable IPC interrupt
- */
- Void intEnable();
-
- /*!
- * disable IPC interrupt
- */
- Void intDisable();
-
- /*!
- * trigger IPC interrupt
- */
- Void intSend();
-
- /*!
- * clear IPC interrupt
- */
- UInt intClear();
-
- /*!
- * executes the callback functions according to event priority
- */
- Void isr(UArg arg);
-
- /*!
- * Structure for each event. This struct is placed in shared memory.
- */
- struct EventEntry {
- volatile Bits32 eventid;
- volatile Bits32 payload;
- }
-
- /*! Instance state structure */
- struct Instance_State {
- EventEntry *putBuffer; /* buffer used to put events */
- Bits32 *putReadIndex; /* ptr to readIndex for put buffer */
- Bits32 *putWriteIndex; /* ptr to writeIndex for put buffer */
- EventEntry *getBuffer; /* buffer used to get events */
- Bits32 *getReadIndex; /* ptr to readIndex for get buffer */
- Bits32 *getWriteIndex; /* ptr to writeIndex for put buffer */
- Bits32 evtRegMask; /* local event register mask */
- Notify.Handle notifyHandle; /* Handle to front-end object */
- UInt16 remoteProcId; /* Remote MultiProc id */
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.xs b/packages/ti/sdo/ipc/family/f2837x/NotifyDriverCirc.xs
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.xs ================
- */
-
-var NotifyDriverCirc = null;
-var IpcMgr = null;
-var MultiProc = null;
-var Notify = null;
-var Hwi = null;
-
-var IPC = [ 132, 133, 134, 135 ];
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- NotifyDriverCirc = this;
- IpcMgr = xdc.useModule("ti.sdo.ipc.family.f2837x.IpcMgr");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- Hwi = xdc.useModule("ti.sysbios.hal.Hwi");
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- NotifyDriverCirc.maxIndex = NotifyDriverCirc.numMsgs - 1;
- NotifyDriverCirc.modIndex = NotifyDriverCirc.numMsgs / 4;
-
- /* determine the local and remote interrupt id */
- NotifyDriverCirc.localIntId = IPC[IpcMgr.ipcSetFlag];
- NotifyDriverCirc.remoteIntId = IPC[IpcMgr.ipcSetFlag];
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- /*
- * Amount of shared memory:
- * 1 putBuffer with numMsgs +
- * 1 putWriteIndex ptr +
- * 1 getReadIndex ptr
- */
- memReq =
- (NotifyDriverCirc.EventEntry.$sizeof() * NotifyDriverCirc.numMsgs) +
- (2 * Program.build.target.stdTypes['t_Int32'].size);
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * ROV View functions
- *************************************************************************
- */
-
-/*
- * ======== viewInitBasic ========
- */
-function viewInitBasic(view, obj)
-{
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f2837x.NotifyDriverCirc');
-
- /* view.remoteProcName */
- try {
- view.remoteProcName = MultiProc.getName$view(obj.remoteProcId);
- }
- catch(e) {
- Program.displayError(view, 'remoteProcName',
- "Problem retrieving proc name: " + e);
- }
-
- /* view obj information */
- view.bufSize = modCfg.numMsgs;
-}
-
-/*
- * ======== getEventData ========
- * Helper function for use within viewInitData
- */
-function getEventData(view, obj, bufferPtr, putIndex, getIndex)
-{
- var NotifyDriverCirc =
- xdc.useModule('ti.sdo.ipc.family.f2837x.NotifyDriverCirc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f2837x.NotifyDriverCirc');
-
- if (bufferPtr == obj.putBuffer) {
- var bufferName = "put";
- }
- else {
- var bufferName = "get";
- }
-
- try {
- var putBuffer = Program.fetchArray(obj.putBuffer$fetchDesc,
- bufferPtr,
- modCfg.numMsgs);
- }
- catch(e) {
- throw (new Error("Error fetching putBuffer struct from shared memory"));
- }
-
- var i = getIndex;
-
- while (i != putIndex) {
- /* The event is registered */
- var elem = Program.newViewStruct(
- 'ti.sdo.ipc.family.f2837x.NotifyDriverCirc',
- 'Events');
-
- elem.index = i;
- elem.buffer = bufferName;
- elem.addr = utils.toHex(putBuffer[i].$addr);
- elem.eventId = putBuffer[i].eventid;
- elem.payload = utils.toHex(putBuffer[i].payload);
-
- /* Create a new row in the instance data view */
- view.elements.$add(elem);
-
- i++;
- }
-}
-
-/*
- * ======== viewInitData ========
- * Instance data view.
- */
-function viewInitData(view, obj)
-{
- var Program = xdc.useModule('xdc.rov.Program');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
-
- try {
- var notifyObj = Program.scanHandleView('ti.sdo.ipc.Notify',
- obj.notifyHandle, 'Basic');
- }
- catch (e) {
- throw (new Error("Error fetching Notify instance view"));
- }
-
- /* Display the instance label in the tree */
- view.label = "remoteProcId = " + obj.remoteProcId + " lineId = " +
- notifyObj.lineId;
-
- /* Fetch put/get index's */
- try {
- var putWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putWriteIndex " +
- "struct from shared memory"));
- }
-
- try {
- var putReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putReadIndex " +
- "struct from shared memory"));
- }
-
- try {
- var getWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getWriteIndex " +
- "struct from shared memory"));
- }
-
- try {
- var getReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getReadIndex " +
- "struct from shared memory"));
- }
-
- /* Get event data for the put buffer */
- getEventData(view, obj, obj.putBuffer, putWriteIndex.elem,
- putReadIndex.elem);
-
- /* Get event data for the get buffer */
- getEventData(view, obj, obj.getBuffer, getWriteIndex.elem,
- getReadIndex.elem);
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/TransportCirc.c b/packages/ti/sdo/ipc/family/f2837x/TransportCirc.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.c ========
- */
-
-#include <string.h> /* for memcpy() */
-
-#include <xdc/std.h>
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/Memory.h>
-
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sysbios/knl/Swi.h>
-#include <ti/sdo/ipc/interfaces/IMessageQTransport.h>
-
-#include <ti/sdo/ipc/family/f2837x/IpcMgr.h>
-
-#include "package/internal/TransportCirc.xdc.h"
-
-#include <ti/sdo/utils/_MultiProc.h>
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/ipc/_MessageQ.h>
-
-/* Need to use reserved notify events */
-#undef TransportCirc_notifyEventId
-#define TransportCirc_notifyEventId \
- ti_sdo_ipc_family_f2837x_TransportCirc_notifyEventId + \
- (UInt32)((UInt32)Notify_SYSTEMKEY << 16)
-
-/*
- *************************************************************************
- * Instance functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_Instance_init ========
- */
-Int TransportCirc_Instance_init(TransportCirc_Object *obj,
- UInt16 remoteProcId, const TransportCirc_Params *params,
- Error_Block *eb)
-{
- Int status;
- Bool flag;
- Swi_Handle swiHandle;
- Swi_Params swiParams;
- SizeT circBufSize;
-
- swiHandle = TransportCirc_Instance_State_swiObj(obj);
-
- /* init the object fields */
- obj->priority = params->priority;
- obj->remoteProcId = remoteProcId;
-
- /* construct the swi with lowest priority */
- Swi_Params_init(&swiParams);
- swiParams.arg0 = (UArg)obj;
- swiParams.priority = TransportCirc_swiPriority;
- Swi_construct(Swi_struct(swiHandle),
- (Swi_FuncPtr)TransportCirc_swiFxn,
- &swiParams, eb);
-
- /* calculate the circular buffer size one-way */
- circBufSize = TransportCirc_msgSize * TransportCirc_numMsgs;
-
- /* Init put/get buffer and index pointers. */
- obj->putBuffer = params->writeAddr;
-
- obj->putWriteIndex = (Bits32 *)((UInt32)obj->putBuffer + circBufSize);
-
- obj->getReadIndex = (Bits32 *)((UInt32)obj->putWriteIndex + sizeof(Bits32));
-
- obj->getBuffer = params->readAddr;
-
- obj->getWriteIndex = (Bits32 *)((UInt32)obj->getBuffer + circBufSize);
-
- obj->putReadIndex = (Bits32 *)((UInt32)obj->getWriteIndex + sizeof(Bits32));
-
- /* init the putWrite and getRead Index to 0 */
- obj->putWriteIndex[0] = 0;
- obj->getReadIndex[0] = 0;
-
- /* register the event with Notify */
- status = Notify_registerEventSingle(
- remoteProcId, /* remoteProcId */
- 0, /* lineId */
- TransportCirc_notifyEventId,
- (Notify_FnNotifyCbck)TransportCirc_notifyFxn,
- (UArg)swiHandle);
-
- if (status < 0) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (1);
- }
-
- /* Register the transport with MessageQ */
- flag = ti_sdo_ipc_MessageQ_registerTransport(
- TransportCirc_Handle_upCast(obj), remoteProcId, params->priority);
-
- if (flag == FALSE) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (2);
- }
-
- return (0);
-}
-
-/*
- * ======== TransportCirc_Instance_finalize ========
- */
-Void TransportCirc_Instance_finalize(TransportCirc_Object* obj, Int status)
-{
- Swi_Handle swiHandle;
-
- switch(status) {
- case 0:
- /* MessageQ_registerTransport succeeded */
- ti_sdo_ipc_MessageQ_unregisterTransport(obj->remoteProcId,
- obj->priority);
-
- /* OK to fall thru */
-
- case 1: /* Notify_registerEventSingle failed */
-
- /* OK to fall thru */
-
- case 2: /* MessageQ_registerTransport failed */
- Notify_unregisterEventSingle(
- obj->remoteProcId,
- 0,
- TransportCirc_notifyEventId);
- break;
- }
-
- /* Destruct the swi */
- swiHandle = TransportCirc_Instance_State_swiObj(obj);
- if (swiHandle != NULL) {
- Swi_destruct(Swi_struct(swiHandle));
- }
-}
-
-/*
- * ======== TransportCirc_put ========
- * Assuming MessageQ_put is making sure that the arguments are ok
- */
-Bool TransportCirc_put(TransportCirc_Object *obj, Ptr msg)
-{
- Int status;
- UInt msgSize;
- UInt hwiKey;
- Ptr writeAddr;
- UInt writeIndex, readIndex;
-
- do {
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* get the writeIndex and readIndex */
- readIndex = obj->putReadIndex[0];
- writeIndex = obj->putWriteIndex[0];
-
- /* if slot available 'break' out of loop */
- if (((writeIndex + 1) & TransportCirc_maxIndex) != readIndex) {
- break;
- }
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- } while (1);
-
- /* interrupts are disabled at this point */
-
- /* get a free buffer and copy the message into it */
- writeAddr = (Ptr)((UInt32)obj->putBuffer +
- (writeIndex * TransportCirc_msgSize));
-
- /* get the size of the message */
- msgSize = MessageQ_getMsgSize(msg);
-
- Assert_isTrue(msgSize <= TransportCirc_msgSize, IpcMgr_A_internal);
-
- /* copy message to the write buffer */
- memcpy(writeAddr, (Ptr)msg, msgSize);
-
- /* update the writeIndex */
- obj->putWriteIndex[0] = (writeIndex + 1) & TransportCirc_maxIndex;
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* free the app's message */
- if (((MessageQ_Msg)msg)->heapId != ti_sdo_ipc_MessageQ_STATICMSG) {
- MessageQ_free(msg);
- }
-
- /* Notify the remote processor */
- status = Notify_sendEvent(
- obj->remoteProcId,
- 0,
- TransportCirc_notifyEventId,
- (UInt32)NULL,
- FALSE);
-
- /* check the status of the sendEvent */
- if (status < 0) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-/*
- * ======== TransportCirc_control ========
- */
-Bool TransportCirc_control(TransportCirc_Object *obj, UInt cmd,
- UArg cmdArg)
-{
- return (FALSE);
-}
-
-/*
- * ======== TransportCirc_getStatus ========
- */
-Int TransportCirc_getStatus(TransportCirc_Object *obj)
-{
- return (0);
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_notifyFxn ========
- */
-Void TransportCirc_notifyFxn(UInt16 procId,
- UInt16 lineId,
- UInt32 eventId,
- UArg arg,
- UInt32 payload)
-{
- Swi_Handle swiHandle;
-
- /* Swi_Handle was passed as arg in register */
- swiHandle = (Swi_Handle)arg;
-
- /* post the Swi */
- Swi_post(swiHandle);
-}
-
-/*
- * ======== TransportCirc_swiFxn ========
- */
-Void TransportCirc_swiFxn(UArg arg)
-{
- UInt32 queueId;
- TransportCirc_Object *obj = (TransportCirc_Object *)arg;
- MessageQ_Msg msg = NULL;
- MessageQ_Msg buf = NULL;
- SizeT msgSize;
- UInt writeIndex, readIndex;
- UInt offset;
-
- /* Make sure the TransportCirc_Object is not NULL */
- Assert_isTrue(obj != NULL, IpcMgr_A_internal);
-
- /* get the writeIndex and readIndex */
- writeIndex = obj->getWriteIndex[0];
- readIndex = obj->getReadIndex[0];
-
- while (writeIndex != readIndex) {
- /* determine where the message from remote core is */
- offset = (readIndex * TransportCirc_msgSize);
-
- /* get the message */
- msg = (MessageQ_Msg)((UInt32)obj->getBuffer + offset);
-
- /*
- * The message size needs to be halved because it was
- * specified in bytes and the units on the c28 is 16-bit
- * words.
- */
- msgSize = MessageQ_getMsgSize(msg);
-
- /* alloc a message from msg->heapId to copy the msg to */
- buf = MessageQ_alloc(msg->heapId, msgSize);
-
- /* Make sure buf is not NULL */
- if (buf == NULL) {
- TransportCirc_module->errFxn(TransportCirc_Reason_FAILEDALLOC,
- ti_sdo_ipc_family_f2837x_TransportCirc_Handle_upCast(obj),
- NULL,
- (UArg)msg);
-
- return;
- }
-
- /* copy the message to the buffer allocated, set the heap id */
- memcpy((Ptr)buf, (Ptr)msg, msgSize);
-
- /* overwrite the msgSize in the msg */
- buf->msgSize = msgSize;
-
- /* retrieve the detination queue id */
- queueId = MessageQ_getDstQueue(msg);
-
- /* put the message to the destination queue */
- MessageQ_put(queueId, buf);
-
- /* update the local readIndex. */
- readIndex = ((readIndex + 1) & TransportCirc_maxIndex);
-
- /* set the readIndex */
- obj->getReadIndex[0] = readIndex;
- }
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_close ========
- */
-Void TransportCirc_close(TransportCirc_Handle *handle)
-{
- TransportCirc_delete(handle);
-}
-
-/*
- * ======== TransportCirc_sharedMemReq ========
- */
-SizeT TransportCirc_sharedMemReq(const TransportCirc_Params *params)
-{
- SizeT memReq;
-
- /* Ensure that params is non-NULL */
- Assert_isTrue(params != NULL, IpcMgr_A_internal);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer (msgSize * numMsgs) +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr +
- */
- memReq = (TransportCirc_msgSize * TransportCirc_numMsgs) +
- (2 * sizeof(Bits32));
-
- return (memReq);
-}
-
-/*
- * ======== TransportCirc_defaultErrFxn ========
- */
-Void TransportCirc_defaultErrFxn(IMessageQTransport_Reason reason,
- IMessageQTransport_Handle handle,
- Ptr ptr,
- UArg arg)
-{
-}
-
-/*
- * ======== TransportCirc_setErrFxn ========
- */
-Void TransportCirc_setErrFxn(TransportCirc_ErrFxn errFxn)
-{
- TransportCirc_module->errFxn = errFxn;
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/TransportCirc.xdc b/packages/ti/sdo/ipc/family/f2837x/TransportCirc.xdc
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.xdc ========
- */
-
-import ti.sysbios.knl.Swi;
-import ti.sdo.ipc.interfaces.IMessageQTransport;
-
-import xdc.rov.ViewInfo;
-
-/*!
- * @_nodoc
- * ======== TransportCirc ========
- * Transport for MessageQ that uses a circular buffer.
- *
- * This is a {@link ti.sdo.ipc.MessageQ} transport that utilizes shared
- * memory for passing messages between multiple processors.
- *
- * The transport utilizes shared memory in the manner indicated by the
- * following diagram.
- *
- * @p(code)
- *
- * NOTE: Processor '0' corresponds to CPU1 and '1' corresponds to CPU2
- *
- * sharedAddr -> --------------------------- bytes
- * | entry0 (0) [Put] | msgSize
- * | entry1 (0) | msgSize
- * | ... |
- * | entryN (0) | msgSize
- * | |
- * |-------------------------|
- * | putWriteIndex (0) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (0) | 4
- * | |
- * |-------------------------|
- * | entry0 (1) [Get] | msgSize
- * | entry1 (1) | msgSize
- * | ... |
- * | entryN (1) | msgSize
- * | |
- * |-------------------------|
- * | putWriteIndex (1) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (1) | 4
- * | |
- * |-------------------------|
- *
- *
- * Legend:
- * (0), (1) : belongs to the respective processor
- * (N) : length of buffer
- *
- * @p
- */
-
-@InstanceFinalize
-@InstanceInitError
-
-module TransportCirc inherits IMessageQTransport
-{
- /*! @_nodoc */
- metaonly struct BasicView {
- String remoteProcName;
- }
-
- /*! @_nodoc */
- metaonly struct EventDataView {
- UInt index;
- String buffer;
- Ptr message;
- }
-
- /*!
- * ======== rovViewInfo ========
- */
- @Facet
- metaonly config ViewInfo.Instance rovViewInfo =
- ViewInfo.create({
- viewMap: [
- ['Basic',
- {
- type: ViewInfo.INSTANCE,
- viewInitFxn: 'viewInitBasic',
- structName: 'BasicView'
- }
- ],
- ['Events',
- {
- type: ViewInfo.INSTANCE_DATA,
- viewInitFxn: 'viewInitData',
- structName: 'EventDataView'
- }
- ],
- ]
- });
-
- /*!
- * ======== close ========
- * Close an opened instance
- *
- * Closing an instance will free local memory consumed by the opened
- * instance. Instances that are opened should be closed before the
- * instance is deleted.
- *
- * @param(handle) handle that is returned from an {@link #openByAddr}
- */
- Void close(Handle *handle);
-
- /*! @_nodoc
- * ======== notifyEventId ========
- * Notify event ID for transport.
- */
- config UInt16 notifyEventId = 2;
-
- /*! @_nodoc
- * ======== numMsgs ========
- * The maximum number of outstanding messages
- *
- * This number must be greater than 0 and a power of 2.
- * If the transport reaches this threshold, it spins waiting for
- * another message slot to be freed by the remote processor.
- */
- config UInt numMsgs = 4;
-
- /*! @_nodoc
- * ======== maxMsgSizeInBytes ========
- * The maximum message size (in bytes) that is supported
- */
- config UInt maxMsgSizeInBytes = 128;
-
- /*!
- * ======== swiPriority ========
- * The priority of the Transport Swi object created
- */
- config UInt swiPriority = 1;
-
- /*! @_nodoc
- * ======== sharedMemReq ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Number of MAUs needed to create the instance.
- */
- SizeT sharedMemReq(const Params *params);
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*! @_nodoc
- * ======== openFlag ========
- * Set to 'true' by the open() call. No one else should touch this!
- */
- config Bool openFlag = false;
-
- /*!
- * ======== readAddr ========
- * Physical address of the read address in shared memory
- *
- * This address should be specified in the local processor's memory
- * space. It must point to the same physical write address of the
- * remote processor its communicating with.
- */
- config Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Physical address of the write address in shared memory
- *
- * This address should be specified in the local processor's memory
- * space. It must point to the same physical read address of the
- * remote processor its communicating with.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*! The max index set to (numMsgs - 1) */
- config UInt maxIndex;
-
- /*!
- * The message size in target MAUs.
- */
- config UInt msgSize;
-
- /*!
- * ======== defaultErrFxn ========
- * This is the default error function.
- *
- * This function is an empty function that does nothing.
- *
- * @param(reason) reason for error function
- * @param(handle) handle of transport that had error
- * @param(ptr) pointer to the message
- * @param(arg) argument passed to error function
- */
- Void defaultErrFxn(IMessageQTransport.Reason reason,
- IMessageQTransport.Handle handle, Ptr ptr, UArg arg);
-
- /*!
- * ======== swiFxn ========
- * This function takes the messages from the circular message buffer
- * and calls MessageQ_put to send them to their destination queue.
- * This function is posted by the NotifyFxn.
- *
- * @param(arg) argument for the function
- */
- Void swiFxn(UArg arg);
-
- /*!
- * ======== notifyFxn ========
- * This is a callback function registered with Notify. It is called
- * when a remote processor does a Notify_sendEvent(). It is executed
- * at ISR level. It posts the instance Swi object to execute swiFxn.
- *
- * @param(procId) remote processor id
- * @param(lineId) Notify line id
- * @param(eventId) Notify event id
- * @param(arg) argument for the function
- * @param(payload) 32-bit payload value.
- */
- Void notifyFxn(UInt16 procId, UInt16 lineId, UInt32 eventId, UArg arg,
- UInt32 payload);
-
- /* Instance State object */
- struct Instance_State {
- Ptr *putBuffer; /* buffer used to put message */
- Bits32 *putReadIndex; /* ptr to readIndex for put buffer */
- Bits32 *putWriteIndex; /* ptr to writeIndex for put buffer */
- Ptr *getBuffer; /* buffer used to get message */
- Bits32 *getReadIndex; /* ptr to readIndex for get buffer */
- Bits32 *getWriteIndex; /* ptr to writeIndex for put buffer */
- Swi.Object swiObj; /* Each instance has a swi */
- SizeT allocSize; /* Shared memory allocated */
- UInt16 remoteProcId; /* dst proc id */
- UInt16 priority; /* priority to register */
- };
-
- struct Module_State {
- ErrFxn errFxn; /* error function */
- };
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/TransportCirc.xs b/packages/ti/sdo/ipc/family/f2837x/TransportCirc.xs
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.xs ========
- */
-
-var TransportCirc = null;
-var MessageQ = null;
-var Notify = null;
-var MultiProc = null;
-var Swi = null;
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- TransportCirc = this;
- MessageQ = xdc.useModule("ti.sdo.ipc.MessageQ");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Swi = xdc.useModule("ti.sysbios.knl.Swi");
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- var target = Program.build.target;
- var bitsPerByte = 8;
- var bitsPerChar = target.bitsPerChar;
-
- /* calculate the message size in target MAUs */
- TransportCirc.msgSize = TransportCirc.maxMsgSizeInBytes *
- (bitsPerByte / bitsPerChar);
-
- /* calculate the maxIndex */
- TransportCirc.maxIndex = TransportCirc.numMsgs - 1;
-
- /* determine numMsgs is a power of 2 */
- if (TransportCirc.numMsgs & (TransportCirc.maxIndex)) {
- TransportCirc.$logFatal("TransportCirc.numMsgs: " +
- TransportCirc.numMsgs +
- " is not a power of 2", TransportCirc);
- }
-
- if (params.errFxn != null) {
- mod.errFxn = params.errFxn;
- }
- else {
- mod.errFxn = TransportCirc.defaultErrFxn;
- }
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if (Notify.numEvents <= TransportCirc.notifyEventId) {
- TransportCirc.$logFatal("TransportCirc.notifyEventId (" +
- TransportCirc.notifyEventId +
- ") is too big: Notify.numEvents = " + Notify.numEvents,
- TransportCirc);
- }
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- var target = Program.build.target;
- var bitsPerByte = 8;
- var bitsPerChar = target.bitsPerChar;
-
- /* The message size in target MAUs */
- var msgSize = TransportCirc.maxMsgSizeInBytes *
- (bitsPerByte / bitsPerChar);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer (msgSize * numMsgs) +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr +
- */
- var memReq = (msgSize * TransportCirc.numMsgs) +
- (2 * Program.build.target.stdTypes['t_Int32'].size);
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * ROV View functions
- *************************************************************************
- */
-
-/*
- * ======== viewInitBasic ========
- */
-function viewInitBasic(view, obj)
-{
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
- var MultiProcCfg = Program.getModuleConfig('ti.sdo.utils.MultiProc');
-
- /* view.remoteProcName */
- try {
- view.remoteProcName = MultiProc.getName$view(obj.remoteProcId -
- MultiProcCfg.baseIdOfCluster);
- }
- catch(e) {
- Program.displayError(view, 'remoteProcName',
- "Problem retrieving proc name: " + e);
- }
-}
-
-/*
- * ======== getEventData ========
- * Helper function for use within viewInitData
- */
-function getEventData(view, obj, bufferPtr, putIndex, getIndex)
-{
- var TransportCirc =
- xdc.useModule('ti.sdo.ipc.family.f28m35x.TransportCirc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f28m35x.TransportCirc');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
-
- if (bufferPtr == obj.putBuffer) {
- var bufferName = "put";
- }
- else {
- var bufferName = "get";
- }
-
- try {
- var putBuffer = Program.fetchArray(ScalarStructs.S_Bits32$fetchDesc,
- bufferPtr,
- modCfg.numMsgs);
- }
- catch(e) {
- throw (new Error("Error fetching putBuffer struct from shared memory"));
- }
-
- var i = getIndex;
-
- while (i != putIndex) {
- /* The event is registered */
- var elem = Program.newViewStruct(
- 'ti.sdo.ipc.family.f28m35x.TransportCirc',
- 'Events');
-
- elem.index = i;
- elem.buffer = bufferName;
- elem.message = utils.toHex(Number(bufferPtr) + (i * modCfg.msgSize));
-
- /* Create a new row in the instance data view */
- view.elements.$add(elem);
-
- i++;
- if ((i % modCfg.numMsgs) == 0) {
- i = 0;
- }
- }
-}
-
-
-/*
- * ======== viewInitData ========
- * Instance data view.
- */
-function viewInitData(view, obj)
-{
- var Program = xdc.useModule('xdc.rov.Program');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
-
- /* Display the instance label in the tree */
- view.label = "remoteProcId = " + obj.remoteProcId;
-
- /* Fetch put/get index's */
- try {
- var putWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putWriteIndex struct from shared memory"));
- }
-
- try {
- var putReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putReadIndex struct from shared memory"));
- }
-
- try {
- var getWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getWriteIndex struct from shared memory"));
- }
-
- try {
- var getReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getReadIndex struct from shared memory"));
- }
-
- /* Get event data for the put buffer */
- getEventData(view, obj, obj.putBuffer, putWriteIndex.elem, putReadIndex.elem);
-
- /* Get event data for the get buffer */
- getEventData(view, obj, obj.getBuffer, getWriteIndex.elem, getReadIndex.elem);
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/linkcmd.xdt b/packages/ti/sdo/ipc/family/f2837x/linkcmd.xdt
+++ /dev/null
@@ -1,57 +0,0 @@
-%%{
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-%%}
-%%{
-/*
- * Add writeAddr with writeAddrSize to linker cmd file.
- * This is to prevent the user from placing other code/data
- * in the same memory location.
- */
-%%}
-%var IpcMgr = xdc.module("ti.sdo.ipc.family.f2837x.IpcMgr");
-%
-%
-
-SECTIONS
-{
-% var readSectName = "ti.sdo.ipc.family.f2837x.IpcMgr.readSect";
-% var writeSectName = "ti.sdo.ipc.family.f2837x.IpcMgr.writeSect";
-% if (IpcMgr.genLinkerSections && (IpcMgr.readAddr || IpcMgr.writeAddr)) {
-% var readAddr = utils.toHex(IpcMgr.readAddr);
-% var writeAddr = utils.toHex(IpcMgr.writeAddr);
-% var len = utils.toHex(IpcMgr.sharedMemSizeUsed);
-%
- `readSectName`: { . += `len`;} run > `readAddr` PAGE 1, type = NOLOAD
- `writeSectName`: { . += `len`;} run > `writeAddr` PAGE 1, type = NOLOAD
-% }
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/package.bld b/packages/ti/sdo/ipc/family/f2837x/package.bld
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== package.bld ========
- */
-
-var IpcBuild = xdc.loadCapsule("ti/sdo/ipc/Build.xs");
-
-var objList_28FP = [
- "IpcMgr",
- "NotifyDriverCirc",
- "NameServerBlock",
- "TransportCirc",
-];
-
-var trgFilter_28FP = {
- field: "isa",
- list: [ "28FP" ]
-};
-
-
-/* generate makefiles */
-IpcBuild.buildLibs(objList_28FP, undefined, trgFilter_28FP, arguments);
-
-/* generate smp makefiles */
-IpcBuild.buildLibs(objList_28FP, undefined, trgFilter_28FP, ["profile=smp"]);
-
-Pkg.otherFiles = [ "package.bld", "linkcmd.xdt" ];
-
-/* include source files in the release package */
-Pkg.attrs.exportSrc = true;
-Pkg.attrs.exportCfg = true;
-
-Pkg.generatedFiles.$add("lib/");
diff --git a/packages/ti/sdo/ipc/family/f2837x/package.xdc b/packages/ti/sdo/ipc/family/f2837x/package.xdc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== package.xdc ========
- */
-
-requires ti.sdo.ipc;
-
-/*!
- * ======== ti.sdo.ipc.family.f2837x ========
- */
-package ti.sdo.ipc.family.f2837x [1,0,0,0] {
- module IpcMgr;
- module NameServerBlock;
- module NotifyDriverCirc;
- module TransportCirc;
-}
diff --git a/packages/ti/sdo/ipc/family/f2837x/package.xs b/packages/ti/sdo/ipc/family/f2837x/package.xs
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== package.xs ========
- */
-
-
-/*
- * ======== Package.getLibs ========
- * This function is called when a program's configuration files are
- * being generated and it returns the name of a library appropriate
- * for the program's configuration.
- */
-
-function getLibs(prog)
-{
- var Build = xdc.module("ti.sdo.ipc.Build");
-
- /* use shared getLibs() */
- return (Build.getLibs(this));
-}
-
-/*
- * ======== Package.getSects ========
- */
-function getSects()
-{
- return "ti/sdo/ipc/family/f2837x/linkcmd.xdt";
-}
-
-/*
- * ======== package.close ========
- */
-function close()
-{
- if (xdc.om.$name != 'cfg') {
- return;
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.c b/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.c ========
- */
-
-#include <xdc/std.h>
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/Startup.h>
-
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.h>
-#include <ti/sdo/ipc/family/f28m35x/NameServerBlock.h>
-#include <ti/sdo/ipc/family/f28m35x/TransportCirc.h>
-#include <ti/sdo/ipc/_MessageQ.h>
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-
-#include "package/internal/IpcMgr.xdc.h"
-
-/* For the M3 */
-#define CTOMIPCACK (0x400FB700)
-#define CTOMIPCSTS (CTOMIPCACK + 0x4)
-#define MTOCIPCSET (CTOMIPCACK + 0x8)
-#define MTOCIPCCLR (CTOMIPCACK + 0xC)
-#define MTOCIPCFLG (CTOMIPCACK + 0x10)
-
-/* For the C28 */
-#define CTOMIPCSET (0x00004E00)
-#define CTOMIPCCLR (CTOMIPCSET + 0x2)
-#define CTOMIPCFLG (CTOMIPCSET + 0x4)
-#define MTOCIPCACK (CTOMIPCSET + 0x6)
-#define MTOCIPCSTS (CTOMIPCSET + 0x8)
-
-#define M3_IPCFLAG 10
-#define C28_IPCFLAG 11
-
-/*
- * ======== IpcMgr_Module_startup ========
- * In this function the M3 processors is used to enable shared memory.
- * In addition, the owner of each block of memory is initialized and
- * the write access set based on the static configuration parameters.
- * IPC flags are used by the M3 and C28 respectively for synchronization.
- *
- * The M3 starts by creating its driver instances and then sets the
- * C28's IPC flag to let the C28 proceed. Then the M3 waits for its
- * IPC flag to be set before proceeding. Once its IPC flag is set
- * by the C28, the M3 clears its IPC flag and continues.
- *
- * The C28 starts by waiting for its IPC flag to be set by the M3.
- * Once its IPC flag is set by the M3, the C28 clears its IPC flag and
- * proceeds to create its driver instances. The C28 then sets the M3's
- * IPC flag to let the M3 proceed.
- *
- * The shared memory usage looks like the following:
- *
- * |--------------------|
- * | Notify Driver |
- * | |
- * |--------------------|
- * | NameServer |
- * | Remote Driver |
- * |--------------------|
- * | MessageQ Transport |
- * | |
- * |--------------------|
- */
-Int IpcMgr_Module_startup(Int phase)
-{
- Int status;
- SizeT memReq;
- Ptr writeAddr = (UInt32 *)IpcMgr_writeAddr;
- Ptr readAddr = (UInt32 *)IpcMgr_readAddr;
- UInt16 remoteProcId;
- NotifyDriverCirc_Params notifyDrvParams;
- TransportCirc_Params transportParams;
-#ifdef xdc_target__isaCompatible_v7M
- volatile UInt32 *set = (volatile UInt32 *)MTOCIPCSET;
- volatile UInt32 *stat = (volatile UInt32 *)CTOMIPCSTS;
- volatile UInt32 *ack = (volatile UInt32 *)CTOMIPCACK;
-#else
- volatile UInt32 *set = (volatile UInt32 *)CTOMIPCSET;
- volatile UInt32 *stat = (volatile UInt32 *)MTOCIPCSTS;
- volatile UInt32 *ack = (volatile UInt32 *)MTOCIPCACK;
-#endif
-
- /*
- * This code assumes that the device's C28 and M3 MultiProc Ids
- * are next to each other (e.g. n and n + 1) and that the first
- * one is even (e.g. n is even).
- */
- if (MultiProc_self() & 1) {
- /* I'm odd */
- remoteProcId = MultiProc_self() - 1;
- }
- else {
- /* I'm even */
- remoteProcId = MultiProc_self() + 1;
- }
-
- /* wait for Hwi module to initialize first because of NotifyDriverCirc */
- if (!Hwi_Module_startupDone()) {
- return Startup_NOTDONE;
- }
-
-#ifdef xdc_target__isaCompatible_v7M
-
-#else
-
- /* wait for M3 to set C28's IPC flag */
- while (!(*stat & (1 << C28_IPCFLAG))) {
- }
-
- /* clear own IPC flag */
- *ack = 1 << C28_IPCFLAG;
-
-#endif
-
- /* determine the amount of memory required for NotifyDriverCirc */
- NotifyDriverCirc_Params_init(¬ifyDrvParams);
- notifyDrvParams.writeAddr = writeAddr;
- memReq = NotifyDriverCirc_sharedMemReq(¬ifyDrvParams);
-
- /* call NotifyCircSetup attach to remote processor */
- status = IpcMgr_notifyCircAttach(remoteProcId,
- writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
- /* update the read/write address */
- writeAddr = (Ptr)((UInt32)writeAddr + memReq);
- readAddr = (Ptr)((UInt32)readAddr + memReq);
-
- /* determine the amount of memory required for NameServerBlock */
- memReq = NameServerBlock_sharedMemReq(NULL);
-
- /* call NameServerBlock attach to remote processor */
- status = IpcMgr_nameServerAttach(remoteProcId, writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
- /* update the read/write address */
- writeAddr = (Ptr)((UInt32)writeAddr + memReq);
- readAddr = (Ptr)((UInt32)readAddr + memReq);
-
- /* determine the amount of memory required for TransportCirc */
- TransportCirc_Params_init(&transportParams);
- transportParams.writeAddr = writeAddr;
- memReq = TransportCirc_sharedMemReq(&transportParams);
-
- /* call TransportCircSetup attach to remote processor */
- status = IpcMgr_transportCircAttach(remoteProcId,
- writeAddr, readAddr);
-
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
-
-#ifdef xdc_target__isaCompatible_v7M
-
- /* set C28 IPC flag to tell C28 to proceed */
- *set = 1 << C28_IPCFLAG;
-
- /* wait for C28 to set M3's IPC flag */
- while (!(*stat & (1 << M3_IPCFLAG))) {
- }
-
- /* clear own IPC flag */
- *ack = 1 << M3_IPCFLAG;
-
-#else
-
- /* set M3's IPC flag to tell M3 to proceed */
- *set = 1 << M3_IPCFLAG;
-
-#endif
-
- return (Startup_DONE);
-}
-
-/*
- * ======== IpcMgr_init ========
- * Init CTOMMSGRAM and MTOCMSGRAM
- */
-Void IpcMgr_init()
-{
-#ifdef xdc_target__isaCompatible_v7M
-
-#else
-
- volatile UInt32 *c28rTestInit = (volatile UInt32 *)IpcMgr_C28RTESTINIT;
- volatile UInt32 *c28rInitDone = (volatile UInt32 *)IpcMgr_C28RINITDONE;
-
- asm(" EALLOW");
-
- /* init CtoMMsgRam */
- *c28rTestInit |= (0x1 << 4);
-
- /* make sure init is done */
- while ((*c28rInitDone & (0x1 << 4)) != (0x1 << 4)) {
- }
-
- asm(" EDIS");
-
-#endif
-}
-
-
-/*
- * ======== IpcMgr_notifyCircAttach ========
- * Initialize interrupt
- */
-Int IpcMgr_notifyCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr)
-{
- NotifyDriverCirc_Params notifyDrvParams;
- NotifyDriverCirc_Handle notifyDrvHandle;
- ti_sdo_ipc_Notify_Handle notifyHandle;
- Error_Block eb;
- Int status = Notify_S_SUCCESS;
-
- /* Initialize the error block */
- Error_init(&eb);
-
- /* Setup the notify driver to the remote processor */
- NotifyDriverCirc_Params_init(¬ifyDrvParams);
-
- /* set the read/write address of the param */
- notifyDrvParams.readAddr = readAddr;
- notifyDrvParams.writeAddr = writeAddr;
-
- /* create the notify driver instance */
- notifyDrvHandle = NotifyDriverCirc_create(¬ifyDrvParams, &eb);
- if (notifyDrvHandle == NULL) {
- return (Notify_E_FAIL);
- }
-
- /* create the notify instance */
- notifyHandle = ti_sdo_ipc_Notify_create(
- NotifyDriverCirc_Handle_upCast(notifyDrvHandle),
- remoteProcId, 0, NULL, &eb);
-
- if (notifyHandle == NULL) {
- NotifyDriverCirc_delete(¬ifyDrvHandle);
- status = Notify_E_FAIL;
- }
-
- return (status);
-}
-
-/*
- * ======== IpcMgr_nameServerAttach ========
- */
-Int IpcMgr_nameServerAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr)
-{
- NameServerBlock_Params nsbParams;
- NameServerBlock_Handle handle;
- Int status = NameServerBlock_E_FAIL;
- Error_Block eb;
-
- Error_init(&eb);
-
- /* Init the param */
- NameServerBlock_Params_init(&nsbParams);
-
- /* set the read/write addresses */
- nsbParams.readAddr = readAddr;
- nsbParams.writeAddr = writeAddr;
-
- /* create only if notify driver has been created to remote proc */
- if (Notify_intLineRegistered(remoteProcId, 0)) {
- handle = NameServerBlock_create(remoteProcId,
- &nsbParams,
- &eb);
- if (handle != NULL) {
- status = NameServerBlock_S_SUCCESS;
- }
- }
-
- return (status);
-}
-
-/*
- * ======== IpcMgr_transportCircAttach ========
- */
-Int IpcMgr_transportCircAttach(UInt16 remoteProcId, Ptr writeAddr,
- Ptr readAddr)
-{
- TransportCirc_Handle handle;
- TransportCirc_Params params;
- Int status = MessageQ_E_FAIL;
- Error_Block eb;
-
- Error_init(&eb);
-
- /* init the transport parameters */
- TransportCirc_Params_init(¶ms);
- params.readAddr = readAddr;
- params.writeAddr = writeAddr;
-
- /* make sure notify driver has been created */
- if (Notify_intLineRegistered(remoteProcId, 0)) {
- handle = TransportCirc_create(remoteProcId, ¶ms, &eb);
-
- if (handle != NULL) {
- status = MessageQ_S_SUCCESS;
- }
- }
-
- return (status);
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.xdc b/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.xdc
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.xdc ========
- */
-
-import xdc.runtime.Assert;
-import xdc.runtime.Error;
-
-/*!
- * ======== 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.
- *
- * 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 {@link #readAddr} must point to shared memory which is writeable
- * by the remote core while the {@link #writeAddr} must point to shared
- * memory which is writeable by the local core. The {@link #readAddr}
- * and {@link #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:
- * @p(code)
- * var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
- * IpcMgr.readAddr = 0x20016000;
- * IpcMgr.writeAddr = 0x20014000;
- * IpcMgr.sharedMemoryOwnerMask = 0x80;
- * @p
- *
- * On the C28:
- * @p(code)
- * var IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
- * IpcMgr.readAddr = 0x12000;
- * IpcMgr.writeAddr = 0x13000;
- * @p
- */
-
-@ModuleStartup
-
-module IpcMgr
-{
- /*!
- * This value is used for setting {@link #sharedMemoryAccess}.
- * If value specified, fetch is not allowed by owner.
- */
- const Bits32 NOFETCH = 1;
-
- /*!
- * This value is used for setting {@link #sharedMemoryAccess}.
- * If value specified, DMA writes are not allowed by owner.
- */
- const Bits32 NODMAWRITE = 2;
-
- /*!
- * This value is used for setting {@link #sharedMemoryAccess}.
- * If value specified, CPU writes are not allowed by owner.
- */
- const Bits32 NOCPUWRITE = 4;
-
- /*
- *************************************************************************
- * Generic Errors/Asserts
- *************************************************************************
- */
-
- /*!
- * ======== A_internal ========
- * Assert raised when an internal error is encountered
- */
- config Assert.Id A_internal = {
- msg: "A_internal: An internal error has occurred"
- };
-
- /*!
- * ======== A_invParam ========
- * Assert raised when a parameter is invalid
- */
- config Assert.Id A_invParam = {
- msg: "A_invParam: Invalid configuration parameter supplied"
- };
-
- /*!
- * ======== A_notEnoughMemory ========
- * Assert raised when there's not enough memory for creating instances.
- */
- config Assert.Id A_notEnoughMemory = {
- msg: "A_notEnoughMemory: There is not enough memory for operation"
- };
-
- /*!
- * ======== A_nullArgument ========
- * Assert raised when a required argument is null
- */
- config Assert.Id A_nullArgument = {
- msg: "A_nullArgument: Required argument is null"
- };
-
- /*!
- * ======== E_internal ========
- * Error raised when an internal error occured
- */
- config Error.Id E_internal = {
- msg: "E_internal: An internal error occurred"
- };
-
- /*
- *************************************************************************
- * Module-wide Config Parameters
- *************************************************************************
- */
-
- /*!
- * ======== genLinkerSections ========
- * For generating or not generating the linker sections
- *
- * 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'.
- */
- metaonly config Bool genLinkerSections = true;
-
- /*!
- * ======== ipcSetFlag ========
- * The IPC set flag used for generating IPC interrupt
- *
- * 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 UInt32 ipcSetFlag = 3;
-
- /*!
- * ======== messageQSize ========
- * The largest MessageQ size (in bytes) supported by the transport
- *
- * This value must be large enough to handle the largest message.
- * The size must be specified in bytes.
- */
- config UInt32 messageQSize = 128;
-
- /*!
- * ======== messageQEventId ========
- * Notify event ID for MessageQ transport.
- */
- config UInt16 messageQEventId = 2;
-
- /*!
- * ======== nameServerEventId ========
- * Notify event ID for NameServer.
- */
- config UInt16 nameServerEventId = 4;
-
- /*!
- * ======== numNotifyMsgs ========
- * The number of messages for the Notify driver's circular buffer
- *
- * 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 UInt32 numNotifyMsgs = 32;
-
- /*!
- * ======== numMessageQMsgs ========
- * The number of messages for the MessageQ transport's circular buffer
- *
- * 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 UInt32 numMessageQMsgs = 4;
-
- /*!
- * ======== sharedMemoryEnable ========
- * Shared RAM memory configuration.
- *
- * 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.
- */
- metaonly config Bits32 sharedMemoryEnable = 0xffffffff;
-
- /*!
- * ======== sharedMemoryOwnerMask ========
- * Shared RAM owner select configuration.
- *
- * 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.
- */
- metaonly config Bits32 sharedMemoryOwnerMask = 0;
-
- /*!
- * ======== sharedMemoryAccess ========
- * Shared RAM write configuration.
- *
- * 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.
- */
- metaonly config Bits32 sharedMemoryAccess[8];
-
- /*!
- * ======== readAddr ========
- * The base address of read-only shared memory.
- *
- * 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 Ptr readAddr;
-
- /*!
- * ======== writeAddr ========
- * The base address of read/write shared memory.
- *
- * 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.
- */
- config Ptr writeAddr;
-
-internal:
-
- /* M3 control registers */
- const UInt32 MWRALLOW = 0x400FB980;
- const UInt32 MEMCNF = 0x400FB930;
- const UInt32 MSxMSEL = 0x400FB210;
- const UInt32 MSxSRCR = 0x400FB220;
- const UInt32 C28RTESTINIT = 0x4920;
- const UInt32 C28RINITDONE = 0x4930;
- const UInt32 MTOCRTESTINIT = 0x400FB260;
- const UInt32 MTOCRINITDONE = 0x400FB288;
-
- /* the amount of shared memory used */
- config UInt32 sharedMemSizeUsed;
-
- /* initialize the MsgRams */
- Void init();
-
- /* function to create NotifyCirc driver instances */
- Int notifyCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-
- /* function to create NameServer remote instances */
- Int nameServerAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-
- /* function to create MessageQ transport instances */
- Int transportCircAttach(UInt16 remoteProcId, Ptr writeAddr, Ptr readAddr);
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.xs b/packages/ti/sdo/ipc/family/f28m35x/IpcMgr.xs
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== IpcMgr.xs ========
- */
-
-var IpcMgr = null;
-var Startup = null;
-var MultiProc = null;
-var NotifyDriverCirc = null;
-var NameServerBlock = null;
-var TransportCirc = null;
-var Hwi = null;
-var Boot = null;
-
-/*
- * ======== module$meta$init ========
- */
-function module$meta$init()
-{
- /* Only process during "cfg" phase */
- if (xdc.om.$name != "cfg") {
- return;
- }
-
- IpcMgr = this;
-
- /* initialize the config parameter */
- for (var i=0; i < IpcMgr.sharedMemoryAccess.length; i++) {
- IpcMgr.sharedMemoryAccess[i] = 0;
- }
-
- var NameServer = xdc.useModule('ti.sdo.utils.NameServer');
- NameServer.SetupProxy = xdc.useModule('ti.sdo.ipc.family.f28m35x.NameServerBlock');
-
- var Startup = xdc.useModule('xdc.runtime.Startup');
-
- /* RAMINIT */
- Startup.firstFxns.$add(IpcMgr.init);
-}
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- NotifyDriverCirc =
- xdc.useModule("ti.sdo.ipc.family.f28m35x.NotifyDriverCirc");
- NameServerBlock =
- xdc.useModule("ti.sdo.ipc.family.f28m35x.NameServerBlock");
- TransportCirc =
- xdc.useModule("ti.sdo.ipc.family.f28m35x.TransportCirc");
- Hwi = xdc.useModule("ti.sysbios.hal.Hwi");
- Startup = xdc.useModule("xdc.runtime.Startup");
-
- if (Program.build.target.name.match(/M3.*/)) {
- Boot = xdc.useModule("ti.catalog.arm.cortexm3.concertoInit.Boot");
- }
-
- /* Init the number of messages for notify driver */
- NotifyDriverCirc.numMsgs = IpcMgr.numNotifyMsgs;
-
- /* Init the number of messages for messageQ transport */
- TransportCirc.numMsgs = IpcMgr.numMessageQMsgs;
- TransportCirc.maxMsgSizeInBytes = IpcMgr.messageQSize;
- TransportCirc.notifyEventId = IpcMgr.messageQEventId;
-
- /* Make sure that sharedMemoryOwnerMask is only configured on the M3 */
- if (!Program.build.target.name.match(/M3.*/) &&
- IpcMgr.$written("sharedMemoryOwnerMask") == true) {
- this.$logWarning("Warning: IpcMgr.sharedMemoryOwnerMask must only be " +
- "configured on the M3 core. Configuring this on the C28 core has no " +
- "effect", this);
- }
-
- if ((Program.build.target.name.match(/M3.*/)) &&
- ("sharedMemoryEnable" in Boot)) {
- if (Boot.$written("sharedMemoryEnable") &&
- Boot.sharedMemoryEnable != IpcMgr.sharedMemoryEnable) {
- IpcMgr.$logWarning("Boot.sharedMemoryEnable was set to " +
- "a value different from IpcMgr.sharedMemoryEnable. " +
- "IpcMgr.sharedMemoryEnable will override the Boot setting.",
- IpcMgr, "sharedMemoryEnable");
- }
-
- /* override Boot's sharedMemoryEnable with IpcMgr's */
- Boot.sharedMemoryEnable = IpcMgr.sharedMemoryEnable;
-
- if (Boot.$written("sharedMemoryOwnerMask") &&
- Boot.sharedMemoryOwnerMask != IpcMgr.sharedMemoryOwnerMask) {
- IpcMgr.$logWarning("Boot.sharedMemoryOwnerMask was set to " +
- "a value different from IpcMgr.sharedMemoryOwnerMask. " +
- "IpcMgr.sharedMemoryOwnerMask will override the Boot setting.",
- IpcMgr, "sharedMemoryOwnerMask");
- }
-
- /* override Boot's sharedMemoryOwnerMask with IpcMgr's */
- Boot.sharedMemoryOwnerMask = IpcMgr.sharedMemoryOwnerMask;
-
- if (Boot.$written("sharedMemoryAccess")) {
- IpcMgr.$logWarning("Boot.sharedMemoryAccess was modified " +
- "but IpcMgr.sharedMemoryAccess will override the Boot setting.",
- IpcMgr, "sharedMemoryAccess");
- }
-
- /* override Boot's sharedMemoryAccess with IpcMgr's */
- for (var i = 0; i < IpcMgr.sharedMemoryAccess.length; i++) {
- Boot.sharedMemoryAccess[i] = IpcMgr.sharedMemoryAccess[i];
- }
- }
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- /* check to make sure readAddr and writeAddr have been set */
- if (params.readAddr == undefined) {
- IpcMgr.$logError("IpcMgr.readAddr is undefined", IpcMgr);
- }
-
- if (params.writeAddr == undefined) {
- IpcMgr.$logError("IpcMgr.writeAddr is undefined", IpcMgr);
- }
-
-
- /* init the interrupt ids */
- if (params.ipcSetFlag < 0 || params.ipcSetFlag > 3) {
- IpcMgr.$logError("IpcMgr.ipcSetFlag must be 0, 1, 2, or 3 " +
- "because they are the only flags associated with an interrupt.",
- IpcMgr);
- }
-
- /* calculate the amount of shared memory used */
- IpcMgr.sharedMemSizeUsed = NotifyDriverCirc.sharedMemReqMeta(null) +
- NameServerBlock.sharedMemReqMeta(null) +
- TransportCirc.sharedMemReqMeta(null);
-
- /* validate sharedMemoryOwnerMask is correct for the readAddr/writeAddr */
- if (Program.build.target.name.match(/M3.*/)) {
- if ((IpcMgr.writeAddr >= 0x20008000) &&
- (IpcMgr.writeAddr < 0x20018000)) {
- /*
- * Determine segment being used for the M3 writeAddr.
- * The shared RAM base address starts 0x20008000 to 0x20016000.
- * Each segment with a length of 0x2000 (byte addressing).
- */
- var writeSeg = (IpcMgr.writeAddr - 0x20008000) >> 13;
-
- /* The M3 must be owner of writeAddr shared memory segment */
- if (IpcMgr.sharedMemoryOwnerMask & (1 << writeSeg)) {
- IpcMgr.$logError("IpcMgr.writeAddr is set to address: " +
- utils.toHex(IpcMgr.writeAddr) + "," +
- " but IpcMgr.sharedMemoryOwnerMask bit: " + writeSeg +
- " must not be set. Unset this bit to make M3 the owner.", IpcMgr);
- }
- }
-
- if ((IpcMgr.readAddr >= 0x20008000) &&
- (IpcMgr.readAddr < 0x20018000)) {
- /*
- * Determine segment being used for the M3 readAddr.
- * The shared RAM base address starts 0x20008000 to 0x20016000.
- * Each segment with a length of 0x2000 (byte addressing).
- */
- var readSeg = (IpcMgr.readAddr - 0x20008000) >> 13;
-
- /* The C28 must be owner of readAddr shared memory segment */
- if (!(IpcMgr.sharedMemoryOwnerMask & (1 << readSeg))) {
- IpcMgr.$logError("IpcMgr.readAddr is set to address: " +
- utils.toHex(IpcMgr.readAddr) + "," +
- " but IpcMgr.sharedMemoryOwnerMask bit: " + readSeg +
- " is not set. This bit must be set so C28 is the owner.", IpcMgr);
- }
- }
- }
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if ((xdc.module('ti.sdo.ipc.Ipc').$used) ||
- (xdc.module('ti.sdo.ipc.GateMP').$used) ||
- (xdc.module('ti.sdo.ipc.SharedRegion').$used) ||
- (xdc.module('ti.sdo.ipc.ListMP').$used)) {
- IpcMgr.$logError("One or more of the following modules " +
- "[Ipc, GateMP, ListMP, SharedRegion] are being used " +
- "but are not supported on this device.", IpcMgr);
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.c b/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.c ========
- */
-
-#include <xdc/std.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/knl/ISync.h>
-
-#include <ti/sysbios/BIOS.h>
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sysbios/knl/Swi.h>
-#include <ti/sysbios/knl/Semaphore.h>
-
-#include <ti/sdo/ipc/family/f28m35x/IpcMgr.h>
-
-#include "package/internal/NameServerBlock.xdc.h"
-
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-#include <ti/sdo/utils/_NameServer.h>
-
-/* Need to use reserved notify events */
-#undef NameServerBlock_notifyEventId
-#define NameServerBlock_notifyEventId \
- ti_sdo_ipc_family_f28m35x_NameServerBlock_notifyEventId + \
- (UInt32)((UInt32)Notify_SYSTEMKEY << 16)
-
-
-
-/*
- *************************************************************************
- * Instance functions
- *************************************************************************
- */
-Int NameServerBlock_Instance_init(NameServerBlock_Object *obj,
- UInt16 remoteProcId,
- const NameServerBlock_Params *params,
- Error_Block *eb)
-{
- Int status;
- Semaphore_Params semParams;
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
- Swi_Handle swiHandle;
- Swi_Params swiParams;
-
- /* Assert that a NameServerBlock_Params has been supplied */
- Assert_isTrue(params != NULL, IpcMgr_A_nullArgument);
-
- /* Assert that remoteProcId is valid */
- Assert_isTrue(remoteProcId != MultiProc_self() &&
- remoteProcId != MultiProc_INVALIDID,
- IpcMgr_A_invParam);
-
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
- swiHandle = NameServerBlock_Instance_State_swiObj(obj);
-
- obj->readRequest = (NameServerBlock_Message *)(params->readAddr);
- obj->readResponse = (NameServerBlock_Message *)(
- (UInt32)params->readAddr +
- sizeof(NameServerBlock_Message));
- obj->writeRequest = (NameServerBlock_Message *)(params->writeAddr);
- obj->writeResponse = (NameServerBlock_Message *)(
- (UInt32)params->writeAddr +
- sizeof(NameServerBlock_Message));
- obj->remoteProcId = remoteProcId;
-
- /* construct the Semaphore */
- Semaphore_Params_init(&semParams);
- Semaphore_construct(Semaphore_struct(semRemoteWait), 0, &semParams);
-
- /* construct the semaphore */
- Semaphore_construct(Semaphore_struct(semMultiBlock), 1, &semParams);
-
- /* swi created with lowest priority and fxn = swiFxn */
- Swi_Params_init(&swiParams);
- swiParams.arg0 = (UArg)obj;
- swiParams.priority = 0;
- Swi_construct(Swi_struct(swiHandle),
- (ti_sysbios_knl_Swi_FuncPtr)NameServerBlock_swiFxn,
- &swiParams, eb);
-
- /* initialize own side of message struct only */
- obj->writeRequest->request = 0;
- obj->writeRequest->value = 0;
- obj->writeRequest->valueLen = 0;
-
- memset(obj->writeRequest->instanceName, 0,
- sizeof(obj->writeRequest->instanceName));
- memset(obj->writeRequest->name, 0,
- sizeof(obj->writeRequest->name));
-
- obj->writeResponse->response = 0;
- obj->writeResponse->requestStatus = 0;
-
- /* register the call back function and event Id with notify */
- status = Notify_registerEventSingle(
- remoteProcId,
- 0,
- NameServerBlock_notifyEventId,
- (Notify_FnNotifyCbck)NameServerBlock_cbFxn,
- (UArg)swiHandle);
-
- /* if not successful return */
- if (status < 0) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (1);
- }
-
- /* register the remote driver with NameServer */
- ti_sdo_utils_NameServer_registerRemoteDriver(
- NameServerBlock_Handle_upCast(obj), remoteProcId);
-
- return (0);
-}
-
-/*
- * ======== NameServerBlock_Instance_finalize ========
- */
-Void NameServerBlock_Instance_finalize(NameServerBlock_Object *obj,
- Int status)
-{
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
- Swi_Handle swiHandle;
-
- if (status == 0) {
- /* unregister remote driver from NameServer module */
- ti_sdo_utils_NameServer_unregisterRemoteDriver(obj->remoteProcId);
-
- /* unregister event from Notify module */
- Notify_unregisterEventSingle(
- obj->remoteProcId,
- 0,
- NameServerBlock_notifyEventId);
- }
-
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- if (semRemoteWait != NULL) {
- Semaphore_destruct(Semaphore_struct(semRemoteWait));
- }
-
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
- if (semMultiBlock != NULL) {
- Semaphore_destruct(Semaphore_struct(semMultiBlock));
- }
-
- swiHandle = NameServerBlock_Instance_State_swiObj(obj);
- if (swiHandle != NULL) {
- Swi_destruct(Swi_struct(swiHandle));
- }
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== NameServerBlock_attach ========
- */
-Int NameServerBlock_attach(UInt16 remoteProcId, Ptr sharedAddr)
-{
- return (NameServerBlock_E_FAIL);
-}
-
-/*
- * ======== NameServerBlock_cbFxn ========
- */
-Void NameServerBlock_cbFxn(UInt16 procId,
- UInt16 lineId,
- UInt32 eventId,
- UArg arg,
- UInt32 payload)
-{
- Swi_Handle swiHandle;
-
- /* Swi_Handle was passed as arg in register */
- swiHandle = (Swi_Handle)arg;
-
- /* post the Swi */
- Swi_post(swiHandle);
-}
-
-/*
- * ======== NameServerBlock_detach ========
- */
-Int NameServerBlock_detach(UInt16 remoteProcId)
-{
- return (NameServerBlock_E_FAIL);
-}
-
-/*
- * ======== NameServerBlock_get ========
- */
-Int NameServerBlock_get(NameServerBlock_Object *obj,
- String instanceName,
- String name,
- Ptr value,
- UInt32 *valueLen,
- ISync_Handle syncHandle,
- Error_Block *eb)
-{
- Int len;
- Int retval = NameServer_E_NOTFOUND;
- Int status;
- Semaphore_Handle semRemoteWait;
- Semaphore_Handle semMultiBlock;
-
- Assert_isTrue(*valueLen <= (NameServerBlock_bufLen * sizeof(Bits32)),
- NameServerBlock_A_invalidValueLen);
-
- semRemoteWait = NameServerBlock_Instance_State_semRemoteWait(obj);
- semMultiBlock = NameServerBlock_Instance_State_semMultiBlock(obj);
-
- /* prevent multiple threads from entering */
- Semaphore_pend(semMultiBlock, BIOS_WAIT_FOREVER);
-
- /* this is a request message */
- obj->writeRequest->request = 1;
- obj->writeRequest->response = 0;
- obj->writeRequest->valueLen = *valueLen;
-
-#ifdef xdc_target__isaCompatible_28
- /*
- * On C28, sizeof(Bits32) is 2. When requesting a value from the M3,
- * this value needs to be doubled because sizeof(Bits32) is 4 on M3.
- */
- obj->writeRequest->valueLen = obj->writeRequest->valueLen << 1;
-
-#else
- /*
- * On M3, sizeof(Bits32) is 4. When requesting a value from the C28,
- * this value needs to be halved because sizeof(Bits32) is 2 on C28.
- */
- obj->writeRequest->valueLen = obj->writeRequest->valueLen >> 1;
-
-#endif
-
- /* copy the name of instance into shared memory */
- len = strlen(instanceName);
- NameServerBlock_strncpy((Char *)obj->writeRequest->instanceName,
- instanceName,
- len + 1);
-
- /* copy the name of nameserver entry into shared memory */
- len = strlen(name);
- NameServerBlock_strncpy((Char *)obj->writeRequest->name,
- name,
- len + 1);
-
- /* send the notification to remote processor */
- status = Notify_sendEvent(
- obj->remoteProcId,
- 0,
- NameServerBlock_notifyEventId,
- 0,
- FALSE);
-
- if (status < 0) {
- /* undo previous options */
- obj->writeRequest->request = 0;
- obj->writeRequest->valueLen = 0;
-
- /* post the semaphore to make sure it doesn't block */
- Semaphore_post(semMultiBlock);
-
- return (retval);
- }
-
- /* pend here until we get a notification back from remote processor */
- status = Semaphore_pend(semRemoteWait, BIOS_WAIT_FOREVER);
-
- if (status == FALSE) {
- retval = NameServer_E_OSFAILURE;
- }
- else {
- /* if successful request then copy to value */
- if (obj->readResponse->requestStatus == TRUE) {
- /* copy to value */
- if (obj->readResponse->valueLen <= sizeof(UInt32)) {
- memcpy(value, &(obj->readResponse->value), sizeof(UInt32));
- }
- else {
- memcpy(value, &(obj->readResponse->valueBuf),
- obj->readResponse->valueLen);
- }
-
- /* set length to amount of data that was copied */
- *valueLen = obj->readResponse->valueLen;
-
- /* set the status */
- retval = NameServer_S_SUCCESS;
- }
-
- /* clear out the request */
- obj->writeRequest->request = 0;
- }
-
- Semaphore_post(semMultiBlock);
-
- return (retval);
-}
-
-/*
- * ======== NameServerBlock_sharedMemReq ========
- */
-SizeT NameServerBlock_sharedMemReq(Ptr sharedAddr)
-{
- /*
- * Four Message structs are required.
- * One for sending request and one for sending response.
- * One for receiving request and one for receiving response.
- */
- if (ti_sdo_utils_MultiProc_numProcessors > 1) {
- return (4 * sizeof(NameServerBlock_Message));
- }
-
- return (0);
-}
-
-#ifdef xdc_target__isaCompatible_28
-/*
- * ======== NameServerBlock_strncpy ========
- * Copies the source string into the destination string as a
- * packed string. The length includes the null terminating
- * character.
- */
-Char* NameServerBlock_strncpy(Char *dest, Char *src, SizeT len)
-{
- Int i;
- UInt half = len >> 1;
-
- /* copy and pack the string */
- for (i = 0; i < half; i++) {
- dest[i] = src[i << 1] | (src[(i << 1) + 1] << 8);
- }
-
- /* The terminating character */
- if (len & 1) {
- /*
- * (len = odd) ==> name has even number of characters.
- * The next byte is (len >> 1), so zero that out.
- */
- dest[half] = '\0';
- }
- else {
- /*
- * (len = even) ==> name has odd number of characters.
- * Zero out the upper half of the last byte.
- */
- dest[half - 1] |= ('\0' << 8);
- }
-
- return (dest);
-}
-
-#else
-/*
- * ======== NameServerBlock_strncpy ========
- */
-Char* NameServerBlock_strncpy(Char *dest, Char *src, SizeT len)
-{
- return (strncpy(dest, src, len));
-}
-
-#endif
-
-/*
- * ======== NameServerBlock_swiFxn ========
- */
-Void NameServerBlock_swiFxn(UArg arg)
-{
- UInt32 valueLen;
- UInt hwiKey;
- NameServer_Handle handle;
- NameServerBlock_Object *obj;
-#ifdef xdc_target__isaCompatible_28
- static Char instanceName[64];
- static Char name[64];
- String ptrIName;
- String ptrName;
- Int i;
-#else
- String instanceName;
- String name;
-#endif
- Int status;
-
- obj = (NameServerBlock_Object *)arg;
-
- /* In case of request */
- if (obj->readRequest->request == TRUE) {
-#ifdef xdc_target__isaCompatible_28
- ptrIName = (String)obj->readRequest->instanceName;
- ptrName = (String)obj->readRequest->name;
-
- /* Unpack the string for the C28 */
- for (i = 0; i < 64; i++) {
- if (i & 1) {
- /* odd values are taken from the upper 8 bits shifted */
- instanceName[i] = ptrIName[i >> 1] >> 8;
- name[i] = ptrName[i >> 1] >> 8;
- }
- else {
- /* even values are taken from the lower 8 bits */
- instanceName[i] = ptrIName[i >> 1] & 0xFF;
- name[i] = ptrName[i >> 1] & 0xFF;
- }
- }
-#else
- /* Strings are in the correct format already */
- instanceName = (String)obj->readRequest->instanceName;
- name = (String)obj->readRequest->name;
-#endif
- /* get the NameServer handle */
- handle = NameServer_getHandle((String)instanceName);
- valueLen = obj->readRequest->valueLen;
-
- if (handle != NULL) {
- /* Search for the NameServer entry */
- if (valueLen <= sizeof(UInt32)) {
- status = NameServer_getLocalUInt32(handle,
- (String)name,
- &obj->writeResponse->value);
- }
- else {
- status = NameServer_getLocal(handle,
- (String)name,
- &obj->writeResponse->valueBuf, &valueLen);
- }
- }
- else {
- status = NameServer_E_FAIL;
- }
-
- /*
- * If an entry was found, set requestStatus to TRUE
- * and valueLen to the size of data that was copied.
- */
- if (status == NameServer_S_SUCCESS) {
- obj->writeResponse->requestStatus = TRUE;
-#ifdef xdc_target__isaCompatible_28
- obj->writeResponse->valueLen = (valueLen << 1);
-#else
- obj->writeResponse->valueLen = (valueLen >> 1);
-#endif
- }
- else {
- obj->writeResponse->requestStatus = FALSE;
- obj->writeResponse->valueLen = 0;
- }
-
- /* Send a response back */
- obj->writeResponse->response = TRUE;
-
- /*
- * The Notify line must be active at this point for this processor to
- * have received a request
- */
- status = Notify_sendEvent(obj->remoteProcId,
- 0, NameServerBlock_notifyEventId, 0, FALSE);
-
- /* The NS query could fail, but the reply should never fail */
- Assert_isTrue(status >= 0, IpcMgr_A_internal);
- }
-
- /* in case of response */
- if (obj->readResponse->response == TRUE &&
- obj->writeRequest->response == FALSE) {
-
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* acknowledge receive of response atomically with posting semaphore */
- obj->writeRequest->response = TRUE;
-
- /* post the Semaphore */
- Semaphore_post(
- NameServerBlock_Instance_State_semRemoteWait(obj));
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.xdc b/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.xdc
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.xdc ========
- */
-
-import xdc.runtime.Error;
-import xdc.runtime.Assert;
-import ti.sysbios.knl.Swi;
-import ti.sysbios.knl.Semaphore;
-import ti.sdo.utils.INameServerRemote;
-
-/*! @_nodoc
- * ======== NameServerBlock ========
- * Used by NameServer to communicate to remote processors.
- *
- * This module is used by {@link ti.sdo.utils.NameServer} to communicate
- * to remote processors using {@link ti.sdo.ipc.Notify} and shared memory.
- * There needs to be one instance between each two cores in the system.
- * Interrupts must be enabled before using this module. Currently
- * supports transferring up to 44-bytes between two cores.
- */
-@InstanceInitError
-@InstanceFinalize
-
-module NameServerBlock inherits INameServerRemote
-{
- /* structure in shared memory for retrieving value */
- struct Message {
- Bits32 request; /* if this is a request set to 1 */
- Bits32 response; /* if this is a response set to 1 */
- Bits32 requestStatus; /* if request sucessful set to 1 */
- Bits32 value; /* holds value if len <= 4 */
- Bits32 valueLen; /* len of value */
- Bits32 instanceName[8]; /* name of NameServer instance */
- Bits32 name[8]; /* name of NameServer entry */
- Bits32 valueBuf[bufLen]; /* supports up to 44-byte value */
- };
-
- /*!
- * Assert raised when length of value larger then 44 bytes.
- */
- config xdc.runtime.Assert.Id A_invalidValueLen =
- {msg: "A_invalidValueLen: Invalid valueLen (too large)"};
-
- /*! @_nodoc
- * ======== notifyEventId ========
- * The Notify event ID.
- */
- config UInt32 notifyEventId = 4;
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*!
- * ======== readAddr ========
- * Read address of the shared memory
- *
- * 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 Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Write address of the shared memory
- *
- * 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.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*! used by Message struct for length of valueBuf */
- const UInt bufLen = 11;
-
- /*!
- * ======== cbFxn ========
- * The call back function registered with Notify.
- *
- * This function is registered with Notify as a call back function
- * when the specified event is triggered. This function simply posts
- * a Swi which will process the event.
- *
- * @param(procId) Source proc id
- * @param(lineId) Interrupt line id
- * @param(eventId) the Notify event id.
- * @param(arg) the argument for the function.
- * @param(payload) a 32-bit payload value.
- */
- Void cbFxn(UInt16 procId, UInt16 lineId, UInt32 eventId, UArg arg,
- UInt32 payload);
-
- /*!
- * ======== strncpy ========
- * Copies the source string into the destination string.
- *
- * For the M3, this function calls the 'C' runtime strncpy().
- * For the C28, this function packs the source string into
- * the destination string.
- *
- * @param(dest) Destination string.
- * @param(src) Source string.
- * @param(len) len of string to copy.
- *
- * @a(returns) Destination string.
- */
- Char* strncpy(Char *dest, Char *src, SizeT len);
-
- /*!
- * ======== swiFxn ========
- * The swi function that will be executed during the call back.
- *
- * @param(arg) argument to swi function
- */
- Void swiFxn(UArg arg);
-
- /* instance state */
- struct Instance_State {
- Message *readRequest;
- Message *readResponse;
- Message *writeRequest; /* Ptrs to messages in shared mem */
- Message *writeResponse; /* Ptrs to messages in shared mem */
- UInt16 regionId; /* SharedRegion ID */
- Semaphore.Object semRemoteWait; /* sem to wait on remote proc */
- Semaphore.Object semMultiBlock; /* sem to block multiple threads */
- Swi.Object swiObj; /* instance swi object */
- UInt16 remoteProcId; /* remote MultiProc id */
- };
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.xs b/packages/ti/sdo/ipc/family/f28m35x/NameServerBlock.xs
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NameServerBlock.xs ========
- */
-
-var NameServerBlock = null;
-var NameServer = null;
-var MultiProc = null;
-var Notify = null;
-var Semaphore = null;
-var Swi = null;
-var IpcMgr = null;
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- NameServerBlock = this;
- NameServer = xdc.useModule("ti.sdo.utils.NameServer");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- Semaphore = xdc.useModule("ti.sysbios.knl.Semaphore");
- Swi = xdc.useModule("ti.sysbios.knl.Swi");
- IpcMgr = xdc.useModule('ti.sdo.ipc.family.f28m35x.IpcMgr');
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if (Notify.numEvents <= NameServerBlock.notifyEventId) {
- NameServerBlock.$logFatal(
- "NameServerBlock.notifyEventId (" +
- NameServerBlock.notifyEventId +
- ") is too big: Notify.numEvents = " + Notify.numEvents,
- NameServerBlock);
- }
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- /*
- * Four Message structs are required.
- * One for sending request and one for sending response.
- * One for receiving request and one for receiving response.
- */
- if (MultiProc.numProcessors > 1) {
- return (4 * NameServerBlock.Message.$sizeof());
- }
-
- return (0);
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.c b/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.c
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.c ========
- */
-
-#include <xdc/std.h>
-
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Timestamp.h>
-
-#ifdef xdc_target__isaCompatible_v7M
-#include <ti/sysbios/family/arm/m3/Hwi.h>
-#else
-#include <ti/sysbios/family/c28/Hwi.h>
-#endif
-
-#include <ti/sdo/ipc/family/f28m35x/IpcMgr.h>
-#include <ti/sdo/ipc/interfaces/INotifyDriver.h>
-
-#include "package/internal/NotifyDriverCirc.xdc.h"
-
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/utils/_MultiProc.h>
-
-/* Bit mask operations */
-#define SET_BIT(num,pos) ((num) |= (1u << (pos)))
-#define CLEAR_BIT(num,pos) ((num) &= ~(1u << (pos)))
-#define TEST_BIT(num,pos) ((num) & (1u << (pos)))
-
-/* For the M3 */
-#define CTOMIPCACK (0x400FB700)
-#define CTOMIPCSTS (CTOMIPCACK + 0x4)
-#define MTOCIPCSET (CTOMIPCACK + 0x8)
-#define MTOCIPCCLR (CTOMIPCACK + 0xC)
-#define MTOCIPCFLG (CTOMIPCACK + 0x10)
-
-/* For the C28 */
-#define CTOMIPCSET (0x00004E00)
-#define CTOMIPCCLR (CTOMIPCSET + 0x2)
-#define CTOMIPCFLG (CTOMIPCSET + 0x4)
-#define MTOCIPCACK (CTOMIPCSET + 0x6)
-#define MTOCIPCSTS (CTOMIPCSET + 0x8)
-
-/*
- **************************************************************
- * Instance functions
- **************************************************************
- */
-
-/*
- * ======== NotifyDriverCirc_Instance_init ========
- */
-Void NotifyDriverCirc_Instance_init(NotifyDriverCirc_Object *obj,
- const NotifyDriverCirc_Params *params)
-{
- SizeT ctrlSize, circBufSize;
- Hwi_Params hwiParams;
-
- /*
- * This code assumes that the device's C28 and M3 MultiProc Ids
- * are next to each other (e.g. n and n + 1) and that the first
- * one is even (e.g. n is even).
- */
- /* set the remote processor's id */
- if (MultiProc_self() & 1) {
- /* I'm odd */
- obj->remoteProcId = MultiProc_self() - 1;
- }
- else {
- /* I'm even */
- obj->remoteProcId = MultiProc_self() + 1;
- }
-
- /* calculate the circular buffer size one-way */
- circBufSize = sizeof(NotifyDriverCirc_EventEntry) *
- NotifyDriverCirc_numMsgs;
-
- /* calculate the control size one-way */
- ctrlSize = sizeof(Bits32);
-
- /*
- * Init put/get buffer and index pointers.
- */
- obj->putBuffer = params->writeAddr;
-
- obj->putWriteIndex = (Bits32 *)((UInt32)obj->putBuffer + circBufSize);
-
- obj->getBuffer = params->readAddr;
-
- obj->getWriteIndex = (Bits32 *)((UInt32)obj->getBuffer + circBufSize);
-
- obj->putReadIndex = (Bits32 *)((UInt32)obj->getWriteIndex + ctrlSize);
-
- obj->getReadIndex = (Bits32 *)((UInt32)obj->putWriteIndex + ctrlSize);
-
- /* init the putWrite and getRead Index to 0 */
- obj->putWriteIndex[0] = 0;
- obj->getReadIndex[0] = 0;
-
- /* clear interrupt */
- NotifyDriverCirc_intClear();
-
- /* plugged interrupt */
- Hwi_Params_init(&hwiParams);
- hwiParams.arg = (UArg)obj;
- Hwi_create(NotifyDriverCirc_localIntId,
- (Hwi_FuncPtr)NotifyDriverCirc_isr,
- &hwiParams,
- NULL);
-
- /* Enable the interrupt */
- Hwi_enableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_Instance_finalize ========
- */
-Void NotifyDriverCirc_Instance_finalize(NotifyDriverCirc_Object *obj)
-{
- Hwi_Handle hwiHandle;
-
- /* Disable the interrupt source */
- NotifyDriverCirc_intDisable();
-
- /* Delete the Hwi */
- hwiHandle = Hwi_getHandle(NotifyDriverCirc_localIntId);
- Hwi_delete(&hwiHandle);
-}
-
-/*
- * ======== NotifyDriverCirc_registerEvent ========
- */
-Void NotifyDriverCirc_registerEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- UInt hwiKey;
-
- /*
- * Disable interrupt line to ensure that isr doesn't
- * preempt registerEvent and encounter corrupt state
- */
- hwiKey = Hwi_disable();
-
- /* Set the 'registered' bit */
- SET_BIT(obj->evtRegMask, eventId);
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_unregisterEvent ========
- */
-Void NotifyDriverCirc_unregisterEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- UInt hwiKey;
-
- /*
- * Disable interrupt line to ensure that isr doesn't
- * preempt registerEvent and encounter corrupt state
- */
- hwiKey = Hwi_disable();
-
- /* Clear the registered bit */
- CLEAR_BIT(obj->evtRegMask, eventId);
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_sendEvent ========
- */
-Int NotifyDriverCirc_sendEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId,
- UInt32 payload,
- Bool waitClear)
-{
- Bool loop = FALSE;
- UInt hwiKey;
- UInt32 writeIndex, readIndex;
- NotifyDriverCirc_EventEntry *eventEntry;
-
- /* Retrieve the get Index. */
- readIndex = obj->putReadIndex[0];
-
- do {
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* retrieve the put index */
- writeIndex = obj->putWriteIndex[0];
-
- /* if slot available 'break' out of loop */
- if (((writeIndex + 1) & NotifyDriverCirc_maxIndex) != readIndex) {
- break;
- }
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* check to make sure code has looped */
- if (loop && !waitClear) {
- /* if no slot available and waitClear is 'FALSE' */
- return (Notify_E_FAIL);
- }
-
- /* re-read the get count */
- readIndex = obj->putReadIndex[0];
-
- /* convey that the code has looped around */
- loop = TRUE;
-
- } while (1);
-
- /* interrupts are disabled at this point */
-
- /* calculate the next available entry */
- eventEntry = (NotifyDriverCirc_EventEntry *)((UInt32)obj->putBuffer +
- (writeIndex * sizeof(NotifyDriverCirc_EventEntry)));
-
- /* Set the eventId field and payload for the entry */
- eventEntry->eventid = eventId;
- eventEntry->payload = payload;
-
- /* update the putWriteIndex */
- obj->putWriteIndex[0] = (writeIndex + 1) & NotifyDriverCirc_maxIndex;
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* Send an interrupt to the Remote Processor */
- NotifyDriverCirc_intSend();
-
- return (Notify_S_SUCCESS);
-}
-
-/*
- * ======== NotifyDriverCirc_disable ========
- */
-Void NotifyDriverCirc_disable(NotifyDriverCirc_Object *obj)
-{
- /* Disable the incoming interrupt line */
- NotifyDriverCirc_intDisable();
-}
-
-/*
- * ======== NotifyDriverCirc_enable ========
- */
-Void NotifyDriverCirc_enable(NotifyDriverCirc_Object *obj)
-{
- /* Enable the incoming interrupt line */
- NotifyDriverCirc_intEnable();
-}
-
-/*
- * ======== NotifyDriverCirc_disableEvent ========
- * This function disbales all events.
- */
-Void NotifyDriverCirc_disableEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- /* NotifyDriverCirc_disableEvent not supported by this driver */
- Assert_isTrue(FALSE, NotifyDriverCirc_A_notSupported);
-}
-
-/*
- * ======== NotifyDriverCirc_enableEvent ========
- * This function enables all events.
- */
-Void NotifyDriverCirc_enableEvent(NotifyDriverCirc_Object *obj,
- UInt32 eventId)
-{
- /* NotifyDriverCirc_enableEvent not supported by this driver */
- Assert_isTrue(FALSE, NotifyDriverCirc_A_notSupported);
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== NotifyDriverCirc_sharedMemReq ========
- */
-SizeT NotifyDriverCirc_sharedMemReq(const NotifyDriverCirc_Params *params)
-{
- SizeT memReq;
-
- /* Ensure that params is non-NULL */
- Assert_isTrue(params != NULL, IpcMgr_A_internal);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer with numMsgs +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr
- */
- memReq =
- (sizeof(NotifyDriverCirc_EventEntry) * NotifyDriverCirc_numMsgs)
- + (2 * sizeof(Bits32));
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * Internal functions
- *************************************************************************
- */
-/*
- * ======== NotifyDriverCirc_intEnable ========
- * Enable remote processor interrupt
- */
-Void NotifyDriverCirc_intEnable()
-{
- Hwi_enableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_intDisable ========
- * Disables remote processor interrupt
- */
-Void NotifyDriverCirc_intDisable()
-{
- Hwi_disableInterrupt(NotifyDriverCirc_localIntId);
-}
-
-/*
- * ======== NotifyDriverCirc_intSend ========
- * Send interrupt to the remote processor
- */
-Void NotifyDriverCirc_intSend()
-{
-#ifdef xdc_target__isaCompatible_v7M
- volatile UInt32 *set = (volatile UInt32 *)MTOCIPCSET;
- volatile UInt32 *clear = (volatile UInt32 *)MTOCIPCCLR;
-#else
- volatile UInt16 *set = (volatile UInt16 *)CTOMIPCSET;
- volatile UInt32 *clear = (volatile UInt32 *)CTOMIPCCLR;
-#endif
- UInt hwiKey;
-
- /* Make sure multiple threads are not hitting this at the same time */
- hwiKey = Hwi_disable();
-
- /* Make sure we get a leading edge... */
- *clear = 1 << IpcMgr_ipcSetFlag;
-
- /* Signal the other side */
- *set = 1 << IpcMgr_ipcSetFlag;
-
- /* Restore the interrupt line */
- Hwi_restore(hwiKey);
-}
-
-/*
- * ======== NotifyDriverCirc_intClear ========
- * Clear interrupt
- */
-UInt NotifyDriverCirc_intClear()
-{
-#ifdef xdc_target__isaCompatible_v7M
- volatile UInt32 *ack = (volatile UInt32 *)CTOMIPCACK;
-#else
- volatile UInt16 *ack = (volatile UInt16 *)MTOCIPCACK;
-#endif
-
- *ack = 1 << IpcMgr_ipcSetFlag;
-
- return (0);
-}
-
-/*
- * ======== NotifyDriverCirc_isr ========
- */
-Void NotifyDriverCirc_isr(UArg arg)
-{
- NotifyDriverCirc_EventEntry *eventEntry;
- NotifyDriverCirc_Object *obj;
- UInt32 writeIndex, readIndex;
-
- obj = (NotifyDriverCirc_Object *)arg;
-
- /* Make sure the NotifyDriverCirc_Object is not NULL */
- Assert_isTrue(obj != NULL, IpcMgr_A_internal);
-
- /* get the writeIndex and readIndex */
- writeIndex = obj->getWriteIndex[0];
- readIndex = obj->getReadIndex[0];
-
- /* get the event */
- eventEntry = &(obj->getBuffer[readIndex]);
-
- /* if writeIndex != readIndex then there is an event to process */
- while (writeIndex != readIndex) {
- /*
- * Check to make sure event is registered. If the event
- * is not registered, the event is not processed and is lost.
- */
- if (TEST_BIT(obj->evtRegMask, eventEntry->eventid)) {
- /* Execute the callback function */
- ti_sdo_ipc_Notify_exec(obj->notifyHandle,
- eventEntry->eventid,
- eventEntry->payload);
- }
-
- /* update the readIndex. */
- readIndex = ((readIndex + 1) & NotifyDriverCirc_maxIndex);
-
- /* set the getReadIndex */
- obj->getReadIndex[0] = readIndex;
-
- /* get the next event */
- eventEntry = &(obj->getBuffer[readIndex]);
- }
-}
-
-/*
- * ======== NotifyDriverCirc_setNotifyHandle ========
- */
-Void NotifyDriverCirc_setNotifyHandle(NotifyDriverCirc_Object *obj,
- Ptr notifyHandle)
-{
- /* Internally used, so no Assert needed */
- obj->notifyHandle = (ti_sdo_ipc_Notify_Handle)notifyHandle;
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.xdc b/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.xdc
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.xdc ================
- */
-
-import ti.sdo.utils.MultiProc;
-import ti.sdo.ipc.interfaces.INotifyDriver;
-import ti.sdo.ipc.notifyDrivers.IInterrupt;
-import ti.sdo.ipc.Notify;
-
-import xdc.rov.ViewInfo;
-
-import xdc.runtime.Assert;
-
-/*!
- * ======== NotifyDriverCirc ========
- * Shared memory driver using circular buffer for F28M35x devices.
- *
- * This is a {@link ti.sdo.ipc.Notify} driver that utilizes shared memory
- * and inter-processor hardware interrupts for notification between cores.
- *
- * This driver is designed to work with only F28M35x family of devices.
- * This module needs to be plugged with an appropriate module that implements
- * the {@link ti.sdo.ipc.notifyDrivers.IInterrupt} interface for a given
- * device.
- *
- * The driver utilizes shared memory in the manner indicated by the following
- * diagram.
- *
- * @p(code)
- *
- * NOTE: Processor '0' corresponds to the M3 and '1' corresponds to the C28
- *
- * sharedAddr -> --------------------------- bytes
- * | eventEntry0 (0) | 8
- * | eventEntry1 (0) | 8
- * | ... |
- * | eventEntry15 (0) | 8
- * | |
- * |-------------------------|
- * | eventEntry16 (0) | 8
- * | eventEntry17 (0) | 8
- * | ... |
- * | eventEntry31 (0) | 8
- * | |
- * |-------------------------|
- * | putWriteIndex (0) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (1) | 4
- * | |
- * |-------------------------|
- * | eventEntry0 (1) | 8
- * | eventEntry1 (1) | 8
- * | ... |
- * | eventEntry15 (1) | 8
- * | |
- * |-------------------------|
- * | eventEntry16 (1) | 8
- * | eventEntry17 (1) | 8
- * | ... |
- * | eventEntry31 (1) | 8
- * | |
- * |-------------------------|
- * | putWriteIndex (1) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (0) | 4
- * | |
- * |-------------------------|
- *
- *
- * Legend:
- * (0), (1) : belongs to the respective processor
- *
- * @p
- */
-
-@InstanceFinalize
-
-module NotifyDriverCirc inherits ti.sdo.ipc.interfaces.INotifyDriver
-{
- /*! @_nodoc */
- metaonly struct BasicView {
- String remoteProcName;
- UInt bufSize;
- UInt spinCount;
- UInt maxSpinWait;
- }
-
- /*! @_nodoc */
- metaonly struct EventDataView {
- UInt index;
- String buffer;
- Ptr addr;
- UInt eventId;
- Ptr payload;
- }
-
- /*!
- * ======== rovViewInfo ========
- */
- @Facet
- metaonly config ViewInfo.Instance rovViewInfo =
- ViewInfo.create({
- viewMap: [
- ['Basic',
- {
- type: ViewInfo.INSTANCE,
- viewInitFxn: 'viewInitBasic',
- structName: 'BasicView'
- }
- ],
- ['Events',
- {
- type: ViewInfo.INSTANCE_DATA,
- viewInitFxn: 'viewInitData',
- structName: 'EventDataView'
- }
- ],
- ]
- });
-
- /*!
- * Assert raised when trying to use Notify_[enable/disable]Event with
- * NotifyDriverCirc
- */
- config Assert.Id A_notSupported =
- {msg: "A_notSupported: [enable/disable]Event not supported by NotifyDriverCirc"};
-
- /*! @_nodoc
- * ======== numMsgs ========
- * The number of messages or slots in the circular buffer
- *
- * This is use to determine the size of the put and get buffers.
- * Each eventEntry is two 32bits wide, therefore the total size
- * of each circular buffer is [numMsgs * sizeof(eventEntry)].
- */
- config UInt numMsgs = 16;
-
- /*!
- * ======== sharedMemReq ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to parameters that will be used in the
- * create
- *
- * @a(returns) Number of MAUs in shared memory needed to create
- * the instance.
- */
- SizeT sharedMemReq(const Params *params);
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*!
- * ======== readAddr ========
- * Address in shared memory where buffer is placed
- *
- * Use {@link #sharedMemReq} to determine the amount of shared memory
- * required.
- */
- config Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Address in shared memory where buffer is placed
- *
- * Use {@link #sharedMemReq} to determine the amount of shared memory
- * required.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*!
- * ======== localIntId ========
- * Local interrupt ID for interrupt line
- *
- * For devices that support multiple inter-processor interrupt lines, this
- * configuration parameter allows selecting a specific line to use for
- * receiving an interrupt. The value specified here corresponds to the
- * incoming interrupt line on the local processor.
- */
- config UInt localIntId;
-
- /*!
- * ======== remoteIntId ========
- * Remote interrupt ID for interrupt line
- *
- * For devices that support multiple inter-processor interrupt lines, this
- * configuration parameter allows selecting a specific line to use for
- * receiving an interrupt. The value specified here corresponds to the
- * incoming interrupt line on the remote processor.
- */
- config UInt remoteIntId;
-
- /*! The max index set to (numMsgs - 1) */
- config UInt maxIndex;
-
- /*!
- * The modulo index value. Set to (numMsgs / 4).
- * Used in the isr for doing cache_wb of readIndex.
- */
- config UInt modIndex;
-
- /*!
- * enable IPC interrupt
- */
- Void intEnable();
-
- /*!
- * disable IPC interrupt
- */
- Void intDisable();
-
- /*!
- * trigger IPC interrupt
- */
- Void intSend();
-
- /*!
- * clear IPC interrupt
- */
- UInt intClear();
-
- /*!
- * executes the callback functions according to event priority
- */
- Void isr(UArg arg);
-
- /*!
- * Structure for each event. This struct is placed in shared memory.
- */
- struct EventEntry {
- volatile Bits32 eventid;
- volatile Bits32 payload;
- }
-
- /*! Instance state structure */
- struct Instance_State {
- EventEntry *putBuffer; /* buffer used to put events */
- Bits32 *putReadIndex; /* ptr to readIndex for put buffer */
- Bits32 *putWriteIndex; /* ptr to writeIndex for put buffer */
- EventEntry *getBuffer; /* buffer used to get events */
- Bits32 *getReadIndex; /* ptr to readIndex for get buffer */
- Bits32 *getWriteIndex; /* ptr to writeIndex for put buffer */
- Bits32 evtRegMask; /* local event register mask */
- Notify.Handle notifyHandle; /* Handle to front-end object */
- UInt16 remoteProcId; /* Remote MultiProc id */
- }
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.xs b/packages/ti/sdo/ipc/family/f28m35x/NotifyDriverCirc.xs
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== NotifyDriverCirc.xs ================
- */
-
-var NotifyDriverCirc = null;
-var IpcMgr = null;
-var MultiProc = null;
-var Notify = null;
-var Hwi = null;
-
-var MTOCIPC = [ 112, 113, 114, 115 ];
-var CTOMIPC = [ 96, 97, 98, 99 ];
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- NotifyDriverCirc = this;
- IpcMgr = xdc.useModule("ti.sdo.ipc.family.f28m35x.IpcMgr");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- Hwi = xdc.useModule("ti.sysbios.hal.Hwi");
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- NotifyDriverCirc.maxIndex = NotifyDriverCirc.numMsgs - 1;
- NotifyDriverCirc.modIndex = NotifyDriverCirc.numMsgs / 4;
-
- /* determine the local and remote interrupt id */
- if (Program.build.target.name.match(/C28.*/)) {
- NotifyDriverCirc.localIntId = MTOCIPC[IpcMgr.ipcSetFlag];
- NotifyDriverCirc.remoteIntId = CTOMIPC[IpcMgr.ipcSetFlag];
- }
- else {
- NotifyDriverCirc.localIntId = CTOMIPC[IpcMgr.ipcSetFlag];
- NotifyDriverCirc.remoteIntId = MTOCIPC[IpcMgr.ipcSetFlag];
- }
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- /*
- * Amount of shared memory:
- * 1 putBuffer with numMsgs +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr
- */
- memReq =
- (NotifyDriverCirc.EventEntry.$sizeof() * NotifyDriverCirc.numMsgs) +
- (2 * Program.build.target.stdTypes['t_Int32'].size);
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * ROV View functions
- *************************************************************************
- */
-
-/*
- * ======== viewInitBasic ========
- */
-function viewInitBasic(view, obj)
-{
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
- var MultiProcCfg = Program.getModuleConfig('ti.sdo.utils.MultiProc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f28m35x.NotifyDriverCirc');
-
- /* view.remoteProcName */
- try {
- view.remoteProcName = MultiProc.getName$view(obj.remoteProcId -
- MultiProcCfg.baseIdOfCluster);
- }
- catch(e) {
- Program.displayError(view, 'remoteProcName',
- "Problem retrieving proc name: " + e);
- }
-
- /* view obj information */
- view.bufSize = modCfg.numMsgs;
- view.spinCount = obj.spinCount;
- view.maxSpinWait = obj.spinWaitTime;;
-}
-
-/*
- * ======== getEventData ========
- * Helper function for use within viewInitData
- */
-function getEventData(view, obj, bufferPtr, putIndex, getIndex)
-{
- var NotifyDriverCirc =
- xdc.useModule('ti.sdo.ipc.family.f28m35x.NotifyDriverCirc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f28m35x.NotifyDriverCirc');
-
- if (bufferPtr == obj.putBuffer) {
- var bufferName = "put";
- }
- else {
- var bufferName = "get";
- }
-
- try {
- var putBuffer = Program.fetchArray(obj.putBuffer$fetchDesc,
- bufferPtr,
- modCfg.numMsgs);
- }
- catch(e) {
- throw (new Error("Error fetching putBuffer struct from shared memory"));
- }
-
- var i = getIndex;
-
- while (i != putIndex) {
- /* The event is registered */
- var elem = Program.newViewStruct(
- 'ti.sdo.ipc.family.f28m35x.NotifyDriverCirc',
- 'Events');
-
- elem.index = i;
- elem.buffer = bufferName;
- elem.addr = utils.toHex(putBuffer[i].$addr);
- elem.eventId = putBuffer[i].eventid;
- elem.payload = utils.toHex(putBuffer[i].payload);
-
- /* Create a new row in the instance data view */
- view.elements.$add(elem);
-
- i++;
- if ((i % modCfg.numMsgs) == 0) {
- i = 0;
- }
- }
-}
-
-
-/*
- * ======== viewInitData ========
- * Instance data view.
- */
-function viewInitData(view, obj)
-{
- var Program = xdc.useModule('xdc.rov.Program');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
-
- try {
- var notifyObj = Program.scanHandleView('ti.sdo.ipc.Notify',
- obj.notifyHandle, 'Basic');
- }
- catch (e) {
- throw (new Error("Error fetching Notify instance view"));
- }
-
- /* Display the instance label in the tree */
- view.label = "remoteProcId = " + obj.remoteProcId + " lineId = " +
- notifyObj.lineId;
-
- /* Fetch put/get index's */
- try {
- var putWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putWriteIndex " +
- "struct from shared memory"));
- }
-
- try {
- var putReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putReadIndex " +
- "struct from shared memory"));
- }
-
- try {
- var getWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getWriteIndex " +
- "struct from shared memory"));
- }
-
- try {
- var getReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getReadIndex " +
- "struct from shared memory"));
- }
-
- /* Get event data for the put buffer */
- getEventData(view, obj, obj.putBuffer, putWriteIndex.elem,
- putReadIndex.elem);
-
- /* Get event data for the get buffer */
- getEventData(view, obj, obj.getBuffer, getWriteIndex.elem,
- getReadIndex.elem);
-
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.c b/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.c ========
- */
-
-#include <string.h> /* for memcpy() */
-
-#include <xdc/std.h>
-#include <xdc/runtime/Assert.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/Memory.h>
-
-#include <ti/sysbios/hal/Hwi.h>
-#include <ti/sysbios/knl/Swi.h>
-#include <ti/sdo/ipc/interfaces/IMessageQTransport.h>
-
-#include <ti/sdo/ipc/family/f28m35x/IpcMgr.h>
-
-#include "package/internal/TransportCirc.xdc.h"
-
-#include <ti/sdo/utils/_MultiProc.h>
-#include <ti/sdo/ipc/_Notify.h>
-#include <ti/sdo/ipc/_MessageQ.h>
-
-/* Need to use reserved notify events */
-#undef TransportCirc_notifyEventId
-#define TransportCirc_notifyEventId \
- ti_sdo_ipc_family_f28m35x_TransportCirc_notifyEventId + \
- (UInt32)((UInt32)Notify_SYSTEMKEY << 16)
-
-/*
- *************************************************************************
- * Instance functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_Instance_init ========
- */
-Int TransportCirc_Instance_init(TransportCirc_Object *obj,
- UInt16 remoteProcId, const TransportCirc_Params *params,
- Error_Block *eb)
-{
- Int status;
- Bool flag;
- Swi_Handle swiHandle;
- Swi_Params swiParams;
- SizeT circBufSize;
-
- swiHandle = TransportCirc_Instance_State_swiObj(obj);
-
- /* init the object fields */
- obj->priority = params->priority;
- obj->remoteProcId = remoteProcId;
-
- /* construct the swi with lowest priority */
- Swi_Params_init(&swiParams);
- swiParams.arg0 = (UArg)obj;
- swiParams.priority = TransportCirc_swiPriority;
- Swi_construct(Swi_struct(swiHandle),
- (Swi_FuncPtr)TransportCirc_swiFxn,
- &swiParams, eb);
-
- /* calculate the circular buffer size one-way */
- circBufSize = TransportCirc_msgSize * TransportCirc_numMsgs;
-
- /* Init put/get buffer and index pointers. */
- obj->putBuffer = params->writeAddr;
-
- obj->putWriteIndex = (Bits32 *)((UInt32)obj->putBuffer + circBufSize);
-
- obj->getBuffer = params->readAddr;
-
- obj->getWriteIndex = (Bits32 *)((UInt32)obj->getBuffer + circBufSize);
-
- obj->putReadIndex = (Bits32 *)((UInt32)obj->getWriteIndex + sizeof(Bits32));
-
- obj->getReadIndex = (Bits32 *)((UInt32)obj->putWriteIndex + sizeof(Bits32));
-
- /* init the putWrite and getRead Index to 0 */
- obj->putWriteIndex[0] = 0;
- obj->getReadIndex[0] = 0;
-
- /* register the event with Notify */
- status = Notify_registerEventSingle(
- remoteProcId, /* remoteProcId */
- 0, /* lineId */
- TransportCirc_notifyEventId,
- (Notify_FnNotifyCbck)TransportCirc_notifyFxn,
- (UArg)swiHandle);
-
- if (status < 0) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (1);
- }
-
- /* Register the transport with MessageQ */
- flag = ti_sdo_ipc_MessageQ_registerTransport(
- TransportCirc_Handle_upCast(obj), remoteProcId, params->priority);
-
- if (flag == FALSE) {
- Error_raise(eb, IpcMgr_E_internal, 0, 0);
- return (2);
- }
-
- return (0);
-}
-
-/*
- * ======== TransportCirc_Instance_finalize ========
- */
-Void TransportCirc_Instance_finalize(TransportCirc_Object* obj, Int status)
-{
- Swi_Handle swiHandle;
-
- switch(status) {
- case 0:
- /* MessageQ_registerTransport succeeded */
- ti_sdo_ipc_MessageQ_unregisterTransport(obj->remoteProcId,
- obj->priority);
-
- /* OK to fall thru */
-
- case 1: /* Notify_registerEventSingle failed */
-
- /* OK to fall thru */
-
- case 2: /* MessageQ_registerTransport failed */
- Notify_unregisterEventSingle(
- obj->remoteProcId,
- 0,
- TransportCirc_notifyEventId);
- break;
- }
-
- /* Destruct the swi */
- swiHandle = TransportCirc_Instance_State_swiObj(obj);
- if (swiHandle != NULL) {
- Swi_destruct(Swi_struct(swiHandle));
- }
-}
-
-/*
- * ======== TransportCirc_put ========
- * Assuming MessageQ_put is making sure that the arguments are ok
- */
-Bool TransportCirc_put(TransportCirc_Object *obj, Ptr msg)
-{
- Int status;
- UInt msgSize;
- UInt hwiKey;
- Ptr writeAddr;
- UInt writeIndex, readIndex;
-
- do {
- /* disable interrupts */
- hwiKey = Hwi_disable();
-
- /* get the writeIndex and readIndex */
- readIndex = obj->putReadIndex[0];
- writeIndex = obj->putWriteIndex[0];
-
- /* if slot available 'break' out of loop */
- if (((writeIndex + 1) & TransportCirc_maxIndex) != readIndex) {
- break;
- }
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- } while (1);
-
- /* interrupts are disabled at this point */
-
- /* get a free buffer and copy the message into it */
- writeAddr = (Ptr)((UInt32)obj->putBuffer +
- (writeIndex * TransportCirc_msgSize));
-
- /* get the size of the message */
- msgSize = MessageQ_getMsgSize(msg);
-
- Assert_isTrue(msgSize <= TransportCirc_msgSize, IpcMgr_A_internal);
-
- /* copy message to the write buffer */
- memcpy(writeAddr, (Ptr)msg, msgSize);
-
- /* update the writeIndex */
- obj->putWriteIndex[0] = (writeIndex + 1) & TransportCirc_maxIndex;
-
- /* restore interrupts */
- Hwi_restore(hwiKey);
-
- /* free the app's message */
- if (((MessageQ_Msg)msg)->heapId != ti_sdo_ipc_MessageQ_STATICMSG) {
- MessageQ_free(msg);
- }
-
- /* Notify the remote processor */
- status = Notify_sendEvent(
- obj->remoteProcId,
- 0,
- TransportCirc_notifyEventId,
- (UInt32)NULL,
- FALSE);
-
- /* check the status of the sendEvent */
- if (status < 0) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-/*
- * ======== TransportCirc_control ========
- */
-Bool TransportCirc_control(TransportCirc_Object *obj, UInt cmd,
- UArg cmdArg)
-{
- return (FALSE);
-}
-
-/*
- * ======== TransportCirc_getStatus ========
- */
-Int TransportCirc_getStatus(TransportCirc_Object *obj)
-{
- return (0);
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_notifyFxn ========
- */
-Void TransportCirc_notifyFxn(UInt16 procId,
- UInt16 lineId,
- UInt32 eventId,
- UArg arg,
- UInt32 payload)
-{
- Swi_Handle swiHandle;
-
- /* Swi_Handle was passed as arg in register */
- swiHandle = (Swi_Handle)arg;
-
- /* post the Swi */
- Swi_post(swiHandle);
-}
-
-/*
- * ======== TransportCirc_swiFxn ========
- */
-Void TransportCirc_swiFxn(UArg arg)
-{
- UInt32 queueId;
- TransportCirc_Object *obj = (TransportCirc_Object *)arg;
- MessageQ_Msg msg = NULL;
- MessageQ_Msg buf = NULL;
- SizeT msgSize;
- UInt writeIndex, readIndex;
- UInt offset;
-
- /* Make sure the TransportCirc_Object is not NULL */
- Assert_isTrue(obj != NULL, IpcMgr_A_internal);
-
- /* get the writeIndex and readIndex */
- writeIndex = obj->getWriteIndex[0];
- readIndex = obj->getReadIndex[0];
-
- while (writeIndex != readIndex) {
- /* determine where the message from remote core is */
- offset = (readIndex * TransportCirc_msgSize);
-
- /* get the message */
- msg = (MessageQ_Msg)((UInt32)obj->getBuffer + offset);
-
-#ifdef xdc_target__isaCompatible_28
- /*
- * The message size needs to be halved because it was
- * specified in bytes and the units on the c28 is 16-bit
- * words.
- */
- msgSize = MessageQ_getMsgSize(msg) >> 1;
-#else
- /*
- * The message size needs to be doubled because it was
- * specified in 16-bit words and the units on the m3 is
- * in bytes.
- */
- msgSize = MessageQ_getMsgSize(msg) << 1;
-#endif
-
- /* alloc a message from msg->heapId to copy the msg to */
- buf = MessageQ_alloc(msg->heapId, msgSize);
-
- /* Make sure buf is not NULL */
- if (buf == NULL) {
- TransportCirc_module->errFxn(TransportCirc_Reason_FAILEDALLOC,
- ti_sdo_ipc_family_f28m35x_TransportCirc_Handle_upCast(obj),
- NULL,
- (UArg)msg);
-
- return;
- }
-
- /* copy the message to the buffer allocated, set the heap id */
- memcpy((Ptr)buf, (Ptr)msg, msgSize);
-
- /* overwrite the msgSize in the msg */
- buf->msgSize = msgSize;
-
- /* retrieve the detination queue id */
- queueId = MessageQ_getDstQueue(msg);
-
- /* put the message to the destination queue */
- MessageQ_put(queueId, buf);
-
- /* update the local readIndex. */
- readIndex = ((readIndex + 1) & TransportCirc_maxIndex);
-
- /* set the readIndex */
- obj->getReadIndex[0] = readIndex;
- }
-}
-
-/*
- *************************************************************************
- * Module functions
- *************************************************************************
- */
-
-/*
- * ======== TransportCirc_close ========
- */
-Void TransportCirc_close(TransportCirc_Handle *handle)
-{
- TransportCirc_delete(handle);
-}
-
-/*
- * ======== TransportCirc_sharedMemReq ========
- */
-SizeT TransportCirc_sharedMemReq(const TransportCirc_Params *params)
-{
- SizeT memReq;
-
- /* Ensure that params is non-NULL */
- Assert_isTrue(params != NULL, IpcMgr_A_internal);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer (msgSize * numMsgs) +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr +
- */
- memReq = (TransportCirc_msgSize * TransportCirc_numMsgs) +
- (2 * sizeof(Bits32));
-
- return (memReq);
-}
-
-/*
- * ======== TransportCirc_defaultErrFxn ========
- */
-Void TransportCirc_defaultErrFxn(IMessageQTransport_Reason reason,
- IMessageQTransport_Handle handle,
- Ptr ptr,
- UArg arg)
-{
-}
-
-/*
- * ======== TransportCirc_setErrFxn ========
- */
-Void TransportCirc_setErrFxn(TransportCirc_ErrFxn errFxn)
-{
- TransportCirc_module->errFxn = errFxn;
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.xdc b/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.xdc
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.xdc ========
- */
-
-import ti.sysbios.knl.Swi;
-import ti.sdo.ipc.interfaces.IMessageQTransport;
-
-import xdc.rov.ViewInfo;
-
-/*!
- * ======== TransportCirc ========
- * Transport for MessageQ that uses a circular buffer.
- *
- * This is a {@link ti.sdo.ipc.MessageQ} transport that utilizes shared
- * memory for passing messages between multiple processors.
- *
- * The transport utilizes shared memory in the manner indicated by the
- * following diagram.
- *
- * @p(code)
- *
- * NOTE: Processor '0' corresponds to the M3 and '1' corresponds to the C28
- *
- * sharedAddr -> --------------------------- bytes
- * | entry0 (0) [Put] | msgSize
- * | entry1 (0) | msgSize
- * | ... |
- * | entryN (0) | msgSize
- * | |
- * |-------------------------|
- * | putWriteIndex (0) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (1) | 4
- * | |
- * |-------------------------|
- * | entry0 (1) [Get] | msgSize
- * | entry1 (1) | msgSize
- * | ... |
- * | entryN (1) | msgSize
- * | |
- * |-------------------------|
- * | putWriteIndex (1) | 4
- * | |
- * |-------------------------|
- * | getReadIndex (0) | 4
- * | |
- * |-------------------------|
- *
- *
- * Legend:
- * (0), (1) : belongs to the respective processor
- * (N) : length of buffer
- *
- * @p
- */
-
-@InstanceFinalize
-@InstanceInitError
-
-module TransportCirc inherits IMessageQTransport
-{
- /*! @_nodoc */
- metaonly struct BasicView {
- String remoteProcName;
- }
-
- /*! @_nodoc */
- metaonly struct EventDataView {
- UInt index;
- String buffer;
- Ptr message;
- }
-
- /*!
- * ======== rovViewInfo ========
- */
- @Facet
- metaonly config ViewInfo.Instance rovViewInfo =
- ViewInfo.create({
- viewMap: [
- ['Basic',
- {
- type: ViewInfo.INSTANCE,
- viewInitFxn: 'viewInitBasic',
- structName: 'BasicView'
- }
- ],
- ['Events',
- {
- type: ViewInfo.INSTANCE_DATA,
- viewInitFxn: 'viewInitData',
- structName: 'EventDataView'
- }
- ],
- ]
- });
-
- /*!
- * ======== close ========
- * Close an opened instance
- *
- * Closing an instance will free local memory consumed by the opened
- * instance. Instances that are opened should be closed before the
- * instance is deleted.
- *
- * @param(handle) handle that is returned from an {@link #openByAddr}
- */
- Void close(Handle *handle);
-
- /*! @_nodoc
- * ======== notifyEventId ========
- * Notify event ID for transport.
- */
- config UInt16 notifyEventId = 2;
-
- /*! @_nodoc
- * ======== numMsgs ========
- * The maximum number of outstanding messages
- *
- * This number must be greater than 0 and a power of 2.
- * If the transport reaches this threshold, it spins waiting for
- * another message slot to be freed by the remote processor.
- */
- config UInt numMsgs = 4;
-
- /*! @_nodoc
- * ======== maxMsgSizeInBytes ========
- * The maximum message size (in bytes) that is supported
- */
- config UInt maxMsgSizeInBytes = 128;
-
- /*!
- * ======== swiPriority ========
- * The priority of the Transport Swi object created
- */
- config UInt swiPriority = 1;
-
- /*! @_nodoc
- * ======== sharedMemReq ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Number of MAUs needed to create the instance.
- */
- SizeT sharedMemReq(const Params *params);
-
- /*! @_nodoc
- * ======== sharedMemReqMeta ========
- * Amount of shared memory required for creation of each instance
- *
- * @param(params) Pointer to the parameters that will be used in
- * create.
- *
- * @a(returns) Size of shared memory in MAUs on local processor.
- */
- metaonly SizeT sharedMemReqMeta(const Params *params);
-
-instance:
-
- /*! @_nodoc
- * ======== openFlag ========
- * Set to 'true' by the open() call. No one else should touch this!
- */
- config Bool openFlag = false;
-
- /*!
- * ======== readAddr ========
- * Physical address of the read address in shared memory
- *
- * This address should be specified in the local processor's memory
- * space. It must point to the same physical write address of the
- * remote processor its communicating with.
- */
- config Ptr readAddr = null;
-
- /*!
- * ======== writeAddr ========
- * Physical address of the write address in shared memory
- *
- * This address should be specified in the local processor's memory
- * space. It must point to the same physical read address of the
- * remote processor its communicating with.
- */
- config Ptr writeAddr = null;
-
-internal:
-
- /*! The max index set to (numMsgs - 1) */
- config UInt maxIndex;
-
- /*!
- * The message size calculated based on the target.
- */
- config UInt msgSize;
-
- /*!
- * ======== defaultErrFxn ========
- * This is the default error function.
- *
- * This function is an empty function that does nothing.
- *
- * @param(reason) reason for error function
- * @param(handle) handle of transport that had error
- * @param(ptr) pointer to the message
- * @param(arg) argument passed to error function
- */
- Void defaultErrFxn(IMessageQTransport.Reason reason,
- IMessageQTransport.Handle handle, Ptr ptr, UArg arg);
-
- /*!
- * ======== swiFxn ========
- * This function takes the messages from the transport ListMP and
- * calls MessageQ_put to send them to their destination queue.
- * This function is posted by the NotifyFxn.
- *
- * @param(arg) argument for the function
- */
- Void swiFxn(UArg arg);
-
- /*!
- * ======== notifyFxn ========
- * This is a callback function registered with Notify. It is called
- * when a remote processor does a Notify_sendEvent(). It is executed
- * at ISR level. It posts the instance Swi object to execute swiFxn.
- *
- * @param(procId) remote processor id
- * @param(lineId) Notify line id
- * @param(eventId) Notify event id
- * @param(arg) argument for the function
- * @param(payload) 32-bit payload value.
- */
- Void notifyFxn(UInt16 procId, UInt16 lineId, UInt32 eventId, UArg arg,
- UInt32 payload);
-
- /* Instance State object */
- struct Instance_State {
- Ptr *putBuffer; /* buffer used to put message */
- Bits32 *putReadIndex; /* ptr to readIndex for put buffer */
- Bits32 *putWriteIndex; /* ptr to writeIndex for put buffer */
- Ptr *getBuffer; /* buffer used to get message */
- Bits32 *getReadIndex; /* ptr to readIndex for get buffer */
- Bits32 *getWriteIndex; /* ptr to writeIndex for put buffer */
- Swi.Object swiObj; /* Each instance has a swi */
- SizeT allocSize; /* Shared memory allocated */
- UInt16 remoteProcId; /* dst proc id */
- UInt16 priority; /* priority to register */
- };
-
- struct Module_State {
- ErrFxn errFxn; /* error function */
- };
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.xs b/packages/ti/sdo/ipc/family/f28m35x/TransportCirc.xs
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== TransportCirc.xs ========
- */
-
-var TransportCirc = null;
-var MessageQ = null;
-var Notify = null;
-var MultiProc = null;
-var Swi = null;
-
-/*
- * ======== module$use ========
- */
-function module$use()
-{
- TransportCirc = this;
- MessageQ = xdc.useModule("ti.sdo.ipc.MessageQ");
- Notify = xdc.useModule("ti.sdo.ipc.Notify");
- MultiProc = xdc.useModule("ti.sdo.utils.MultiProc");
- Swi = xdc.useModule("ti.sysbios.knl.Swi");
-}
-
-/*
- * ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
- var target = Program.build.target;
- var bitsPerByte = 8;
- var bitsPerChar = target.bitsPerChar;
-
- /* calculate the msgSize */
- TransportCirc.msgSize = TransportCirc.maxMsgSizeInBytes *
- (bitsPerByte / bitsPerChar);
-
- /* calculate the maxIndex */
- TransportCirc.maxIndex = TransportCirc.numMsgs - 1;
-
- /* determine numMsgs is a power of 2 */
- if (TransportCirc.numMsgs & (TransportCirc.maxIndex)) {
- TransportCirc.$logFatal("TransportCirc.numMsgs: " +
- TransportCirc.numMsgs +
- " is not a power of 2", TransportCirc);
- }
-
- if (params.errFxn != null) {
- mod.errFxn = params.errFxn;
- }
- else {
- mod.errFxn = TransportCirc.defaultErrFxn;
- }
-}
-
-/*
- * ======== module$validate ========
- */
-function module$validate()
-{
- if (Notify.numEvents <= TransportCirc.notifyEventId) {
- TransportCirc.$logFatal("TransportCirc.notifyEventId (" +
- TransportCirc.notifyEventId +
- ") is too big: Notify.numEvents = " + Notify.numEvents,
- TransportCirc);
- }
-}
-
-/*
- * ======== sharedMemReqMeta ========
- */
-function sharedMemReqMeta(params)
-{
- var target = Program.build.target;
- var bitsPerByte = 8;
- var bitsPerChar = target.bitsPerChar;
-
- /* calculate the msgSize */
- var msgSize = TransportCirc.maxMsgSizeInBytes *
- (bitsPerByte / bitsPerChar);
-
- /*
- * Amount of shared memory:
- * 1 putBuffer (msgSize * numMsgs) +
- * 1 putWriteIndex ptr +
- * 1 putReadIndex ptr +
- */
- var memReq = (msgSize * TransportCirc.numMsgs) +
- (2 * Program.build.target.stdTypes['t_Int32'].size);
-
- return (memReq);
-}
-
-/*
- *************************************************************************
- * ROV View functions
- *************************************************************************
- */
-
-/*
- * ======== viewInitBasic ========
- */
-function viewInitBasic(view, obj)
-{
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
- var MultiProcCfg = Program.getModuleConfig('ti.sdo.utils.MultiProc');
-
- /* view.remoteProcName */
- try {
- view.remoteProcName = MultiProc.getName$view(obj.remoteProcId -
- MultiProcCfg.baseIdOfCluster);
- }
- catch(e) {
- Program.displayError(view, 'remoteProcName',
- "Problem retrieving proc name: " + e);
- }
-}
-
-/*
- * ======== getEventData ========
- * Helper function for use within viewInitData
- */
-function getEventData(view, obj, bufferPtr, putIndex, getIndex)
-{
- var TransportCirc =
- xdc.useModule('ti.sdo.ipc.family.f28m35x.TransportCirc');
- var modCfg =
- Program.getModuleConfig('ti.sdo.ipc.family.f28m35x.TransportCirc');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
-
- if (bufferPtr == obj.putBuffer) {
- var bufferName = "put";
- }
- else {
- var bufferName = "get";
- }
-
- try {
- var putBuffer = Program.fetchArray(ScalarStructs.S_Bits32$fetchDesc,
- bufferPtr,
- modCfg.numMsgs);
- }
- catch(e) {
- throw (new Error("Error fetching putBuffer struct from shared memory"));
- }
-
- var i = getIndex;
-
- while (i != putIndex) {
- /* The event is registered */
- var elem = Program.newViewStruct(
- 'ti.sdo.ipc.family.f28m35x.TransportCirc',
- 'Events');
-
- elem.index = i;
- elem.buffer = bufferName;
- elem.message = utils.toHex(Number(bufferPtr) + (i * modCfg.msgSize));
-
- /* Create a new row in the instance data view */
- view.elements.$add(elem);
-
- i++;
- if ((i % modCfg.numMsgs) == 0) {
- i = 0;
- }
- }
-}
-
-
-/*
- * ======== viewInitData ========
- * Instance data view.
- */
-function viewInitData(view, obj)
-{
- var Program = xdc.useModule('xdc.rov.Program');
- var ScalarStructs = xdc.useModule('xdc.rov.support.ScalarStructs');
- var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
-
- /* Display the instance label in the tree */
- view.label = "remoteProcId = " + obj.remoteProcId;
-
- /* Fetch put/get index's */
- try {
- var putWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putWriteIndex struct from shared memory"));
- }
-
- try {
- var putReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.putReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching putReadIndex struct from shared memory"));
- }
-
- try {
- var getWriteIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getWriteIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getWriteIndex struct from shared memory"));
- }
-
- try {
- var getReadIndex = Program.fetchStruct(ScalarStructs.S_Bits32$fetchDesc,
- obj.getReadIndex);
- }
- catch(e) {
- throw (new Error("Error fetching getReadIndex struct from shared memory"));
- }
-
- /* Get event data for the put buffer */
- getEventData(view, obj, obj.putBuffer, putWriteIndex.elem, putReadIndex.elem);
-
- /* Get event data for the get buffer */
- getEventData(view, obj, obj.getBuffer, getWriteIndex.elem, getReadIndex.elem);
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/linkcmd.xdt b/packages/ti/sdo/ipc/family/f28m35x/linkcmd.xdt
+++ /dev/null
@@ -1,63 +0,0 @@
-%%{
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-%%}
-%%{
-/*
- * Add writeAddr with writeAddrSize to linker cmd file.
- * This is to prevent the user from placing other code/data
- * in the same memory location.
- */
-%%}
-%var IpcMgr = xdc.module("ti.sdo.ipc.family.f28m35x.IpcMgr");
-%
-%
-
-SECTIONS
-{
-% var readSectName = "ti.sdo.ipc.family.f28m35x.IpcMgr.readSect";
-% var writeSectName = "ti.sdo.ipc.family.f28m35x.IpcMgr.writeSect";
-% if (IpcMgr.genLinkerSections && (IpcMgr.readAddr || IpcMgr.writeAddr)) {
-% var readAddr = utils.toHex(IpcMgr.readAddr);
-% var writeAddr = utils.toHex(IpcMgr.writeAddr);
-% var len = utils.toHex(IpcMgr.sharedMemSizeUsed);
-%
-% if (Program.build.target.name.match(/C28.*/)) {
- `readSectName`: { . += `len`;} run > `readAddr` PAGE 1, type = NOLOAD
- `writeSectName`: { . += `len`;} run > `writeAddr` PAGE 1, type = NOLOAD
-% }
-% else {
- `readSectName`: { . += `len`;} run > `readAddr`, type = NOLOAD
- `writeSectName`: { . += `len`;} run > `writeAddr`, type = NOLOAD
-% }
-% }
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/package.bld b/packages/ti/sdo/ipc/family/f28m35x/package.bld
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * ======== package.bld ========
- */
-var Build = xdc.useModule('xdc.bld.BuildEnvironment');
-var Pkg = xdc.useModule('xdc.bld.PackageContents');
-var IpcBuild = xdc.loadCapsule("ti/sdo/ipc/Build.xs");
-
-var objList_28FP = [
- "IpcMgr.c",
- "NotifyDriverCirc.c",
- "NameServerBlock.c",
- "TransportCirc.c"
-];
-
-var trgFilter_28FP = {
- field: "isa",
- list: [ "28FP" ]
-};
-
-var objList_m3 = [
- "IpcMgr.c",
- "NotifyDriverCirc.c",
- "NameServerBlock.c",
- "TransportCirc.c"
-];
-
-var trgFilter_m3 = {
- field: "isa",
- list: [ "v7M" ]
-};
-
-/* if not building a product release, build package libraries */
-if (Bld_goal != "release") {
- IpcBuild.buildLibs(objList_28FP, undefined, trgFilter_28FP, arguments);
- IpcBuild.buildLibs(objList_m3, undefined, trgFilter_m3, arguments);
- IpcBuild.buildLibs(objList_28FP, undefined, trgFilter_28FP,
- ["profile=smp"]);
- IpcBuild.buildLibs(objList_m3, undefined, trgFilter_m3, ["profile=smp"]);
-}
-
-Pkg.otherFiles = [
- "package.bld",
- "linkcmd.xdt",
- "IpcMgr.c",
- "NotifyDriverCirc.c",
- "NameServerBlock.c",
- "TransportCirc.c"
-];
-
-/* include source files in the release package */
-Pkg.attrs.exportSrc = true;
-Pkg.attrs.exportCfg = true;
-
-Pkg.generatedFiles.$add("lib/");
diff --git a/packages/ti/sdo/ipc/family/f28m35x/package.xdc b/packages/ti/sdo/ipc/family/f28m35x/package.xdc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== package.xdc ========
- *
- */
-
-requires ti.sdo.ipc;
-
-/*!
- * ======== ti.sdo.ipc.family.f28m35x ========
- */
-package ti.sdo.ipc.family.f28m35x [1,0,0,0] {
- module IpcMgr;
- module NameServerBlock;
- module NotifyDriverCirc;
- module TransportCirc;
-}
diff --git a/packages/ti/sdo/ipc/family/f28m35x/package.xs b/packages/ti/sdo/ipc/family/f28m35x/package.xs
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * ======== package.xs ========
- *
- */
-
-var Build = null;
-
-/*
- * ======== package.close ========
- */
-function close()
-{
- if (xdc.om.$name != 'cfg') {
- return;
- }
-
- Build = xdc.useModule('ti.sdo.ipc.Build');
-}
-
-/*
- * ======== Package.getLibs ========
- * This function is called when a program's configuration files are
- * being generated and it returns the name of a library appropriate
- * for the program's configuration.
- */
-function getLibs(prog)
-{
- var BIOS = xdc.module('ti.sysbios.BIOS');
- var libPath;
- var suffix;
-
- if (Build.libType == Build.LibType_PkgLib) {
- /* lib path defined in Build.buildLibs() */
- libPath = (BIOS.smpEnabled ? "lib/smpipc/debug" : "lib/ipc/debug");
-
- /* find a compatible suffix */
- if ("findSuffix" in prog.build.target) {
- suffix = prog.build.target.findSuffix(this);
- }
- else {
- suffix = prog.build.target.suffix;
- }
- return (libPath + "/" + this.$name + ".a" + suffix);
- }
- else {
- return (Build.getLibs(this));
- }
-}
-
-/*
- * ======== Package.getSects ========
- */
-function getSects()
-{
- return "ti/sdo/ipc/family/f28m35x/linkcmd.xdt";
-}
index c05f66e01d3194e3f6c2b9a4d5f55b2d7bef306f..60a314c173bf4fff56dbbf1b76c750522e213cf7 100644 (file)
var BIOS = null;
var Build = null;
-var custom28xOpts = " -q -mo ";
var custom6xOpts = " -q -mi10 -mo -pdr -pden -pds=238 -pds=880 -pds1110 ";
var customARP32xOpts = " -q --gen_func_subsections ";
var customArmOpts = " -q -ms --opt_for_speed=2 ";
var customGnuArmA15Opts = " ";
var ccOptsList = {
- "ti.targets.C28_large" : custom28xOpts,
- "ti.targets.C28_float" : custom28xOpts,
"ti.targets.C64P" : custom6xOpts,
"ti.targets.elf.C64P" : custom6xOpts,
"ti.targets.C64P_big_endian" : custom6xOpts,
diff --git a/products.mak b/products.mak
index 89bc0de60c133b6007d50340ca6a79e75bb28f88..9ea07e38ad9356e6037ce89581b16134dfdbb477 100644 (file)
--- a/products.mak
+++ b/products.mak
# Path to various cgtools
#
-ti.targets.C28_large =
-ti.targets.C28_float =
-
ti.targets.elf.C64P =
ti.targets.elf.C64P_big_endian =
ti.targets.elf.C64T =