author | Ming Wei <mwei@ti.com> | |
Fri, 10 Jun 2016 21:33:46 +0000 (16:33 -0500) | ||
committer | Ming Wei <mwei@ti.com> | |
Fri, 10 Jun 2016 21:33:46 +0000 (16:33 -0500) |
Signed-off-by: Ming Wei <mwei@ti.com>
137 files changed:
diff --git a/Version.h b/Version.h
--- /dev/null
+++ b/Version.h
@@ -0,0 +1,98 @@
+/*
+ * Do not modify this file; it is automatically
+ * generated and any modifications will be overwritten.
+ *
+ * @(#) xdc-t35
+ */
+
+/*
+ * ======== GENERATED SECTIONS ========
+ *
+ * PROLOGUE
+ * INCLUDES
+ * EPILOGUE
+ * PREFIX ALIASES
+ */
+
+
+/*
+ * ======== PROLOGUE ========
+ */
+
+#ifndef ti_mas_vpe_Version__include
+#define ti_mas_vpe_Version__include
+
+#ifndef __nested__
+#define __nested__
+#define ti_mas_vpe_Version__top__
+#endif
+
+#ifdef __cplusplus
+#define __extern extern "C"
+#else
+#define __extern extern
+#endif
+
+#define ti_mas_vpe_Version___VERS 150
+
+
+/*
+ * ======== INCLUDES ========
+ */
+
+
+
+/*
+ * ======== AUXILIARY DEFINITIONS ========
+ */
+
+/* MAJOR */
+#define ti_mas_vpe_Version_MAJOR (3)
+
+/* MINOR */
+#define ti_mas_vpe_Version_MINOR (6)
+
+/* XVERTICAL */
+#define ti_mas_vpe_Version_XVERTICAL (0)
+
+/* PATCH */
+#define ti_mas_vpe_Version_PATCH (0)
+
+/* BUILD */
+#define ti_mas_vpe_Version_BUILD (0)
+
+/* QUALITY */
+#define ti_mas_vpe_Version_QUALITY (3)
+
+/* BTYPE */
+#define ti_mas_vpe_Version_BTYPE (0)
+
+/* WIDTH */
+#define ti_mas_vpe_Version_WIDTH (0)
+
+/*
+ * ======== EPILOGUE ========
+ */
+
+#ifdef ti_mas_vpe_Version__top__
+#undef __nested__
+#endif
+
+#endif /* ti_mas_vpe_Version__include */
+
+/*
+ * ======== PREFIX ALIASES ========
+ */
+
+#if !defined(__nested__) && !defined(ti_mas_vpe_Version__nolocalnames)
+
+/* module prefix */
+#define Version_MAJOR ti_mas_vpe_Version_MAJOR
+#define Version_MINOR ti_mas_vpe_Version_MINOR
+#define Version_XVERTICAL ti_mas_vpe_Version_XVERTICAL
+#define Version_PATCH ti_mas_vpe_Version_PATCH
+#define Version_BUILD ti_mas_vpe_Version_BUILD
+#define Version_QUALITY ti_mas_vpe_Version_QUALITY
+#define Version_BTYPE ti_mas_vpe_Version_BTYPE
+#define Version_WIDTH ti_mas_vpe_Version_WIDTH
+#endif
diff --git a/Version.xdc b/Version.xdc
--- /dev/null
+++ b/Version.xdc
@@ -0,0 +1,59 @@
+/*
+ * DO NOT MODIFY THIS FILE
+ * This file is generated by this package's build script (package.bld).
+ */
+/*!
+ * ======== Version ========
+ * Version for the ti.mas.vpe package
+ */
+metaonly module Version inherits ti.mas.swtools.IVersion2 {
+
+ /*
+ * ======== MAJOR ========
+ * Major version number of ti.mas.vpe
+ */
+ override const UInt16 MAJOR = 3;
+
+ /*
+ * ======== MINOR ========
+ * Minor version number of ti.mas.vpe
+ */
+ override const UInt16 MINOR = 6;
+
+ /*
+ * ======== PATCH ========
+ * Patch level of ti.mas.vpe
+ */
+ override const UInt16 PATCH = 0;
+
+ /*
+ * ======== BUILD ========
+ * Build Number of ti.mas.vpe
+ */
+ const UInt16 BUILD = 0;
+
+ /*
+ * ======== QUALITY ========
+ * Quality level of ti.mas.vpe
+ */
+ override const UInt16 QUALITY = 3;
+
+ /*
+ * ======== BTYPE ========
+ * Built type of ti.mas.vpe
+ */
+ override const UInt16 BTYPE = 0;
+
+ /*
+ * ======== WIDTH ========
+ * Minimum print width for ti.mas.vpe
+ */
+ override const UInt16 WIDTH = 0;
+
+ /*
+ * ======== PACKAGING STD COMPLIANCE ========
+ * Packaging Standard Compliance field
+ */
+ const UInt16 PKGSTD = 2;
+
+}
diff --git a/asnr.h b/asnr.h
--- /dev/null
+++ b/asnr.h
@@ -0,0 +1,523 @@
+/******************************************************************************\r
+ * FILE PURPOSE: Adaptive Spectral Noise Reduction (ASNR) module\r
+ * \r
+ ******************************************************************************\r
+ * FILE NAME: asnr.h \r
+ *\r
+ * DESCRIPTION: Implements adaptive noise reduction in frequency domain. \r
+ *\r
+ * Copyright (c) 2007 – 2013 Texas Instruments Incorporated \r
+ * \r
+ * All rights reserved not granted herein. \r
+ * \r
+ * Limited License. \r
+ * \r
+ * Texas Instruments Incorporated grants a world-wide, royalty-free, \r
+ * non-exclusive license under copyrights and patents it now or hereafter owns \r
+ * or controls to make, have made, use, import, offer to sell and sell \r
+ * ("Utilize") this software subject to the terms herein. With respect to the \r
+ * foregoing patent license, such license is granted solely to the extent that \r
+ * any such patent is necessary to Utilize the software alone. The patent \r
+ * license shall not apply to any combinations which include this software, \r
+ * other than combinations with devices manufactured by or for TI (“TI \r
+ * Devices”). No hardware patent is licensed hereunder. \r
+ * \r
+ * Redistributions must preserve existing copyright notices and reproduce this \r
+ * license (including the above copyright notice and the disclaimer and (if \r
+ * applicable) source code license limitations below) in the documentation \r
+ * and/or other materials provided with the distribution \r
+ * \r
+ * Redistribution and use in binary form, without modification, are permitted \r
+ * provided that the following conditions are met: \r
+ * \r
+ * * No reverse engineering, decompilation, or disassembly of this software \r
+ * is permitted with respect to any software provided in binary form. \r
+ * \r
+ * * any redistribution and use are licensed by TI for use only with TI \r
+ * Devices. \r
+ * \r
+ * * Nothing shall obligate TI to provide you with source code for the \r
+ * software licensed and provided to you in object code. \r
+ * \r
+ * If software source code is provided to you, modification and redistribution \r
+ * of the source code are permitted provided that the following conditions are \r
+ * met: \r
+ * \r
+ * * any redistribution and use of the source code, including any resulting \r
+ * derivative works, are licensed by TI for use only with TI Devices. \r
+ * \r
+ * * any redistribution and use of any object code compiled from the source \r
+ * code and any resulting derivative works, are licensed by TI for use only \r
+ * with TI Devices. \r
+ * \r
+ * Neither the name of Texas Instruments Incorporated nor the names of its \r
+ * suppliers may be used to endorse or promote products derived from this \r
+ * software without specific prior written permission. \r
+ * \r
+ * DISCLAIMER. \r
+ * \r
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS \r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE \r
+ * DISCLAIMED. IN NO EVENT SHALL TI AND TI’S LICENSORS BE LIABLE FOR ANY \r
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \r
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR \r
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER \r
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT \r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY \r
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH \r
+ * DAMAGE. \r
+ *****************************************************************************/\r
+#ifndef _ASNR_H\r
+#define _ASNR_H\r
+\r
+/**\r
+ * @file asnr.h\r
+ * @brief Contains external API for the Adaptive Spectral Noise Reduction \r
+ * (ASNR) module.\r
+ *\r
+ */\r
+\r
+/* System include files and utilities' APIs */\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+#include <ti/mas/util/ecomem.h> /* memory descriptor structure */\r
+\r
+/* Define ASNR Module as a master group in Doxygen format and add all ASNR API\r
+ definitions to this group. */\r
+/** @defgroup asnr_module ASNR Module API\r
+ * @{\r
+ */\r
+/** @} */\r
+\r
+/** @defgroup asnr_api_functions ASNR Functions\r
+ * @ingroup asnr_module\r
+ */\r
+\r
+/** @defgroup asnr_api_structures ASNR Data Structures\r
+ * @ingroup asnr_module\r
+ */\r
+\r
+/** @defgroup asnr_api_constants ASNR Constants (enum's and define's)\r
+ * @ingroup asnr_module\r
+ */\r
+\r
+/** @defgroup asnr_api_return_codes ASNR API Function Return Codes\r
+ * @ingroup asnr_api_constants\r
+ * @{\r
+ *\r
+ * Error codes returned by ASNR API functions.\r
+ */\r
+/*@{*/\r
+enum {\r
+ asnr_NOERR = 0, /**< success, no error */\r
+ asnr_ERR_NOMEMORY = 1, /**< supplied memory are not enough */\r
+ asnr_ERR_NOTOPENED = 2, /**< asnr instance has not been opened yet */\r
+ asnr_ERR_NOTCLOSED = 3, /**< asnr instance has not been closed yet */\r
+ asnr_ERR_INVALIDPAR = 4, /**< configuration parameter is invalid */\r
+ asnr_ERR_INVALIDNBUFS = 5 /**< incorrect number of memory buffers */\r
+};\r
+/*@}*/\r
+/** @} */\r
+\r
+\r
+/** @defgroup ASNR_samp_rate ASNR Sampling Rates Definitions\r
+ * @ingroup asnr_api_constants\r
+ * @{\r
+ *\r
+ * Sampling rates that are supported by ASNR. Used to define sampling_rate\r
+ * of \ref asnrOpenConfig_t, asnrSizeConfig_t, and asnrControl_t.\r
+*/\r
+/*@{*/\r
+enum {\r
+ asnr_SRATE_8K = 0, /**< 8kHz */\r
+ asnr_SRATE_16K = 1 /**< 16kHz */\r
+};\r
+\r
+\r
+typedef tint asnrSrate_t; /**< used by \ref asnrOpenConfig_t,\r
+ asnrSizeConfig_t, and asnrControl_t */\r
+/*@}*/\r
+/** @} */\r
+\r
+/**\r
+ * @ingroup asnr_api_structures\r
+ *\r
+ * @brief Configuration structure for asnrGetSizes()\r
+ * \brief This structure specifies the maximum sampling rate. It is also\r
+ * part of structure asnrNewConfig_s used by asnrNew().\r
+ */\r
+typedef struct asnrSizeConfig_s {\r
+\r
+ asnrSrate_t max_sampling_rate; /**< Maximum sampling rate of the system:\r
+ 8kHz: set to asnr_SRATE_8K.\r
+ 16kHz: set to asnr_SRATE_16K. */\r
+} asnrSizeConfig_t;\r
+\r
+/**\r
+ * @ingroup asnr_api_structures\r
+ *\r
+ * @brief Configuration structure for asnrNew()\r
+ * \brief This structure is used for creating a new ASNR instance through\r
+ * function asnrNew().\r
+ */\r
+typedef struct asnrNewConfig_s {\r
+ void *handle; /**< handle can be used by a user to identify the \r
+ ASNR that communicates to it, e.g. when a \r
+ debug call out function is called by a certain \r
+ ASNR instance. */\r
+ asnrSizeConfig_t sizeCfg; /**< size configration */\r
+} asnrNewConfig_t;\r
+\r
+\r
+/**\r
+ * @ingroup asnr_api_structures\r
+ *\r
+ * @brief Configuration structure for asnrOpen()\r
+ * \brief This structure contains ASNR parameters that must be configured \r
+ * through asnrOpen(). \r
+ */\r
+typedef struct asnrOpenConfig_s {\r
+\r
+ asnrSrate_t sampling_rate; /**< Sampling rate of the system:\r
+ 8kHz: set to asnr_SRATE_8K.\r
+ 16kHz: set to asnr_SRATE_16K. */\r
+} asnrOpenConfig_t;\r
+\r
+\r
+/**\r
+ * @ingroup asnr_api_structures\r
+ *\r
+ * @brief Configuration structure for asnrControl()\r
+ * \brief This structure contains ASNR parameters that can be configured \r
+ * through asnrControl(). \r
+ */\r
+typedef struct asnrControl_s {\r
+ tuint valid_bitfield; /**< To indicate which parameters to be changed */\r
+#define asnr_CTL_VALID_ENABLE 0x0001\r
+#define asnr_CTL_VALID_SAMP_RATE 0x0002\r
+#define asnr_CTL_VALID_DELAY 0x0004\r
+#define asnr_CTL_VALID_BAND_BIN1 0x0008\r
+#define asnr_CTL_VALID_BAND_BIN2 0x0010\r
+#define asnr_CTL_VALID_BAND1_MAX_ATTEN 0x0020\r
+#define asnr_CTL_VALID_BAND2_MAX_ATTEN 0x0040\r
+#define asnr_CTL_VALID_BAND3_MAX_ATTEN 0x0080\r
+#define asnr_CTL_VALID_SIG_UPD_RATE_MIN 0x0100\r
+#define asnr_CTL_VALID_SIG_UPD_RATE_MAX 0x0200\r
+#define asnr_CTL_VALID_NOISE_THRESH 0x0400\r
+#define asnr_CTL_VALID_NOISE_HANGOVER 0x0800\r
+\r
+ tint enable; /**< <B>Enable flag:</B> 0 - disable ASNR, 1 - enable ASNR.*/\r
+#define asnr_DISABLE 0 \r
+#define asnr_ENABLE 1\r
+ \r
+ tint samp_rate; /**< <B>Sampling rate:</B> asnr_SRATE_8K or asnr_SRATE_16K.*/\r
+ \r
+ tint delay; /**< <B>Signal delay:</B>\r
+ This parameter specifies signal delay in msecs, which determines the \r
+ shape of FFT windowing function. It may be 3, 4, 5, or 6 (ms). ASNR may \r
+ produce less unwanted noise and speech artifacts with a longer delay. \r
+ Default is 5. \r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_DELAY_LOWER_LIMIT \ref asnr_DELAY_UPPER_LIMIT], \r
+ asnrControl() will take no action and return an error. */\r
+#define asnr_DELAY_LOWER_LIMIT 3\r
+#define asnr_DELAY_UPPER_LIMIT 6\r
+\r
+ tint band_bin1; /**< <B>Frequency bands boundary bin 1:</B>\r
+ This parameter defines the first boundary of frequency bands for which \r
+ different amount of noise attenuation is applied. The corresponding \r
+ frequency is (parameter value)*62.5Hz. Default is 10 (625Hz).\r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_BAND_BIN_LOWER_LIMIT \ref asnr_BAND_BIN_UPPER_LIMIT_8K] for 8kHz, \r
+ or [\ref asnr_BAND_BIN_LOWER_LIMIT \ref asnr_BAND_BIN_UPPER_LIMIT_16K] \r
+ for 16kHz, asnrControl() will take no action and return an error. */\r
+#define asnr_BAND_BIN_LOWER_LIMIT 1\r
+#define asnr_BAND_BIN_UPPER_LIMIT_8K 63\r
+#define asnr_BAND_BIN_UPPER_LIMIT_16K 127\r
+\r
+ tint band_bin2; /**< <B>Frequency bands boundary bin 2:</B> \r
+ This parameter defines the second boundary of frequency bands for which \r
+ different amount of noise attenuation is applied. It must be larger than\r
+ band_bin1. Default is 32 (2000Hz). \r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_BAND_BIN_LOWER_LIMIT \ref asnr_BAND_BIN_UPPER_LIMIT_8K] for 8kHz, \r
+ or [\ref asnr_BAND_BIN_LOWER_LIMIT \ref asnr_BAND_BIN_UPPER_LIMIT_16K], \r
+ or if it is smaller than band_bin1, asnrControl() will take no action and \r
+ return an error. */\r
+ \r
+ Fract band1_max_atten; /**< <B>Maximum attenuation in band 1:</B>\r
+ </B> This parameter specifies the maximum attenuation (dB) that ASNR may \r
+ apply for frequency band 1 - [0, band_bin1-1]*62.5 Hz. Default is 9(dB). \r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_MAX_ATTEN_LOWER_LIMIT \ref asnr_MAX_ATTEN_UPPER_LIMIT], \r
+ asnrControl() will take no action and return an error. */\r
+#define asnr_MAX_ATTEN_LOWER_LIMIT 0\r
+#define asnr_MAX_ATTEN_UPPER_LIMIT 90\r
+ \r
+ Fract band2_max_atten; /**< <B>Maximum attenuation in band 2:</B>\r
+ </B> This parameter specifies the maximum attenuation (dB) that ASNR may \r
+ apply for frequency band 2 - [band_bin1, band_bin2-1]*62.5 Hz. \r
+ Default is 9(dB). \r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_MAX_ATTEN_LOWER_LIMIT \ref asnr_MAX_ATTEN_UPPER_LIMIT], \r
+ asnrControl() will take no action and return an error. */\r
+ \r
+ Fract band3_max_atten; /**< <B>Maximum attenuation in band 3:</B>\r
+ </B> This parameter specifies the maximum attenuation (dB) that ASNR may \r
+ apply for frequency band 3 - [band_bin2*62.5Hz, Nyquist]. \r
+ Default is 9(dB). \r
+ *\r
+ \remark If this parameter is out of the valid range specified by\r
+ [\ref asnr_MAX_ATTEN_LOWER_LIMIT \ref asnr_MAX_ATTEN_UPPER_LIMIT], \r
+ asnrControl() will take no action and return an error. */\r
+\r
+ Fract sig_upd_rate_max; /**< <B>Maximum signal update rate:</B>\r
+ ASNR adaptive speech signal estimate inverse update rate upper bound.\r
+ The actual inverse update rate is varied internally by ASNR between \r
+ the configured maximum (this parameter) and mimimum constraints. A higher \r
+ inverse update rate reduces frame to frame changes yielding greater \r
+ temporal smoothing and less time varying ASNR distortion artifacts during \r
+ speech or noise. A lower inverse update rate yields quicker speech onset \r
+ "breaking in" to remove ASNR attenuation. \r
+ *\r
+ This parameter is in Q.15 format. Default is 31129 (0.95). \r
+ *\r
+ \remark If this parameter is smaller than sig_upd_rate_min, asnrControl() \r
+ will take no action and return an error. */\r
+\r
+ Fract sig_upd_rate_min; /**< <B>Minimum signal update rate:</B> \r
+ This is the minimum constraint on the ASNR adaptive speech signal estimate \r
+ inverse update rate.\r
+ *\r
+ This parameter is in Q.15 format. Default is 29818 (0.91). */\r
+\r
+ tint noise_thresh; /**< <B>Noise threshold:</B>\r
+ ASNR will not reduce noise below this level, and when noise is already \r
+ lower than this level, ASNR will not apply any attenuation to the signal. \r
+ ASNR spectral noise estimate will continue to update even if Tx signal \r
+ is below this noise threshold.\r
+ *\r
+ This parameter is in dBm0. Default is -75dBm0. Valid range is specified \r
+ by [\ref asnr_NOISE_THR_LOWER_LIMIT, \ref asnr_NOISE_THR_UPPER_LIMIT]. If \r
+ it is outside of this range, asnrControl() will take no action and return \r
+ an error. */\r
+#define asnr_NOISE_THR_LOWER_LIMIT (-80)\r
+#define asnr_NOISE_THR_UPPER_LIMIT (-40)\r
+\r
+ tint noise_hangover; /**< <B>Noise hangover:</B>\r
+ When noise is lower than parameter noise_thresh, ASNR will not apply any \r
+ attenuation to the signal. After noise goes above noise_thresh, ASNR \r
+ waits a period of time specified by this parameter before applying \r
+ attenuation again. \r
+ *\r
+ This parameter is in 10 msec units. Default is 150 (1.5 seconds). */ \r
+\r
+} asnrControl_t;\r
+ \r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrGetSizes() obtains the memory requirements of an ASNR\r
+ * instance.\r
+ *\r
+ * @param[in] cfg Pointer to a size configuration structure.\r
+ * @param[out] nbufs Memory location to store the returned number of buffers\r
+ * required by the instance.\r
+ * @param[out] bufs Memory location to store the returned address of the\r
+ * vector of memory buffer descriptions required by the\r
+ * instance.\r
+ * @remark Type ecomemBuffer_t is defined in ecomem.h of util package.\r
+ *\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_INVALIDPAR max_sampling_rate of asnrSizeConfig_t is neither \r
+ asnr_SRATE_8K nor asnr_SRATE_16K. \r
+ \endverbatim\r
+ *\r
+ */\r
+\r
+tint asnrGetSizes(tint *nbufs, const ecomemBuffer_t **bufs, asnrSizeConfig_t *cfg);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrNew() creates a new ASNR instance.\r
+ * \remark Function asnrNew() must be called before asnrOpen()is called.\r
+ *\r
+ * @param[in,out] asnrInst Memory location that will receive a pointer to\r
+ * the created ASNR instance.\r
+ * @param[in] nbufs Number of memory buffers allocated by the user.\r
+ * @param[in] bufs Pointer to memory buffer descriptors defined by\r
+ * the user.\r
+ * \remark Buffer alignment property of each buffer passed to asnrNew() must be\r
+ * equal to or better than what is returned by asnrGetSizes(), and must\r
+ * be in consistency with the base address of the buffer.\r
+ *\r
+ * @param[in] cfg Pointer to new instance configuration structure.\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_INVALIDPAR *asnrInst is not NULL or nbufs is not correct\r
+ asnr_ERR_NOMEMORY properties of one or more buffers are bad:\r
+ - size is less than what's requested\r
+ - size is not zero but base address is NULL,\r
+ - alignment and base address are not consistent,\r
+ - volatility does not meet requirement.\r
+ \endverbatim\r
+ *\r
+ * @pre The pointer at the location pointed to by asnrInst must be set to NULL\r
+ * before this function is called.\r
+ * @post A pointer to the created instance will be returned to the location\r
+ * pointed to by asnrInst. Instance state will be set to closed.\r
+ */\r
+tint asnrNew(void **asnrInst, tint nbufs, ecomemBuffer_t *bufs, asnrNewConfig_t *cfg);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrDelete() deletes the ASNR instance identified by asnrInst\r
+ * and returns the addresses of those buffers used by this instance.\r
+ *\r
+ * @param[in] nbufs Number of buffers used by this instance.\r
+ * @param[in,out] asnrInst Memory location where the pointer to ASNR instance\r
+ * is stored.\r
+ * @param[in,out] bufs Pointer to buffer descriptors to store returned\r
+ * addresses of the buffers used by this instance.\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_NOTCLOSED ASNR instance has not been closed.\r
+ asnr_ERR_INVALIDNBUFS incorrect number of memory buffers\r
+ \endverbatim\r
+ *\r
+ * @pre ASNR instance must be closed by asnrClose() before asnrDelete() is called.\r
+ * @post After asnrDelete() is called, ASNR instance pointer stored at asnrInst\r
+ will be set to NULL, and the addresses of the buffers used by this\r
+ instance will be returned to the location pointed to by bufs.\r
+ */\r
+tint asnrDelete(void **asnrInst, tint nbufs, ecomemBuffer_t *bufs);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrOpen() initializes and configures an ASNR instance.\r
+ *\r
+ * @remark This function may be called after asnrNew() to initialize a new ASNR\r
+ * instance. It may also be called to reconfigure an instance that\r
+ * has been closed by asnrClose() but not deleted by asnrDelete().\r
+ *\r
+ * @param[in] cfg Pointer to ASNR configuration parameter.\r
+ * @param[in] asnrInst Pointer to ASNR instance.\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_INVALIDPAR sampling rate is larger than max_sampling_rate of \r
+ asnrSizeConfig_t.\r
+ \endverbatim\r
+ *\r
+ * @pre Function asnrNew() must be called before asnrOpen() is called the first\r
+ * time to open a new instance. For subsequent calls to open an existing\r
+ * instance, asnrClose() must be called before asnrOpen() to close the\r
+ * instance.\r
+ * @post After ASNR instance is opened, asnrControl() or asnrProcess() may be\r
+ * called for control or processing.\r
+ *\r
+ */\r
+tint asnrOpen(void *inst, asnrOpenConfig_t *cfg);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrClose() closes an ASNR instance.\r
+ * \remark Function asnrClose() must be called before asnrDelete() is called.\r
+ *\r
+ * @param[in] asnrInst pointer to the instance to be closed\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_NOTOPENED ASNR instance is not in open state\r
+ \endverbatim\r
+ *\r
+ */\r
+tint asnrClose(void *asnrInst);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrControl() enables/disables ASNR or changes one or more\r
+ * parameters.\r
+ *\r
+ * @param[in] asnrInst Pointer to ASNR instance.\r
+ * @param[in] ctl Pointer to ASNR control structure. \r
+ *\r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_NOTOPENED ASNR instance has not been opened\r
+ asnr_ERR_INVALIDPAR Parameters are out of the allowed range.\r
+ \endverbatim\r
+ *\r
+ */\r
+tint asnrControl(void *asnrInst, asnrControl_t *ctl);\r
+\r
+/**\r
+ * @ingroup asnr_api_functions\r
+ *\r
+ * @brief Function asnrProcess() performs noise reduction processing on one \r
+ * frame of data.\r
+ *\r
+ * @param[in] asnrInst Pointer to ASNR instance.\r
+ * @param[in] *input Input buffer. \r
+ * @param[out] *output Output buffer. \r
+ *\r
+ * \remark Input must be one frame of 16-bit linear samples. Frame length MUST\r
+ * be 10msec. Output are also one frame of 16-bit linear samples.\r
+ *\r
+ * \remark Input and output pointers can be the same (in place processing) or\r
+ * different (out of place processing). \r
+ * @retval ASNR error code. \r
+ * @verbatim\r
+ error code description\r
+ asnr_NOERR success\r
+ asnr_ERR_INVALIDPAR either input buffer or output buffer is NULL\r
+ \endverbatim\r
+ *\r
+ */\r
+tint asnrProcess(void *asnrInst,void *input,void *output);\r
+\r
+/* -------------------------- ASNR Call Table -------------------------------- */\r
+/**\r
+ * @ingroup asnr_api_structures\r
+ *\r
+ * @brief ASNR call table\r
+ *\r
+ */\r
+typedef struct {\r
+ tint (*asnrGetSizes) (tint *nbufs, const ecomemBuffer_t **bufs, \r
+ asnrSizeConfig_t *cfg);\r
+ tint (*asnrNew) (void **asnrInst, tint nbufs, ecomemBuffer_t *bufs, \r
+ asnrNewConfig_t *cfg);\r
+ tint (*asnrDelete) (void **asnrInst, tint nbufs, ecomemBuffer_t *bufs);\r
+ tint (*asnrOpen) (void *inst, asnrOpenConfig_t *cfg);\r
+ tint (*asnrClose) (void *asnrInst);\r
+ tint (*asnrControl) (void *asnrInst, asnrControl_t *ctl);\r
+ tint (*asnrProcess) (void *asnrInst,void *input,void *output);\r
+} asnrCallTable_t;\r
+\r
+#endif\r
+\r
+/* nothing past this point */\r
+\r
diff --git a/gel/DA830_DSK_USB560M.ccxml b/gel/DA830_DSK_USB560M.ccxml
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<configurations XML_version="1.2" id="configurations_0">\r
+ <configuration XML_version="1.2" id="Blackhawk USB560-M Emulator_0">\r
+ <instance XML_version="1.2" desc="Blackhawk USB560-M Emulator_0" href="connections/BH-USB560m_Connection.xml" id="Blackhawk USB560-M Emulator_0" xml="BH-USB560m_Connection.xml" xmlpath="connections"/>\r
+ <connection XML_version="1.2" id="Blackhawk USB560-M Emulator_0">\r
+ <instance XML_version="1.2" href="drivers/tixds560icepick_c.xml" id="drivers" xml="tixds560icepick_c.xml" xmlpath="drivers"/>\r
+ <instance XML_version="1.2" href="drivers/tixds560c674x.xml" id="drivers" xml="tixds560c674x.xml" xmlpath="drivers"/>\r
+ <instance XML_version="1.2" href="drivers/tixds560arm9.xml" id="drivers" xml="tixds560arm9.xml" xmlpath="drivers"/>\r
+ <instance XML_version="1.2" href="drivers/tixds560etb11.xml" id="drivers" xml="tixds560etb11.xml" xmlpath="drivers"/>\r
+ <platform XML_version="1.2" id="platform_0">\r
+ <instance XML_version="1.2" desc="DSKDA830_0" href="boards/dskda830.xml" id="DSKDA830_0" xml="dskda830.xml" xmlpath="boards"/>\r
+ <board XML_version="1.2" description="Spectrum Digital DA830 DSK Board" id="DSKDA830_0">\r
+ <device HW_revision="1" XML_version="1.2" description="Performance Audio Device" id="DA830/DA828_0" partnum="DA830/DA828">\r
+ <router HW_revision="1.0" XML_version="1.2" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">\r
+ <subpath id="DSP">\r
+ <cpu HW_revision="1.0" XML_version="1.2" description="TMS320C6747" id="TMS320C6747" isa="TMS320C674X">\r
+ <property Type="filepathfield" Value="./dskda830_dsp.gel" id="GEL File"/>\r
+ </cpu>\r
+ </subpath>\r
+ </router>\r
+ </device>\r
+ </board>\r
+ </platform>\r
+ </connection>\r
+ </configuration>\r
+</configurations>\r
diff --git a/gel/dskda830_dsp.gel b/gel/dskda830_dsp.gel
--- /dev/null
+++ b/gel/dskda830_dsp.gel
@@ -0,0 +1,979 @@
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * dskda830_dsp.gel *\r
+ * Version 1.06 *\r
+ * *\r
+ * This GEL file is designed to be used in conjunction with *\r
+ * CCStudio 3.3+ and the DA830 based DSK. *\r
+ * *\r
+ * SDI Version History: *\r
+ * 1.00 Initial Release *\r
+ * 1.01 Added USB1 clock enable in CFGCGHIP2 *\r
+ * 1.02 Added Setup_Data_Cache(), added hotmenu item Setup_EMIFA_PinMux() *\r
+ * 1.03 Corrected PINMUX0, 11 settings to enable EMB_CLK, AXR2[0] *\r
+ * 1.04 General cleanup *\r
+ * 1.05 Corrected ARM INTC in Memory map *\r
+ * 1.06 Fixed tRFC SDRAM timing parameter *\r
+ * ------------------------------------------------------------------------ */\r
+ \r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * StartUp( ) *\r
+ * Setup Memory Map *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+StartUp( )\r
+{\r
+ Setup_Memory_Map( );\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * OnTargetConnect( ) *\r
+ * Setup PinMux, Power, PLLs, SDRAM & EMIFs *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+OnTargetConnect( )\r
+{\r
+ GEL_TextOut( "\nDA830 DSP Startup Sequence\n\n" );\r
+\r
+ Setup_Data_Cache(); // Setup L1D to 32 KB cache\r
+\r
+ Setup_System_Config( ); // Setup Pin Mux and other system module registers\r
+ Setup_PLL(); // Setup PLL0 (300MHZ ARM, 300MHz DSP, 133MHz EMIFs\r
+\r
+ Setup_Psc_All_On( ); // Setup All Power Domains\r
+\r
+ Setup_EMIFA(); // Async EMIF\r
+ Setup_EMIFB(); // Setup SDRAM\r
+\r
+ Enable_ARM();\r
+\r
+ GEL_TextOut( "\nStartup Complete.\n\n" );\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * OnPreFileLoaded( ) *\r
+ * This function is called automatically when the 'Load Program' *\r
+ * Menu item is selected. *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+OnPreFileLoaded( )\r
+{\r
+ /*\r
+ * GEL_Reset() is used to deal with the worst case senario of\r
+ * unknown target state. If for some reason a reset is not desired\r
+ * upon target connection, GEL_Reset() may be removed and replaced\r
+ * with something "less brutal" like a cache initialization\r
+ * function.\r
+ */\r
+ GEL_Reset( );\r
+\r
+// Disable_EDMA( ); // Disable EDMA\r
+\r
+ GEL_TextOut( "\n" );\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * OnRestart( ) *\r
+ * This function is called by CCS when you do Debug->Restart. *\r
+ * The goal is to put the CPU into a known good state with respect to *\r
+ * edma. *\r
+ * Failure to do this can cause problems when you restart and *\r
+ * run your application code multiple times. This is different *\r
+ * then OnPreFileLoaded() which will do a GEL_Reset() to get the *\r
+ * ARM9 into a known good state. *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+OnRestart( int nErrorCode )\r
+{\r
+ Disable_EDMA( ); // Disable EDMA\r
+\r
+ GEL_TextOut( "\n" );\r
+}\r
+\r
+menuitem "DA830 Memory Map";\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Setup_Memory_Map( ) *\r
+ * Setup the Memory Map for DSP. *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+hotmenu\r
+Setup_Memory_Map( )\r
+{\r
+ GEL_MapOn( );\r
+ GEL_MapReset( );\r
+\r
+ /* ARM */\r
+ GEL_MapAddStr( 0xFFFD0000, 0, 0x00010000, "R|W|AS4", 0 ); // ARM Local ROM\r
+ GEL_MapAddStr( 0xFFFEE000, 0, 0x00002000, "R|W|AS4", 0 ); // ARM INTC\r
+ GEL_MapAddStr( 0xFFFF0000, 0, 0x00002000, "R|W|AS4", 0 ); // ARM Local RAM\r
+ GEL_MapAddStr( 0x01BC0000, 0, 0x00001000, "R|W|AS4", 0 ); // ARM ETB Memory\r
+ GEL_MapAddStr( 0x01BC1000, 0, 0x00000800, "R|W|AS4", 0 ); // ARM ETB Regs\r
+ GEL_MapAddStr( 0x01BC1800, 0, 0x00000100, "R|W|AS4", 0 ); // ARM Ice Crusher\r
+\r
+ /* DSP */\r
+ GEL_MapAddStr( 0x00700000, 0, 0x00100000, "R|W|AS4", 0 ); // DSP L2 ROM\r
+ GEL_MapAddStr( 0x00800000, 0, 0x00040000, "R|W|AS4", 0 ); // DSP l2 RAM\r
+ GEL_MapAddStr( 0x00E00000, 0, 0x00008000, "R|W|AS4", 0 ); // DSP L1P RAM\r
+ GEL_MapAddStr( 0x00F00000, 0, 0x00008000, "R|W|AS4", 0 ); // DSP L1D RAM\r
+ GEL_MapAddStr( 0x01800000, 0, 0x00010000, "R|W|AS4", 0 ); // DSP Interrupt Controller\r
+ GEL_MapAddStr( 0x01810000, 0, 0x00001000, "R|W|AS4", 0 ); // DSP Powerdown Controller\r
+ GEL_MapAddStr( 0x01811000, 0, 0x00001000, "R|W|AS4", 0 ); // DSP Security ID\r
+ GEL_MapAddStr( 0x01812000, 0, 0x00008000, "R|W|AS4", 0 ); // DSP Revision ID\r
+ GEL_MapAddStr( 0x01820000, 0, 0x00010000, "R|W|AS4", 0 ); // DSP EMC\r
+ GEL_MapAddStr( 0x01830000, 0, 0x00010000, "R|W|AS4", 0 ); // DSP Internal Reserved\r
+ GEL_MapAddStr( 0x01840000, 0, 0x00010000, "R|W|AS4", 0 ); // DSP Memory System\r
+\r
+ GEL_MapAddStr( 0x11700000, 0, 0x00100000, "R|W|AS4", 0 ); // DSP L2 ROM (mirror)\r
+ GEL_MapAddStr( 0x11800000, 0, 0x00040000, "R|W|AS4", 0 ); // DSP l2 RAM (mirror)\r
+ GEL_MapAddStr( 0x11E00000, 0, 0x00008000, "R|W|AS4", 0 ); // DSP L1P RAM (mirror)\r
+ GEL_MapAddStr( 0x11F00000, 0, 0x00008000, "R|W|AS4", 0 ); // DSP L1D RAM (mirror)\r
+ \r
+ /* Shared RAM */\r
+ GEL_MapAddStr( 0x80000000, 0, 0x00020000, "R|W|AS4", 0 ); // Shared RAM\r
+\r
+ /* EMIFA */\r
+ GEL_MapAddStr( 0x68000000, 0, 0x00008000, "R|W|AS4", 0 ); // EMIFA Control\r
+ GEL_MapAddStr( 0x40000000, 0, 0x20000000, "R|W|AS4", 0 ); // EMIFA SDRAM Data\r
+ GEL_MapAddStr( 0x60000000, 0, 0x02000000, "R|W|AS4", 0 ); // AEMIF CS2\r
+ GEL_MapAddStr( 0x62000000, 0, 0x02000000, "R|W|AS4", 0 ); // AEMIF CS3\r
+ GEL_MapAddStr( 0x64000000, 0, 0x02000000, "R|W|AS4", 0 ); // AEMIF CS4\r
+ GEL_MapAddStr( 0x66000000, 0, 0x02000000, "R|W|AS4", 0 ); // AEMIF CS5\r
+\r
+ /* DDR */\r
+ GEL_MapAddStr( 0xB0000000, 0, 0x00008000, "R|W|AS4", 0 ); // EMIFB Control\r
+ GEL_MapAddStr( 0xC0000000, 0, 0x20000000, "R|W|AS4", 0 ); // EMIFB SDRAM Data\r
+\r
+ /* Peripherals */\r
+ GEL_MapAddStr( 0x01C00000, 0, 0x00008000, "R|W|AS4", 0 ); // TPCC\r
+ GEL_MapAddStr( 0x01C08000, 0, 0x00000400, "R|W|AS4", 0 ); // TPTC0\r
+ GEL_MapAddStr( 0x01C08400, 0, 0x00000400, "R|W|AS4", 0 ); // TPTC1\r
+ GEL_MapAddStr( 0x01C10000, 0, 0x00001000, "R|W|AS4", 0 ); // PSC 0\r
+ GEL_MapAddStr( 0x01C11000, 0, 0x00001000, "R|W|AS4", 0 ); // PLL Controller 0\r
+ GEL_MapAddStr( 0x01C12000, 0, 0x00001000, "R|W|AS4", 0 ); // Key Manager\r
+ GEL_MapAddStr( 0x01C13000, 0, 0x00001000, "R|W|AS4", 0 ); // Security Controller\r
+ GEL_MapAddStr( 0x01C14000, 0, 0x00001000, "R|W|AS4", 0 ); // BootConfig\r
+ GEL_MapAddStr( 0x01C16000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 0\r
+ GEL_MapAddStr( 0x01C17000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 2\r
+ GEL_MapAddStr( 0x01C20000, 0, 0x00001000, "R|W|AS4", 0 ); // Timer64P 0\r
+ GEL_MapAddStr( 0x01C21000, 0, 0x00001000, "R|W|AS4", 0 ); // Timer64P 1\r
+ GEL_MapAddStr( 0x01C22000, 0, 0x00001000, "R|W|AS4", 0 ); // I2C 0\r
+ GEL_MapAddStr( 0x01C23000, 0, 0x00001000, "R|W|AS4", 0 ); // RTC\r
+ GEL_MapAddStr( 0x01C24000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 1\r
+ GEL_MapAddStr( 0x01C30000, 0, 0x00000200, "R|W|AS4", 0 ); // dMax Data RAM 0\r
+ GEL_MapAddStr( 0x01C32000, 0, 0x00000200, "R|W|AS4", 0 ); // dMax Data RAM 1\r
+ GEL_MapAddStr( 0x01C34000, 0, 0x00004000, "R|W|AS4", 0 ); // dMax Control Registers\r
+ GEL_MapAddStr( 0x01C38000, 0, 0x00001000, "R|W|AS4", 0 ); // dMAX MAX0 Config Memory\r
+ GEL_MapAddStr( 0x01C3C000, 0, 0x00001000, "R|W|AS4", 0 ); // dMAX MAX1 Config Memory\r
+ GEL_MapAddStr( 0x01C40000, 0, 0x00001000, "R|W|AS4", 0 ); // MMC/SD 0\r
+ GEL_MapAddStr( 0x01C41000, 0, 0x00001000, "R|W|AS4", 0 ); // SPI 0\r
+ GEL_MapAddStr( 0x01C42000, 0, 0x00001000, "R|W|AS4", 0 ); // UART 0\r
+ GEL_MapAddStr( 0x01C43000, 0, 0x00001000, "R|W|AS4", 0 ); // MPU 0\r
+ GEL_MapAddStr( 0x01D00000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 0 Control\r
+ GEL_MapAddStr( 0x01D01000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 0 FIFO Ctrl\r
+ GEL_MapAddStr( 0x01D02000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 0 Data\r
+ GEL_MapAddStr( 0x01D04000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 1 Control\r
+ GEL_MapAddStr( 0x01D05000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 1 FIFO Ctrl\r
+ GEL_MapAddStr( 0x01D06000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 1 Data\r
+ GEL_MapAddStr( 0x01D08000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 2 Control\r
+ GEL_MapAddStr( 0x01D09000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 2 FIFO Ctrl\r
+ GEL_MapAddStr( 0x01D0A000, 0, 0x00001000, "R|W|AS4", 0 ); // McASP 2 Data\r
+ GEL_MapAddStr( 0x01D0C000, 0, 0x00001000, "R|W|AS4", 0 ); // UART 1\r
+ GEL_MapAddStr( 0x01D0D000, 0, 0x00001000, "R|W|AS4", 0 ); // UART 2\r
+ GEL_MapAddStr( 0x01D0E000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 4\r
+ GEL_MapAddStr( 0x01E00000, 0, 0x00010000, "R|W|AS4", 0 ); // USB0 (USB HS) Cfg\r
+ GEL_MapAddStr( 0x01E10000, 0, 0x00001000, "R|W|AS4", 0 ); // UHPI Cfg\r
+ GEL_MapAddStr( 0x01E11000, 0, 0x00001000, "R|W|AS4", 0 ); // UHPI (IODFT)\r
+ GEL_MapAddStr( 0x01E12000, 0, 0x00001000, "R|W|AS4", 0 ); // SPI 1\r
+ GEL_MapAddStr( 0x01E13000, 0, 0x00001000, "R|W|AS4", 0 ); // LCD Controller\r
+ GEL_MapAddStr( 0x01E14000, 0, 0x00001000, "R|W|AS4", 0 ); // MPU 1\r
+ GEL_MapAddStr( 0x01E15000, 0, 0x00001000, "R|W|AS4", 0 ); // MPU 2\r
+ GEL_MapAddStr( 0x01E20000, 0, 0x00002000, "R|W|AS4", 0 ); // EMAC CPPI port\r
+ GEL_MapAddStr( 0x01E22000, 0, 0x00001000, "R|W|AS4", 0 ); // EMAC CPGMACSS registers\r
+ GEL_MapAddStr( 0x01E23000, 0, 0x00001000, "R|W|AS4", 0 ); // EMAC CPGMAC registers\r
+ GEL_MapAddStr( 0x01E24000, 0, 0x00001000, "R|W|AS4", 0 ); // EMAC MDIO port\r
+ GEL_MapAddStr( 0x01E25000, 0, 0x00001000, "R|W|AS4", 0 ); // USB1 (USB FS)\r
+ GEL_MapAddStr( 0x01E26000, 0, 0x00001000, "R|W|AS4", 0 ); // GPIO\r
+ GEL_MapAddStr( 0x01E27000, 0, 0x00001000, "R|W|AS4", 0 ); // PSC 1\r
+ GEL_MapAddStr( 0x01E28000, 0, 0x00001000, "R|W|AS4", 0 ); // I2C 1\r
+ GEL_MapAddStr( 0x01E29000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 3\r
+ GEL_MapAddStr( 0x01E2A000, 0, 0x00001000, "R|W|AS4", 0 ); // PBIST Controller\r
+ GEL_MapAddStr( 0x01E2B000, 0, 0x00001000, "R|W|AS4", 0 ); // PBIST Combiner\r
+ GEL_MapAddStr( 0x01F00000, 0, 0x00001000, "R|W|AS4", 0 ); // EPWM 0\r
+ GEL_MapAddStr( 0x01F01000, 0, 0x00001000, "R|W|AS4", 0 ); // HRPWM 0\r
+ GEL_MapAddStr( 0x01F02000, 0, 0x00001000, "R|W|AS4", 0 ); // EPWM 1\r
+ GEL_MapAddStr( 0x01F03000, 0, 0x00001000, "R|W|AS4", 0 ); // HRPWM 1\r
+ GEL_MapAddStr( 0x01F04000, 0, 0x00001000, "R|W|AS4", 0 ); // EPWM 2\r
+ GEL_MapAddStr( 0x01F05000, 0, 0x00001000, "R|W|AS4", 0 ); // HRPWM 2\r
+ GEL_MapAddStr( 0x01F06000, 0, 0x00001000, "R|W|AS4", 0 ); // ECAP 0\r
+ GEL_MapAddStr( 0x01F07000, 0, 0x00001000, "R|W|AS4", 0 ); // ECAP 1\r
+ GEL_MapAddStr( 0x01F08000, 0, 0x00001000, "R|W|AS4", 0 ); // ECAP 2\r
+ GEL_MapAddStr( 0x01F09000, 0, 0x00001000, "R|W|AS4", 0 ); // EQEP 0\r
+ GEL_MapAddStr( 0x01F0A000, 0, 0x00001000, "R|W|AS4", 0 ); // EQEP 1\r
+ GEL_MapAddStr( 0x01F0B000, 0, 0x00001000, "R|W|AS4", 0 ); // IOPU 5\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Clear_Memory_Map( ) *\r
+ * Clear the Memory Map *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+hotmenu\r
+Clear_Memory_Map( )\r
+{\r
+ GEL_MapOff( );\r
+ GEL_MapReset( );\r
+}\r
+\r
+menuitem "DSKDA830 Functions";\r
+\r
+_wait( int delay )\r
+{\r
+ int i;\r
+ for( i = 0 ; i < delay ; i++ ){}\r
+}\r
+\r
+#define SYS_BASE 0x01C14000\r
+#define REVID *(unsigned int*)(SYS_BASE + 0x000) \r
+#define DIEIDR0 *(unsigned int*)(SYS_BASE + 0x008)\r
+#define DIEIDR1 *(unsigned int*)(SYS_BASE + 0x00C)\r
+#define DIEIDR2 *(unsigned int*)(SYS_BASE + 0x010)\r
+#define DIEIDR3 *(unsigned int*)(SYS_BASE + 0x014)\r
+#define DEVIDR0 *(unsigned int*)(SYS_BASE + 0x018)\r
+#define DEVIDR1 *(unsigned int*)(SYS_BASE + 0x01C)\r
+#define BOOTCFG *(unsigned int*)(SYS_BASE + 0x020)\r
+#define CHIPREVIDR *(unsigned int*)(SYS_BASE + 0x024)\r
+#define KICK0R *(unsigned int*)(SYS_BASE + 0x038) \r
+#define KICK1R *(unsigned int*)(SYS_BASE + 0x03c) \r
+#define HOST0CFG *(unsigned int*)(SYS_BASE + 0x040) //ARM HOST0CFG\r
+#define HOST1CFG *(unsigned int*)(SYS_BASE + 0x044)\r
+#define IRAWSTAT *(unsigned int*)(SYS_BASE + 0x0E0) \r
+#define IENSTAT *(unsigned int*)(SYS_BASE + 0x0E4) \r
+#define IENSET *(unsigned int*)(SYS_BASE + 0x0E8) \r
+#define IENCLR *(unsigned int*)(SYS_BASE + 0x0EC) \r
+#define EOI *(unsigned int*)(SYS_BASE + 0x0F0) \r
+#define FLTADDRR *(unsigned int*)(SYS_BASE + 0x0F4) \r
+#define FLTSTAT *(unsigned int*)(SYS_BASE + 0x0F8) \r
+#define MSTPRI0 *(unsigned int*)(SYS_BASE + 0x110) \r
+#define MSTPRI1 *(unsigned int*)(SYS_BASE + 0x114) \r
+#define MSTPRI2 *(unsigned int*)(SYS_BASE + 0x118) \r
+#define PINMUX0 *(unsigned int*)(SYS_BASE + 0x120) //PINMUX0\r
+#define PINMUX1 *(unsigned int*)(SYS_BASE + 0x124) //PINMUX1\r
+#define PINMUX2 *(unsigned int*)(SYS_BASE + 0x128) //PINMUX2\r
+#define PINMUX3 *(unsigned int*)(SYS_BASE + 0x12C) //PINMUX3\r
+#define PINMUX4 *(unsigned int*)(SYS_BASE + 0x130) //PINMUX4\r
+#define PINMUX5 *(unsigned int*)(SYS_BASE + 0x134) //PINMUX5\r
+#define PINMUX6 *(unsigned int*)(SYS_BASE + 0x138) //PINMUX6\r
+#define PINMUX7 *(unsigned int*)(SYS_BASE + 0x13C) //PINMUX7\r
+#define PINMUX8 *(unsigned int*)(SYS_BASE + 0x140) //PINMUX8\r
+#define PINMUX9 *(unsigned int*)(SYS_BASE + 0x144) //PINMUX9\r
+#define PINMUX10 *(unsigned int*)(SYS_BASE + 0x148) //PINMUX10\r
+#define PINMUX11 *(unsigned int*)(SYS_BASE + 0x14C) //PINMUX11\r
+#define PINMUX12 *(unsigned int*)(SYS_BASE + 0x150) //PINMUX12\r
+#define PINMUX13 *(unsigned int*)(SYS_BASE + 0x154) //PINMUX13\r
+#define PINMUX14 *(unsigned int*)(SYS_BASE + 0x158) //PINMUX14\r
+#define PINMUX15 *(unsigned int*)(SYS_BASE + 0x15C) //PINMUX15\r
+#define PINMUX16 *(unsigned int*)(SYS_BASE + 0x160) //PINMUX16\r
+#define PINMUX17 *(unsigned int*)(SYS_BASE + 0x164) //PINMUX17\r
+#define PINMUX18 *(unsigned int*)(SYS_BASE + 0x168) //PINMUX18\r
+#define PINMUX19 *(unsigned int*)(SYS_BASE + 0x16C) //PINMUX19\r
+#define SUSPSRC *(unsigned int*)(SYS_BASE + 0x170) \r
+#define CHIPSIG *(unsigned int*)(SYS_BASE + 0x174) \r
+#define CHIPSIG_CLR *(unsigned int*)(SYS_BASE + 0x178) \r
+#define CFGCHIP0 *(unsigned int*)(SYS_BASE + 0x17C) \r
+#define CFGCHIP1 *(unsigned int*)(SYS_BASE + 0x180) \r
+#define CFGCHIP2 *(unsigned int*)(SYS_BASE + 0x184) \r
+#define CFGCHIP3 *(unsigned int*)(SYS_BASE + 0x188) \r
+#define CFGCHIP4 *(unsigned int*)(SYS_BASE + 0x18C) \r
+\r
+#define PLL0_BASE 0x01C11000 /*SYSTEM PLL BASE ADDRESS*/\r
+\r
+#define PLL0_PID *(unsigned int*) (PLL0_BASE + 0x00) /*PID*/\r
+#define PLL0_FUSERR *(unsigned int*) (PLL0_BASE + 0xE0) /*x*FuseFarm Error Reg*/\r
+#define PLL0_RSTYPE *(unsigned int*) (PLL0_BASE + 0xE4) /*Reset Type status Reg*/\r
+#define PLL0_PLLCTL *(unsigned int*) (PLL0_BASE + 0x100) /*PLL Control Register*/\r
+#define PLL0_OCSEL *(unsigned int*) (PLL0_BASE + 0x104) /*OBSCLK Select Register*/\r
+#define PLL0_SECCTL *(unsigned int*) (PLL0_BASE + 0x108) /*PLL Secondary Control Register*/\r
+#define PLL0_PLLM *(unsigned int*) (PLL0_BASE + 0x110) /*PLL Multiplier*/ \r
+#define PLL0_PREDIV *(unsigned int*) (PLL0_BASE + 0x114) /*Pre divider*/ \r
+#define PLL0_PLLDIV1 *(unsigned int*) (PLL0_BASE + 0x118) /*Diveder-1*/ \r
+#define PLL0_PLLDIV2 *(unsigned int*) (PLL0_BASE + 0x11C) /*Diveder-2*/ \r
+#define PLL0_PLLDIV3 *(unsigned int*) (PLL0_BASE + 0x120) /*Diveder-3*/ \r
+#define PLL0_OSCDIV1 *(unsigned int*) (PLL0_BASE + 0x124) /*Oscilator Divider*/ \r
+#define PLL0_POSTDIV *(unsigned int*) (PLL0_BASE + 0x128) /*Post Divider*/ \r
+#define PLL0_BPDIV *(unsigned int*) (PLL0_BASE + 0x12C) /*Bypass Divider*/\r
+#define PLL0_WAKEUP *(unsigned int*) (PLL0_BASE + 0x130) /*Wakeup Reg*/\r
+#define PLL0_PLLCMD *(unsigned int*) (PLL0_BASE + 0x138) /*Command Reg*/\r
+#define PLL0_PLLSTAT *(unsigned int*) (PLL0_BASE + 0x13C) /*Status Reg*/\r
+#define PLL0_ALNCTL *(unsigned int*) (PLL0_BASE + 0x140) /*Clock Align Control Reg*/\r
+#define PLL0_DCHANGE *(unsigned int*) (PLL0_BASE + 0x144) /*PLLDIV Ratio Chnage status*/\r
+#define PLL0_CKEN *(unsigned int*) (PLL0_BASE + 0x148) /*Clock Enable Reg*/\r
+#define PLL0_CKSTAT *(unsigned int*) (PLL0_BASE + 0x14C) /*Clock Status Reg*/\r
+#define PLL0_SYSTAT *(unsigned int*) (PLL0_BASE + 0x150) /*Sysclk status reg*/\r
+#define PLL0_PLLDIV4 *(unsigned int*) (PLL0_BASE + 0x160) /*Divider 4*/\r
+#define PLL0_PLLDIV5 *(unsigned int*) (PLL0_BASE + 0x164) /*Divider 5*/\r
+#define PLL0_PLLDIV6 *(unsigned int*) (PLL0_BASE + 0x168) /*Divider 6*/\r
+#define PLL0_PLLDIV7 *(unsigned int*) (PLL0_BASE + 0x16C) /*Divider 7*/\r
+#define PLL0_PLLDIV8 *(unsigned int*) (PLL0_BASE + 0x170) /*Divider 8*/\r
+#define PLL0_PLLDIV9 *(unsigned int*) (PLL0_BASE + 0x174) /*Divider 9*/\r
+#define PLL0_PLLDIV10 *(unsigned int*) (PLL0_BASE + 0x178) /*Divider 10*/\r
+#define PLL0_PLLDIV11 *(unsigned int*) (PLL0_BASE + 0x17C) /*Divider 11*/\r
+#define PLL0_PLLDIV12 *(unsigned int*) (PLL0_BASE + 0x180) /*Divider 12*/\r
+#define PLL0_PLLDIV13 *(unsigned int*) (PLL0_BASE + 0x184) /*Divider 13*/\r
+#define PLL0_PLLDIV14 *(unsigned int*) (PLL0_BASE + 0x188) /*Divider 14*/\r
+#define PLL0_PLLDIV15 *(unsigned int*) (PLL0_BASE + 0x18C) /*Divider 15*/\r
+#define PLL0_PLLDIV16 *(unsigned int*) (PLL0_BASE + 0x190) /*Divider 16*/\r
+#define PLLEN_MUX_SWITCH 4 \r
+#define PLL_LOCK_TIME_CNT 2400\r
+\r
+\r
+/*PSC Module Related Registers*/ \r
+#define PSC0_BASE 0x01C10000\r
+#define PSC1_BASE 0x01E27000\r
+\r
+#define PSC0_MDCTL (PSC0_BASE+0xA00)\r
+#define PSC0_MDSTAT (PSC0_BASE+0x800)\r
+#define PSC0_PTCMD *(unsigned int*) (PSC0_BASE + 0x120)\r
+#define PSC0_PTSTAT *(unsigned int*) (PSC0_BASE + 0x128)\r
+\r
+#define PSC1_MDCTL (PSC1_BASE+0xA00)\r
+#define PSC1_MDSTAT (PSC1_BASE+0x800)\r
+#define PSC1_PTCMD *(unsigned int*) (PSC1_BASE + 0x120)\r
+#define PSC1_PTSTAT *(unsigned int*) (PSC1_BASE + 0x128)\r
+\r
+\r
+/*Enable Function for PSC0*/\r
+PSC0_lPSC_enable(unsigned int PD, unsigned int LPSC_num) {\r
+\r
+ *(unsigned int*) (PSC0_MDCTL+4*LPSC_num) = (*(unsigned int*) (PSC0_MDCTL+4*LPSC_num) & 0xFFFFFFE0) | 0x0003;\r
+ PSC0_PTCMD = 0x1<<PD;\r
+ while( (PSC0_PTSTAT & (0x1<<PD) ) !=0) ; /*Wait for power state transition to finish*/\r
+ while( (*(unsigned int*)(PSC0_MDSTAT+4 * LPSC_num) & 0x1F) !=0x3);\r
+}\r
+\r
+/*Enable Function for PSC1*/\r
+PSC1_lPSC_enable(unsigned int PD, unsigned int LPSC_num) {\r
+\r
+ *(unsigned int*) (PSC1_MDCTL+4*LPSC_num) = (*(unsigned int*) (PSC1_MDCTL+4*LPSC_num) & 0xFFFFFFE0) | 0x0003;\r
+ PSC1_PTCMD = 0x1<<PD;\r
+ while( (PSC1_PTSTAT & (0x1<<PD) ) !=0) ; /*Wait for power state transition to finish*/\r
+ while( (*(unsigned int*)(PSC1_MDSTAT+4 * LPSC_num) & 0x1F) !=0x3);\r
+}\r
+\r
+#define L1DCFG 0x01840040\r
+#define L1DWB 0x01845040\r
+\r
+Setup_Data_Cache ()\r
+{\r
+ // Flush L1D\r
+ *((unsigned int *) L1DWB) = 0x01;\r
+ // Reconfigure L1D to default state (full cache)\r
+ *((unsigned int *) L1DCFG) = 0x07;\r
+}\r
+\r
+hotmenu\r
+Setup_PLL()\r
+{\r
+ int i = 0;\r
+\r
+ /* Configure ARM, DSP at 300MHz, EMIFs at 133MHz */\r
+ unsigned int DIV45_EN = 1;\r
+ unsigned int CLKMODE = 0;\r
+ unsigned int PLLM = 24;\r
+ unsigned int POSTDIV = 1;\r
+ unsigned int PLLDIV3 = 2;\r
+ unsigned int PLLDIV5 = 5;\r
+ unsigned int PLLDIV7 = 7;\r
+\r
+ // Moved step 2c and 2d to step 0\r
+ /*Set PLLEN=0 and PLLRST=0, Reset the PLL*/\r
+ PLL0_PLLCTL &= 0xFFFFFFFE; /*PLL BYPASS MODE*/\r
+ \r
+ /*wait for 4 cycles to allow PLLEN mux switches properly to bypass clock*/\r
+ for(i=0; i<PLLEN_MUX_SWITCH; i++) {;} /*Make PLLEN_MUX_SWITCH as bootpacket*/\r
+\r
+ /*Select the Clock Mode bit 8 as External Clock or On Chip Oscilator*/\r
+ PLL0_PLLCTL &= 0xFFFFFEFF; \r
+ PLL0_PLLCTL |= (CLKMODE<<8); /* Make CLKSRC as BootPacket to pass the value*/\r
+\r
+ /*Set PLLENSRC '0',bit 5, PLL Enable(PLLEN) selection is controlled through MMR*/\r
+ PLL0_PLLCTL &= 0xFFFFFFDF; \r
+ \r
+ /*PLLCTL.EXTCLKSRC bit 9 should be left at 0 for Primus*/\r
+ PLL0_PLLCTL &= 0xFFFFFDFF;\r
+\r
+ /* Clear PLLRST bit to 0 -Reset the PLL */\r
+ PLL0_PLLCTL &= 0xFFFFFFF7; \r
+ \r
+ /*Disable the PLL output*/ \r
+ PLL0_PLLCTL |= 0x10; \r
+ \r
+ /*PLL initialization sequence*/\r
+ \r
+ /*Power up the PLL- PWRDN bit set to 0 to bring the PLL out of power down bit*/\r
+ PLL0_PLLCTL &= 0xFFFFFFFD;\r
+ \r
+ /*Enable the PLL from Disable Mode PLLDIS bit to 0 - This is step is not required for Primus*/\r
+ PLL0_PLLCTL &= 0xFFFFFFEF;\r
+ \r
+ /*PLL stabilisation time- take out this step , not required here when PLL in bypassmode*/\r
+ /* for(i=0; i<PLL_STABILIZATION_TIME; i++) {;} /* Make PLL_STABILIZATION_TIME as bootpacket*/\r
+ \r
+ /*Program the required multiplier value in PLLM*/\r
+ PLL0_PLLM = PLLM; /* Make PLLMULTIPLEIR as bootpacket*/\r
+\r
+ /*If desired to scale all the SYSCLK frequencies of a given PLLC, program the POSTDIV ratio*/\r
+ PLL0_POSTDIV = 0x8000 | POSTDIV; /* Make POSTDIV as bootpacket*/\r
+\r
+ /*If Necessary program the PLLDIVx*/\r
+ /*Check for the GOSTAT bit in PLLSTAT to clear to 0 to indicate that no GO operation is currently in progress*/\r
+ while(PLL0_PLLSTAT & 0x1==1){}\r
+\r
+ /*Program the RATIO field in PLLDIVx with the desired divide factors. In addition, make sure in this step you leave the PLLDIVx.DxEN bits set so clocks are still enabled (default).*/\r
+ PLL0_PLLDIV3 = 0x8000 | PLLDIV3; /* Make PLLDIV3 as bootpacket, do it for other PLLDIVx to if required*/\r
+ PLL0_PLLDIV5 = 0x8000 | PLLDIV5; /* Make PLLDIV5 as bootpacket, do it for other PLLDIVx to if required*/\r
+ PLL0_PLLDIV7 = 0x8000 | PLLDIV7; /* Make PLLDIV7 as bootpacket, do it for other PLLDIVx to if required*/\r
+\r
+ /*Set the GOSET bit in PLLCMD to 1 to initiate a new divider transition.*/\r
+ PLL0_PLLCMD |= 0x1;\r
+\r
+ /*Wait for the GOSTAT bit in PLLSTAT to clear to 0 (completion of phase alignment).*/\r
+ while(PLL0_PLLSTAT & 0x1==1) { } \r
+ \r
+ \r
+ /*Wait for PLL to reset properly. See PLL spec for PLL reset time - This step is not required here -step11*/\r
+ /* for(i=0; i<PLL_RESET_TIME_CNT; i++) {;} /*128 MXI Cycles*/ /*Make PLL_RESET_TIME_CNT as boot packet*/\r
+ \r
+ /*Set the PLLRST bit in PLLCTL to 1 to bring the PLL out of reset*/\r
+ PLL0_PLLCTL |= 0x8;\r
+ \r
+ /*Wait for PLL to lock. See PLL spec for PLL lock time*/\r
+ for(i=0; i<PLL_LOCK_TIME_CNT; i++) {;} /*Make PLL_LOCK_TIME_CNT as boot Packet*/ \r
+ \r
+ /*Set the PLLEN bit in PLLCTL to 1 to remove the PLL from bypass mode*/\r
+ PLL0_PLLCTL |= 0x1;\r
+\r
+ KICK0R = 0x83e70b13; // Kick0 register + data (unlock)\r
+ KICK1R = 0x95a4f1e0; // Kick1 register + data (unlock)\r
+ CFGCHIP3 |= 0x4; // Enable 4.5 divider PLL\r
+ CFGCHIP3 |= 0x1; // Select 4.5 divider for EMIFB clock source only (not EMIFA)\r
+\r
+ GEL_TextOut( "PLL Setup Complete\n" );\r
+}\r
+\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * setup_pll_0( ) *\r
+ * *\r
+ * clock_source <- 0: Onchip Oscillator *\r
+ * 1: External Clock *\r
+ * *\r
+ * pll_mult <- 21: 22x Multiplier * 27MHz Clk = 594 MHz *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+setup_pll_0( int clock_source, int pll_mult )\r
+{\r
+ unsigned int* pll_ctl = ( unsigned int* )( 0x01c11100 );\r
+ unsigned int* pll_pllm = ( unsigned int* )( 0x01c11110 );\r
+ unsigned int* pll_cmd = ( unsigned int* )( 0x01c11138 );\r
+ unsigned int* pll_postdiv = ( unsigned int* )( 0x01c11128 );\r
+ unsigned int* pll_bpdiv = ( unsigned int* )( 0x01c1112c );\r
+ unsigned int* pll_div1 = ( unsigned int* )( 0x01c11118 );\r
+ unsigned int* pll_div2 = ( unsigned int* )( 0x01c1111c );\r
+ unsigned int* pll_div3 = ( unsigned int* )( 0x01c11120 );\r
+ unsigned int* pll_div4 = ( unsigned int* )( 0x01c11160 );\r
+ unsigned int* pll_div5 = ( unsigned int* )( 0x01c11164 );\r
+ unsigned int* pll_div6 = ( unsigned int* )( 0x01c11168 );\r
+ unsigned int* pll_div7 = ( unsigned int* )( 0x01c1116c );\r
+ unsigned int* pll_div8 = ( unsigned int* )( 0x01c11170 );\r
+ unsigned int* pll_div9 = ( unsigned int* )( 0x01c11174 );\r
+\r
+ int pll0_freq = 24 * ( pll_mult + 1 );\r
+\r
+ GEL_TextOut( "Setup PLL0 " );\r
+\r
+ /*\r
+ * Step 1 - Set clock mode\r
+ */\r
+ if ( clock_source == 0 )\r
+ *pll_ctl &= ~0x0100; // Onchip Oscillator\r
+ else\r
+ *pll_ctl |= 0x0100; // External Clock\r
+\r
+ /*\r
+ * Step 2 - Set PLL to bypass\r
+ * - Wait for PLL to stabilize\r
+ */\r
+ *pll_ctl &= ~0x0020;\r
+ *pll_ctl &= ~0x0001;\r
+ _wait( 150 );\r
+\r
+ /*\r
+ * Step 3 - Reset PLL\r
+ */\r
+ *pll_ctl |= 0x0008;\r
+\r
+ /*\r
+ * Step 4 - Disable PLL\r
+ * Step 5 - Powerup PLL\r
+ * Step 6 - Enable PLL\r
+ * Step 7 - Wait for PLL to stabilize\r
+ */\r
+ *pll_ctl |= 0x0010; // Disable PLL\r
+ *pll_ctl &= ~0x0002; // Power up PLL\r
+ *pll_ctl &= ~0x0010; // Enable PLL\r
+ _wait( 150 ); // Wait for PLL to stabilize\r
+\r
+ /*\r
+ * Step 8 - Load PLL multiplier\r
+ */\r
+ *pll_pllm = pll_mult & 0x3f;\r
+\r
+ /*\r
+ * Step 9 - Set PLL post dividers\r
+ */\r
+\r
+ *pll_postdiv= 0x8000 | 1; // Post divider \r
+ *pll_div5 = 0x8001;\r
+ *pll_cmd |= 0x0001; // GO\r
+ _wait( 2000 );\r
+\r
+ /*\r
+ * Step 10 - Wait for PLL to reset ( 2000 cycles )\r
+ * Step 11 - Release from reset\r
+ */\r
+ _wait( 2000 );\r
+ *pll_ctl &= ~0x0008;\r
+\r
+ /*\r
+ * Step 12 - Wait for PLL to re-lock ( 2000 cycles )\r
+ * Step 13 - Switch out of BYPASS mode\r
+ */\r
+ _wait( 2000 );\r
+ *pll_ctl |= 0x0001;\r
+\r
+ // Enable 4.5X divider\r
+ KICK0R = 0x83e70b13; // Kick0 register + data (unlock)\r
+ KICK1R = 0x95a4f1e0; // Kick1 register + data (unlock)\r
+ CFGCHIP3 |= 0x4; // Enable 4.5 divider PLL\r
+// CFGCHIP3 |= 0x3; // Select 4.5 divider for EMIFA / EMIFB clock source\r
+\r
+ pll0_freq = 24 * ( ( *pll_pllm & 0x3f ) + 1 ) / 2;\r
+\r
+ GEL_TextOut( "(DSP = %d MHz + ",,,,, pll0_freq );\r
+ GEL_TextOut( "ARM = %d MHz + ",,,,, pll0_freq );\r
+\r
+ if ( clock_source == 0 )\r
+ GEL_TextOut( "Onchip Oscillator)... " );\r
+ else\r
+ GEL_TextOut( "External Clock)... " );\r
+\r
+ GEL_TextOut( "[Done]\n" );\r
+}\r
+\r
+\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Disable_IRQ_Flush_Cache( ) *\r
+ * Flush Cache & Disable Interrupts *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+Disable_IRQ_Flush_Cache( )\r
+{\r
+\r
+}\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Disable_EDMA( ) *\r
+ * Disabe EDMA events and interrupts, clear any pending events *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+Disable_EDMA( )\r
+{\r
+ #define EDMA_3CC_IECRH *( unsigned int* )( 0x01c0105c )\r
+ #define EDMA_3CC_EECRH *( unsigned int* )( 0x01c0102c )\r
+ #define EDMA_3CC_ICRH *( unsigned int* )( 0x01c01074 )\r
+ #define EDMA_3CC_ECRH *( unsigned int* )( 0x01c0100c )\r
+\r
+ #define EDMA_3CC_IECR *( unsigned int* )( 0x01c01058 )\r
+ #define EDMA_3CC_EECR *( unsigned int* )( 0x01c01028 )\r
+ #define EDMA_3CC_ICR *( unsigned int* )( 0x01c01070 )\r
+ #define EDMA_3CC_ECR *( unsigned int* )( 0x01c01008 )\r
+\r
+ GEL_TextOut( "Disable EDMA events\n" );\r
+\r
+ EDMA_3CC_IECRH = 0xffffffff; // IERH - Disable high interrupts\r
+ EDMA_3CC_EECRH = 0xffffffff; // EERH - Disable high events\r
+ EDMA_3CC_ICRH = 0xffffffff; // ICRH - Clear high interrupts\r
+ EDMA_3CC_ECRH = 0xffffffff; // ICRH - Clear high events\r
+\r
+ EDMA_3CC_IECR = 0xffffffff; // IER - Disable low interrupts\r
+ EDMA_3CC_EECR = 0xffffffff; // EER - Disable low events\r
+ EDMA_3CC_ICR = 0xffffffff; // ICR - Clear low interrupts\r
+ EDMA_3CC_ECR = 0xffffffff; // ICRH - Clear low events\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Enable_Instruction_Cache( ) *\r
+ * Enable I-Cache *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+hotmenu Enable_Instruction_Cache( )\r
+{\r
+ GEL_TextOut( "\Enable Instruction Cache.\n\n" );\r
+\r
+ CPSR = 0x400000d3; // Set to supervisor mode, disable IRQ/FIQ\r
+ REG_CP15_I_CACHE = 1; // Enable Instruction Cache\r
+} \r
+\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Setup_System_Config( ) *\r
+ * Configure PINMUX and other system module registers *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+hotmenu\r
+Setup_System_Config( )\r
+{\r
+\r
+ GEL_TextOut( "Setup PINMUX Registers... " );\r
+ KICK0R = 0x83e70b13; // Kick0 register + data (unlock)\r
+ KICK1R = 0x95a4f1e0; // Kick1 register + data (unlock)\r
+\r
+ PINMUX0 = 0x11112188; // EMIFB, Check EMU0/RTCK\r
+ PINMUX1 = 0x11111111; // EMIFB\r
+ PINMUX2 = 0x11111111; // EMIFB\r
+ PINMUX3 = 0x11111111; // EMIFB\r
+ PINMUX4 = 0x11111111; // EMIFB\r
+ PINMUX5 = 0x11111111; // EMIFB\r
+ PINMUX6 = 0x11111111; // EMIFB\r
+ PINMUX7 = 0x11111111; // EMIFB, SPI0\r
+ PINMUX8 = 0x21122111; // UART2, McASP1, I2C0, I2C1\r
+ PINMUX9 = 0x11011112; // RMII CLK, McASP0, USB_DRVVBUS, UART2\r
+ PINMUX10 = 0x22222221; // RMII/ McASP0\r
+ PINMUX11 = 0x11142222; // McASP1, AXR2[0] (DIT), UART1, McASP0, MDIO (last 2 digits 0x22 for MDIO instead of GPIO)\r
+ PINMUX12 = 0x11111111; // McASP0 / McASP1\r
+ PINMUX13 = 0x22111111; // SD / McASP1\r
+ PINMUX14 = 0x88222222; // SD / EMIFA\r
+ PINMUX15 = 0x21888888; // SD / EMIFA\r
+ PINMUX16 = 0x11111112; // SD / EMIFA\r
+ PINMUX17 = 0x00100111; // EMIFA\r
+ PINMUX18 = 0x11111111; // EMIFA\r
+ PINMUX19 = 0x00000001; // EMIFA\r
+\r
+ CFGCHIP2 |= 0x00001000; // Enable USB1 clock\r
+\r
+ GEL_TextOut( "[Done]\n" );\r
+}\r
+\r
+hotmenu\r
+Setup_EMIFA_PinMux()\r
+{\r
+ PINMUX13 &= 0x00FFFFFF;\r
+ PINMUX13 |= 0x11000000;\r
+ PINMUX14 = 0x11111111;\r
+ PINMUX15 = 0x11111111;\r
+ PINMUX16 = 0x11111111;\r
+ PINMUX17 = 0x11111111;\r
+ PINMUX18 = 0x11111111;\r
+ PINMUX19 &= 0xFFFFFFF0;\r
+ PINMUX19 |= 0x00000001;\r
+\r
+ GEL_TextOut( "[Done]\n" );\r
+}\r
+\r
+/*Enable Function for PSC0*/\r
+PSC0_lPSC_enableARM(unsigned int PD, unsigned int LPSC_num) {\r
+\r
+ *(unsigned int*) (PSC0_MDCTL+4*LPSC_num) = (*(unsigned int*) (PSC0_MDCTL+4*LPSC_num) & 0xFFFFFEE0) | 0x0103;\r
+\r
+ PSC0_PTCMD = 0x1<<PD;\r
+ while( (PSC0_PTSTAT & (0x1<<PD) ) !=0) ; /*Wait for power state transition to finish*/\r
+ while( (*(unsigned int*)(PSC0_MDSTAT+4 * LPSC_num) & 0x1F) !=0x3);\r
+}\r
+\r
+hotmenu Enable_ARM()\r
+{\r
+ /* Turn on ARM RAM */\r
+ PSC0_lPSC_enable(0, 7);\r
+\r
+ /* Put branch to self at ARM vector table before releasing PSC */\r
+ *( unsigned int* )( 0xFFFF0000 ) = 0xEAFFFFFE;\r
+ *( unsigned int* )( 0xFFFF0004 ) = 0xEAFFFFFE;\r
+ *( unsigned int* )( 0xFFFF0008 ) = 0xEAFFFFFE;\r
+ *( unsigned int* )( 0xFFFF000C ) = 0xEAFFFFFE;\r
+\r
+ HOST0CFG = 0x00000001; \r
+\r
+ /* Turn on ARM */\r
+ PSC0_lPSC_enableARM(0, 14);\r
+\r
+ GEL_TextOut(" ARM Enabled\n");\r
+}\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Setup_Psc_All_On( ) *\r
+ * Enable all PSC modules on ALWAYSON and DSP power dominas. *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+hotmenu\r
+Setup_Psc_All_On( )\r
+{\r
+ int i;\r
+ GEL_TextOut( "Setup Power Modules (All on)... " );\r
+\r
+ // PSC0\r
+ PSC0_lPSC_enable(0, 0);\r
+ PSC0_lPSC_enable(0, 1);\r
+ PSC0_lPSC_enable(0, 2);\r
+ PSC0_lPSC_enable(0, 3); // EMIFA\r
+ PSC0_lPSC_enable(0, 4);\r
+ PSC0_lPSC_enable(0, 5);\r
+ PSC0_lPSC_enable(0, 6);\r
+ PSC0_lPSC_enable(0, 8);\r
+ PSC0_lPSC_enable(0, 9);\r
+ PSC0_lPSC_enable(0, 10);\r
+ PSC0_lPSC_enable(0, 11);\r
+ PSC0_lPSC_enable(0, 12);\r
+ PSC0_lPSC_enable(0, 13);\r
+\r
+ // PSC1\r
+ PSC1_lPSC_enable(0, 1);\r
+ PSC1_lPSC_enable(0, 2);\r
+ PSC1_lPSC_enable(0, 3);\r
+ PSC1_lPSC_enable(0, 4);\r
+ PSC1_lPSC_enable(0, 5);\r
+ PSC1_lPSC_enable(0, 6); // EMIFB\r
+ PSC1_lPSC_enable(0, 7);\r
+ PSC1_lPSC_enable(0, 8);\r
+ PSC1_lPSC_enable(0, 9);\r
+ PSC1_lPSC_enable(0, 10);\r
+ PSC1_lPSC_enable(0, 11);\r
+ PSC1_lPSC_enable(0, 12);\r
+ PSC1_lPSC_enable(0, 13);\r
+ PSC1_lPSC_enable(0, 16);\r
+ PSC1_lPSC_enable(0, 17);\r
+ PSC1_lPSC_enable(0, 20);\r
+ PSC1_lPSC_enable(0, 21);\r
+ PSC1_lPSC_enable(0, 24);\r
+ PSC1_lPSC_enable(0, 25);\r
+ PSC1_lPSC_enable(0, 26);\r
+ PSC1_lPSC_enable(0, 31);\r
+\r
+ GEL_TextOut( "[Done]\n" );\r
+}\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Setup_EMIFA( ) *\r
+ * Setup Async-EMIF to the specified timings using either NAND Hw *\r
+ * controller or normal EMIF controller *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+#define AEMIF_AWCCR *( unsigned int* )( 0x68000004 )\r
+#define AEMIF_A1CR *( unsigned int* )( 0x68000010 )\r
+#define AEMIF_A2CR *( unsigned int* )( 0x68000014 )\r
+#define AEMIF_A3CR *( unsigned int* )( 0x68000018 )\r
+#define AEMIF_A4CR *( unsigned int* )( 0x6800001C )\r
+#define AEMIF_NANDFCR *( unsigned int* )( 0x68000060 )\r
+\r
+Setup_EMIFA( )\r
+{\r
+ /* Use extended wait cycles to keep CE low during NAND access */\r
+ AEMIF_AWCCR = 0xff;\r
+\r
+ /* Setup CS2 - 8-bit normal async */\r
+ AEMIF_A1CR = 0x00300608;\r
+ AEMIF_NANDFCR &= ~1;\r
+\r
+ /* Setup CS3 - 8-bit NAND */\r
+ AEMIF_A2CR = 0x00300388;\r
+ AEMIF_NANDFCR |= 2;\r
+\r
+ /* Setup CS4 - 8-bit normal async */\r
+ AEMIF_A3CR = 0x00a00504; // Setup=0, Strobe=A, Hold=0, TA=1, 8-bit\r
+ AEMIF_NANDFCR &= ~4;\r
+\r
+ /* Setup CS5 - 8-bit normal async */\r
+ AEMIF_A4CR = 0x00a00504; // Setup=0, Strobe=A, Hold=0, TA=1, 8-bit\r
+ AEMIF_NANDFCR &= ~8;\r
+}\r
+\r
+\r
+/* ------------------------------------------------------------------------ *\r
+ * *\r
+ * Setup_EMIFB( ) *\r
+ * Configure SDRAM. *\r
+ * *\r
+ * ------------------------------------------------------------------------ */\r
+#define EMIFB_BASE 0xB0000000\r
+#define EMIFB_SDSTAT *(unsigned int*)(EMIFB_BASE + 0x04) //SDRAM Status Register \r
+#define EMIFB_SDCFG *(unsigned int*)(EMIFB_BASE + 0x08) //SDRAM Bank Config Register\r
+#define EMIFB_SDREF *(unsigned int*)(EMIFB_BASE + 0x0C) //SDRAM Refresh Control Register\r
+#define EMIFB_SDTIM1 *(unsigned int*)(EMIFB_BASE + 0x10) //SDRAM Timing Register\r
+#define EMIFB_SDTIM2 *(unsigned int*)(EMIFB_BASE + 0x14) //SDRAM Timing Register\r
+\r
+\r
+\r
+Setup_EMIFB()\r
+{\r
+ // ISSI IS42S16160B-6BL SDRAM, 2 x 16M x 16 (32-bit data path), 133MHz\r
+ EMIFB_SDCFG = 0 // SDRAM Bank Config Register\r
+ |( 1 << 15) // Unlock timing registers\r
+ |( 2 << 9 ) // CAS latency is 2\r
+ |( 2 << 4 ) // 4 bank SDRAM devices\r
+ |( 1 << 0 ); // 512-word pages requiring 9 column address bits\r
+\r
+ EMIFB_SDREF = 0 // SDRAM Refresh Control Register\r
+ |( 0 << 31) // Low power mode disabled\r
+ |( 0 << 30) // MCLK stoping disabled\r
+ |( 0 << 23) // Selects self refresh instead of power down\r
+ |( 1040 <<0); // Refresh rate = 7812.5ns / 7.5ns\r
+\r
+ EMIFB_SDTIM1 = 0 // SDRAM Timing Register 1\r
+ |( 8 << 25) // (67.5ns / 7.55ns) - 1 = TRFC @ 133MHz\r
+ |( 2 << 22 ) // (20ns / 7.5ns) - 1 =TRP\r
+ |( 2 << 19 ) // (20ns / 7.5ns) - 1 = TRCD\r
+ |( 1 << 16 ) // (14ns / 7.5ns) - 1 = TWR\r
+ |( 5 << 11 ) // (45ns / 7.5ns) - 1 = TRAS\r
+ |( 8 << 6 ) // (67.5ns / 7.5ns) - 1 = TRC\r
+ |( 2 << 3 ); // *(((4 * 14ns) + (2 * 7.5ns)) / (4 * 7.5ns)) -1. = TRRD\r
+ // but it says to use this formula if 8 banks but only 4 are used here.\r
+ // and SDCFG1 register only suports upto 4 banks.\r
+\r
+ EMIFB_SDTIM2 = 0 // SDRAM Timing Register 2\r
+ |( 14<< 27) // not sure how they got this number. the datasheet says value should be\r
+ // "Maximum number of refresh_rate intervals from Activate to Precharge command"\r
+ // but has no equation. TRASMAX is 120k.\r
+ |( 9 << 16) // ( 70 / 7.5) - 1\r
+ |( 5 << 0 ); // ( 45 / 7.5 ) - 1\r
+\r
+ EMIFB_SDCFG = 0 // SDRAM Bank Config Register\r
+ |( 1 << 16)\r
+ |( 0 << 15) // Unlock timing registers\r
+ |( 2 << 9 ) // CAS latency is 2\r
+ |( 2 << 4 ) // 4 bank SDRAM devices\r
+ |( 1 << 0 ); // 512-word pages requiring 9 column address bits\r
+\r
+ /*Program the EMIF3C_SDRAM Controller*/\r
+// EMIF3C_SDCFG = 0x00008421;\r
+// EMIF3C_SDTIM1 = 0x10912A10; \r
+// EMIF3C_SDTIM2 = 0x70090005;\r
+// EMIF3C_SDREF = 0x410;\r
+}\r
+\r
+/* GEL file to load microphone files */\r
+\r
+#define MIC1PATH "$(GEL_file_dir)/mics/y16L8g3m7090_1.pcm"\r
+#define MIC2PATH "$(GEL_file_dir)/mics/y16L8g3m7090_2.pcm"\r
+#define MIC3PATH "$(GEL_file_dir)/mics/y16L8g3m7090_3.pcm"\r
+#define MIC4PATH "$(GEL_file_dir)/mics/y16L8g3m7090_4.pcm"\r
+#define MIC5PATH "$(GEL_file_dir)/mics/y16L8g3m7090_5.pcm"\r
+#define MIC6PATH "$(GEL_file_dir)/mics/y16L8g3m7090_6.pcm"\r
+#define MIC7PATH "$(GEL_file_dir)/mics/y16L8g3m7090_7.pcm"\r
+#define MIC8PATH "$(GEL_file_dir)/mics/y16L8g3m7090_8.pcm"\r
+\r
+#define OUTPUTPATH "$(GEL_file_dir)/mics/fileOutput.bin"\r
+\r
+BFLoadMic(buffer,micpath)\r
+{\r
+ GEL_MemoryLoad(buffer,0,160,micpath,32);\r
+}\r
+\r
+BFSaveMic(buffer,micpath)\r
+{\r
+ GEL_MemorySave(buffer,0,320000,micpath,8,0,32);\r
+}\r
+\r
+menuitem "Microphone Load Functions";\r
+\r
+dialog BFLoadOneMic(buffer "Buffer Address",micpath "Microphone File Path")\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,micpath);\r
+ BFLoadMic(buffer,micpath);\r
+}\r
+\r
+hotmenu BFLoadMic1()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC1PATH);\r
+ BFLoadMic(fileInBufs[0],MIC1PATH);\r
+}\r
+\r
+hotmenu BFLoadMic2()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC2PATH);\r
+ BFLoadMic(fileInBufs[1],MIC2PATH);\r
+}\r
+\r
+hotmenu BFLoadMic3()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC3PATH);\r
+ BFLoadMic(fileInBufs[2],MIC3PATH);\r
+}\r
+\r
+hotmenu BFLoadMic4()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC4PATH);\r
+ BFLoadMic(fileInBufs[3],MIC4PATH);\r
+}\r
+\r
+hotmenu BFLoadMic5()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC5PATH);\r
+ BFLoadMic(fileInBufs[4],MIC5PATH);\r
+}\r
+\r
+hotmenu BFLoadMic6()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC6PATH);\r
+ BFLoadMic(fileInBufs[5],MIC6PATH);\r
+}\r
+\r
+hotmenu BFLoadMic7()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC7PATH);\r
+ BFLoadMic(fileInBufs[6],MIC7PATH);\r
+}\r
+\r
+hotmenu BFLoadMic8()\r
+{\r
+ GEL_TextOut("Loading %s\n","",,,,MIC8PATH);\r
+ BFLoadMic(fileInBufs[7],MIC8PATH);\r
+}\r
+\r
+hotmenu BFLoadMicAll()\r
+{\r
+ BFLoadMic1();\r
+ BFLoadMic2();\r
+ BFLoadMic3();\r
+ BFLoadMic4();\r
+ BFLoadMic5();\r
+ BFLoadMic6();\r
+ BFLoadMic7();\r
+ BFLoadMic8();\r
+}\r
+\r
+menuitem "Microphone Save Functions";\r
+\r
+hotmenu BFSaveOutput()\r
+{\r
+ GEL_TextOut("Saving %s\n","",,,,OUTPUTPATH);\r
+ BFSaveMic(fileOutBufs,OUTPUTPATH);\r
+}\r
diff --git a/gel/mics/y16L8g3m7090_1.pcm b/gel/mics/y16L8g3m7090_1.pcm
new file mode 100644 (file)
index 0000000..146ad8a
Binary files /dev/null and b/gel/mics/y16L8g3m7090_1.pcm differ
index 0000000..146ad8a
Binary files /dev/null and b/gel/mics/y16L8g3m7090_1.pcm differ
diff --git a/gel/mics/y16L8g3m7090_2.pcm b/gel/mics/y16L8g3m7090_2.pcm
new file mode 100644 (file)
index 0000000..1429b3e
Binary files /dev/null and b/gel/mics/y16L8g3m7090_2.pcm differ
index 0000000..1429b3e
Binary files /dev/null and b/gel/mics/y16L8g3m7090_2.pcm differ
diff --git a/gel/mics/y16L8g3m7090_3.pcm b/gel/mics/y16L8g3m7090_3.pcm
new file mode 100644 (file)
index 0000000..d9de2c4
Binary files /dev/null and b/gel/mics/y16L8g3m7090_3.pcm differ
index 0000000..d9de2c4
Binary files /dev/null and b/gel/mics/y16L8g3m7090_3.pcm differ
diff --git a/gel/mics/y16L8g3m7090_4.pcm b/gel/mics/y16L8g3m7090_4.pcm
new file mode 100644 (file)
index 0000000..d515aff
Binary files /dev/null and b/gel/mics/y16L8g3m7090_4.pcm differ
index 0000000..d515aff
Binary files /dev/null and b/gel/mics/y16L8g3m7090_4.pcm differ
diff --git a/gel/mics/y16L8g3m7090_5.pcm b/gel/mics/y16L8g3m7090_5.pcm
new file mode 100644 (file)
index 0000000..8d5776d
Binary files /dev/null and b/gel/mics/y16L8g3m7090_5.pcm differ
index 0000000..8d5776d
Binary files /dev/null and b/gel/mics/y16L8g3m7090_5.pcm differ
diff --git a/gel/mics/y16L8g3m7090_6.pcm b/gel/mics/y16L8g3m7090_6.pcm
new file mode 100644 (file)
index 0000000..cc92c93
Binary files /dev/null and b/gel/mics/y16L8g3m7090_6.pcm differ
index 0000000..cc92c93
Binary files /dev/null and b/gel/mics/y16L8g3m7090_6.pcm differ
diff --git a/gel/mics/y16L8g3m7090_7.pcm b/gel/mics/y16L8g3m7090_7.pcm
new file mode 100644 (file)
index 0000000..95014cd
Binary files /dev/null and b/gel/mics/y16L8g3m7090_7.pcm differ
index 0000000..95014cd
Binary files /dev/null and b/gel/mics/y16L8g3m7090_7.pcm differ
diff --git a/gel/mics/y16L8g3m7090_8.pcm b/gel/mics/y16L8g3m7090_8.pcm
new file mode 100644 (file)
index 0000000..a4e382a
Binary files /dev/null and b/gel/mics/y16L8g3m7090_8.pcm differ
index 0000000..a4e382a
Binary files /dev/null and b/gel/mics/y16L8g3m7090_8.pcm differ
diff --git a/hlc.h b/hlc.h
--- /dev/null
+++ b/hlc.h
@@ -0,0 +1,300 @@
+/******************************************************************************\r
+ * FILE PURPOSE:header file of HLC (high-level compensation)\r
+ ******************************************************************************\r
+ * FILE NAME: hlc.h\r
+ *\r
+ * DESCRIPTION: Contains external definitions&functions prototypes for HLC\r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ *****************************************************************************/\r
+#ifndef _HLC_H\r
+#define _HLC_H\r
+\r
+/**\r
+ * @file hlc.h\r
+ * @brief Contains external APIs for the HLC module.\r
+ *\r
+ */\r
+\r
+/* System level header files */\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/** \r
+ * @defgroup HLC High Level Compensation (HLC) \r
+ *\r
+ * @brief HLC is designed to attenuate the incoming signal when the signal level \r
+ * exceeds certain pre-configured threshold to avoid possible distortion \r
+ * due to future flat-top saturation. HLC is a frame-based operation and \r
+ * there's a requirement of minimum 5ms frame size, after HLC parameters \r
+ * are properly configured the signal level will be measured and compared \r
+ * with the threshold, then an attenuation will be calculated and applied \r
+ * to the signal.\r
+ *\r
+ * Application of attenuation to the signal should not be instantaneous. \r
+ * Rather HLC should gradually ramp in and eventually apply the complete \r
+ * attenuation. The ramping in time constant is relatively low to ensure \r
+ * fast action so that the signal level can be reduced before saturation \r
+ * actually occurs. It is fixed to 10ms/dB for now. Ramping in should be \r
+ * triggered only when the power exceeds thresh. During this period, \r
+ * attenuation could increase or stay constant, based on the changes in \r
+ * signal power.\r
+ *\r
+ * In the case the signal level goes below thresh, HLC attenuation should \r
+ * disengage, although slowly, so as not to cause sudden changes in the \r
+ * signal level heard by the listener, especially during short pauses in \r
+ * speech. The ramping out time constant is configurable between 10ms to \r
+ * 1000ms per dB reduction in attenuation, specified in 10ms steps. Ramping \r
+ * out should be triggered only for powers below thresh. During this period, \r
+ * attenuation should gradually reduce based on the setting of the ramp-out \r
+ * time period. \r
+ *\r
+ */\r
+ \r
+/** @ingroup HLC */\r
+/* @{ */\r
+\r
+/** @defgroup hlc_api_return_codes HLC API return codes\r
+ * These are the return codes for the HLC module API functions.\r
+ * \r
+ * @{\r
+ * @name HLC Function Return Value Definitions\r
+ *\r
+ */\r
+/* @{ */\r
+enum {\r
+ hlc_NOERR = 0, /**< Returned from function without error */\r
+ hlc_ERROR = 1, /**< Returned from function with error */ \r
+ hlc_BADPARAM = 2 /**< Returned from function with wrong parameters */ \r
+};\r
+/* @} */\r
+/** @} */\r
+\r
+ \r
+/**\r
+ * @name HLC sampling rate factor\r
+ * \remark These numbers are used as multipliers, so can't be changed to other values.\r
+ */\r
+enum {\r
+ hlc_SRATE_FACTOR_8K = 1, /**< sampling rate is 8kHz */\r
+ hlc_SRATE_FACTOR_16K = 2 /**< sampling rate is 16kHz */\r
+}; \r
+\r
+\r
+/**\r
+ * @name HLC configure bit fields\r
+ * \r
+ */\r
+enum {\r
+ hlc_CFG_BIT_THRESH = 0, /**< Bit 0 for threshold */\r
+ hlc_CFG_BIT_RAMP_OUT = 1, /**< Bit 1 for ramp out period */\r
+ hlc_CFG_BIT_POWER_TC = 2, /**< Bit 2 for power calculation constant */\r
+ hlc_CFG_BIT_FRM_LEN = 3, /**< Bit 3 for frame length */\r
+ hlc_CFG_BIT_SRATE_FACT = 4 /**< Bit 4 for sampling rate factor */\r
+};\r
+\r
+/**\r
+ * @name HLC state\r
+ * \r
+ */\r
+enum {\r
+ hlc_DISABLED = 0, /**< HLC is disabled */\r
+ hlc_ENABLED = 1 /**< HLC is enabled */\r
+};\r
+\r
+/**\r
+ * @name HLC power calculation constant \r
+ *\r
+ */\r
+enum {\r
+ hlc_TC_PWR_4_MS = 1, /**< 4 msec time constant */\r
+ hlc_TC_PWR_8_MS = 2, /**< 8 msec time constant */\r
+ hlc_TC_PWR_16_MS = 3 /**< 16 msec time constant */\r
+};\r
+\r
+/** \r
+ * \brief HLC configure Structure\r
+ * \r
+ * Contains parameters that can be chosen to be configured by user or using \r
+ * the default when initializing HLC\r
+ *\r
+ */\r
+typedef struct{\r
+ tuint valid_bf; /**< Bit-fields indicating which parameters to configure \n\r
+ \link HLC::hlc_CFG_BIT_THRESH bitfield definitions \endlink */\r
+ Fract thresh; /**< Threshold (0.5 dBm0 units) in S14.1 format \n\r
+ valid range: -96 ~ +6 corresponding to -48~+3 dBm0 \n\r
+ default: 0 dBm0*/\r
+ tint ramp_out_period; /**< Ramping out period in ms/dB \n\r
+ valid range: 10~1000ms/dB, default 700ms/dB*/ \r
+ tint power_tc; /**< Power measurement time constant \r
+ valid numbers: \n\r
+ \link HLC::hlc_TC_PWR_4_MS hlc_TC_PWR_4_MS \endlink \n\r
+ \link HLC::hlc_TC_PWR_8_MS hlc_TC_PWR_8_MS \endlink \n\r
+ \link HLC::hlc_TC_PWR_16_MS hlc_TC_PWR_16_MS \endlink \r
+ */\r
+ tint srate_factor; /**< Sampling rate factor: \n\r
+ \link HLC::hlc_SRATE_FACTOR_8K hlc_SRATE_FACTOR_8K \endlink \n\r
+ \link HLC::hlc_SRATE_FACTOR_16K hlc_SRATE_FACTOR_16K \endlink \n \r
+ */\r
+ tint frm_len; /**< Input signal frame length in samples, must be multiple of 5ms */\r
+} hlcConfig_t;\r
+\r
+/**\r
+ * @name HLC control code\r
+ * \r
+ */\r
+enum {\r
+ hlc_CTL_DIS = 0, /**< Disable HLC */\r
+ hlc_CTL_ENA = 1, /**< Enable HLC */\r
+ hlc_CTL_THR = 2 /**< Set \link hlcConfig_t::thresh thresh\endlink in hlcConfig_t */\r
+};\r
+\r
+\r
+/** \r
+ * \brief HLC Control Structure.\r
+ * Contains control commands to change HLC parameters without \r
+ * resetting other parameters\r
+ *\r
+ */\r
+typedef struct{\r
+ tint ctl_code; /**< Set to one of hlc_CTL_XXX control codes, \n\r
+ \link HLC::hlc_CTL_DIS Control Code \endlink */\r
+ union {\r
+ Fract thresh; /**< If ctl_code is \link HLC::hlc_CTL_THR hlc_CTL_THR \endlink, \r
+ set the \link hlcConfig_t::thresh thresh\endlink in the HLC instance */\r
+ } u;\r
+} hlcControl_t;\r
+\r
+/**\r
+ * @name External APIs for HLC\r
+ *\r
+ */\r
+/* @{ */\r
+/**\r
+ * @brief To get the size of a HLC instance structure\r
+ * \r
+ * \remark Function hlcGetSizes() is the first function to be called. \r
+ * \r
+ *\r
+ * @param[in, out] instsize Pointer to the size of a HLC instance.\r
+ * \r
+ * @return \link HLC::hlc_NOERR hlc_NOERR, \endlink \n\r
+ * \link HLC::hlc_ERROR hlc_ERROR, \endlink \n\r
+ * \link HLC::hlc_BADPARAM hlc_BADPARAM \endlink \r
+ */ \r
+tint hlcGetSizes (tint *instsize); \r
+\r
+/**\r
+ * @brief Init HLC according to the user configurations.\r
+ * \r
+ * \remark Function hlcInit() needs be called after hlcGetSizes(). After\r
+ * this function call, HLC is disabled. \r
+ * \r
+ *\r
+ * @param[in, out] inst Pointer to a HLC instance structure.\r
+ * @param[in] hlcCfg_info Pointer to a configuration structure hlcConfig_t.\r
+ * \r
+ * @return \link HLC::hlc_NOERR hlc_NOERR, \endlink \n\r
+ * \link HLC::hlc_ERROR hlc_ERROR, \endlink \n\r
+ * \link HLC::hlc_BADPARAM hlc_BADPARAM \endlink \r
+ * \r
+ */\r
+tint hlcInit(void *inst, hlcConfig_t *hlcCfg_info);\r
+\r
+/**\r
+ * @brief Change parameters on the fly without re-initialzing all HLC parameters\r
+ * \r
+ * \remark Function hlcControl() must be called after hlcInit() to enable HLC. Also\r
+ * it can be called anytime to reconfigure \link hlcConfig_t::thresh thresh\endlink \r
+ * in the HLC instance. \r
+ * \r
+ *\r
+ * @param[in, out] hlcInst Pointer to a HLC instance.\r
+ * @param[in] hlc_ctrl Pointer to a control structure hlcControl_t.\r
+ * \r
+ * @return \link HLC::hlc_NOERR hlc_NOERR, \endlink \n\r
+ * \link HLC::hlc_ERROR hlc_ERROR \endlink \r
+ * \r
+ */\r
+tint hlcControl(void *hlcInst, hlcControl_t *hlc_ctrl);\r
+\r
+/**\r
+ * @brief Calculate and apply attenuation when HLC is enabled\r
+ *\r
+ * \remark This function is the function that processes the voice\r
+ * samples and needs to be called every frame.\r
+ *\r
+ * @param[in] hlcInst Pointer to a HLC instance.\r
+ * @param[in, out] samples Pointer to the input/output signal buffer\r
+ * \r
+ * @return \link HLC::hlc_NOERR hlc_NOERR, \endlink \n\r
+ * \link HLC::hlc_ERROR hlc_ERROR \endlink \r
+ */\r
+tint hlcProcess (void *hlcInst, void *samples);\r
+\r
+/* @} */\r
+/* @} */ /* ingroup HLC */\r
+#endif\r
+\r
+/* end of hlc.h */\r
+\r
diff --git a/lib/vpe_a.a64P b/lib/vpe_a.a64P
new file mode 100644 (file)
index 0000000..14cd267
Binary files /dev/null and b/lib/vpe_a.a64P differ
index 0000000..14cd267
Binary files /dev/null and b/lib/vpe_a.a64P differ
diff --git a/lib/vpe_a.a64P_size.txt b/lib/vpe_a.a64P_size.txt
--- /dev/null
+++ b/lib/vpe_a.a64P_size.txt
@@ -0,0 +1,16 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_a.a64P\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft32x32_sa.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 832 0x00000340 CODE \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Code : 832 0x00000340\r
diff --git a/lib/vpe_a.a64Pe b/lib/vpe_a.a64Pe
new file mode 100644 (file)
index 0000000..432c3a1
Binary files /dev/null and b/lib/vpe_a.a64Pe differ
index 0000000..432c3a1
Binary files /dev/null and b/lib/vpe_a.a64Pe differ
diff --git a/lib/vpe_a.a64Pe_size.txt b/lib/vpe_a.a64Pe_size.txt
--- /dev/null
+++ b/lib/vpe_a.a64Pe_size.txt
@@ -0,0 +1,16 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_a.a64Pe\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft32x32be_sa.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 832 0x00000340 CODE \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Code : 832 0x00000340\r
diff --git a/lib/vpe_a.ae64P b/lib/vpe_a.ae64P
new file mode 100644 (file)
index 0000000..c0f597c
Binary files /dev/null and b/lib/vpe_a.ae64P differ
index 0000000..c0f597c
Binary files /dev/null and b/lib/vpe_a.ae64P differ
diff --git a/lib/vpe_a.ae64Pe b/lib/vpe_a.ae64Pe
new file mode 100644 (file)
index 0000000..1955a0c
Binary files /dev/null and b/lib/vpe_a.ae64Pe differ
index 0000000..1955a0c
Binary files /dev/null and b/lib/vpe_a.ae64Pe differ
diff --git a/lib/vpe_c.a64P b/lib/vpe_c.a64P
new file mode 100644 (file)
index 0000000..cbdfacf
Binary files /dev/null and b/lib/vpe_c.a64P differ
index 0000000..cbdfacf
Binary files /dev/null and b/lib/vpe_c.a64P differ
diff --git a/lib/vpe_c.a64P_size.txt b/lib/vpe_c.a64P_size.txt
--- /dev/null
+++ b/lib/vpe_c.a64P_size.txt
@@ -0,0 +1,177 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_c.a64P\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlc.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1408 0x00000580 CODE \r
+ .const:_hlcdBLinTable : 24 0x00000018 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: slm.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 384 0x00000180 CODE \r
+ .const:_slm_tbl : 190 0x000000be DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: snl.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1184 0x000004a0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: svd.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 288 0x00000120 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: pcm.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2880 0x00000b40 CODE \r
+ .const:_pcm_seg_end : 16 0x00000010 DATA \r
+ .const:_pcm_seg_base_ulaw : 16 0x00000010 DATA \r
+ .const:_pcm_seg_base_alaw : 16 0x00000010 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrprocess.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2656 0x00000a60 CODE \r
+ .const:_nr_sqrt_coef : 10 0x0000000a DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrgain.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 352 0x00000160 CODE \r
+ .const:_nrdBLinTable : 24 0x00000018 DATA \r
+ .const:_nrdBCorrLinTable : 16 0x00000010 DATA \r
+ .const:_nrInterpolateCoeff : 20 0x00000014 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcinit.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 288 0x00000120 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: slminit.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 128 0x00000080 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: snlinit.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 160 0x000000a0 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: svdinit.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 128 0x00000080 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc_coef.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+.const:_sfc_def_decim_interp_filt : 36 0x00000024 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nr.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2080 0x00000820 CODE \r
+ .cinit : 92 0x0000005c DATA \r
+ .far : 84 0x00000054 UDATA\r
+ .const : 32 0x00000020 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrtbl.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .cinit : 40 0x00000028 DATA \r
+ .const:_nr_win_3ms_8k : 48 0x00000030 DATA \r
+ .const:_nr_win_4ms_8k : 64 0x00000040 DATA \r
+ .const:_nr_win_5ms_8k : 80 0x00000050 DATA \r
+ .const:_nr_win_6ms_8k : 96 0x00000060 DATA \r
+ .const:_nr_win_3ms_16k : 96 0x00000060 DATA \r
+ .const:_nr_win_4ms_16k : 128 0x00000080 DATA \r
+ .const:_nr_win_5ms_16k : 160 0x000000a0 DATA \r
+ .const:_nr_win_6ms_16k : 192 0x000000c0 DATA \r
+ .far : 32 0x00000020 UDATA\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 256 0x00000100 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 640 0x00000280 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: slmnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 160 0x000000a0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 3456 0x00000d80 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1728 0x000006c0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrffttb.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .const:_nr_fft_w256 : 1008 0x000003f0 DATA \r
+ .const:_nr_fft_w128 : 480 0x000001e0 DATA \r
+ .const:_nr_sine_cosine_tbl : 1024 0x00000400 DATA \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Uninitialized Data : 116 0x00000074\r
+ Initialized Data : 3920 0x00000f50\r
+ Code : 18176 0x00004700\r
diff --git a/lib/vpe_c.a64Pe b/lib/vpe_c.a64Pe
new file mode 100644 (file)
index 0000000..e7eb167
Binary files /dev/null and b/lib/vpe_c.a64Pe differ
index 0000000..e7eb167
Binary files /dev/null and b/lib/vpe_c.a64Pe differ
diff --git a/lib/vpe_c.a64Pe_size.txt b/lib/vpe_c.a64Pe_size.txt
--- /dev/null
+++ b/lib/vpe_c.a64Pe_size.txt
@@ -0,0 +1,177 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_c.a64Pe\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlc.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1408 0x00000580 CODE \r
+ .const:_hlcdBLinTable : 24 0x00000018 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: slm.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 384 0x00000180 CODE \r
+ .const:_slm_tbl : 190 0x000000be DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: snl.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1184 0x000004a0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: svd.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 288 0x00000120 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: pcm.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2880 0x00000b40 CODE \r
+ .const:_pcm_seg_end : 16 0x00000010 DATA \r
+ .const:_pcm_seg_base_ulaw : 16 0x00000010 DATA \r
+ .const:_pcm_seg_base_alaw : 16 0x00000010 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrprocess.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2656 0x00000a60 CODE \r
+ .const:_nr_sqrt_coef : 10 0x0000000a DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrgain.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 352 0x00000160 CODE \r
+ .const:_nrdBLinTable : 24 0x00000018 DATA \r
+ .const:_nrdBCorrLinTable : 16 0x00000010 DATA \r
+ .const:_nrInterpolateCoeff : 20 0x00000014 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcinit.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 288 0x00000120 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: slminit.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 128 0x00000080 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: snlinit.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 160 0x000000a0 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: svdinit.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 128 0x00000080 CODE \r
+ .const : 4 0x00000004 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc_coef.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+.const:_sfc_def_decim_interp_filt : 36 0x00000024 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nr.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2080 0x00000820 CODE \r
+ .cinit : 92 0x0000005c DATA \r
+ .far : 84 0x00000054 UDATA\r
+ .const : 32 0x00000020 DATA \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrtbl.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .cinit : 40 0x00000028 DATA \r
+ .const:_nr_win_3ms_8k : 48 0x00000030 DATA \r
+ .const:_nr_win_4ms_8k : 64 0x00000040 DATA \r
+ .const:_nr_win_5ms_8k : 80 0x00000050 DATA \r
+ .const:_nr_win_6ms_8k : 96 0x00000060 DATA \r
+ .const:_nr_win_3ms_16k : 96 0x00000060 DATA \r
+ .const:_nr_win_4ms_16k : 128 0x00000080 DATA \r
+ .const:_nr_win_5ms_16k : 160 0x000000a0 DATA \r
+ .const:_nr_win_6ms_16k : 192 0x000000c0 DATA \r
+ .far : 32 0x00000020 UDATA\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 256 0x00000100 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 608 0x00000260 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: slmnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 160 0x000000a0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 3456 0x00000d80 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 1696 0x000006a0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrffttb.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .const:_nr_fft_w256 : 1008 0x000003f0 DATA \r
+ .const:_nr_fft_w128 : 480 0x000001e0 DATA \r
+ .const:_nr_sine_cosine_tbl : 1024 0x00000400 DATA \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Uninitialized Data : 116 0x00000074\r
+ Initialized Data : 3920 0x00000f50\r
+ Code : 18112 0x000046c0\r
diff --git a/lib/vpe_c.ae64P b/lib/vpe_c.ae64P
new file mode 100644 (file)
index 0000000..ddb1d4f
Binary files /dev/null and b/lib/vpe_c.ae64P differ
index 0000000..ddb1d4f
Binary files /dev/null and b/lib/vpe_c.ae64P differ
diff --git a/lib/vpe_c.ae64Pe b/lib/vpe_c.ae64Pe
new file mode 100644 (file)
index 0000000..8bc1564
Binary files /dev/null and b/lib/vpe_c.ae64Pe differ
index 0000000..8bc1564
Binary files /dev/null and b/lib/vpe_c.ae64Pe differ
diff --git a/lib/vpe_cm.a64P b/lib/vpe_cm.a64P
new file mode 100644 (file)
index 0000000..313d3c2
Binary files /dev/null and b/lib/vpe_cm.a64P differ
index 0000000..313d3c2
Binary files /dev/null and b/lib/vpe_cm.a64P differ
diff --git a/lib/vpe_cm.a64P_size.txt b/lib/vpe_cm.a64P_size.txt
--- /dev/null
+++ b/lib/vpe_cm.a64P_size.txt
@@ -0,0 +1,59 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_cm.a64P\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 256 0x00000100 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 800 0x00000320 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: slmnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 384 0x00000180 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrnum.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 5056 0x000013c0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2592 0x00000a20 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrops.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 512 0x00000200 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrffttb.o64P\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .const:_nr_ffttable : 768 0x00000300 DATA \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Initialized Data : 768 0x00000300\r
+ Code : 9600 0x00002580\r
diff --git a/lib/vpe_cm.a64Pe b/lib/vpe_cm.a64Pe
new file mode 100644 (file)
index 0000000..35d8a18
Binary files /dev/null and b/lib/vpe_cm.a64Pe differ
index 0000000..35d8a18
Binary files /dev/null and b/lib/vpe_cm.a64Pe differ
diff --git a/lib/vpe_cm.a64Pe_size.txt b/lib/vpe_cm.a64Pe_size.txt
--- /dev/null
@@ -0,0 +1,59 @@
+====================================================================\r
+REPORT FOR LIBRARY: lib/vpe_cm.a64Pe\r
+====================================================================\r
+\r
+\r
+************************************************************\r
+REPORT FOR FILE: hlcnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 256 0x00000100 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: sfc.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 800 0x00000320 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: slmnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 384 0x00000180 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrnum.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 5056 0x000013c0 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrfft.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 2592 0x00000a20 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrops.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .text : 512 0x00000200 CODE \r
+\r
+************************************************************\r
+REPORT FOR FILE: nrffttb.o64Pe\r
+************************************************************\r
+ Name : Size (dec) Size (hex) Type\r
+------------------------------ : ---------- ---------- ----\r
+ .const:_nr_ffttable : 768 0x00000300 DATA \r
+\r
+------------------------------------------------------------\r
+Totals by section type\r
+------------------------------------------------------------\r
+ Initialized Data : 768 0x00000300\r
+ Code : 9600 0x00002580\r
diff --git a/lib/vpe_cm.ae64P b/lib/vpe_cm.ae64P
new file mode 100644 (file)
index 0000000..d4efbbc
Binary files /dev/null and b/lib/vpe_cm.ae64P differ
index 0000000..d4efbbc
Binary files /dev/null and b/lib/vpe_cm.ae64P differ
diff --git a/lib/vpe_cm.ae64Pe b/lib/vpe_cm.ae64Pe
new file mode 100644 (file)
index 0000000..576a8f1
Binary files /dev/null and b/lib/vpe_cm.ae64Pe differ
index 0000000..576a8f1
Binary files /dev/null and b/lib/vpe_cm.ae64Pe differ
diff --git a/package.xdc b/package.xdc
--- /dev/null
+++ b/package.xdc
@@ -0,0 +1,91 @@
+requires ti.mas.types[5,0,8,1];\r
+requires ti.mas.fract[2,0,8,1];\r
+requires ti.mas.util[5,0,0,0];\r
+requires internal ti.mas.swtools[3,0,0,0];\r
+\r
+/*! VPE package\r
+ * \r
+ * @a(NAME) `ti.mas.vpe`\r
+ *\r
+ * @a(DESCRIPTION)\r
+ *\r
+ * This package creates the VPE package. It depends on the following packages:\r
+ * @p(dlist)\r
+ * - `ti.mas.types`\r
+ * - `ti.mas.fract`\r
+ * - `ti.mas.util`\r
+ *\r
+ * @a(CONTENTS)\r
+ * @p(dlist)\r
+ * - 'hlc' module\r
+ * provides high level compensation functionality\r
+ * - 'slm' module\r
+ * provides signal limitation functionality\r
+ * - `Version` module\r
+ * provides version numbering for VPE package and is described in\r
+ * `Version.xdc`. Note that `Version.xdc` is generated from the template file \r
+ * `Version.xdt`.\r
+ * @p\r
+ * @a(TARGETS) The following architecture targets are supported:\r
+ *\r
+ * @p(dlist)\r
+ * - `C55`\r
+ * - `C55_large`\r
+ * - `C64`\r
+ * - `C64Plus`\r
+ * @p\r
+ * @a(BUILD) The build options are implemented in the file `package.bld`.\r
+ *\r
+ * Build command: `xdc XDCARGS="option"`.\r
+ * option1 = [c55s, c55l, c64le, c64be, c64Ple, c64Pbe, all]\r
+ * option2 = [obj, src, docs]\r
+ * option3 = []\r
+ * If any other option other than above is used then the package is not built correctly\r
+ * and will crash when used in conjunction with other packages.\r
+ *\r
+ *\r
+ * Generated files:\r
+ *\r
+ * @p(dlist)\r
+ * - `Version.h`\r
+ * @p\r
+ *\r
+ * Command to clean: `xdc clean`\r
+ *\r
+ * @a(Online API documentation)\r
+ *\r
+ * `xdc XDCARGS="option" gendocs`\r
+ *\r
+ * @a(RELEASES)\r
+ *\r
+ * Release creation: `xdc XDCARGS="option1 option2" [gendocs] release`\r
+ * option1 = [c55s, c55l, c64le, c64be, c64Ple, c64Pbe]\r
+ * option2 = [obj, src, docs]\r
+ * option3 = []\r
+ *\r
+ * Using the option1 as given and option2="obj" creates the released tar file containing object code only:\r
+ * `ti_mas_vpe_<arch>_src_<v>_<r>_<x>_<p>.tar` ???? src or obj ???\r
+ * \r
+ * Using the option1 as given and option2="src" creates the released tar file containing source with object code:\r
+ * `ti_mas_vpe_<arch>_src_<v>_<r>_<x>_<p>.tar`\r
+ *\r
+ * To generate document only the following should be used:\r
+ * `xdc XDCARGS="docs" release` or `xdc XDCARGS="option1,docs"`\r
+ * and `ti_mas_vpe_docs_<v>_<r>_<x>_<p>.tar` is created\r
+ * \r
+ * If any other option other than the ones listed above is used, no release is created.\r
+ * \r
+ *\r
+ * \r
+ *\r
+ * @a(Copyright)\r
+ * @p(html)\r
+ * © 2008 Texas Instruments, Inc.\r
+ * @p\r
+ */\r
+\r
+package ti.mas.vpe[4,0,1,0] {\r
+ module Version;\r
+}\r
+\r
+/* nothing past this point */\r
diff --git a/package.xs b/package.xs
--- /dev/null
+++ b/package.xs
@@ -0,0 +1,85 @@
+/******************************************************************************\r
+ * FILE PURPOSE: Defines libarary directory name using getLibs\r
+ ******************************************************************************\r
+ * FILE NAME: package.xs\r
+ *\r
+ * DESCRIPTION: This file defines the library directory name for proper build\r
+ * in case a different directory name for storing library files \r
+ * other than "lib" is used. XDC by default assumes that the \r
+ * library directory is "lib" is not sepcifically indicated by use\r
+ * the attributes in a file called package.xs \r
+ *\r
+ * TABS: NONE\r
+ *\r
+ * Copyright (C) 2012, Texas Instruments, Inc.\r
+ *****************************************************************************/\r
+\r
+/* "mangle" program build attrs into an appropriate directory name */\r
+function getLibs (prog)\r
+{\r
+ var name = prog.build.target.name;\r
+ var suff = prog.build.target.suffix;\r
+ var lib = "";\r
+\r
+ /* "mangle" program build attrs into an appropriate directory name */\r
+ if (name == 'C64') {\r
+ lib = "lib/vpe_c.a64;lib/vpe_cm.a64";\r
+ }\r
+ else if (name == 'C64_big_endian') {\r
+ lib = "c64e/vpe_c.a64e;lib/vpe_cm.a64e";\r
+ }\r
+ else if (name == 'C64P' && suff == '64P') {\r
+ lib = "lib/vpe_a.a64P;lib/vpe_c.a64P;lib/vpe_cm.a64P";\r
+ }\r
+ else if (name == 'C64P' && suff == 'e64P') {\r
+ lib = "lib/vpe_a.ae64P;lib/vpe_c.ae64P;lib/vpe_cm.ae64P";\r
+ }\r
+ else if (name == 'C64P_big_endian' && suff == '64Pe') {\r
+ lib = "lib/vpe_a.a64Pe;lib/vpe_c.a64Pe;lib/vpe_cm.a64Pe";\r
+ }\r
+ else if (name == 'C64P_big_endian' && suff == 'e64Pe') {\r
+ lib = "lib/vpe_a.ae64Pe;lib/vpe_c.ae64Pe;lib/vpe_cm.ae64Pe";\r
+ }\r
+ else if (name == 'C66' && suff == '66') {\r
+ lib = "lib/vpe_a.a66;lib/vpe_c.a66;lib/vpe_cm.a66";\r
+ }\r
+ else if (name == 'C66' && suff == 'e66') {\r
+ lib = "lib/vpe_a.ae66;lib/vpe_c.ae66;lib/vpe_cm.ae66";\r
+ }\r
+ else if (name == 'C66_big_endian' && suff == '66e') {\r
+ lib = "lib/vpe_a.a66e;lib/vpe_c.a66e;lib/vpe_cm.a66e";\r
+ }\r
+ else if (name == 'C66_big_endian' && suff == 'e66e') {\r
+ lib = "lib/vpe_a.ae66e;lib/vpe_c.ae66e;lib/vpe_cm.ae66e";\r
+ }\r
+ else if (name == 'C674' && suff == '674') {\r
+ lib = "lib/vpe_a.a674;lib/vpe_c.a674;lib/vpe_cm.a674";\r
+ }\r
+ else if (name == 'C674' && suff == 'e674') {\r
+ lib = "lib/vpe_a.ae674;lib/vpe_c.ae674;lib/vpe_cm.ae674";\r
+ }\r
+ else if (name == 'C674_big_endian' && suff == '674e') {\r
+ lib = "lib/vpe_a.a674e;lib/vpe_c.a674e;lib/vpe_cm.a674e";\r
+ }\r
+ else if (name == 'C674_big_endian' && suff == 'e674e') {\r
+ lib = "lib/vpe_a.ae674e;lib/vpe_c.ae674e;lib/vpe_cm.ae674e";\r
+ }\r
+ else if (name == 'C55') {\r
+ lib = "lib/vpe_c.a55;lib/vpe_a.a55;lib/vpe_cm.a55";\r
+ }\r
+ else if (name == 'C55_large') {\r
+ lib = "lib/vpe_c.a55L;lib/vpe_a.a55L;lib/vpe_cm.a55L";\r
+ }\r
+ else if (name == 'C54') {\r
+ lib = "lib/vpe_c.a54";\r
+ }\r
+ else if (name == 'C54_far') {\r
+ lib = "lib/vpe_c.a54f";\r
+ }\r
+ else if (name == 'GCArmv7A') { \r
+ lib = "lib/vpe_a.av7A;lib/vpe_c.av7A";\r
+ }\r
+ \r
+ return (lib);\r
+}\r
+\r
diff --git a/package/.vers_b150 b/package/.vers_b150
diff --git a/package/.vers_g180 b/package/.vers_g180
diff --git a/package/.vers_r170 b/package/.vers_r170
diff --git a/package/.xdc-y50 b/package/.xdc-y50
diff --git a/package/build.cfg b/package/build.cfg
--- /dev/null
+++ b/package/build.cfg
@@ -0,0 +1,9 @@
+if (pkg.$vers.length >= 3) {
+ pkg.$vers.push(Packages.xdc.services.global.Vers.getDate(xdc.csd() + '/..'));
+}
+
+pkg.build.libraries = [
+];
+
+pkg.build.libDesc = [
+];
diff --git a/package/package.bld.xml b/package/package.bld.xml
--- /dev/null
+++ b/package/package.bld.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<!-- This file conforms to the DTD xdc/bld/build.dtd -->
+<package name="ti.mas.vpe" version="4, 0, 1, 0" producerId="undefined">
+ <units>
+ <module name="Version"/>
+ </units>
+ <sources>
+ </sources>
+ <configscripts>
+ </configscripts>
+ <makefiles>
+ <srcFile name="package.mak" src="package.bld"/>
+ <srcFile name="package/package.xdc.dep" src="package.xdc"/>
+ <srcFile name="package/package.cfg.dep" src="package.xdc"/>
+ <srcFile name="package/rel/ti_mas_vpe_obj_c64Px_3_6_0_0.zip.dep" src="package/rel/ti_mas_vpe_obj_c64Px_3_6_0_0.xdc.inc"/>
+ </makefiles>
+ <targets>
+ </targets>
+ <libraries>
+ </libraries>
+ <configurations>
+ </configurations>
+ <executables>
+ </executables>
+ <tests>
+ </tests>
+ <releases relDir="package/rel/">
+ <release name="ti_mas_vpe_obj_c64Px_3_6_0_0"
+ pname="ti_mas_vpe_obj_c64Px_3_6_0_0.zip"
+ label="default"
+ >
+ <file name="package/package.bld.xml"/>
+ <file name="package/build.cfg"/>
+ <file name="lib/vpe_cm.a64P"/>
+ <file name="lib/vpe_cm.a64P_size.txt"/>
+ <file name="lib/vpe_c.a64P"/>
+ <file name="lib/vpe_c.a64P_size.txt"/>
+ <file name="lib/vpe_a.a64P"/>
+ <file name="lib/vpe_a.a64P_size.txt"/>
+ <file name="lib/vpe_cm.a64Pe"/>
+ <file name="lib/vpe_cm.a64Pe_size.txt"/>
+ <file name="lib/vpe_c.a64Pe"/>
+ <file name="lib/vpe_c.a64Pe_size.txt"/>
+ <file name="lib/vpe_a.a64Pe"/>
+ <file name="lib/vpe_a.a64Pe_size.txt"/>
+ <file name="lib/vpe_cm.ae64P"/>
+ <file name="lib/vpe_c.ae64P"/>
+ <file name="lib/vpe_a.ae64P"/>
+ <file name="lib/vpe_cm.ae64Pe"/>
+ <file name="lib/vpe_c.ae64Pe"/>
+ <file name="lib/vpe_a.ae64Pe"/>
+ <file name="docs//doxygen//APIDoxyfile.xdt"/>
+ <file name="docs//doxygen//doxyfile.xdt"/>
+ <file name="docs//doxygen//html//../VPEAPI.chm"/>
+ <file name="./hlc.h"/>
+ <file name="./slm.h"/>
+ <file name="./snl.h"/>
+ <file name="./svd.h"/>
+ <file name="./sfc.h"/>
+ <file name="./pcm.h"/>
+ <file name="./asnr.h"/>
+ <file name="./vpe_3_6_0_0_release_notes.html"/>
+ <file name="./Version.h"/>
+ <file name="docs/manifest/Software_Manifest.html"/>
+ <file name="docs/relnotes_archive"/>
+ <file name="package/package.xdc.inc"/>
+ <file name="package/package.cfg.xdc.inc"/>
+ </release>
+ </releases>
+ <repositories>
+ </repositories>
+</package>
diff --git a/package/package.defs.h b/package/package.defs.h
--- /dev/null
+++ b/package/package.defs.h
@@ -0,0 +1,13 @@
+/*
+ * Do not modify this file; it is automatically
+ * generated and any modifications will be overwritten.
+ *
+ * @(#) xdc-y50
+ */
+
+#ifndef ti_mas_vpe__
+#define ti_mas_vpe__
+
+
+
+#endif /* ti_mas_vpe__ */
diff --git a/package/package.rel.xml b/package/package.rel.xml
--- /dev/null
+++ b/package/package.rel.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<!-- This file conforms to the DTD xdc/bld/release.dtd -->
+<release name="ti_mas_vpe_obj_c64Px_3_6_0_0" label="default" date="1373054541386" buildCount="3" producerId="undefined">
+<package name="ti.mas.vpe"
+ version="4, 0, 1, 0"/>
+<imports>
+ <package name="ti.mas.types"
+ version="5, 0, 8, 1"/>
+ <package name="ti.mas.fract"
+ version="2, 0, 8, 1"/>
+ <package name="ti.mas.util"
+ version="5, 0, 0, 0"/>
+</imports>
+<references>
+ <package name="xdc"
+ version="1, 1, 1, 1359065657193"
+ providerId="xdccore">
+ <file name="IPackage.xdc"/>
+ <file name="IPackage.xs"/>
+ <file name="om2.xs"/>
+ <file name="package.xs"/>
+ <file name="template.xs"/>
+ <file name="xdc.tci"/>
+ <file name="xmlgen.xs"/>
+ <file name="xmlgen2.xs"/>
+ </package>
+ <package name="xdc.services.global"
+ version="1, 0, 0, 1359065675206"
+ providerId="xdccore">
+ <file name="Clock.xs"/>
+ <file name="Trace.xs"/>
+ <file name="java\package.jar"/>
+ </package>
+ <package name="xdc.bld"
+ version="1, 0, 2, 1359065660380"
+ providerId="xdccore">
+ <file name="BuildEnvironment.xs"/>
+ <file name="Configuration.xs"/>
+ <file name="Executable.xs"/>
+ <file name="ITarget.xs"/>
+ <file name="ITarget2.xs"/>
+ <file name="ITargetFilter.xs"/>
+ <file name="Library.xs"/>
+ <file name="Manifest.xs"/>
+ <file name="PackageContents.xs"/>
+ <file name="Repository.xs"/>
+ <file name="Script.xs"/>
+ <file name="Utils.xs"/>
+ <file name="_gen.xs"/>
+ <file name="bld.js"/>
+ <file name="package.xs"/>
+ </package>
+ <package name="ti.mas.swtools"
+ version="3, 0, 0, 0, 1373054377000"
+ providerId="M:/TI_MAS_VOLIB_2_1_0_1_bldforge/dsps_gtmas">
+ <file name="CommonBld.xs"/>
+ <file name="Copy.xs"/>
+ <file name="IVersion2.xdc"/>
+ <file name="Version2.h.xdt"/>
+ <file name="Version2.xdt"/>
+ <file name="config.bld"/>
+ <file name="targParams.xs"/>
+ </package>
+ <package name="ti.targets"
+ version="1, 0, 3, 1359054132244"
+ providerId="xdccore">
+ <file name="C28_float.xs"/>
+ <file name="C28_large.xs"/>
+ <file name="ITarget.xs"/>
+ <file name="package.xs"/>
+ </package>
+ <package name="ti.targets.elf"
+ version="1, 0, 0, 1359054139876"
+ providerId="xdccore">
+ <file name="ITarget.xs"/>
+ <file name="package.xs"/>
+ </package>
+ <package name="ti.mas.volib"
+ version="2, 0, 0, 0, 1373051393000"
+ providerId="M:/TI_MAS_VOLIB_2_1_0_1_bldforge/dsps_gtmas">
+ <file name="xdcargs_C64x+.xs"/>
+ </package>
+ <package name="xdc.services.io"
+ version="1, 0, 0, 1359065681607"
+ providerId="xdccore">
+ <file name="File.xs"/>
+ <file name="package.xs"/>
+ </package>
+ <package name="xdc.shelf"
+ version="1, 0, 0, 1359065689041"
+ providerId="xdccore">
+ <file name="java\antlr.jar"/>
+ <file name="java\ecj.jar"/>
+ <file name="java\js.jar"/>
+ <file name="java\tar.jar"/>
+ </package>
+ <package name="xdc.services.spec"
+ version="1, 0, 0, 0, 1359065681606"
+ providerId="xdccore">
+ <file name="java\package.jar"/>
+ </package>
+ <package name="xdc.services.intern.gen"
+ version="1, 0, 0, 0, 1359065678695"
+ providerId="xdccore">
+ <file name="java\package.jar"/>
+ </package>
+ <package name="xdc.services.intern.cmd"
+ version="1, 0, 0, 0, 1359065678086"
+ providerId="xdccore">
+ <file name="java\package.jar"/>
+ </package>
+ <package name="xdc.services.intern.xsr"
+ version="1, 0, 0, 1359065679578"
+ providerId="xdccore">
+ <file name="java\package.jar"/>
+ </package>
+ <xdcRoot base="C:/MAS_Tools/xdctools_3_24_06_63/">
+ <file name="/packages/xdc/package.xdc"/>
+ <file name="include\utils.tci"/>
+ <xdcCorePkg version="16, 0, 2, 0, 1359065661968" producerId="/db/ztree/library/trees/xdc/xdc-y50x/src/packages" buildCount="391" releaseName="xdc_corevers" label="default" date="1359065661968"/>
+ </xdcRoot>
+</references>
+<orphans>
+</orphans>
+</release>
diff --git a/package/package_ti.mas.vpe.c b/package/package_ti.mas.vpe.c
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Do not modify this file; it is automatically
+ * generated and any modifications will be overwritten.
+ *
+ * @(#) xdc-y50
+ */
+
+#include <xdc/std.h>
+
+__FAR__ char ti_mas_vpe__dummy__;
+
+#define __xdc_PKGVERS 4, 0, 1, 0
+#define __xdc_PKGNAME ti.mas.vpe
+#define __xdc_PKGPREFIX ti_mas_vpe_
+
+#ifdef __xdc_bld_pkg_c__
+#define __stringify(a) #a
+#define __local_include(a) __stringify(a)
+#include __local_include(__xdc_bld_pkg_c__)
+#endif
+
diff --git a/package/ti.mas.vpe.ccs b/package/ti.mas.vpe.ccs
new file mode 100644 (file)
index 0000000..66586f5
Binary files /dev/null and b/package/ti.mas.vpe.ccs differ
index 0000000..66586f5
Binary files /dev/null and b/package/ti.mas.vpe.ccs differ
diff --git a/package/ti.mas.vpe.sch b/package/ti.mas.vpe.sch
diff --git a/package/ti_mas_vpe.class b/package/ti_mas_vpe.class
new file mode 100644 (file)
index 0000000..8df8cd1
Binary files /dev/null and b/package/ti_mas_vpe.class differ
index 0000000..8df8cd1
Binary files /dev/null and b/package/ti_mas_vpe.class differ
diff --git a/package/ti_mas_vpe.java b/package/ti_mas_vpe.java
--- /dev/null
+++ b/package/ti_mas_vpe.java
@@ -0,0 +1,276 @@
+/*
+ * Do not modify this file; it is automatically
+ * generated and any modifications will be overwritten.
+ *
+ * @(#) xdc-y50
+ */
+import java.util.*;
+import org.mozilla.javascript.*;
+import xdc.services.intern.xsr.*;
+import xdc.services.spec.Session;
+
+public class ti_mas_vpe
+{
+ static final String VERS = "@(#) xdc-y50\n";
+
+ static final Proto.Elm $$T_Bool = Proto.Elm.newBool();
+ static final Proto.Elm $$T_Num = Proto.Elm.newNum();
+ static final Proto.Elm $$T_Str = Proto.Elm.newStr();
+ static final Proto.Elm $$T_Obj = Proto.Elm.newObj();
+
+ static final Proto.Fxn $$T_Met = new Proto.Fxn(null, null, 0, -1, false);
+ static final Proto.Map $$T_Map = new Proto.Map($$T_Obj);
+ static final Proto.Arr $$T_Vec = new Proto.Arr($$T_Obj);
+
+ static final XScriptO $$DEFAULT = Value.DEFAULT;
+ static final Object $$UNDEF = Undefined.instance;
+
+ static final Proto.Obj $$Package = (Proto.Obj)Global.get("$$Package");
+ static final Proto.Obj $$Module = (Proto.Obj)Global.get("$$Module");
+ static final Proto.Obj $$Instance = (Proto.Obj)Global.get("$$Instance");
+ static final Proto.Obj $$Params = (Proto.Obj)Global.get("$$Params");
+
+ static final Object $$objFldGet = Global.get("$$objFldGet");
+ static final Object $$objFldSet = Global.get("$$objFldSet");
+ static final Object $$proxyGet = Global.get("$$proxyGet");
+ static final Object $$proxySet = Global.get("$$proxySet");
+ static final Object $$delegGet = Global.get("$$delegGet");
+ static final Object $$delegSet = Global.get("$$delegSet");
+
+ Scriptable xdcO;
+ Session ses;
+ Value.Obj om;
+
+ boolean isROV;
+ boolean isCFG;
+
+ Proto.Obj pkgP;
+ Value.Obj pkgV;
+
+ ArrayList<Object> imports = new ArrayList<Object>();
+ ArrayList<Object> loggables = new ArrayList<Object>();
+ ArrayList<Object> mcfgs = new ArrayList<Object>();
+ ArrayList<Object> icfgs = new ArrayList<Object>();
+ ArrayList<String> inherits = new ArrayList<String>();
+ ArrayList<Object> proxies = new ArrayList<Object>();
+ ArrayList<Object> sizes = new ArrayList<Object>();
+ ArrayList<Object> tdefs = new ArrayList<Object>();
+
+ void $$IMPORTS()
+ {
+ Global.callFxn("loadPackage", xdcO, "ti.mas.types");
+ Global.callFxn("loadPackage", xdcO, "ti.mas.fract");
+ Global.callFxn("loadPackage", xdcO, "ti.mas.util");
+ Global.callFxn("loadPackage", xdcO, "xdc");
+ Global.callFxn("loadPackage", xdcO, "xdc.corevers");
+ Global.callFxn("loadPackage", xdcO, "ti.mas.swtools");
+ }
+
+ void $$OBJECTS()
+ {
+ pkgP = (Proto.Obj)om.bind("ti.mas.vpe.Package", new Proto.Obj());
+ pkgV = (Value.Obj)om.bind("ti.mas.vpe", new Value.Obj("ti.mas.vpe", pkgP));
+ }
+
+ void Version$$OBJECTS()
+ {
+ Proto.Obj po, spo;
+ Value.Obj vo;
+
+ po = (Proto.Obj)om.bind("ti.mas.vpe.Version.Module", new Proto.Obj());
+ vo = (Value.Obj)om.bind("ti.mas.vpe.Version", new Value.Obj("ti.mas.vpe.Version", po));
+ pkgV.bind("Version", vo);
+ // decls
+ }
+
+ void Version$$CONSTS()
+ {
+ // module Version
+ om.bind("ti.mas.vpe.Version.MAJOR", 3L);
+ om.bind("ti.mas.vpe.Version.MINOR", 6L);
+ om.bind("ti.mas.vpe.Version.PATCH", 0L);
+ om.bind("ti.mas.vpe.Version.BUILD", 0L);
+ om.bind("ti.mas.vpe.Version.QUALITY", 3L);
+ om.bind("ti.mas.vpe.Version.BTYPE", 0L);
+ om.bind("ti.mas.vpe.Version.WIDTH", 0L);
+ om.bind("ti.mas.vpe.Version.PKGSTD", 2L);
+ }
+
+ void Version$$CREATES()
+ {
+ Proto.Fxn fxn;
+ StringBuilder sb;
+
+ }
+
+ void Version$$FUNCTIONS()
+ {
+ Proto.Fxn fxn;
+
+ }
+
+ void Version$$SIZES()
+ {
+ }
+
+ void Version$$TYPES()
+ {
+ Scriptable cap;
+ Proto.Obj po;
+ Proto.Str ps;
+ Proto.Typedef pt;
+ Object fxn;
+
+ po = (Proto.Obj)om.findStrict("ti.mas.vpe.Version.Module", "ti.mas.vpe");
+ po.init("ti.mas.vpe.Version.Module", om.findStrict("ti.mas.swtools.IVersion2.Module", "ti.mas.vpe"));
+ po.addFld("$hostonly", $$T_Num, 1, "r");
+ po.addFld("QUALITY_PREALPHA", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("QUALITY_ALPHA", Proto.Elm.newCNum("(xdc_UInt16)"), 1L, "rh");
+ po.addFld("QUALITY_BETA", Proto.Elm.newCNum("(xdc_UInt16)"), 2L, "rh");
+ po.addFld("QUALITY_GA", Proto.Elm.newCNum("(xdc_UInt16)"), 3L, "rh");
+ po.addFld("BTYPE_STANDARD", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("BTYPE_ENGINEERING", Proto.Elm.newCNum("(xdc_UInt16)"), 1L, "rh");
+ po.addFld("BTYPE_DEBUG", Proto.Elm.newCNum("(xdc_UInt16)"), 2L, "rh");
+ po.addFld("MAJOR", Proto.Elm.newCNum("(xdc_UInt16)"), 3L, "rh");
+ po.addFld("MINOR", Proto.Elm.newCNum("(xdc_UInt16)"), 6L, "rh");
+ po.addFld("PATCH", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("BUILD", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("QUALITY", Proto.Elm.newCNum("(xdc_UInt16)"), 3L, "rh");
+ po.addFld("BTYPE", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("WIDTH", Proto.Elm.newCNum("(xdc_UInt16)"), 0L, "rh");
+ po.addFld("PKGSTD", Proto.Elm.newCNum("(xdc_UInt16)"), 2L, "rh");
+ po.addFxn("getString", (Proto.Fxn)om.findStrict("ti.mas.swtools.IVersion2$$getString", "ti.mas.vpe"), $$UNDEF);
+ }
+
+ void Version$$ROV()
+ {
+ }
+
+ void $$SINGLETONS()
+ {
+ pkgP.init("ti.mas.vpe.Package", (Proto.Obj)om.findStrict("xdc.IPackage.Module", "ti.mas.vpe"));
+ Scriptable cap = (Scriptable)Global.callFxn("loadCapsule", xdcO, "ti/mas/vpe/package.xs");
+ om.bind("xdc.IPackage$$capsule", cap);
+ Object fxn;
+ fxn = Global.get(cap, "init");
+ if (fxn != null) pkgP.addFxn("init", (Proto.Fxn)om.findStrict("xdc.IPackage$$init", "ti.mas.vpe"), fxn);
+ fxn = Global.get(cap, "close");
+ if (fxn != null) pkgP.addFxn("close", (Proto.Fxn)om.findStrict("xdc.IPackage$$close", "ti.mas.vpe"), fxn);
+ fxn = Global.get(cap, "validate");
+ if (fxn != null) pkgP.addFxn("validate", (Proto.Fxn)om.findStrict("xdc.IPackage$$validate", "ti.mas.vpe"), fxn);
+ fxn = Global.get(cap, "exit");
+ if (fxn != null) pkgP.addFxn("exit", (Proto.Fxn)om.findStrict("xdc.IPackage$$exit", "ti.mas.vpe"), fxn);
+ fxn = Global.get(cap, "getLibs");
+ if (fxn != null) pkgP.addFxn("getLibs", (Proto.Fxn)om.findStrict("xdc.IPackage$$getLibs", "ti.mas.vpe"), fxn);
+ fxn = Global.get(cap, "getSects");
+ if (fxn != null) pkgP.addFxn("getSects", (Proto.Fxn)om.findStrict("xdc.IPackage$$getSects", "ti.mas.vpe"), fxn);
+ pkgP.bind("$capsule", cap);
+ pkgV.init2(pkgP, "ti.mas.vpe", Value.DEFAULT, false);
+ pkgV.bind("$name", "ti.mas.vpe");
+ pkgV.bind("$category", "Package");
+ pkgV.bind("$$qn", "ti.mas.vpe.");
+ pkgV.bind("$vers", Global.newArray("4, 0, 1, 0"));
+ Value.Map atmap = (Value.Map)pkgV.getv("$attr");
+ atmap.seal("length");
+ imports.clear();
+ imports.add(Global.newArray("ti.mas.types", Global.newArray(5, 0, 8, 1)));
+ imports.add(Global.newArray("ti.mas.fract", Global.newArray(2, 0, 8, 1)));
+ imports.add(Global.newArray("ti.mas.util", Global.newArray(5, 0, 0, 0)));
+ imports.add(Global.newArray("*ti.mas.swtools", Global.newArray(3, 0, 0, 0)));
+ pkgV.bind("$imports", imports);
+ StringBuilder sb = new StringBuilder();
+ sb.append("var pkg = xdc.om['ti.mas.vpe'];\n");
+ sb.append("if (pkg.$vers.length >= 3) {\n");
+ sb.append("pkg.$vers.push(Packages.xdc.services.global.Vers.getDate(xdc.csd() + '/..'));\n");
+ sb.append("}\n");
+ sb.append("pkg.build.libraries = [\n");
+ sb.append("];\n");
+ sb.append("pkg.build.libDesc = [\n");
+ sb.append("];\n");
+ Global.eval(sb.toString());
+ }
+
+ void Version$$SINGLETONS()
+ {
+ Proto.Obj po;
+ Value.Obj vo;
+
+ vo = (Value.Obj)om.findStrict("ti.mas.vpe.Version", "ti.mas.vpe");
+ po = (Proto.Obj)om.findStrict("ti.mas.vpe.Version.Module", "ti.mas.vpe");
+ vo.init2(po, "ti.mas.vpe.Version", $$DEFAULT, false);
+ vo.bind("Module", po);
+ vo.bind("$category", "Module");
+ vo.bind("$capsule", $$UNDEF);
+ vo.bind("$package", om.findStrict("ti.mas.vpe", "ti.mas.vpe"));
+ tdefs.clear();
+ proxies.clear();
+ mcfgs.clear();
+ icfgs.clear();
+ inherits.clear();
+ vo.bind("$$tdefs", Global.newArray(tdefs.toArray()));
+ vo.bind("$$proxies", Global.newArray(proxies.toArray()));
+ vo.bind("$$mcfgs", Global.newArray(mcfgs.toArray()));
+ vo.bind("$$icfgs", Global.newArray(icfgs.toArray()));
+ inherits.add("ti.mas.swtools");
+ vo.bind("$$inherits", Global.newArray(inherits.toArray()));
+ ((Value.Arr)pkgV.getv("$modules")).add(vo);
+ ((Value.Arr)om.findStrict("$modules", "ti.mas.vpe")).add(vo);
+ vo.bind("$$instflag", 0);
+ vo.bind("$$iobjflag", 1);
+ vo.bind("$$sizeflag", 1);
+ vo.bind("$$dlgflag", 0);
+ vo.bind("$$iflag", 1);
+ vo.bind("$$romcfgs", "|");
+ vo.bind("$$nortsflag", 0);
+ Proto.Str ps = (Proto.Str)vo.find("Module_State");
+ if (ps != null) vo.bind("$object", ps.newInstance());
+ vo.bind("$$meta_iobj", om.has("ti.mas.vpe.Version$$instance$static$init", null) ? 1 : 0);
+ vo.bind("$$fxntab", Global.newArray());
+ vo.bind("$$logEvtCfgs", Global.newArray());
+ vo.bind("$$errorDescCfgs", Global.newArray());
+ vo.bind("$$assertDescCfgs", Global.newArray());
+ Value.Map atmap = (Value.Map)vo.getv("$attr");
+ atmap.seal("length");
+ pkgV.bind("Version", vo);
+ ((Value.Arr)pkgV.getv("$unitNames")).add("Version");
+ }
+
+ void $$INITIALIZATION()
+ {
+ Value.Obj vo;
+
+ if (isCFG) {
+ }//isCFG
+ Global.callFxn("module$meta$init", (Scriptable)om.findStrict("ti.mas.vpe.Version", "ti.mas.vpe"));
+ Global.callFxn("init", pkgV);
+ ((Value.Obj)om.getv("ti.mas.vpe.Version")).bless();
+ ((Value.Arr)om.findStrict("$packages", "ti.mas.vpe")).add(pkgV);
+ }
+
+ public void exec( Scriptable xdcO, Session ses )
+ {
+ this.xdcO = xdcO;
+ this.ses = ses;
+ om = (Value.Obj)xdcO.get("om", null);
+
+ Object o = om.geto("$name");
+ String s = o instanceof String ? (String)o : null;
+ isCFG = s != null && s.equals("cfg");
+ isROV = s != null && s.equals("rov");
+
+ $$IMPORTS();
+ $$OBJECTS();
+ Version$$OBJECTS();
+ Version$$CONSTS();
+ Version$$CREATES();
+ Version$$FUNCTIONS();
+ Version$$SIZES();
+ Version$$TYPES();
+ if (isROV) {
+ Version$$ROV();
+ }//isROV
+ $$SINGLETONS();
+ Version$$SINGLETONS();
+ $$INITIALIZATION();
+ }
+}
diff --git a/pcm.h b/pcm.h
--- /dev/null
+++ b/pcm.h
@@ -0,0 +1,244 @@
+#ifndef _PCM_H\r
+#define _PCM_H\r
+\r
+/** \r
+ * @file pcm.h\r
+ * @brief Contains external API for PCM (G.711) encoder/decoder module.\r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ */\r
+\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/**\r
+ * @brief PCM mu-law encoder.\r
+ *\r
+ * @param[in] lin_in Input frame of 16-bit linear samples. \r
+ * For each linear sample, the 14 MSBs are taken to\r
+ * generate the mu-law codeword according to ITU-T \r
+ * G.711. The 2 LSBs are ignored.\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[out] ulaw_out Output frame of G.711 mu-law codewords. \r
+ * The codewords will be stored in an array of type \r
+ * "tword". The total number of elements in this array\r
+ * is frame_len. For CPUs with 16-bit machine word,\r
+ * each codeword will occupy the lower byte, as \r
+ * illustrated below (L = frame_len):\r
+ * @verbatim\r
+ * output buffer upper byte lower byte\r
+ * ulaw_out[0]: 0 ulaw(lin_in[0])\r
+ * ulaw_out[1]: 0 ulaw(lin_in[1])\r
+ * ulaw_out[2]: 0 ulaw(lin_in[2])\r
+ * ulaw_out[L-1]: 0 ulaw(lin_in[L-1])\r
+ * \endverbatim\r
+ * For CPUs with 8-bit machine word, each\r
+ * codeword occupies one byte, as illustrated below:\r
+ * @verbatim \r
+ * ulaw_out[0]: ulaw(lin_in[0])\r
+ * ulaw_out[1]: ulaw(lin_in[1])\r
+ * ulaw_out[2]: ulaw(lin_in[2])\r
+ * ulaw_out[L-1]: ulaw(lin_in[L-1])\r
+ * \endverbatim\r
+ */ \r
+void pcmUlawEncoder(linSample *lin_in, tword *ulaw_out, tint frame_len);\r
+\r
+/** \r
+ * @brief PCM A-law encoder.\r
+ * @param[in] lin_in Input frame of 16-bit linear samples. \r
+ * For each linear sample, the 13 MSBs are taken to\r
+ * generate the A-law codeword according to ITU-T \r
+ * G.711. The 3 LSBs are ignored.\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[out] alaw_out Output frame of G.711 A-law codewords. Refer to\r
+ * pcmUlawEncoder() for output format. \r
+ */\r
+void pcmAlawEncoder(linSample *lin_in, tword *alaw_out, tint frame_len);\r
+\r
+\r
+/**\r
+ * @brief PCM mu-law decoder.\r
+ *\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] ulaw_in Input frame of G.711 mu-law codewords. \r
+ * The codewords must be provided in an array of type \r
+ * "tword". The total number of elements in this array\r
+ * is frame_len. For CPUs with 16-bit machine word,\r
+ * each codeword occupies the lower byte, as \r
+ * illustrated below (L = frame_len):\r
+ * @verbatim\r
+ * input buffer upper byte lower byte\r
+ * ulaw_in[0]: 0 ulaw codeword 0\r
+ * ulaw_in[1]: 0 ulaw codeword 1\r
+ * ulaw_in[2]: 0 ulaw codeword 2\r
+ * ulaw_in[L-1]: 0 ulaw codeword L-1\r
+ * \endverbatim\r
+ * For CPUs with 8-bit machine word, each\r
+ * codeword occupies one byte, as illustrated below:\r
+ * @verbatim \r
+ * ulaw_in[0]: ulaw codeword 0\r
+ * ulaw_in[1]: ulaw codeword 1\r
+ * ulaw_in[2]: ulaw codeword 2\r
+ * ulaw_in[L-1]: ulaw codeword L-1\r
+ * \endverbatim\r
+ * @param[out] lin_out Output frame of 16-bit linear samples. \r
+ * Each u-law codeword will be decoded according to \r
+ * ITU-T G.711 and the decoded value will be placed \r
+ * into the 14 MSBs of each linear sample. The 2 LSBs \r
+ * will be filled with 0's. \r
+ */ \r
+void pcmUlawDecoder(tword *ulaw_in, linSample *lin_out, tint frame_len);\r
+\r
+/**\r
+ * @brief PCM A-law decoder.\r
+ *\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] alaw_in Input frame of G.711 A-law codewords. \r
+ * The codewords must be provided in an array of type \r
+ * "tword". The total number of elements in this array\r
+ * is frame_len. For input format, refer to \r
+ * pcmUlawDecoder().\r
+ * @param[out] lin_out Output frame of 16-bit linear samples. \r
+ * Each A-law codeword will be decoded according to \r
+ * ITU-T G.711 and the decoded value will be placed \r
+ * into the 13 MSBs of each linear sample. The 3 LSBs \r
+ * will be filled with 0's. \r
+ */ \r
+void pcmAlawDecoder(tword *alaw_in, linSample *lin_out, tint frame_len);\r
+\r
+/**\r
+ * @brief PCM mu-law encoder with packed output codewords.\r
+ *\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] lin_in Input frame of 16-bit linear samples. \r
+ * Refer to pcmUlawEncoder() for input format.\r
+ * @param[out] ulaw_out Output frame of G.711 mu-law codewords. \r
+ * The codewords will be packed and stored in an array\r
+ * of type "tuint" in big endian format, as \r
+ * illustrated below (L = frame_len):\r
+ * @verbatim\r
+ * output buffer upper byte lower byte\r
+ * ulaw_out[0]: ulaw(lin_in[0]) ulaw(lin_in[1])\r
+ * ulaw_out[1]: ulaw(lin_in[2]) ulaw(lin_in[3])\r
+ * ulaw_out[2]: ulaw(lin_in[4]) ulaw(lin_in[5])\r
+ * ulaw_out[L/2-1]: ulaw(lin_in[L-2]) ulaw(lin_in[L-1])\r
+ * \endverbatim\r
+ */ \r
+void pcmUlawEncoderP(linSample *lin_in, tuint *ulaw_out, tint frame_len);\r
+\r
+/** \r
+ * @brief PCM A-law encoder with packed output codewords.\r
+ *\r
+ * @param[in] frame_len Length of the input frame. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] lin_in Input frame of 16-bit linear samples. \r
+ * Refer to pcmAlawEncoder() for input format.\r
+ * @param[out] alaw_out Output frame of G.711 A-law codewords. Refer to\r
+ * pcmUlawEncoderP() for output format. \r
+ */\r
+void pcmAlawEncoderP(linSample *lin_in, tuint *alaw_out, tint frame_len);\r
+\r
+/**\r
+ * @brief PCM mu-law decoder with packed input codewords.\r
+ *\r
+ * @param[in] frame_len Length of the input frame, ie. the number of mu-law \r
+ * codewords to be decoded. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] ulaw_in Input frame of G.711 mu-law codewords. \r
+ * The codewords must be packed and stored in an array\r
+ * of type "tuint" in big endian format,\r
+ * as illustrated below (L = frame_len):\r
+ * @verbatim \r
+ * input buffer upper byte lower byte\r
+ * ulaw_in[0]: ulaw codeword 0 ulaw codeword 1\r
+ * ulaw_in[1]: ulaw codeword 2 ulaw codeword 3\r
+ * ulaw_in[2]: ulaw codeword 4 ulaw codeword 5\r
+ * ulaw_in[L/2-1]: ulaw codeword L-2 ulaw codeword L-1\r
+ * \endverbatim\r
+ * @param[out] lin_out Output frame of 16-bit linear samples. \r
+ * Refer to pcmUlawDecoder() for output format.\r
+ */ \r
+void pcmUlawDecoderP(tuint *ulaw_in, linSample *lin_out, tint frame_len);\r
+\r
+/**\r
+ * @brief PCM A-law decoder with packed input codewords.\r
+ *\r
+ * @param[in] frame_len Length of the input frame, ie. the number of A-law \r
+ * codewords to be decoded. It MUST be an integer\r
+ * multiple of 4. \r
+ * @param[in] alaw_in Input frame of G.711 A-law codewords. \r
+ * The codewords must be packed and stored in an array\r
+ * of type "tuint" in big endian format. Refer to \r
+ * pcmUlawDecoderP() for format. \r
+ * @param[out] lin_out Output frame of 16-bit linear samples. Linear sample\r
+ * value of 32767 corresponds to load capacity of \r
+ * 3.17dBm0 according to ITU-T G.711. \r
+ */ \r
+void pcmAlawDecoderP(tuint *alaw_in, linSample *lin_out, tint frame_len);\r
+\r
+#endif\r
+/* Nothing past this point */\r
diff --git a/readme.txt b/readme.txt
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,24 @@
+1. Download AEC-AER and VOLIB from http://www.ti.com/tool/telecomlib\r
+2. Install AEC-AER and VOLIB at C:\ti\r
+3. Download xdais_7_23_00_06 and xdctools_3_24_07_73 from TI website \r
+4. copy this directory to C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\r
+5. Downlaod CCS 6.1.3 from TI website\r
+6. Install CCS 6.1.3 at C:\ti\r
+7. Launch CCS 6.1.3\r
+8. Import test_rel_ce64Ple_CE64PLE_LE_ELF from C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\test\ccsProjects\r
+9. Build the imported project\r
+10. Import the target configuration file DA830_DSK_USB560M.ccxml from C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\gel\r
+11. Connect the Blackhawk USB 560M JTAG to J4 on DA830 DSK\r
+12. Power on the DA830DSK\r
+13. Connect to the DA830 DSK via JTAG using CCS 6.1.3\r
+13. Load the test_rel_ce64Ple_CE64PLE_LE_ELF.out from C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\test\ccsProjects\test_rel_ce64Ple_CE64PLE_LE_ELF\Debug\r
+14. Execute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 8 microphone input files \r
+ (C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\gel\mics\y16L8g3m7090_x.pcm) into external memory buffers\r
+15. Run the program (loaded in step 13) by pressing F8\r
+16. The program will print out the statistics and "Simulation End" when the program completes the prosessing\r
+17. Execute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed auido output from external memory buffer to a file \r
+ (C:\ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\gel\mics\fileOutput.bin)\r
+18. You can change the "#define NUM_BF_ANALOG_MIC 8" and "#define NUM_BF_VIRTUAL_MIC 12" in bf_asnr_mss_vau.h. \r
+ The allowed value for NUM_BF_ANALOG_MIC is 1-8. The allowed value for NUM_BF_VIRTUAL_MIC is either 12 (30 degree apart) \r
+ or 8 (45 degree apart)\r
+\r
diff --git a/sfc.h b/sfc.h
--- /dev/null
+++ b/sfc.h
@@ -0,0 +1,185 @@
+#ifndef _SFC_H\r
+#define _SFC_H\r
+\r
+/** \r
+ * @file sfc.h\r
+ * @brief Contains external API for the Sample Frequency Converter (SFC) module.\r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ */\r
+\r
+ #include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/**\r
+ * \r
+ * @defgroup SFC Source Frequency Converter (SFC) \r
+ */\r
+ \r
+/** @ingroup SFC */\r
+/* @{ */\r
+\r
+/**\r
+ * @name External APIs for SFC\r
+ *\r
+ */\r
+/* @{ */\r
+/**\r
+ * @brief Sample frequency converter sfcDecimationBy2 performs decimation by 2.\r
+ *\r
+ * @param[in] filt_len Length of the decimation filter. It MUST be integer\r
+ * multiple of 4 plus 1, ie., 4*k+1. This parameter \r
+ * is ignored if parameter coeffs is NULL. \r
+ * @param[in] frame_len_in Length of the data frame to be processed. \r
+ * @param[in] delay_line Filter delay line. It must have filt_len-1 samples \r
+ * from previous frames and frame_len_in samples from\r
+ * current frame. The samples in this buffer must\r
+ * be packed as illustrated below:\r
+ * @verbatim\r
+ | previous frames | current frame | \r
+ x(n-N+1), ..., x(n-M), x(n-M+1), ..., x(n)\r
+ where N=M+L-1, M is input frame length, L is filter length.\r
+ \endverbatim\r
+ * @param[in] coeffs Left half of the decimation filter coefficients \r
+ * including the center. Total number of coefficients\r
+ * provided by user must be (filt_len+1)/2.\r
+ * The decimation filter must be a symetric FIR filter\r
+ * with length filt_len. The gain of the filter must be \r
+ * less than or equal to 0dB. If this pointer is NULL, \r
+ * the \ref sfc_default_filter will be used.\r
+ * @param[out] sig_out Output signal after decimation. Number of output \r
+ * samples is frame_len_in/2.\r
+ */ \r
+void sfcDecimationBy2(linSample *delay_line, linSample *sig_out, \r
+ const Fract *coeffs, tint filt_len, tint frame_len_in);\r
+\r
+/**\r
+ * @brief Sample frequency converter sfcInterpolationBy2 performs \r
+ * interpolation by 2.\r
+ *\r
+ * @param[in] filt_len Length of the interpolation filter. It MUST be \r
+ * integer multiple of 4 plus 1, ie., 4*k+1. This \r
+ * parameter is ignored if parameter coeffs is NULL. \r
+ * @param[in] frame_len_in Length of the data frame to be processed. \r
+ * @param[in] delay_line Filter delay line. It must have (filt_len-1)/2\r
+ * samples from previous frames and frame_len_in \r
+ * samples from current frame. The samples in this \r
+ * buffer must be packed as illustrated below:\r
+ * @verbatim\r
+ | previous frames | current frame | \r
+ x(n-N+1), ..., x(n-M), x(n-M+1), ..., x(n)\r
+ where N=M+(L-1)/2, M is input frame length, L is filter length.\r
+ \endverbatim\r
+ * @param[in] coeffs Left half of the interpolation filter coefficients \r
+ * including the center. Total number of coefficients\r
+ * provided by user must be (filt_len+1)/2.\r
+ * The interpolation filter must be a symetric FIR filter\r
+ * with length filt_len. The gain of the filter must be \r
+ * less than or equal to 0dB. If this pointer is NULL, \r
+ * the \ref sfc_default_filter will be used.\r
+ * @param[out] sig_out Output signal after interpolation. Number of output \r
+ * samples is frame_len_in*2.\r
+ */ \r
+void sfcInterpolationBy2(linSample *delay_line, linSample *sig_out, \r
+ const Fract *coeffs, tint filt_len, tint frame_len_in);\r
+/* @} */\r
+\r
+/** @defgroup sfc_default_filter SFC Default Filter\r
+ * \r
+ * @brief Default decimation/interpolation filter coefficients. This filter \r
+ * will be used if the user doesn't provide coefficients for \r
+ * decimation/interpolation. \r
+ *\r
+ * This filter has cutoff frequency at 0.426 PI, or 3.4kHz for 16kHz \r
+ * sampling frequency. It has 59dB out-of-band rejection above 0.548 PI, \r
+ * or 4.34kHz for 16kHz sampling frequency. \r
+ *\r
+ * @verbatim\r
+ Fract sfc_decim_interp_filt[sfc_NUM_DEF_COEFS] = {\r
+ 9,\r
+ 105,\r
+ 108,\r
+ -105,\r
+ -251,\r
+ 74,\r
+ 479,\r
+ 85,\r
+ -766,\r
+ -463,\r
+ 1075,\r
+ 1224,\r
+ -1354,\r
+ -2891,\r
+ 1548,\r
+ 10171,\r
+ 14672 -> center coefficient\r
+ \endverbatim\r
+ */\r
+/* @{ */\r
+#define sfc_DEF_FILT_LEN 33\r
+#define sfc_NUM_DEF_COEFS (sfc_DEF_FILT_LEN+1)/2\r
+extern const Fract sfc_def_decim_interp_filt[sfc_NUM_DEF_COEFS];\r
+/* @} */\r
+ \r
+/* @} */ /* ingroup SFC */\r
+#endif\r
+/* Nothing past this point */\r
diff --git a/slm.h b/slm.h
--- /dev/null
+++ b/slm.h
@@ -0,0 +1,227 @@
+/******************************************************************************\r
+ * FILE PURPOSE:header file of SLM (signal limiter)\r
+ ******************************************************************************\r
+ * FILE NAME: slm.h\r
+ *\r
+ * DESCRIPTION: Contains external definitions&functions prototypes for SLIM\r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ *****************************************************************************/\r
+#ifndef _SLM_H\r
+#define _SLM_H\r
+\r
+/**\r
+ * @file slm.h\r
+ * @brief Contains external APIs for the slm module.\r
+ *\r
+ */\r
+\r
+/* System level header files */\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/** \r
+ * @defgroup SLM Signal Limiter(SLM)\r
+ * \r
+ * @brief When a voice signal is saturated, the resulting signal is generally nonlinear \r
+ * in nature due to the (non-linear) saturation process. The Signal Limiter \r
+ * reduces the voice signal to prevent the undesirable effects of hard limiting.\r
+ */\r
+/** @ingroup SLM */\r
+/* @{ */\r
+\r
+/**\r
+ * @name SLM Mode Definitions\r
+ * \r
+ */\r
+enum {\r
+ slm_DISABLE = 0, /**< Disable signal limiter */\r
+ slm_MODE1 = 1, /**< Signal limiter mode 1: Max -10.38 dBm0, Min -17.25 dBm0 */\r
+ slm_MODE2 = 2, /**< Signal limiter mode 2: Max -8.25 dBm0, Min -15.34 dBm0 */ \r
+ slm_MODE3 = 3, /**< Signal limiter mode 3: Max -6.44 dBm0, Min -13.43 dBm0 */\r
+ slm_MODE4 = 4, /**< Signal limiter mode 4: Max -4.28 dBm0, Min -11.41 dBm0 */\r
+ slm_MODE5 = 5, /**< Signal limiter mode 5: Max -2.17 dBm0, Min -9.18 dBm0 */ \r
+ slm_NUMOF_MODE = slm_MODE5 /**< Number of different SLM */ \r
+};\r
+\r
+/** @defgroup slm_api_return_codes SLM API return codes\r
+ * These are the return codes for the SLM module API functions.\r
+ * \r
+ * @{\r
+ * @name SLM Function Return Value Definitions\r
+ *\r
+ */\r
+/* @{ */\r
+enum {\r
+ slm_NOERR = 0, /**< Functions returned without error */\r
+ slm_ERROR = 1, /**< Functions returned with error, such as NULL point */\r
+ slm_BADPARAM = 2 /**< Functions returned with bad parameters */ \r
+};\r
+/* @} */\r
+/** @} */\r
+\r
+/**\r
+ * @name SLM sampling rate factor\r
+ * \remark These numbers are used as table indeces, so can't be changed.\r
+ */\r
+enum {\r
+ slm_SRATE_FACTOR_16K = 1, /**< sampling rate is 16kHz */\r
+ slm_SRATE_FACTOR_8K = 2 /**< sampling rate is 8kHz */\r
+}; \r
+\r
+/**\r
+ * @name SLM Configuration Structure Valid Bit-field\r
+ * \r
+ */\r
+enum {\r
+ slm_CFG_BIT_SRATE = 0 /**< Bit 0: sampling rate factor */\r
+};\r
+\r
+/** \r
+ * \brief SLM configure Structure\r
+ * \r
+ * Contains parameters that can be chosen to be configured by user when initializing SLM\r
+ *\r
+ */\r
+/* @{ */\r
+typedef struct{\r
+ tuint valid_bf; /**< Bit-fields indicating which parameters to configure \n\r
+ \link SLM::slm_CFG_BIT_SRATE bitfield definition \endlink */\r
+ tint srate_factor; /**< Sampling rate factor:\n\r
+ \link SLM::slm_SRATE_FACTOR_8K slm_SRATE_FACTOR_8K \endlink \n \r
+ \link SLM::slm_SRATE_FACTOR_16K slm_SRATE_FACTOR_16K \endlink */\r
+} slmConfig_t;\r
+/* @} */\r
+\r
+/**\r
+ * @name External APIs for SLM \r
+ *\r
+ */\r
+/* @{ */\r
+/**\r
+ * @brief Function slmGetSizes() get the size of a SLM instance \r
+ * \r
+ * \remark Function slmGetSizes() is the first function to be called. \r
+ *\r
+ * @param[in, out] instsize Pointer to the size of a SLM instance .\r
+ *\r
+ * @return \link SLM::slm_NOERR slm_NOERR, \endlink \n\r
+ * \link SLM::slm_ERROR slm_ERROR \endlink \r
+ */\r
+tint slmGetSizes (tint *instsize);\r
+ \r
+/**\r
+ * @brief Function slmInit() initializes SLM \r
+ * \r
+ * \remark Function slmInit() must be called after slmGetSizes(). After the\r
+ * function call, SLM is disabled. \r
+ * \r
+ *\r
+ * @param[in, out] inst Pointer to a SLM instance structure\r
+ * @param[in] cfg Pointer to a configuration structure slmConfig_t\r
+ *\r
+ * @return \link SLM::slm_NOERR slm_NOERR, \endlink \n\r
+ * \link SLM::slm_ERROR slm_ERROR, \endlink \n\r
+ * \link SLM::slm_BADPARAM slm_BADPARAM \endlink \r
+ * \r
+ */ \r
+tint slmInit (void *inst, slmConfig_t *cfg);\r
+\r
+/**\r
+ * @brief Function slmControl() configure SLM with different types of limiter\r
+ * \r
+ * \remark Function slmControl() must be called after slmInit() to enable SLM by\r
+ * setting the mode to one of the operational modes.\r
+ * All internal parameters will be reset whenever there's a mode change \r
+ * \r
+ *\r
+ * @param[in, out] inst Pointer to a SLM instance structure.\r
+ * @param[in] mode one of \link SLM::slm_DISABLE slm modes \endlink.\r
+ *\r
+ * @return \link SLM::slm_NOERR slm_NOERR, \endlink \n\r
+ * \link SLM::slm_ERROR slm_ERROR, \endlink \n\r
+ * \link SLM::slm_BADPARAM slm_BADPARAM \endlink \r
+ */\r
+tint slmControl (void *inst, tint mode);\r
+\r
+/**\r
+ * @brief This is the function that performs the signal attenuation\r
+ * \r
+ * \remark This function can only be called after slmInit() and slmControl()\r
+ * to make SLM take effect and it needs to be called every frame. \r
+ * \r
+ *\r
+ * @param[in] inst Pointer to a SLM instance structure.\r
+ * @param[in, out] speechSamples Pointer to the voice buffer\r
+ * @param[in] frame_length Number of samples processed\r
+ *\r
+ * @return \link SLM::slm_NOERR slm_NOERR \endlink\r
+ *\r
+ */\r
+tint slmProcess (void *inst, void *speechSamples, tint frame_length);\r
+\r
+/* @} */\r
+/* @} */ /* ingroup SLM */\r
+#endif\r
+\r
+/* end of slm.h */\r
+\r
diff --git a/snl.h b/snl.h
--- /dev/null
+++ b/snl.h
@@ -0,0 +1,204 @@
+/******************************************************************************\r
+ * FILE PURPOSE: Speech and Noise level estimation\r
+ * \r
+ ******************************************************************************\r
+ * FILE NAME: snl.h \r
+ *\r
+ * DESCRIPTION: Implements active speech and noise level estimation for the purposes\r
+ * of voice doctor \r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ *****************************************************************************/\r
+#ifndef _SNL_H\r
+#define _SNL_H\r
+\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/**\r
+ * @file snl.h\r
+ * @brief Contains external APIs for the SNL module.\r
+ *\r
+ */\r
+\r
+/** \r
+ * @defgroup SNL Siganl and Noise Level estimator (SNL)\r
+ *\r
+ * @brief SNL estimates the speech and background noise level of the incoming \r
+ * voice signal.\r
+ *\r
+ */\r
+/** @ingroup SNL */\r
+/* @{ */\r
+\r
+/** @defgroup snl_api_return_codes SNL API return codes\r
+ * These are the return codes for the SNL module API functions.\r
+ * \r
+ * @{\r
+ * @name SNL Function Return Value Definitions\r
+ *\r
+ */\r
+/* @{ */\r
+enum {\r
+ snl_NOERR = 0, /**< success, no error */\r
+ snl_ERR = 1, /**< failed */\r
+ snl_BADPARAM = 2 /**< Returned from function with wrong parameters */ \r
+}; \r
+/* @} */\r
+/** @} */\r
+\r
+/**\r
+ * @name SNL sampling rate factor\r
+ * \remark These numbers are used as multipliers, so can't be changed to other values.\r
+ *\r
+ */\r
+enum {\r
+ snl_SRATE_FACTOR_8K = 1, /**< sampling rate is 8kHz */\r
+ snl_SRATE_FACTOR_16K = 2 /**< sampling rate is 16kHz */\r
+}; \r
+\r
+/**\r
+ * @def snl_ENV_Q\r
+ * The Fract Q format for the adaptive envelope threshold returned by\r
+ * snlGetLevels(). \r
+ */\r
+#define snl_ENV_Q 3\r
+\r
+/**\r
+ * @def snl_INVALID_POW_DB\r
+ * The initialization value for the signal and noise dB value. It's not a \r
+ * valid result for either signal or noise level estimation. \r
+ * @sa \r
+ */\r
+#define snl_INVALID_POW_DB 0x7F\r
+\r
+/**\r
+ * @name External APIs for SNL\r
+ *\r
+ */\r
+/* @{ */\r
+/**\r
+ * @brief Obtain from SNL the memory requirements of an instance. \r
+ * \remark This must be the first function to be called before calling any other SNL APIs\r
+ * \r
+ *\r
+ * @param[out] instsize The size of the instance\r
+ *\r
+ * @return \link SNL::snl_NOERR snl_NOERR, \endlink \n\r
+ * \link SNL::snl_ERR snl_ERR \endlink: if instsize==NULL \r
+ */\r
+tint snlGetSizes (tint *instsize);\r
+\r
+/**\r
+ * @brief Initialize signal level estimator\r
+ * \remark This is the function to call after calling snlGetSizes(), only samp_rate is user configurable.\r
+ * After this function call, both signal and noise level are initialized to \r
+ * \link SNL::snl_INVALID_POW_DB snl_INVALID_POW_DB,\endlink which is not considered\r
+ * a valid result from SNL\r
+ *\r
+ * @param[out] *inst Pointer to the SNL instance\r
+ * @param[in] samp_rate \link SNL::snl_SRATE_FACTOR_8K snl_SRATE_FACTOR_8K \endlink \n\r
+ * \link SNL::snl_SRATE_FACTOR_16K snl_SRATE_FACTOR_16K \endlink \n \r
+ *\r
+ * @return \link SNL::snl_NOERR snl_NOERR, \endlink \n\r
+ * \link SNL::snl_ERR snl_ERR, \endlink :if inst==NULL \n \r
+ * \link SNL::snl_BADPARAM snl_BADPARAM \endlink :if samp_rate is not one of snl_SRATE_FACTOR_8K\r
+ * and snl_SRATE_FACTOR_16K\r
+ *\r
+ */\r
+tint snlInit (void *inst, tint samp_rate);\r
+\r
+/**\r
+ * @brief Signal and noise level estimator\r
+ * \remark This is the function that processes the signal and calculates various parameters needed for level\r
+ * estimation. This function needs to be called every frame. There is a limitation of 1.5ms for the \r
+ * frame size, which will equivalent to 12 for the nSamps parameter for 8kHz sampling rate and 24\r
+ * for the nSamps parameter for 16kHz sampling rate.\r
+ *\r
+ * @param[in, out] *inst Pointer to the instance\r
+ * @param[in] *samples Pointer to samples\r
+ * @param[in] nSamps Number of samples\r
+ *\r
+ * @return \link SNL::snl_NOERR snl_NOERR \endlink\r
+ */\r
+tint snlProcess (void *inst, linSample *samples, tuint nSamps);\r
+\r
+/**\r
+ * @brief Get speech and noise levels\r
+ * \remark This is the function to be called whenever the levels are needed. It can be called every frame\r
+ * or when requested.\r
+ *\r
+ * @param[in] *inst Pointer to the instance\r
+ * @param[out] *spchdB pointer to returned speech power level in Q0 dB\r
+ * @param[out] *noisedB pointer to returned noise power level in Q0 dB\r
+ * @param[out] *thresh pointer to returned adaptive threshold for envelope \r
+ * in Q\link SNL::snl_ENV_Q snl_ENV_Q \endlink linear amplitude.\r
+ * \r
+ * @return \link SNL::snl_NOERR snl_NOERR \endlink\r
+ */\r
+tint snlGetLevels (void *inst, Fract *spchdB, Fract *noisedB, UFract *thresh);\r
+\r
+/* @} */\r
+/* @} */ /* ingroup SNL */\r
+#endif\r
+\r
+/* Nothing past this point */\r
diff --git a/svd.h b/svd.h
--- /dev/null
+++ b/svd.h
@@ -0,0 +1,232 @@
+/******************************************************************************\r
+ * FILE PURPOSE: Simple Voice Activity Detection (SVD) module\r
+ * \r
+ ******************************************************************************\r
+ * FILE NAME: svd.h \r
+ *\r
+ * DESCRIPTION: Implements a (very) simple Voice Activity Detector (VAD) based \r
+ * almost solely on the SNL module.\r
+ *\r
+ * Copyright (c) 2007 \96 2013 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free,
+ * non-exclusive license under copyrights and patents it now or hereafter owns
+ * or controls to make, have made, use, import, offer to sell and sell
+ * ("Utilize") this software subject to the terms herein. With respect to the
+ * foregoing patent license, such license is granted solely to the extent that
+ * any such patent is necessary to Utilize the software alone. The patent
+ * license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI (\93TI
+ * Devices\94). No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this
+ * license (including the above copyright notice and the disclaimer and (if
+ * applicable) source code license limitations below) in the documentation
+ * and/or other materials provided with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * * No reverse engineering, decompilation, or disassembly of this software
+ * is permitted with respect to any software provided in binary form.
+ *
+ * * any redistribution and use are licensed by TI for use only with TI
+ * Devices.
+ *
+ * * Nothing shall obligate TI to provide you with source code for the
+ * software licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution
+ * of the source code are permitted provided that the following conditions are
+ * met:
+ *
+ * * any redistribution and use of the source code, including any resulting
+ * derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * * any redistribution and use of any object code compiled from the source
+ * code and any resulting derivative works, are licensed by TI for use only
+ * with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its
+ * suppliers may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI\92S LICENSORS "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 TI AND TI\92S LICENSORS 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. \r
+ *****************************************************************************/\r
+#ifndef _SVD_H\r
+#define _SVD_H\r
+\r
+/**\r
+ * @file svd.h\r
+ * @brief Contains external APIs for the SVD module.\r
+ *\r
+ */\r
+\r
+/** \r
+ * @defgroup SVD Simple Voice activity Detector (SVD)\r
+ *\r
+ * @brief The SVD module examines the signal and noise levels measured by SNL \r
+ * and makes a decision whether voice is active or not. \r
+ */\r
+/** @ingroup SVD */\r
+/* @{ */\r
+\r
+#include <ti/mas/types/types.h> /* DSP types */\r
+\r
+/** @defgroup svd_api_return_codes SVD API return codes\r
+ * These are the return codes for the SVD module API functions.\r
+ * \r
+ * @{\r
+ * @name SVD Function Return Value Definitions\r
+ *\r
+ */\r
+/* @{ */\r
+enum{\r
+ svd_NOERR = 0, /**< success, no error */\r
+ svd_ERR = 1, /**< failed */\r
+ svd_BADPARAM = 2 /**< Returned from function with wrong parameters */ \r
+}; \r
+/* @} */\r
+/** @} */\r
+\r
+/**\r
+ * @name SVD decision codes\r
+ *\r
+ */\r
+enum{\r
+ svd_VOICE_UNDEFINED = -1, /**< VAD decision undefined */\r
+ svd_VOICE_INACTIVE = 0, /**< VAD decision NO VOICE */\r
+ svd_VOICE_ACTIVE = 1 /**< VAD decision VOICE */\r
+}; \r
+\r
+/**\r
+ * @name SVD sampling rate factor\r
+ * \remark These numbers are used as multipliers, so can't be changed to other values.\r
+ *\r
+ */\r
+enum{\r
+ svd_SRATE_8K = 1, /**< sampling rate is 8kHz */\r
+ svd_SRATE_16K = 2 /**< sampling rate is 16kHz */\r
+}; \r
+\r
+/**\r
+ * @def svd_ENV_Q\r
+ * The Fract Q format for the adaptive envelope threshold returned by\r
+ * svdGetLevels(). \r
+ */\r
+#define svd_ENV_Q 3\r
+\r
+/**\r
+ * @def svd_PWR_Q\r
+ * The Fract Q format for the speech and noise power level returned by\r
+ * svdGetLevels(). \r
+ */\r
+#define svd_PWR_Q 0\r
+\r
+/**\r
+ * @def svd_INVALID_POW_DB\r
+ * The initialization value for the signal and noise dB value. It's not a \r
+ * valid result for either signal or noise level estimation. \r
+ * @sa \r
+ */\r
+#define svd_INVALID_POW_DB 0x7F\r
+\r
+/**\r
+ * @name External APIs for SVD\r
+ *\r
+ */\r
+/* @{ */\r
+/**\r
+ * @brief Obtain from SVD the instance memory requirements. \r
+ * \remark This must be the first function to be called before calling any other SVD APIs\r
+ * \r
+ * @param[out] instsize The size of the instance\r
+ *\r
+ * @return \link SVD::svd_NOERR svd_NOERR, \endlink \n\r
+ * \link SVD::svd_ERR svd_ERR \endlink: if instsize==NULL \r
+ */\r
+tint svdGetSizes (tint *instsize);\r
+\r
+/**\r
+ * @brief Initialize simple voice activity detector\r
+ * \remark This function is called after svdGetSizes(), and initializes the instance. \r
+ *\r
+ * @param[in] *inst Pointer to the SVD instance memory, must NOT be NULL.\r
+ * @param[in] samp_rate \link SVD::svd_SRATE_8K svd_SRATE_8K \endlink \n\r
+ * \link SVD::svd_SRATE_16K svd_SRATE_16K \endlink \n \r
+ * @param[out] *inst Initialized SVD instance memory.\r
+ *\r
+ * @return \link SVD::svd_NOERR svd_NOERR, \endlink \n\r
+ * \link SVD::svd_ERR svd_ERR, \endlink :if inst==NULL \n \r
+ * \link SVD::svd_BADPARAM svd_BADPARAM \endlink :if samp_rate is not one of \r
+ * svd_SRATE_8K\r
+ * or svd_SRATE_16K\r
+ *\r
+ */\r
+tint svdInit (void *inst, tint samp_rate);\r
+\r
+/**\r
+ * @brief Simple VAD detection process\r
+ * \remark This is the function that processes the signal and makes the Voice/Noise decision. The \r
+ * function should be called every frame. The frame size must be at least 1.5ms (12 for 8kHz, \r
+ * 24 for 16kHz).\r
+ *\r
+ * @param[in, out] *inst Pointer to the instance\r
+ * @param[in] *samples Pointer to samples\r
+ * @param[in] nSamps Number of samples, or frame size\r
+ *\r
+ * @return \link SVD::svd_NOERR svd_NOERR, \endlink \n\r
+ * \link SVD::svd_ERR svd_ERR, \endlink \n \r
+ */\r
+tint svdProcess (void *inst, linSample *samples, tuint nSamps);\r
+\r
+/**\r
+ * @brief Get Voice decision\r
+ * \remark This is the function to call when a Voice/Noise decision is needed. It can be called \r
+ * as needed.\r
+ *\r
+ * @param[in] *inst Pointer to the instance\r
+ * @param[out] sig_pow Exponentially averaged signal power\r
+ * \r
+ * @return \link SVD::svd_VOICE_UNDEFINED svd_VOICE_UNDEFINED \endlink \n\r
+ * \link SVD::svd_VOICE_INACTIVE svd_VOICE_INACTIVE \endlink \n \r
+ * \link SVD::svd_VOICE_ACTIVE svd_VOICE_ACTIVE \endlink \n \r
+ */\r
+tint svdGetDecision (void *inst, LFract *sig_pow);\r
+\r
+/**\r
+ * @brief Get speech and noise levels\r
+ * \remark This is the function to be called whenever the levels are needed. \r
+ * It can be called every frame or when requested.\r
+ *\r
+ * @param[in] *inst Pointer to the instance\r
+ * @param[out] *spchdB pointer to returned speech power level in Q0 dB\r
+ * @param[out] *noisedB pointer to returned noise power level in Q0 dB\r
+ * @param[out] *thresh pointer to returned adaptive threshold for envelope \r
+ * in Q\link SVD::svd_ENV_Q svd_ENV_Q \endlink linear amplitude.\r
+ * \r
+ * @return \link SVD::svd_NOERR svd_NOERR \endlink\r
+ */\r
+tint svdGetLevels (void *inst, Fract *spchdB, Fract *noisedB, UFract *thresh);\r
+\r
+/* @} */\r
+/* @} */ /* ingroup SVD */\r
+#endif\r
+\r
+/* Nothing past this point */\r
diff --git a/test/Makedocs.mk b/test/Makedocs.mk
--- /dev/null
+++ b/test/Makedocs.mk
@@ -0,0 +1,20 @@
+# ==============================================================================\r
+# File : Makedocs.mk\r
+# Description : \r
+#\r
+# GNU makefile to generate VPE TEST documentation from sources using Doxygen\r
+#\r
+# ==============================================================================\r
+\r
+# The target for generating documents using doxygen is gendocs\r
+\r
+VPETEST_DOC=./docs/doxygen/VPE_TEST.chm\r
+\r
+release: $(VPETEST_DOC)\r
+\r
+gendocs $(VPETEST_DOC): ./docs/doxygen/doxygen.h\r
+ -@echo generating VPETEST documentation ...\r
+ if test ! -d ./docs/doxygen/html; then mkdir ./docs/doxygen/html; fi\r
+ cp $(TI_DOXYGEN_TEMPLATES)/*.* ./docs/doxygen/html\r
+ doxygen ./docs/doxygen/Doxyfile\r
+# End of Makedocs.mk\r
diff --git a/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.ccsproject b/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.ccsproject
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<?ccsproject version="1.0"?>
+<projectOptions>
+ <deviceVariant value="com.ti.ccstudio.deviceModel.C6000.CustomC6000Device"/>
+ <deviceFamily value="C6000"/>
+ <deviceEndianness value="little"/>
+ <codegenToolVersion value="7.4.2"/>
+ <isElfFormat value="false"/>
+ <connection value=""/>
+ <rts value="libc.a"/>
+ <isTargetManual value="false"/>
+</projectOptions>
diff --git a/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.cproject b/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.cproject
--- /dev/null
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">\r
+ <storageModule configRelations="2" moduleId="org.eclipse.cdt.core.settings">\r
+ <cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Debug.1276204069">\r
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.1276204069" moduleId="org.eclipse.cdt.core.settings" name="Debug">\r
+ <macros>\r
+ <stringMacro name="XDC_CG_ROOT" type="VALUE_PATH_DIR" value="C:\MAS_Tools\xdctools_3_24_07_73"/>\r
+ <stringMacro name="EXT_ROOT__TEST_REL_C64PLE_C64PLE_LE_COFF_SRC" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../src"/>\r
+ <stringMacro name="EXT_ROOT__TEST_REL_C64PLE_C64PLE_LE_COFF_LNKRC64PLE" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../lnkr/c64Ple"/>\r
+ <stringMacro name="XDAIS_CG_ROOT" type="VALUE_PATH_DIR" value="C:\MAS_Tools\xdais_7_23_00_06"/>\r
+ </macros>\r
+ <externalSettings/>\r
+ <extensions>\r
+ <extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>\r
+ </extensions>\r
+ </storageModule>\r
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
+ <configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.1276204069" name="Debug" parent="com.ti.ccstudio.buildDefinitions.C6000.Debug">\r
+ <folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Debug.1276204069." name="/" resourcePath="">\r
+ <toolChain id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.DebugToolchain.1537260134" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerDebug.1312108442">\r
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.568407514" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=com.ti.ccstudio.deviceModel.C6000.GenericC674xDevice"/>\r
+ <listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>\r
+ <listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>\r
+ <listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>\r
+ <listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>\r
+ <listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.987382083" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="7.4.16" valueType="string"/>\r
+ <targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.targetPlatformDebug.1739567931" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.targetPlatformDebug"/>\r
+ <builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.builderDebug.809972258" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.builderDebug"/>\r
+ <tool id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.compilerDebug.783724019" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.compilerDebug">\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SILICON_VERSION.337860609" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SILICON_VERSION" value="64plus" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI.2133532171" name="Application binary interface (coffabi, eabi) [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI.coffabi" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE.1532676267" name="Optimize for code size (--opt_for_space, -ms)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE.3" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL.716550052" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INCLUDE_PATH.1242223544" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INCLUDE_PATH" valueType="includePath">\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>\r
+ <listOptionValue builtIn="false" value=""../../../../../../../""/>\r
+ <listOptionValue builtIn="false" value=""../../../../../../../../../aer_c64Px_obj_17_0_0_0/packages""/>\r
+ <listOptionValue builtIn="false" value=""${XDC_CG_ROOT}/packages""/>\r
+ <listOptionValue builtIn="false" value=""${XDAIS_CG_ROOT}/packages""/>\r
+ <listOptionValue builtIn="false" value=""../../../lnkr/c64Ple""/>\r
+ <listOptionValue builtIn="false" value=""../../../src""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEFINE.885193343" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEFINE" valueType="definedSymbols">\r
+ <listOptionValue builtIn="false" value="ti_targets_C64P"/>\r
+ <listOptionValue builtIn="false" value="xdc_target_types__=ti/targets/std.h"/>\r
+ <listOptionValue builtIn="false" value="__CCS_PROJECT_REL_PATH"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL.2081857666" name="Quiet Level" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL.QUIET" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DISPLAY_ERROR_NUMBER.465763146" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_SUPPRESS.1721088073" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_SUPPRESS" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="1111"/>\r
+ <listOptionValue builtIn="false" value="827"/>\r
+ <listOptionValue builtIn="false" value="824"/>\r
+ <listOptionValue builtIn="false" value="837"/>\r
+ <listOptionValue builtIn="false" value="1037"/>\r
+ <listOptionValue builtIn="false" value="195"/>\r
+ <listOptionValue builtIn="false" value="77"/>\r
+ <listOptionValue builtIn="false" value="232"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WARNING.1133846259" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WARNING" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="225"/>\r
+ <listOptionValue builtIn="false" value="994"/>\r
+ <listOptionValue builtIn="false" value="262"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP.1617131228" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP.off" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INTERRUPT_THRESHOLD.1138980557" name="Specify maximum disabled interrupt cycles (--interrupt_threshold, -mi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INTERRUPT_THRESHOLD" value="10000" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA.1938906673" name="Data access model (--mem_model:data)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA.far" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUG_SOFTWARE_PIPELINE.1334831364" name="Generate verbose software pipelining information (--debug_software_pipeline, -mw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUG_SOFTWARE_PIPELINE" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.KEEP_ASM.1916542226" name="Keep the generated assembly language (.asm) file (--keep_asm, -k)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.KEEP_ASM" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST.1279635695" name="Source interlist" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST.C_SRC_INTERLIST" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ASM_LISTING.174096893" name="Generate listing file (--asm_listing, -al)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ASM_LISTING" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OUTPUT_ALL_SYMS.1330772859" name="Keep local symbols in output file (--output_all_syms, -as)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OUTPUT_ALL_SYMS" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.WCHAR_T.579637227" name="Set the size (in bits) of the C/C++ type wchar_t (16,32) (--wchar_t)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.WCHAR_T" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.WCHAR_T.16" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.CHECK_MISRA.1400161580" name="Enable checking of MISRA-C:2004 rules (--check_misra)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.CHECK_MISRA" value="" valueType="string"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__C_SRCS.339988564" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__C_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__CPP_SRCS.1486489787" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__CPP_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM_SRCS.1882949551" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM2_SRCS.1193503588" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM2_SRCS"/>\r
+ </tool>\r
+ <tool id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerDebug.1312108442" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerDebug">\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.OUTPUT_FILE.609575660" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.OUTPUT_FILE" value=""${ProjName}.out"" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.MAP_FILE.950194215" name="Input and output sections listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.LIBRARY.438388150" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.LIBRARY" valueType="libs">\r
+ <listOptionValue builtIn="false" value=""libc.a""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.SEARCH_PATH.1843963009" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.SEARCH_PATH" valueType="libPaths">\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DISPLAY_ERROR_NUMBER.1552303541" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP.1599652380" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP.off" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.XML_LINK_INFO.969605051" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD_SRCS.27212097" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD2_SRCS.2022386959" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD2_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__GEN_CMDS.1951030512" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__GEN_CMDS"/>\r
+ </tool>\r
+ <tool id="com.ti.ccstudio.buildDefinitions.C6000_7.4.hex.1237785454" name="C6000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.hex"/>\r
+ </toolChain>\r
+ </folderInfo>\r
+ </configuration>\r
+ </storageModule>\r
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
+ </cconfiguration>\r
+ <cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Release.1476228313">\r
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Release.1476228313" moduleId="org.eclipse.cdt.core.settings" name="Release">\r
+ <macros>\r
+ <stringMacro name="XDC_CG_ROOT" type="VALUE_PATH_DIR" value="C:/MAS_Tools/xdctools_3_24_06_63"/>\r
+ <stringMacro name="EXT_ROOT__TEST_REL_C64PLE_C64PLE_LE_COFF_SRC" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../src"/>\r
+ <stringMacro name="EXT_ROOT__TEST_REL_C64PLE_C64PLE_LE_COFF_LNKRC64PLE" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../lnkr/c64Ple"/>\r
+ <stringMacro name="XDAIS_CG_ROOT" type="VALUE_PATH_DIR" value="C:/MAS_Tools/xdais_7_23_00_06"/>\r
+ </macros>\r
+ <externalSettings/>\r
+ <extensions>\r
+ <extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
+ <extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>\r
+ </extensions>\r
+ </storageModule>\r
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
+ <configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Release.1476228313" name="Release" parent="com.ti.ccstudio.buildDefinitions.C6000.Release">\r
+ <folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Release.1476228313." name="/" resourcePath="">\r
+ <toolChain id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.ReleaseToolchain.1659367491" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.ReleaseToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerRelease.1026334420">\r
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.58091637" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=com.ti.ccstudio.deviceModel.C6000.CustomC6000Device"/>\r
+ <listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>\r
+ <listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>\r
+ <listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>\r
+ <listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>\r
+ <listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1376025420" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="7.4.2" valueType="string"/>\r
+ <targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.targetPlatformRelease.745626060" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.targetPlatformRelease"/>\r
+ <builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.builderRelease.631723188" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.builderRelease"/>\r
+ <tool id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.compilerRelease.1534840171" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.compilerRelease">\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WARNING.1489185349" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WARNING" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="225"/>\r
+ <listOptionValue builtIn="false" value="994"/>\r
+ <listOptionValue builtIn="false" value="262"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DISPLAY_ERROR_NUMBER.289534704" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP.541157258" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_WRAP.off" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INCLUDE_PATH.897011926" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INCLUDE_PATH" valueType="includePath">\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>\r
+ <listOptionValue builtIn="false" value=""../../../../../../../""/>\r
+ <listOptionValue builtIn="false" value=""${XDC_CG_ROOT}/packages""/>\r
+ <listOptionValue builtIn="false" value=""${XDAIS_CG_ROOT}/packages""/>\r
+ <listOptionValue builtIn="false" value=""../../../lnkr/c64Ple""/>\r
+ <listOptionValue builtIn="false" value=""../../../src""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI.785506765" name="Application binary interface (coffabi, eabi) [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ABI.coffabi" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SILICON_VERSION.2085640642" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SILICON_VERSION" value="64plus" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.KEEP_ASM.817740845" name="Keep the generated assembly language (.asm) file (--keep_asm, -k)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.KEEP_ASM" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUG_SOFTWARE_PIPELINE.46107296" name="Generate verbose software pipelining information (--debug_software_pipeline, -mw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUG_SOFTWARE_PIPELINE" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEFINE.1280280572" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEFINE" valueType="definedSymbols">\r
+ <listOptionValue builtIn="false" value="ti_targets_C64P"/>\r
+ <listOptionValue builtIn="false" value="xdc_target_types__=ti/targets/std.h"/>\r
+ <listOptionValue builtIn="false" value="__CCS_PROJECT_REL_PATH"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL.1206825005" name="Quiet Level" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.QUIET_LEVEL.QUIET" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA.1941770341" name="Data access model (--mem_model:data)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.MEM_MODEL__DATA.far" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ASM_LISTING.1632912256" name="Generate listing file (--asm_listing, -al)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.ASM_LISTING" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_SUPPRESS.1749250948" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DIAG_SUPPRESS" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="1111"/>\r
+ <listOptionValue builtIn="false" value="827"/>\r
+ <listOptionValue builtIn="false" value="824"/>\r
+ <listOptionValue builtIn="false" value="837"/>\r
+ <listOptionValue builtIn="false" value="1037"/>\r
+ <listOptionValue builtIn="false" value="195"/>\r
+ <listOptionValue builtIn="false" value="77"/>\r
+ <listOptionValue builtIn="false" value="232"/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPTIMIZER_INTERLIST.650563926" name="Generate optimized source interlisted assembly (--optimizer_interlist, -os)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPTIMIZER_INTERLIST" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL.1392356347" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INTERRUPT_THRESHOLD.360286864" name="Specify maximum disabled interrupt cycles (--interrupt_threshold, -mi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.INTERRUPT_THRESHOLD" value="10000" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OUTPUT_ALL_SYMS.1358530688" name="Keep local symbols in output file (--output_all_syms, -as)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OUTPUT_ALL_SYMS" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST.2114624377" name="Source interlist" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.SOURCE_INTERLIST.C_SRC_INTERLIST" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_LEVEL.release.345810430" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_LEVEL.release" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_LEVEL.3" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPTIMIZE_WITH_DEBUG.1557468124" name="Optimize fully in the presence of debug directives (--optimize_with_debug, -mn)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPTIMIZE_WITH_DEBUG" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPTIMIZE_WITH_DEBUG.on" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE.1439181715" name="Optimize for code size (--opt_for_space, -ms)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.compilerID.OPT_FOR_SPACE.3" valueType="enumerated"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__C_SRCS.1126499841" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__C_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__CPP_SRCS.1754928196" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__CPP_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM_SRCS.419528853" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM2_SRCS.191831527" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.compiler.inputType__ASM2_SRCS"/>\r
+ </tool>\r
+ <tool id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerRelease.1026334420" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exe.linkerRelease">\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.OUTPUT_FILE.1114959574" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.OUTPUT_FILE" value=""${ProjName}.out"" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.MAP_FILE.1171737701" name="Input and output sections listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DISPLAY_ERROR_NUMBER.54573014" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP.1799936320" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.DIAG_WRAP.off" valueType="enumerated"/>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.SEARCH_PATH.86292539" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.SEARCH_PATH" valueType="stringList">\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>\r
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.LIBRARY.1745831737" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.LIBRARY" valueType="libs">\r
+ <listOptionValue builtIn="false" value=""libc.a""/>\r
+ </option>\r
+ <option id="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.XML_LINK_INFO.873669756" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD_SRCS.1040692038" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD2_SRCS.1108407521" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__CMD2_SRCS"/>\r
+ <inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__GEN_CMDS.1483419310" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.4.exeLinker.inputType__GEN_CMDS"/>\r
+ </tool>\r
+ </toolChain>\r
+ </folderInfo>\r
+ <sourceEntries>\r
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
+ </sourceEntries>\r
+ </configuration>\r
+ </storageModule>\r
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>\r
+ </cconfiguration>\r
+ </storageModule>\r
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
+ <project id="test_rel_c64Ple_C64PLE_LE_COFF.com.ti.ccstudio.buildDefinitions.C6000.ProjectType.1403001122" name="C6000" projectType="com.ti.ccstudio.buildDefinitions.C6000.ProjectType"/>\r
+ </storageModule>\r
+ <storageModule moduleId="scannerConfiguration"/>\r
+ <storageModule moduleId="org.eclipse.cdt.core.language.mapping">\r
+ <project-mappings>\r
+ <content-type-mapping configuration="" content-type="org.eclipse.cdt.core.asmSource" language="com.ti.ccstudio.core.TIASMLanguage"/>\r
+ <content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cHeader" language="com.ti.ccstudio.core.TIGCCLanguage"/>\r
+ <content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cSource" language="com.ti.ccstudio.core.TIGCCLanguage"/>\r
+ <content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxHeader" language="com.ti.ccstudio.core.TIGPPLanguage"/>\r
+ <content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>\r
+ </project-mappings>\r
+ </storageModule>\r
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>\r
+</cproject>\r
diff --git a/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.launches/test_rel_c64Ple_C64PLE_LE_COFF.launch b/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.launches/test_rel_c64Ple_C64PLE_LE_COFF.launch
--- /dev/null
+++ b/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.launches/test_rel_c64Ple_C64PLE_LE_COFF.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<launchConfiguration type="com.ti.ccstudio.debug.launchType.device.debugging">\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_CPUS_WITH_PROJECT" value="<?xml version="1.0" encoding="UTF-8"?> <cpus_with_project> <id id="Blackhawk USB560-M Emulator_0/DSP_0" isa="TMS320C674X"/> </cpus_with_project>"/>\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.Blackhawk USB560-M Emulator_0/DSP_0" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.Blackhawk USB560-M Emulator_0/DSP_0" value="${build_artifact:test_rel_c64Ple_C64PLE_LE_COFF}"/>\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.Blackhawk USB560-M Emulator_0/DSP_0" value="test_rel_c64Ple_C64PLE_LE_COFF"/>\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:test_rel_c64Ple_C64PLE_LE_COFF}"/>\r
+<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.Blackhawk USB560-M Emulator_0/DSP_0" value="C:/ti\volib_C64P_2_1_0_1\packages\ti\mas\bf_asnr_mss_vau\test\ccsProjects\test_rel_c64Ple_C64PLE_LE_COFF\Debug\test_rel_c64Ple_C64PLE_LE_COFF.out"/>\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
+<listEntry value="/test_rel_c64Ple_C64PLE_LE_COFF"/>\r
+</listAttribute>\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
+<listEntry value="4"/>\r
+</listAttribute>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="com.ti.ccstudio.debug.sourceLocator"/>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;cpuSpecificContainer cpuName=&quot;Blackhawk USB560-M Emulator_0/DSP_0&quot;&gt;&#13;&#10;&lt;childContainerEntry childMemento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;project name=&amp;quot;test_rel_c64Ple_C64PLE_LE_COFF&amp;quot; referencedProjects=&amp;quot;true&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; childType=&quot;org.eclipse.debug.core.containerType.project&quot;/&gt;&#13;&#10;&lt;childContainerEntry childMemento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; childType=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;childContainerEntry childMemento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;librarySource/&amp;gt;&amp;#13;&amp;#10;&quot; childType=&quot;com.ti.ccstudio.debug.containerType.library.source&quot;/&gt;&#13;&#10;&lt;/cpuSpecificContainer&gt;&#13;&#10;" typeId="com.ti.ccstudio.debug.containerType.cpu.specific"/> </sourceContainers> </sourceLookupDirector> "/>\r
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/>\r
+</launchConfiguration>\r
diff --git a/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.project b/test/ccsProjects/test_rel_c64Ple_C64PLE_LE_COFF/.project
--- /dev/null
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>test_rel_c64Ple_C64PLE_LE_COFF</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>\r
+ <arguments>\r
+ <dictionary>\r
+ <key>?name?</key>\r
+ <value></value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.append_environment</key>\r
+ <value>true</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>\r
+ <value>all</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.buildArguments</key>\r
+ <value>-k</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.buildCommand</key>\r
+ <value>${CCS_UTILS_DIR}/bin/gmake</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.buildLocation</key>\r
+ <value>${BuildDirectory}</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>\r
+ <value>clean</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.contents</key>\r
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>\r
+ <value>true</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>\r
+ <value>true</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>\r
+ <value>true</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>\r
+ <value>all</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.stopOnError</key>\r
+ <value>false</value>\r
+ </dictionary>\r
+ <dictionary>\r
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>\r
+ <value>true</value>\r
+ </dictionary>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>\r
+ <triggers>full,incremental,</triggers>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>com.ti.ccstudio.core.ccsNature</nature>\r
+ <nature>org.eclipse.cdt.core.cnature</nature>\r
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>\r
+ <nature>org.eclipse.cdt.core.ccnature</nature>\r
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>\r
+ </natures>\r
+ <linkedResources>\r
+ <link>\r
+ <name>bf_asnr_mss_vau.c</name>\r
+ <type>1</type>\r
+ <locationURI>PARENT-2-PROJECT_LOC/src/bf_asnr_mss_vau.c</locationURI>\r
+ </link>\r