updated to 6.0.1 and added additional processors/toolchains
This commit is contained in:
150
ports/c667x/ccs/example_build/include/C66XX.h
Normal file
150
ports/c667x/ccs/example_build/include/C66XX.h
Normal file
@@ -0,0 +1,150 @@
|
||||
/******************************************************************************
|
||||
TMS320C66xx KeyStone Multicore DSP Software Development Kit (SDK). Rev 2A.
|
||||
Definitions, macros and API functions for DSP Environment.
|
||||
(C) MicroLAB Systems, 2015
|
||||
|
||||
|
||||
http://www.mlabsys.com
|
||||
ftp://ftp.mlabsys.com
|
||||
email: techsupport@mlabsys.com
|
||||
|
||||
|
||||
Description:
|
||||
------------
|
||||
This file contains definitions, macros and API functions for KeyStone
|
||||
Multicore DSP environment and must be included in the user C-application.
|
||||
DSP Software Development Kit library is based on TI Chip Support Library
|
||||
(CSL), so it's needed to add CSL libraries into the project along with DSP
|
||||
Software Development Kit library.
|
||||
|
||||
Note that C66xx CorePac interrupt controller (INTC) functions are not
|
||||
included in this DSP Software Utilities library.
|
||||
It's delivered as a separate library from the remaining DSP Software
|
||||
Utilities. When using an embedded operating system that contains interrupt
|
||||
controller/dispatcher support, do not link in the INTC library.
|
||||
For interrupt controller support, SYS/BIOS users should use
|
||||
the HWI (Hardware Interrupt) and ECM (Event Combiner Manager) modules
|
||||
supported under SYS/BIOS v5.21 or later.
|
||||
|
||||
|
||||
Revision history:
|
||||
-----------------
|
||||
rev.1A - 2014, initial release for C6678 DSP.
|
||||
rev.1B - 2015, fixed minor bugs.
|
||||
rev.1C - 2015:
|
||||
- changed C66XX_init_ddr3() DDR3 initialization
|
||||
function;
|
||||
- added DSP chip-level (CPINTC) interrupt controller
|
||||
functions;
|
||||
rev.2A - 2015, totally redesigned DSP SDK;
|
||||
|
||||
|
||||
Notes:
|
||||
------
|
||||
1. This C-header file is an include file for TI C6xxx C/C++ Code
|
||||
Generation Tools, which must be invoked to compile code for C66xx DSP
|
||||
platform.
|
||||
|
||||
2. The following additional libraries should be included:
|
||||
TI Chip Support Library (CSL) (ti.csl.ae66) should be included in
|
||||
Linker options (this library is located at
|
||||
$(TI_PDK_C6678_INSTALL_DIR)\packages\ti\csl\lib).
|
||||
|
||||
3. This file is best viewed with the TAB setting set to '4'.
|
||||
|
||||
4. This header file is externally controlled from user C-code by run-time
|
||||
compiler keys definitions in order to apply DSP-type specific
|
||||
definitions to refer to particular definitions included for different
|
||||
DSP type:
|
||||
|
||||
__C66XX_SELECT_C6678_DSP__
|
||||
- if defined in user code prior inclusion of this header file,
|
||||
then DSP-type specific definitions are applied to C6678 DSP
|
||||
|
||||
Copyright:
|
||||
----------
|
||||
This utility is supplied free of charge as it is without any obligation
|
||||
from MicroLAB Systems. No responsibility is assumed for any use or misuse
|
||||
of these utilities.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file C66XX.h
|
||||
*
|
||||
* @brief KeyStone Multicore DSP SDK include file
|
||||
*
|
||||
* This file contains definitions, macros and API functions for KeyStone
|
||||
* Multicore DSP environment
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __C66XX_H__ // check for this file has been already included
|
||||
#define __C66XX_H__ 1
|
||||
|
||||
|
||||
// General defs
|
||||
#define C66XX_ON 1
|
||||
#define C66XX_OFF 0
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//------------ DSP-type specific run-time compiler keys processing ------------
|
||||
// (this is required in order to exclude key confusions)
|
||||
|
||||
// Default setting is C6678 definitions
|
||||
#ifndef __C66XX_SELECT_C6678_DSP__
|
||||
#define __C66XX_SELECT_C6678_DSP__ 1
|
||||
#endif /* __C66XX_SELECT_C6678_DSP__ */
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/** KeyStone Multicore DSP SDK revision ID */
|
||||
#define C66XX_SDK_REVISION_ID "2A"
|
||||
|
||||
|
||||
// Include TI Chip Support Library (CSL) defs
|
||||
// CSL Chip Functional Layer
|
||||
#include <ti/csl/csl_chipAux.h>
|
||||
// CSL TSC Functional Layer
|
||||
#include <ti/csl/csl_tsc.h>
|
||||
// CSL Cache Functional Layer
|
||||
#include <ti/csl/csl_cacheAux.h>
|
||||
// CSL Boot configuration defs
|
||||
#include <ti/csl/csl_bootcfgAux.h>
|
||||
// CSL Power and Sleep Controller defs
|
||||
#include <ti/csl/csl_pscAux.h>
|
||||
// CSL XMC Controller defs
|
||||
#include <ti/csl/csl_xmcAux.h>
|
||||
// CSL DDR3 defs
|
||||
#include <ti/csl/csl_emif4f.h>
|
||||
#include <ti/csl/csl_emif4fAux.h>
|
||||
// CSL INTC defs
|
||||
#include <ti/csl/src/intc/csl_intcAux.h>
|
||||
// CSL CPINTC defs
|
||||
#include <ti/csl/csl_cpIntcAux.h>
|
||||
// CSL SGMII defs
|
||||
#include <ti/csl/csl_cpsgmiiAux.h>
|
||||
#include <ti/csl/csl_cpgmac_slAux.h>
|
||||
// CSL GPIO Functional Layer
|
||||
#include <ti/csl/csl_gpioAux.h>
|
||||
// CSL Timer Functional Layer
|
||||
#include <ti/csl/csl_tmrAux.h>
|
||||
// CSL UART Functional Layer
|
||||
#include <ti/csl/cslr_uart.h>
|
||||
// CSL SRIO Functional Layer
|
||||
#include <ti/csl/csl_srioAux.h>
|
||||
#include <ti/csl/csl_srioAuxPhyLayer.h>
|
||||
|
||||
|
||||
// Include C66xx DSP defs, macros and aux functions
|
||||
#include "C66XX_DEF.hxx"
|
||||
#include "C66XX_MACROS.hxx"
|
||||
#include "C66XX_FUNCTIONS.hxx"
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* __C66XX_H__ */
|
||||
1678
ports/c667x/ccs/example_build/include/C66XX_DEF.hxx
Normal file
1678
ports/c667x/ccs/example_build/include/C66XX_DEF.hxx
Normal file
File diff suppressed because it is too large
Load Diff
1693
ports/c667x/ccs/example_build/include/C66XX_FUNCTIONS.hxx
Normal file
1693
ports/c667x/ccs/example_build/include/C66XX_FUNCTIONS.hxx
Normal file
File diff suppressed because it is too large
Load Diff
1154
ports/c667x/ccs/example_build/include/C66XX_MACROS.hxx
Normal file
1154
ports/c667x/ccs/example_build/include/C66XX_MACROS.hxx
Normal file
File diff suppressed because it is too large
Load Diff
251
ports/c667x/ccs/example_build/include/TA66XX_DSP.h
Normal file
251
ports/c667x/ccs/example_build/include/TA66XX_DSP.h
Normal file
@@ -0,0 +1,251 @@
|
||||
/******************************************************************************
|
||||
TORNADO AMC modules Software Development Kit (SDK). Rev 4A.
|
||||
General definitions and API functions.
|
||||
(C) MicroLAB Systems, 2015-2017
|
||||
|
||||
|
||||
http://www.mlabsys.com
|
||||
ftp://ftp.mlabsys.com
|
||||
email: techsupport@mlabsys.com
|
||||
|
||||
|
||||
Description:
|
||||
------------
|
||||
This file contains general definitions and API functions for TORNADO AMC
|
||||
modules SDK and must be included in the user C-application for
|
||||
TORNADO AMC modules.
|
||||
|
||||
|
||||
Revision history:
|
||||
-----------------
|
||||
rev.2A - 2015, initial release for TORNADO-A6678 board rev.1B;
|
||||
rev.3A - 2016:
|
||||
- added support for TORNADO-A6678/FMC board rev.1A;
|
||||
rev.3B - 2017:
|
||||
- added support for TORNADO-A6678/FMC board rev.1B;
|
||||
rev.4A - 2017:
|
||||
- added support for TORNADO-AZ/FMC board rev.1A;
|
||||
|
||||
|
||||
Notes:
|
||||
------
|
||||
1. This C-header file is an include file for TI C6xxx C/C++ Code
|
||||
Generation Tools, which must be invoked to compile for C66xx DSP
|
||||
platform.
|
||||
|
||||
2. This file is best viewed with the TAB setting set to '4'.
|
||||
|
||||
|
||||
Copyright:
|
||||
----------
|
||||
This utility is supplied free of charge as it is without any obligation
|
||||
from MicroLAB Systems. No responsibility is assumed for any use or misuse
|
||||
of these utilities.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file TA66XX_DSP.h
|
||||
*
|
||||
* @brief Main include file
|
||||
*
|
||||
* This file contains general definitions and API functions for TORNADO
|
||||
* AMC modules SDK
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __TA66XX_DSP_H__ // check for this file has been already included
|
||||
#define __TA66XX_DSP_H__ 1
|
||||
|
||||
|
||||
// General defs
|
||||
#define TA66XX_ON 1
|
||||
#define TA66XX_OFF 0
|
||||
|
||||
|
||||
// Include C66xx DSP defs, macros and aux functions
|
||||
#include "C66XX.h"
|
||||
// Include TORNADO AMC SDK functions errors
|
||||
#include "TASDK_ERR.h"
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
/** TORNADO AMC SDK revision ID */
|
||||
#define TA66XX_SDK_REVISION_ID "4A"
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ TORNADO AMC SDK API functions ID defs ==========================
|
||||
//=============================================================================
|
||||
/** @addtogroup TA66XX_FUNCTIONS_ID SDK API functions ID defs
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**< Function name max size */
|
||||
#define TA66XX_FUNCTION_NAME_LEN_MAX 64
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
TA66XX_GET_ERROR_MESSAGE_FUNCTION_ID = 0,
|
||||
TA66XX_GET_FUNCTION_NAME_FUNCTION_ID,
|
||||
TA66XX_BC_SET_I2C_INTERRUPT_NUMBER_FUNCTION_ID,
|
||||
TA66XX_BC_SET_UART_INTERRUPT_NUMBER_FUNCTION_ID,
|
||||
TA66XX_BC_INIT_FUNCTION_ID,
|
||||
TA66XX_BC_MAP_DSP_GPIO_INTERRUPT_FUNCTION_ID,
|
||||
TA66XX_BC_UNMAP_DSP_GPIO_INTERRUPT_FUNCTION_ID,
|
||||
TA66XX_BC_INIT_UART_FUNCTION_ID,
|
||||
TA66XX_BC_WRITE_EEPROM_FUNCTION_ID,
|
||||
TA66XX_BC_READ_EEPROM_FUNCTION_ID,
|
||||
TA66XX_BC_ERASE_EEPROM_FUNCTION_ID,
|
||||
TA66XX_BC_GET_DEVICE_INFO_FUNCTION_ID,
|
||||
TA66XX_BC_GET_HW_CFG_INFO_FUNCTION_ID,
|
||||
TA66XX_BC_GET_FMC_INFO_FUNCTION_ID,
|
||||
TA66XX_BC_GET_TEMP_STATE_FUNCTION_ID,
|
||||
TA66XX_BC_GET_POWER_STATE_FUNCTION_ID,
|
||||
TA66XX_BC_GET_FMC_POWER_STATE_FUNCTION_ID,
|
||||
TA66XX_BC_GET_SFP_INFO_FUNCTION_ID,
|
||||
TA66XX_BC_SET_FPGA_HIF_CONFIG_FUNCTION_ID,
|
||||
TA66XX_BC_GET_FPGA_HIF_CONFIG_FUNCTION_ID,
|
||||
TA66XX_BC_CLEAR_FPGA_CNF_FUNCTION_ID,
|
||||
TA66XX_BC_LOAD_FPGA_CNF_FUNCTION_ID,
|
||||
TA66XX_BC_GET_GBE_PORT_INFO_FUNCTION_ID,
|
||||
TA66XX_BC_INIT_GBE_PORT_FUNCTION_ID,
|
||||
TA66XX_BC_ERASE_FLASH_FUNCTION_ID,
|
||||
TA66XX_BC_WRITE_FLASH_FUNCTION_ID,
|
||||
TA66XX_BC_READ_FLASH_FUNCTION_ID,
|
||||
TA66XX_SC_INIT_FLASH_RECORD_LIST_FUNCTION_ID,
|
||||
TA66XX_SC_GET_NUMBER_OF_FLASH_RECORDS_FUNCTION_ID,
|
||||
TA66XX_SC_GET_FLASH_RECORD_LIST_FUNCTION_ID,
|
||||
TA66XX_SC_GET_FLASH_RECORD_INFO_FUNCTION_ID,
|
||||
TA66XX_SC_READ_FLASH_RECORD_DATA_FUNCTION_ID,
|
||||
TA66XX_SC_CREATE_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_SC_WRITE_FLASH_RECORD_DATA_FUNCTION_ID,
|
||||
TA66XX_SC_XCLOSE_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_SC_UPDATE_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_SC_DELETE_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_SC_SQUEEZE_FLASH_RECORDS_FUNCTION_ID,
|
||||
TA66XX_SC_GET_FLASH_FREE_SPACE_FUNCTION_ID,
|
||||
TA66XX_SC_GET_BOOT_SEQ_FUNCTION_ID,
|
||||
TA66XX_SC_DELETE_BOOT_SEQ_FUNCTION_ID,
|
||||
TA66XX_SC_SET_BOOT_SEQ_FUNCTION_ID,
|
||||
TA66XX_SC_LOAD_DSP_APPL_FROM_MEMORY_FUNCTION_ID,
|
||||
TA66XX_SC_LOAD_DSP_APPL_FROM_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_SC_LOAD_FPGA_CNF_FROM_FLASH_RECORD_FUNCTION_ID,
|
||||
TA66XX_NUMBER_OF_FUNCTIONS
|
||||
};
|
||||
/** @}*/
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ General SDK API functions declarations =========================
|
||||
//=============================================================================
|
||||
|
||||
/** @addtogroup TA66XX_GENERAL TORNADO AMC SDK general API functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*------------ TA66XX_set_error() function -------------------------------*//**
|
||||
* @brief Function should be used on exit from SDK API functions in
|
||||
* order to set error code and function ID of SDK API functions
|
||||
*
|
||||
* @param[in] err - error code;
|
||||
* @param[in] function_id - function ID of SDK API functions;
|
||||
*
|
||||
* @return Error code
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_set_error(int32_t err, int32_t function_id);
|
||||
|
||||
|
||||
/*------------ TA66XX_get_last_error() function --------------------------*//**
|
||||
* @brief Function returns error code of last executed API function
|
||||
*
|
||||
* @return Error code of last executed API function
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_get_last_error(void);
|
||||
|
||||
|
||||
/*------------ TA66XX_get_error_flag() function --------------------------*//**
|
||||
* @brief Function returns status of ERROR_FLAG for API functions
|
||||
*
|
||||
* ERROR_FLAG is set by each API function in case error has been detected.
|
||||
* ERROR_FLAG can be reset by TA66XX_clear_error_flag() API function
|
||||
*
|
||||
* @param[out] error_code - pointer to a variable to receive the error code in
|
||||
* case error has been detected. In case pointer is NULL, then
|
||||
* no error code is returned;
|
||||
* @param[out] error_function_id - pointer to a variable to receive ID of the
|
||||
* first API function, which has returned with error. In case
|
||||
* pointer is NULL, then no function ID is returned;
|
||||
*
|
||||
* @return Status of ERROR_FLAG: ON or OFF
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_get_error_flag(int32_t *error_code, int32_t *error_function_id);
|
||||
|
||||
|
||||
/*------------ TA66XX_clear_error_flag() function ------------------------*//**
|
||||
* @brief Function clear ERROR_FLAG for API functions
|
||||
*
|
||||
* @return Always OK
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_clear_error_flag(void);
|
||||
|
||||
|
||||
/*------------ TA66XX_get_error_message() function -----------------------*//**
|
||||
* @brief Function returns the text interpretation of the error code.
|
||||
*
|
||||
* @param[in] error - error code to be interpreted;
|
||||
* @param[out] error_message - pointer to the returned string. In case pointer
|
||||
* is NULL, then no text is filled in;
|
||||
*
|
||||
* @return Error code
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_get_error_message(int32_t error, char *error_message);
|
||||
|
||||
|
||||
/*------------ TA66XX_get_function_name() function -----------------------*//**
|
||||
* @brief Function returns the text interpretation of API function.
|
||||
*
|
||||
* @param[in] function_id - ID of the API function to be interpreted;
|
||||
* @param[out] function_name - pointer to the returned string. In case pointer
|
||||
* is NULL, then no text is filled in;
|
||||
*
|
||||
* @return Error code
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t TA66XX_get_function_name(int32_t function_id, char *function_name);
|
||||
|
||||
|
||||
/** @}*/
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* __TA66XX_DSP_H__ */
|
||||
|
||||
121
ports/c667x/ccs/example_build/include/TA66XX_DSP_BC.h
Normal file
121
ports/c667x/ccs/example_build/include/TA66XX_DSP_BC.h
Normal file
@@ -0,0 +1,121 @@
|
||||
/******************************************************************************
|
||||
TORNADO AMC modules Software Development Kit (SDK). Rev 4A.
|
||||
Definitions, macros and API functions for DSP Environment.
|
||||
(C) MicroLAB Systems, 2014-2017
|
||||
|
||||
|
||||
http://www.mlabsys.com
|
||||
ftp://ftp.mlabsys.com
|
||||
email: techsupport@mlabsys.com
|
||||
|
||||
|
||||
Description:
|
||||
------------
|
||||
This file contains definitions, macros and API functions for TORNADO AMC
|
||||
modules on-board DSP environment and must be included in the user
|
||||
C-application for TORNADO AMC modules.
|
||||
|
||||
|
||||
Revision history:
|
||||
-----------------
|
||||
rev.1A - 2014, initial release for TORNADO-A6678 board rev.1A.
|
||||
rev.1B - 2015, fixed some bugs.
|
||||
rev.1C - 2015, added support for TORNADO-A6678 board rev.1B:
|
||||
- updated DSP external control registers area;
|
||||
- updated TA66XX_init_dsp() DSP initialization
|
||||
function;
|
||||
- added MMC-to-DSP communication functions in DSP
|
||||
I2C functions.
|
||||
rev.2A - 2015, totally redesigned SDK for TORNADO-A6678 board rev.1B;
|
||||
rev.3A - 2016, added support for TORNADO-A6678/FMC board rev.1A;
|
||||
rev.3B - 2017:
|
||||
- added support for TORNADO-A6678/FMC board rev.1B;
|
||||
rev.4A - 2017:
|
||||
- added support for TORNADO-AZ/FMC board rev.1A;
|
||||
|
||||
|
||||
Notes:
|
||||
------
|
||||
1. This C-header file is an include file for TI C6xxx C/C++ Code
|
||||
Generation Tools, which must be invoked to compile for C66xx DSP
|
||||
platform.
|
||||
|
||||
2. This file is best viewed with the TAB setting set to '4'.
|
||||
|
||||
3. This library uses dynamic memory allocation in erase FLASH functions,
|
||||
so user should provide enough memory area for dynamic memory allocation
|
||||
(-heap parameter) and place the section (.sysmem) in the corresponding
|
||||
memory area in linker command file.
|
||||
The max requested memory allocation block length is up to FLASH memory
|
||||
sector length in bytes (128 KB).
|
||||
|
||||
4. This header file is externally controlled from user C-code by run-time
|
||||
compiler keys definitions in order to apply board-type specific
|
||||
definitions to refer to particular definitions included for different
|
||||
board type:
|
||||
|
||||
__TA66XX_BC_USE_BIOS__
|
||||
- if defined in user code prior inclusion of this header file,
|
||||
then TI SYS/BIOS modules(HWI (Hardware Interrupt) and ECM
|
||||
(Event Combiner Manager)), will be used to support
|
||||
C66xx CorePac interrupt controller (INTC).
|
||||
TI INTC Chip Support Library (CSL) should be used in case
|
||||
NO embedded operating system is used in user application.
|
||||
DEFAULT is NOT DEFINED, so CSL INTC library will be used
|
||||
to support C66xx CorePac interrupt controller.
|
||||
|
||||
Copyright:
|
||||
----------
|
||||
This utility is supplied free of charge as it is without any obligation
|
||||
from MicroLAB Systems. No responsibility is assumed for any use or misuse
|
||||
of these utilities.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file TA66XX_DSP_BC.h
|
||||
*
|
||||
* @brief Main include file
|
||||
*
|
||||
* This file contains definitions, macros and API functions for TORNADO
|
||||
* AMC modules on-board DSP environment
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __TA66XX_DSP_BC_H__ // check for this file has been already included
|
||||
#define __TA66XX_DSP_BC_H__ 1
|
||||
|
||||
|
||||
#if defined __TA66XX_BC_USE_BIOS__
|
||||
// Include this file to prevent compiler errors
|
||||
// when using SYS/BIOS
|
||||
#include <xdc/std.h>
|
||||
#endif /* __TA66XX_BC_USE_BIOS__ */
|
||||
|
||||
|
||||
// Include general TORNADO AMC SDK defs
|
||||
#include "TA66XX_DSP.h"
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//------------ board-type specific run-time compiler keys processing ----------
|
||||
// (this is required in order to exclude key confusions)
|
||||
|
||||
// Default setting is C6678 DSP definitions
|
||||
#define __C66XX_SELECT_C6678_DSP__ 1
|
||||
|
||||
// Finally we must define C-code data type for accessing I/O areas
|
||||
typedef volatile uint16_t __TA66XX_BC_DSP_XCR_RG_DATA_TYPE__;
|
||||
typedef volatile uint16_t __TA66XX_BC_FLASH_DATA_TYPE__;
|
||||
//=============================================================================
|
||||
|
||||
|
||||
// Include TORNADO AMC SDK functions
|
||||
#include "TA66XX_DSP_BC_FUNCTIONS.hxx"
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* __TA66XX_DSP_BC_H__ */
|
||||
|
||||
1732
ports/c667x/ccs/example_build/include/TA66XX_DSP_BC_FUNCTIONS.hxx
Normal file
1732
ports/c667x/ccs/example_build/include/TA66XX_DSP_BC_FUNCTIONS.hxx
Normal file
File diff suppressed because it is too large
Load Diff
649
ports/c667x/ccs/example_build/include/TA66XX_OSAL.h
Normal file
649
ports/c667x/ccs/example_build/include/TA66XX_OSAL.h
Normal file
@@ -0,0 +1,649 @@
|
||||
/******************************************************************************
|
||||
TORNADO AMC modules Software Development Kit (SDK). Rev 3A.
|
||||
TI SYS/BIOS RTOS abstraction layer for TORNADO AMC embedded controllers.
|
||||
(C) MicroLAB Systems, 2014-2015
|
||||
|
||||
|
||||
File: This file contains TI SYS/BIOS RTOS abstraction layer definitions
|
||||
----- for TORNADO AMC embedded controllers, which is used for various
|
||||
low-level drivers (LLD) and libraries that the application use.
|
||||
|
||||
|
||||
Revision history:
|
||||
-----------------
|
||||
rev.1A - 2014, initial release for TORNADO-A6678 board
|
||||
rev.2A - 2015, totally redesigned SDK;
|
||||
rev.3A - 2016, added support for TORNADO-A6678/FMC board rev.1A;
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file TA66XX_OSAL.h
|
||||
*
|
||||
* @brief RTOS abstraction layer definitions
|
||||
*
|
||||
* This file contains TI SYS/BIOS RTOS abstraction layer (OSAL) definitions for
|
||||
* TORNADO AMC embedded controllers, which is used for various
|
||||
* low-level drivers (LLD) and libraries that the application use.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __TA66XX_OSAL_H__ // check for this file has been already included
|
||||
#define __TA66XX_OSAL_H__ 1
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//------------ Definitions ----------------------------------------------------
|
||||
//=============================================================================
|
||||
/** @addtogroup TA66XX_OSAL_GENERAL OS abstraction layer (OSAL) general definitions
|
||||
* @{
|
||||
*/
|
||||
|
||||
// Hardware semaphore defs
|
||||
#define TA66XX_OSAL_CPPI_HW_SEM 1 /**< CPPI LLD hardware semaphore */
|
||||
#define TA66XX_OSAL_QMSS_HW_SEM 2 /**< QMSS LLD hardware semaphore */
|
||||
#define TA66XX_OSAL_SRIO_HW_SEM 3 /**< SRIO LLD hardware semaphore */
|
||||
#define TA66XX_OSAL_SPI_HW_SEM 4 /**< SPI driver hardware semaphore */
|
||||
|
||||
/** Macro to define high-priority QMSS queue for accumulator (depends on DSP event ID and core number) */
|
||||
#define TA66XX_OSAL_set_qmss_queue_acc(eventid, core) (704 + (eventid - 48) * 8 + core)
|
||||
|
||||
// Interrupts and event IDs used by NIMU library (DSP core 0 is assumed to be used)
|
||||
#define TA66XX_OSAL_ETHERNET_AMC_EVENTID 48 /**< Ethernet AMC port event - used by NIMU library */
|
||||
#define TA66XX_OSAL_ETHERNET_AMC_INTERRUPT 7 /**< Ethernet AMC port interrupt - used by NIMU library */
|
||||
/** QMSS queue for AMC Ethernet port accumulator (depends on TA66XX_OSAL_ETHERNET_AMC_EVENTID) */
|
||||
#define TA66XX_OSAL_ETHERNET_AMC_QMSS_QUEUE_ACC TA66XX_OSAL_set_qmss_queue_acc(TA66XX_OSAL_ETHERNET_AMC_EVENTID, 0)
|
||||
#define TA66XX_OSAL_ETHERNET_PHY_EVENTID 49 /**< Ethernet PHY port event - used by NIMU library */
|
||||
#define TA66XX_OSAL_ETHERNET_PHY_INTERRUPT 8 /**< Ethernet PHY port interrupt - used by NIMU library */
|
||||
/** QMSS queue for PHY Ethernet port accumulator (depends on TA66XX_OSAL_ETHERNET_PHY_EVENTID) */
|
||||
#define TA66XX_OSAL_ETHERNET_PHY_QMSS_QUEUE_ACC TA66XX_OSAL_set_qmss_queue_acc(TA66XX_OSAL_ETHERNET_PHY_EVENTID, 0)
|
||||
|
||||
// Interrupts and event IDs used by SRIO (DSP core 0 is assumed to be used)
|
||||
#define TA66XX_OSAL_SRIO_MESSAGES_EVENTID 50 /**< SRIO event ID used by messages (Type 9 and Type 11) */
|
||||
#define TA66XX_OSAL_SRIO_INTERRUPT 9 /**< SRIO interrupt */
|
||||
/** QMSS queue for SRIO accumulator (depends on TA66XX_OSAL_SRIO_MESSAGES_EVENTID) */
|
||||
#define TA66XX_OSAL_SRIO_QMSS_QUEUE_ACC TA66XX_OSAL_set_qmss_queue_acc(TA66XX_OSAL_SRIO_MESSAGES_EVENTID, 0)
|
||||
#define TA66XX_OSAL_SRIO_DIO_EVENTID 20 /**< SRIO event ID used by DirectIO (INTDST(n + 16), n - core number) */
|
||||
/** @}*/
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//------------ Global variables -----------------------------------------------
|
||||
//=============================================================================
|
||||
extern uint32_t qmssMallocCounter;
|
||||
extern uint32_t qmssFreeCounter;
|
||||
extern uint32_t cppiMallocCounter;
|
||||
extern uint32_t cppiFreeCounter;
|
||||
extern uint32_t srioMallocCounter;
|
||||
extern uint32_t srioFreeCounter;
|
||||
extern uint32_t srioDataBufferMallocCounter;
|
||||
extern uint32_t srioDataBufferFreeCounter;
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ T-AMC controllers OSAL functions declarations ==================
|
||||
//=============================================================================
|
||||
/** @addtogroup TA66XX_OSAL_FUNCTIONS TORNADO AMC OSAL functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ QMSS LLD OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
/*------------ Osal_qmssBeginMemAccess() function ------------------------*//**
|
||||
* @brief Function is used to indicate that a block of memory is about to be
|
||||
* accessed
|
||||
*
|
||||
* If the memory block is cached then this indicates that the application
|
||||
* would need to ensure that the cache is updated with the data from the actual
|
||||
* memory
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_qmssBeginMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_qmssEndMemAccess() function --------------------------*//**
|
||||
* @brief Function is used to indicate that the block of memory has finished
|
||||
* being accessed
|
||||
*
|
||||
* If the memory block is cached then the application would need to ensure that
|
||||
* the contents of the cache are updated immediately to the actual memory.
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_qmssEndMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_qmssMalloc() function --------------------------------*//**
|
||||
* @brief Function implements the memory allocation library function
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
Ptr Osal_qmssMalloc(uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_qmssFree() function ----------------------------------*//**
|
||||
* @brief Function implements the memory free library function
|
||||
*
|
||||
* This function frees up memory allocated using Osal_qmssMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] dataPtr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_qmssFree(Ptr dataPtr, uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_qmssCsEnter() function -------------------------------*//**
|
||||
* @brief Function is used to enter a critical section
|
||||
*
|
||||
* Function protects against access from multiple cores and access from
|
||||
* multiple threads on single core
|
||||
*
|
||||
* @return Handle used to lock critical section
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_qmssCsEnter(void);
|
||||
|
||||
|
||||
/*------------ Osal_qmssCsExit() function --------------------------------*//**
|
||||
* @brief Function is used to exit a critical section protected using
|
||||
* Osal_qmssCsEnter() API.
|
||||
*
|
||||
* @param[in] CsHandle - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_qmssCsExit(void *CsHandle);
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ CPPI LLD OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
/*------------ Osal_cppiBeginMemAccess() function ------------------------*//**
|
||||
* @brief Function is used to indicate that a block of memory is about to be
|
||||
* accessed
|
||||
*
|
||||
* If the memory block is cached then this indicates that the application
|
||||
* would need to ensure that the cache is updated with the data from the actual
|
||||
* memory
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_cppiBeginMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_cppiEndMemAccess() function --------------------------*//**
|
||||
* @brief Function is used to indicate that the block of memory has finished
|
||||
* being accessed
|
||||
*
|
||||
* If the memory block is cached then the application would need to ensure that
|
||||
* the contents of the cache are updated immediately to the actual memory.
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_cppiEndMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_cppiMalloc() function --------------------------------*//**
|
||||
* @brief Function implements the memory allocation library function
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
Ptr Osal_cppiMalloc(uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_cppiFree() function ----------------------------------*//**
|
||||
* @brief Function implements the memory free library function
|
||||
*
|
||||
* This function frees up memory allocated using Osal_cppiMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] dataPtr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_cppiFree(Ptr dataPtr, uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_cppiCsEnter() function -------------------------------*//**
|
||||
* @brief Function is used to enter a critical section
|
||||
*
|
||||
* Function protects against access from multiple cores and access from
|
||||
* multiple threads on single core
|
||||
*
|
||||
* @return Handle used to lock critical section
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_cppiCsEnter(void);
|
||||
|
||||
|
||||
/*------------ Osal_cppiCsExit() function --------------------------------*//**
|
||||
* @brief Function is used to exit a critical section protected using
|
||||
* Osal_cppiCsEnter() API.
|
||||
*
|
||||
* @param[in] CsHandle - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_cppiCsExit(void *CsHandle);
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
#ifdef __TA66XX_FUNCTIONS_INCLUDE_SRIO__
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ SRIO LLD OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
/*------------ Osal_srioBeginMemAccess() function ------------------------*//**
|
||||
* @brief Function is used to indicate that a block of memory is about to be
|
||||
* accessed
|
||||
*
|
||||
* If the memory block is cached then this indicates that the application
|
||||
* would need to ensure that the cache is updated with the data from the actual
|
||||
* memory
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioBeginMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_srioEndMemAccess() function --------------------------*//**
|
||||
* @brief Function is used to indicate that the block of memory has finished
|
||||
* being accessed
|
||||
*
|
||||
* If the memory block is cached then the application would need to ensure that
|
||||
* the contents of the cache are updated immediately to the actual memory.
|
||||
*
|
||||
* @param[in] ptr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioEndMemAccess(void *ptr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_srioBeginDescriptorAccess() function -----------------*//**
|
||||
* @brief Function is invoked by the SRIO LLD to indicate that a descriptor is
|
||||
* being accessed.
|
||||
*
|
||||
* @param[in] drvHandle - driver instance for which descriptor is being
|
||||
* accessed
|
||||
* @param[in] ptr - pointer to the descriptor being accessed
|
||||
* @param[in] descSize - size of the descriptor (valid only for driver managed
|
||||
* configuration)
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioBeginDescriptorAccess(Srio_DrvHandle drvHandle, void *ptr, uint32_t descSize);
|
||||
|
||||
|
||||
/*------------ Osal_srioEndDescriptorAccess() function -------------------*//**
|
||||
* @brief Function is invoked by the SRIO LLD to indicate that a descriptor is
|
||||
* finished being accessed.
|
||||
*
|
||||
* @param[in] drvHandle - driver instance for which descriptor is being
|
||||
* accessed
|
||||
* @param[in] ptr - pointer to the descriptor being accessed
|
||||
* @param[in] descSize - size of the descriptor (valid only for driver managed
|
||||
* configuration)
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioEndDescriptorAccess(Srio_DrvHandle drvHandle, void *ptr, uint32_t descSize);
|
||||
|
||||
|
||||
/*------------ Osal_srioMalloc() function --------------------------------*//**
|
||||
* @brief Function implements the memory allocation library function
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
Ptr Osal_srioMalloc(uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_srioFree() function ----------------------------------*//**
|
||||
* @brief Function implements the memory free library function
|
||||
*
|
||||
* This function frees up memory allocated using Osal_srioMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] dataPtr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioFree(Ptr dataPtr, uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_dataBufferInitMemory() function ----------------------*//**
|
||||
* @brief Function is used to allocate a block of memory for all the data
|
||||
* buffer operations. This function is called by the application.
|
||||
*
|
||||
* @param[in] dataBufferSize - size of each data buffer
|
||||
*
|
||||
* @return Error code
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize);
|
||||
|
||||
|
||||
/*------------ Osal_srioDataBufferMalloc() function ----------------------*//**
|
||||
* @brief Function is used to allocate a data buffer of the specified size.
|
||||
* Data buffers should always be allocated from the global address space.
|
||||
*
|
||||
* @param[in] numBytes - number of bytes to be allocated
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_srioDataBufferMalloc(uint32_t numBytes);
|
||||
|
||||
|
||||
/*------------ Osal_srioDataBufferFree() function ------------------------*//**
|
||||
* @brief Function is used to clean up a previously allocated data buffer
|
||||
* block. All data buffers are in the global address space.
|
||||
*
|
||||
* @param[in] ptr - pointer to the memory block to be cleaned up
|
||||
* @param[in] numBytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioDataBufferFree(void *ptr, uint32_t numBytes);
|
||||
|
||||
|
||||
/*------------ Osal_srioLog() function -----------------------------------*//**
|
||||
* @brief Function is used to log the messages from SRIO LLD on the console.
|
||||
*
|
||||
* @param[in] fmt - formatted string
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioLog(String fmt, ... );
|
||||
|
||||
|
||||
/*------------ Osal_srioCreateSem() function -----------------------------*//**
|
||||
* @brief Function is used to create a critical section.
|
||||
*
|
||||
* @return Semaphore handle created
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_srioCreateSem(void);
|
||||
|
||||
|
||||
/*------------ Osal_srioDeleteSem() function -----------------------------*//**
|
||||
* @brief Function is used to delete a critical section.
|
||||
*
|
||||
* @param[in] semHandle - semaphore handle to be deleted
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioDeleteSem(void *semHandle);
|
||||
|
||||
|
||||
/*------------ Osal_srioPendSem() function -------------------------------*//**
|
||||
* @brief Function is used to pend on a semaphore
|
||||
*
|
||||
* @param[in] semHandle - semaphore handle on which the API will pend
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioPendSem(void *semHandle);
|
||||
|
||||
|
||||
/*------------ Osal_srioPostSem() function -------------------------------*//**
|
||||
* @brief Function is used to post a semaphore
|
||||
*
|
||||
* @param[in] semHandle - semaphore handle which will be posted
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioPostSem(void *semHandle);
|
||||
|
||||
|
||||
/*------------ Osal_srioEnterMultipleCoreCriticalSection() function ------*//**
|
||||
* @brief Function is used to protect the driver shared resources across
|
||||
* multiple cores.
|
||||
*
|
||||
* @return Handle used to lock critical section
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_srioEnterMultipleCoreCriticalSection(void);
|
||||
|
||||
|
||||
/*------------ Osal_srioExitMultipleCoreCriticalSection() function -------*//**
|
||||
* @brief Function is called to end the critical section which was protecting
|
||||
* shared resources from access across multiple cores.
|
||||
*
|
||||
* @param[in] critSectHandle - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioExitMultipleCoreCriticalSection(void *critSectHandle);
|
||||
|
||||
|
||||
/*------------ Osal_srioEnterSingleCoreCriticalSection() function --------*//**
|
||||
* @brief Function is used to provide critical section to prevent access of
|
||||
* shared resources from single core and multiple threads.
|
||||
*
|
||||
* @param[in] drvHandle - driver handle which needs critical section to
|
||||
* protect its resources
|
||||
*
|
||||
* @return Handle used to lock critical section
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void *Osal_srioEnterSingleCoreCriticalSection(Srio_DrvHandle drvHandle);
|
||||
|
||||
|
||||
/*------------ Osal_srioExitSingleCoreCriticalSection() function ---------*//**
|
||||
* @brief Function is called to end the critical section access of shared
|
||||
* resources from single cores.
|
||||
*
|
||||
* @param[in] drvHandle - driver handle which needs critical section to
|
||||
* protect its resources
|
||||
* @param[in] critSectHandle - critical handle retreived by
|
||||
* Osal_srioEnterSingleCoreCriticalSection() function call
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_srioExitSingleCoreCriticalSection(Srio_DrvHandle drvHandle, void *critSectHandle);
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
#endif /* __TA66XX_FUNCTIONS_INCLUDE_SRIO__ */
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ NIMU LLD OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
/*------------ Osal_nimuMalloc() function --------------------------------*//**
|
||||
* @brief Function implements the memory allocate function for the NIMU
|
||||
* library.
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
* @param[in] alignment - alignment of allocated memory block in bytes
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
Ptr Osal_nimuMalloc(uint32_t num_bytes, uint32_t alignment);
|
||||
|
||||
|
||||
/*------------ Osal_nimuFree() function ----------------------------------*//**
|
||||
* @brief Function implements the memory free function for the NIMU library.
|
||||
*
|
||||
* This function frees up memory allocated using Osal_nimuMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] dataPtr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_nimuFree(Ptr dataPtr, uint32_t num_bytes);
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ PASS LLD OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*------------ Osal_paBeginMemAccess() function --------------------------*//**
|
||||
* @brief Function is used to indicate that a block of memory is about to be
|
||||
* accessed
|
||||
*
|
||||
* If the memory block is cached then this indicates that the application
|
||||
* would need to ensure that the cache is updated with the data from the actual
|
||||
* memory
|
||||
*
|
||||
* @param[in] addr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_paBeginMemAccess(Ptr addr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_paEndMemAccess() function ----------------------------*//**
|
||||
* @brief Function is used to indicate that the block of memory has finished
|
||||
* being accessed
|
||||
*
|
||||
* If the memory block is cached then the application would need to ensure that
|
||||
* the contents of the cache are updated immediately to the actual memory.
|
||||
*
|
||||
* @param[in] addr - address of memory block
|
||||
* @param[in] size - size of memory block
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_paEndMemAccess(Ptr addr, uint32_t size);
|
||||
|
||||
|
||||
/*------------ Osal_paMtCsEnter() function -------------------------------*//**
|
||||
* @brief Function is used to enter a critical section
|
||||
*
|
||||
* Function protects against access from multiple cores and access from
|
||||
* multiple threads on single core
|
||||
*
|
||||
* @param[out] key - pointer to a variable to receive a handle for unlocking
|
||||
* critical section
|
||||
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_paMtCsEnter(uint32_t *key);
|
||||
|
||||
|
||||
/*------------ Osal_paMtCsExit() function --------------------------------*//**
|
||||
* @brief Function is used to exit a critical section protected using
|
||||
* Osal_paMtCsEnter() API.
|
||||
*
|
||||
* @param[in] key - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_paMtCsExit(uint32_t key);
|
||||
|
||||
/** @}*/
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* __TA66XX_OSAL_H__ */
|
||||
87
ports/c667x/ccs/example_build/include/TASDK_ERR.h
Normal file
87
ports/c667x/ccs/example_build/include/TASDK_ERR.h
Normal file
@@ -0,0 +1,87 @@
|
||||
/******************************************************************************
|
||||
TORNADO AMC modules Software Development Kit (SDK). Rev 4A.
|
||||
(C) MicroLAB Systems, 2015-2017
|
||||
|
||||
|
||||
File: TORNADO AMC SDK functions errors
|
||||
-----
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file TASDK_ERR.h
|
||||
*
|
||||
* @brief SDK functions errors
|
||||
*
|
||||
* This file contains TORNADO AMC SDK functions errors
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __TASDK_ERR_H__ // check for this file has been already included
|
||||
#define __TASDK_ERR_H__ 1
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Returned error codes ===========================================
|
||||
//=============================================================================
|
||||
/** @addtogroup TASDK_ERRORS SDK API functions returned error codes
|
||||
* @{
|
||||
*/
|
||||
#define TASDK_OK 0 /**< No errors */
|
||||
#define TASDK_PARAM_ERR -100 /**< Erroneous function parameter */
|
||||
#define TASDK_INVALID_HW_ERR -101 /**< Invalid H/W error (invalid board, etc.) */
|
||||
#define TASDK_HW_ERR -102 /**< H/W error (error writing to the DSP control registers, etc) */
|
||||
#define TASDK_SYS_CALL_ERR -103 /**< system API call error */
|
||||
#define TASDK_INVALID_DSP_CORE_ERR -104 /**< Only DSP core 0 may call the function */
|
||||
#define TASDK_INVALID_DSP_CORE_BOOT_ADDR_ERR -105 /**< Invalid DSP core boot address */
|
||||
#define TASDK_API_OPEN_ERR -106 /**< API has not been open */
|
||||
#define TASDK_MMC_TO_CPU_COMM_CHECKSUM_ERR -150 /**< Invalid data frame checksum */
|
||||
#define TASDK_MMC_TO_CPU_COMM_DATA_BUF_LEN_ERR -151 /**< Data buffer is not large enough to store received data frame */
|
||||
#define TASDK_MMC_TO_CPU_COMM_INV_CMD_ERR -152 /**< Invalid command */
|
||||
#define TASDK_MMC_TO_CPU_COMM_RECV_DATA_LEN_ERR -153 /**< Invalid received data length */
|
||||
#define TASDK_MMC_TO_CPU_COMM_RECV_DATA_INV_ERR -154 /**< Received data is invalid */
|
||||
#define TASDK_MMC_TO_CPU_COMM_TIMEOUT_ERR -155 /**< MMC-to-DSP communication timeout error */
|
||||
#define TASDK_SFP_NOT_INSTALLED_ERR -156 /**< SFP module is not installed */
|
||||
#define TASDK_FMC_NOT_INSTALLED_ERR -157 /**< FMC module is not installed */
|
||||
#define TASDK_FMC_INFO_INVALID_ERR -158 /**< FMC module info is invalid */
|
||||
#define TASDK_FLASH_INV_DEV_ERR -200 /**< unsupported FLASH device */
|
||||
#define TASDK_FLASH_ERASE_ERR -201 /**< FLASH erase error */
|
||||
#define TASDK_FLASH_WR_ERR -202 /**< FLASH write error */
|
||||
#define TASDK_FLASH_CANNOT_WR_ERR -203 /**< FLASH contents does not allow to write this data */
|
||||
#define TASDK_FLASH_INV_RD_ERR -204 /**< invalid FLASH read data during AUTO-SELECT */
|
||||
#define TASDK_FLASH_INFO_NOT_MATCH_ERR -205 /**< FLASH info from the FLASH chip does not match FLASH_LEN_ID from System Configuration register */
|
||||
#define TASDK_FLASH_SECTOR_WRPROT_ERR -206 /**< FLASH sector is write-protected */
|
||||
#define TASDK_FLASH_WR_BUF_ABORT_ERR -207 /**< FLASH write-to-buffer program is aborted */
|
||||
#define TASDK_FLASH_HW_WP_ERR -208 /**< FLASH writes are disabled by on-board switch */
|
||||
#define TASDK_FLASH_WR_DISABLED_ERR -209 /**< FLASH writes are disabled by application */
|
||||
#define TASDK_FPGA_CNF_BITFILE_HD_FORMAT_ERR -500 /**< invalid FPGA bitfile header format */
|
||||
#define TASDK_FPGA_CNF_LOAD_ERR -501 /**< error during FPGA configuration */
|
||||
#define TASDK_FPGA_CNF_CRC_ERR -502 /**< CRC check failed during FPGA configuration */
|
||||
#define TASDK_FPGA_CNF_LOAD_LEN_ERR -503 /**< not all the data has been loaded */
|
||||
#define TASDK_FPGA_CNF_BITFILE_INV_PART_ERR -504 /**< invalid FPGA bitfile header part name */
|
||||
#define TASDK_FPGA_CNF_INV_IF_ERR -505 /**< invalid FPGA configuration interface selected */
|
||||
#define TASDK_FLASH_RECORD_GLOBAL_HD_NOT_VALID_ERR -600 /**< FLASH record global header is invalid */
|
||||
#define TASDK_FLASH_RECORD_HD_NOT_VALID_ERR -601 /**< FLASH record header is invalid */
|
||||
#define TASDK_FLASH_RECORD_HD_LIST_NOT_VALID_ERR -602 /**< FLASH record header list is invalid */
|
||||
#define TASDK_FLASH_RECORD_FREE_SPACE_ERR -603 /**< not available free space in FLASH */
|
||||
#define TASDK_FLASH_RECORD_CHECKSUM_ERR -604 /**< FLASH record checksum mismatch */
|
||||
#define TASDK_FLASH_RECORD_ALREADY_OPENED_ERR -605 /**< another FLASH record is opened for writing */
|
||||
#define TASDK_FLASH_RECORD_INVALID_LOAD_ADDR_ERR -606 /**< invalid FLASH record load address */
|
||||
#define TASDK_FLASH_RECORD_INV_NUMBER_ERR -607 /**< invalid FLASH record number */
|
||||
#define TASDK_FLASH_BOOT_SEQ_NOT_VALID_ERR -608 /**< FLASH boot sequence is invalid */
|
||||
#define ELF_LOADER_BASE_ERR -1000 /**< ELF file loader base error */
|
||||
#define ELF_LOADER_PARAM_ERR (ELF_LOADER_BASE_ERR) /**< erroneous function parameter */
|
||||
#define ELF_LOADER_INV_ELF_HEADER_ERR (ELF_LOADER_BASE_ERR - 1) /**< invalid ELF header */
|
||||
#define ELF_LOADER_INV_FILE_TYPE_ERR (ELF_LOADER_BASE_ERR - 2) /**< invalid file type (non-executable) */
|
||||
#define ELF_LOADER_INV_ENTRY_POINT_ERR (ELF_LOADER_BASE_ERR - 3) /**< invalid entry-point address */
|
||||
#define ELF_LOADER_INV_SEGMENT_ERR (ELF_LOADER_BASE_ERR - 4) /**< invalid or missing segment data */
|
||||
/** @}*/
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* __TASDK_ERR_H__ */
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?ccsproject version="1.0"?>
|
||||
<projectOptions>
|
||||
<deviceVariant value="TMS320C66XX.TMS320C6678"/>
|
||||
<deviceFamily value="C6000"/>
|
||||
<deviceEndianness value="little"/>
|
||||
<codegenToolVersion value="7.4.20"/>
|
||||
<isElfFormat value="true"/>
|
||||
<connection value="common/targetdb/connections/TIXDS100usb_Connection.xml"/>
|
||||
<rts value="libc.a"/>
|
||||
<templateProperties value="id=com.ti.common.project.core.emptyProjectWithMainTemplate,"/>
|
||||
<isTargetManual value="false"/>
|
||||
<origin value="C:/release/threadx/sample_threadx_c6678evm"/>
|
||||
</projectOptions>
|
||||
167
ports/c667x/ccs/example_build/sample_threadx_c6678evm/.cproject
Normal file
167
ports/c667x/ccs/example_build/sample_threadx_c6678evm/.cproject
Normal file
@@ -0,0 +1,167 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule configRelations="2" moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876" name="Debug" parent="com.ti.ccstudio.buildDefinitions.C6000.Debug">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.DebugToolchain.64304217" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug.2100535781">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1287921372" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C66XX.TMS320C6678"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=sample_threadx.cmd"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
<listOptionValue builtIn="false" value="PRODUCTS="/>
|
||||
<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1725672517" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="8.2.5" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.targetPlatformDebug.981326933" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.builderDebug.1057626667" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.compilerDebug.1787916763" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION.206044182" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION" value="6600" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.1203006280" name="Application binary interface (coffabi not supported) (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.433605690" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH.394813546" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/inc_generic}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/inc_port}"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx}"/>
|
||||
<listOptionValue builtIn="false" value="c:\ti\pdk_C6678_1_1_2_6\packages"/>
|
||||
<listOptionValue builtIn="false" value="../../include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER.2116217573" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING.1237190301" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE.1888360984" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS.97538788" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS.1119499022" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS.1821423071" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS.1864654763" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug.2100535781" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.OUTPUT_FILE.729952471" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.MAP_FILE.1869241467" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.LIBRARY.1427878913" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="tx.lib"/>
|
||||
<listOptionValue builtIn="false" value="C66XX_DSP.lib"/>
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.SEARCH_PATH.141236019" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/Debug}"/>
|
||||
<listOptionValue builtIn="false" value="../../include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.DISPLAY_ERROR_NUMBER.456846460" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.XML_LINK_INFO.1940154938" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD_SRCS.1154505425" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD2_SRCS.1256571074" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__GEN_CMDS.1083871547" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.hex.549224929" name="C6000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.hex"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="sample_threadx_coff.cmd|tx_initialize_low_level_c66xx.c|sample_threadx_eabi.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949" name="Release" parent="com.ti.ccstudio.buildDefinitions.C6000.Release">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.ReleaseToolchain.90306702" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.ReleaseToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease.998313649">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.151553215" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=com.ti.ccstudio.deviceModel.C6000.GenericC674xDevice"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.392978422" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="7.3.4" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.targetPlatformRelease.319204404" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.targetPlatformRelease"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.builderRelease.141715821" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.builderRelease"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.compilerRelease.159632685" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.compilerRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.SILICON_VERSION.303722149" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.SILICON_VERSION" value="6740" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DIAG_WARNING.1765266621" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DISPLAY_ERROR_NUMBER.1773551018" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.INCLUDE_PATH.1723913498" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI.2043470764" name="Application binary interface (coffabi, eabi) [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI.coffabi" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__C_SRCS.384290240" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__CPP_SRCS.1541283167" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM_SRCS.1810509774" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM2_SRCS.1148466239" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease.998313649" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.OUTPUT_FILE.632244326" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.OUTPUT_FILE" useByScannerDiscovery="false" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.MAP_FILE.1445784323" name="Input and output sections listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.DISPLAY_ERROR_NUMBER.1855368593" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.SEARCH_PATH.1845797039" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.SEARCH_PATH" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.LIBRARY.538535709" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value=""libc.a""/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.XML_LINK_INFO.499733938" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD_SRCS.1613219748" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD2_SRCS.1041720846" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__GEN_CMDS.1908930597" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="sample_threadx.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="sample_threadx.com.ti.ccstudio.buildDefinitions.C6000.ProjectType.869979204" name="C6000" projectType="com.ti.ccstudio.buildDefinitions.C6000.ProjectType"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
<storageModule moduleId="scannerConfiguration"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping">
|
||||
<project-mappings>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.asmSource" language="com.ti.ccstudio.core.TIASMLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cHeader" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cSource" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxHeader" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
</project-mappings>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>sample_threadx_c6678evm</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>?name?</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value>-k</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||
<value>${CCS_UTILS_DIR}/bin/gmake</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||
<value>${BuildDirectory}</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.ti.ccstudio.core.ccsNature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<variableList>
|
||||
<variable>
|
||||
<name>ORIGINAL_PROJECT_ROOT</name>
|
||||
<value>file:/C:/release/threadx/sample_threadx_c6678evm</value>
|
||||
</variable>
|
||||
</variableList>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
inEditor=false
|
||||
onBuild=false
|
||||
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker
|
||||
@@ -0,0 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//Debug/makefile=UTF-8
|
||||
encoding//Debug/objects.mk=UTF-8
|
||||
encoding//Debug/sources.mk=UTF-8
|
||||
encoding//Debug/subdir_rules.mk=UTF-8
|
||||
encoding//Debug/subdir_vars.mk=UTF-8
|
||||
@@ -0,0 +1,441 @@
|
||||
/*
|
||||
* board_setup.c
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "board_setup.h"
|
||||
#include "C66XX.h"
|
||||
#include <string.h>
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ General definitions ============================================
|
||||
//=============================================================================
|
||||
// DSP Timer-8 definition
|
||||
#define C66XX_DSP_TIMER C66XX_TIMER_8
|
||||
// DSP Timer-8 output frequency in Hz
|
||||
#define C66XX_DSP_TIMER_FREQ 100
|
||||
/* DSP Timer-8 interrupt event ID */
|
||||
#define C66XX_DSP_TIMER_EVENT_ID 67
|
||||
//=============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Global functions ===============================================
|
||||
//=============================================================================
|
||||
void _tx_nmi_vector(void);
|
||||
void _tx_int4_vector(void);
|
||||
void _tx_int5_vector(void);
|
||||
void _tx_int6_vector(void);
|
||||
void _tx_int7_vector(void);
|
||||
void _tx_int8_vector(void);
|
||||
void _tx_int9_vector(void);
|
||||
void _tx_int10_vector(void);
|
||||
void _tx_int11_vector(void);
|
||||
void _tx_int12_vector(void);
|
||||
void _tx_int13_vector(void);
|
||||
void _tx_int14_vector(void);
|
||||
void _tx_int15_vector(void);
|
||||
//=============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Static functions ===============================================
|
||||
//=============================================================================
|
||||
static int32_t tx_timer_init(C66XX_TIMER timer, uint32_t frequency);
|
||||
static int32_t tx_interrupt_init(void);
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*------------ init_output_timer() function -----------------------------------
|
||||
* DESCRIPTION: Function initializes Timer64 module
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: Error code
|
||||
-----------------------------------------------------------------------------*/
|
||||
static int32_t tx_timer_init(C66XX_TIMER timer, uint32_t frequency)
|
||||
{
|
||||
int32_t r;
|
||||
C66XX_TIMER_CFG_DD cfg_dd;
|
||||
|
||||
// Reset 64-bit timer
|
||||
if ((r = C66XX_TIMER_reset(timer, C66XX_TIMER_HW_CFG_64BIT)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Fill configuration data descriptor
|
||||
memset(&cfg_dd, 0, C66XX_TIMER_CFG_DD_LEN);
|
||||
cfg_dd.timer_mode = C66XX_TIMER_MODE_32BIT_UNCHAINED;
|
||||
cfg_dd.timer_high.clk_src_output_mode = C66XX_TIMER_CLK_OUTPUT_MODE_CLK;
|
||||
// Init DSP Timer64 module
|
||||
if ((r = C66XX_TIMER_init(timer, frequency, &cfg_dd)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Enable timer interrupt
|
||||
if ((r = C66XX_TIMER_enable_interrupts(timer, C66XX_TIMER_HW_CFG_32BIT_HIGH)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Start 32-bit timer high to enable continuously
|
||||
if ((r = C66XX_TIMER_start(timer, C66XX_TIMER_HW_CFG_32BIT_HIGH, C66XX_TIMER_COUNT_MODE_CONTINUOUSLY)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// TIMER module configuration is completed
|
||||
printf("Timer #%u configuration is completed\n", timer);
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_interrupt_init() function -----------------------------------
|
||||
* DESCRIPTION: Function initializes CorePack interrupt module
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: Error code
|
||||
-----------------------------------------------------------------------------*/
|
||||
static int32_t tx_interrupt_init(void)
|
||||
{
|
||||
int32_t r;
|
||||
|
||||
// Set DSP interrupt handlers to the ones defined in tx_initialize_low_level.asm
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_NMI, _tx_nmi_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_4, _tx_int4_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_5, _tx_int5_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_6, _tx_int6_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_7, _tx_int7_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_8, _tx_int8_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_9, _tx_int9_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_10, _tx_int10_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_11, _tx_int11_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_12, _tx_int12_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_13, _tx_int13_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_14, _tx_int14_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_15, _tx_int15_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
/* CorePack interrupt module configuration is completed */
|
||||
printf("INTC configuration is completed\n");
|
||||
// Exit without errors
|
||||
r = C66XX_OK;
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ hardware_setup() function --------------------------------------
|
||||
* DESCRIPTION: Function intializes board hardware
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
int hardware_setup()
|
||||
{
|
||||
platform_init_flags init_flags;
|
||||
platform_init_config init_config;
|
||||
platform_info p_info;
|
||||
int32_t r;
|
||||
|
||||
/*
|
||||
* Initialize all platform peripherals with default values:
|
||||
* PLL, DDR, TCSL, PHY, ECC
|
||||
*/
|
||||
init_flags.pll = 1;
|
||||
init_flags.ddr = 1;
|
||||
init_flags.tcsl = 1;
|
||||
init_flags.phy = 1;
|
||||
init_flags.ecc = 0;
|
||||
memset(&init_config, 0, sizeof(platform_init_config));
|
||||
if ((r = platform_init(&init_flags, &init_config)) != Platform_EOK)
|
||||
goto exit;
|
||||
|
||||
/* Initialize platform UART */
|
||||
if ((r = platform_uart_init()) != Platform_EOK)
|
||||
goto exit;
|
||||
if ((r = platform_uart_set_baudrate(115200)) != Platform_EOK)
|
||||
goto exit;
|
||||
|
||||
/* Get platform info */
|
||||
platform_get_info(&p_info);
|
||||
/* Write data to the UART */
|
||||
platform_write("Platform library version is %s\n", p_info.version);
|
||||
platform_write("Board name is %s\n", p_info.board_name);
|
||||
platform_write("Board serial number is %s\n", p_info.serial_nbr);
|
||||
platform_write("Board revision ID is %u\n", p_info.board_rev);
|
||||
platform_write("CPU name is %s\n", p_info.cpu.name);
|
||||
platform_write("CPU revision ID is %u\n", p_info.cpu.revision_id);
|
||||
platform_write("Number of CPU cores is %u\n", p_info.cpu.core_count);
|
||||
platform_write("CPU frequency is %u MHz\n", p_info.frequency);
|
||||
|
||||
// Init CorePac INTC
|
||||
if ((r = C66XX_INT_init_core()) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Init DSP Timer
|
||||
if ((r = tx_timer_init(C66XX_DSP_TIMER, C66XX_DSP_TIMER_FREQ)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Init DSP interrupt controller
|
||||
if ((r = tx_interrupt_init()) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
printf("Board is initialized\n");
|
||||
/* Exit with no errors */
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_nmi_handler() function --------------------------------------
|
||||
* DESCRIPTION: Function handles NMI interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_nmi_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int4_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT4 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int4_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int5_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT5 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int5_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int6_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT6 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int6_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int7_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT7 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int7_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int8_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT8 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int8_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int9_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT9 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int9_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int10_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT10 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int10_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int11_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT11 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int11_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int12_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT12 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int12_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int13_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT13 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int13_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int14_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT14 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int14_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int15_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT15 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int15_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Platform OSAL functions ========================================
|
||||
//=============================================================================
|
||||
|
||||
/*------------ Osal_platformMalloc() function ----------------------------*//**
|
||||
* @brief Function implements the memory allocate function for the platform
|
||||
* library.
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
* @param[in] alignment - alignment of allocated memory block in bytes
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
uint8_t *Osal_platformMalloc(uint32_t num_bytes, uint32_t alignment)
|
||||
{
|
||||
// Allocate memory from default system heap
|
||||
return (NULL);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ Osal_platformFree() function ------------------------------*//**
|
||||
* @brief Function implements the memory free function for the platform
|
||||
* library.
|
||||
*
|
||||
* This function frees up memory allocated using Osal_platformMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] mem_ptr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformFree(uint8_t *mem_ptr, uint32_t num_bytes)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ Osal_platformSpiCsEnter() function ------------------------*//**
|
||||
* @brief Function is used to enter a critical section
|
||||
*
|
||||
* Function protects against access from multiple cores and access from
|
||||
* multiple threads on single core
|
||||
*
|
||||
* @param[out] key - pointer to a variable to receive a handle for unlocking
|
||||
* critical section
|
||||
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformSpiCsEnter(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ Osal_platformSpiCsExit() function -------------------------*//**
|
||||
* @brief Function is used to exit a critical section protected using
|
||||
* Osal_paMtCsEnter() API.
|
||||
*
|
||||
* @param[in] key - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformSpiCsExit(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
/*
|
||||
* board_setup.h
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BOARD_SETUP_H /* check for this file has been already included */
|
||||
#define BOARD_SETUP_H 1
|
||||
|
||||
|
||||
#include "ti\platform\platform.h"
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/*============ Printf output definitions ====================================*/
|
||||
/*===========================================================================*/
|
||||
#define printf platform_write
|
||||
/*===========================================================================*/
|
||||
|
||||
|
||||
/*------------ hardware_setup() function --------------------------------------
|
||||
* DESCRIPTION: Function intializes board hardware
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
int hardware_setup();
|
||||
|
||||
|
||||
/*------------ tx_nmi_handler() function --------------------------------------
|
||||
* DESCRIPTION: Function handles NMI interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_nmi_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int4_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT4 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int4_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int5_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT5 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int5_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int6_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT6 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int6_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int7_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT7 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int7_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int8_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT8 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int8_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int9_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT9 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int9_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int10_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT10 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int10_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int11_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT11 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int11_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int12_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT12 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int12_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int13_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT13 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int13_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int14_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT14 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int14_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int15_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT15 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int15_handler(void);
|
||||
|
||||
|
||||
/*------------ Osal_platformMalloc() function ----------------------------*//**
|
||||
* @brief Function implements the memory allocate function for the platform
|
||||
* library.
|
||||
*
|
||||
* This function allocates a memory block of a given size specified by input
|
||||
* parameter 'num_bytes'.
|
||||
*
|
||||
* @param[in] num_bytes - number of bytes to be allocated
|
||||
* @param[in] alignment - alignment of allocated memory block in bytes
|
||||
*
|
||||
* @return Allocated block address
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
uint8_t *Osal_platformMalloc(uint32_t num_bytes, uint32_t alignment);
|
||||
|
||||
|
||||
/*------------ Osal_platformFree() function ------------------------------*//**
|
||||
* @brief Function implements the memory free function for the platform
|
||||
* library.
|
||||
*
|
||||
* This function frees up memory allocated using Osal_platformMalloc()
|
||||
* function call.
|
||||
*
|
||||
* @param[in] mem_ptr - pointer to the memory block to be cleaned up
|
||||
* @param[in] num_bytes - size of the memory block to be cleaned up in bytes
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformFree(uint8_t *mem_ptr, uint32_t num_bytes);
|
||||
|
||||
|
||||
/*------------ Osal_platformSpiCsEnter() function ------------------------*//**
|
||||
* @brief Function is used to enter a critical section
|
||||
*
|
||||
* Function protects against access from multiple cores and access from
|
||||
* multiple threads on single core
|
||||
*
|
||||
* @param[out] key - pointer to a variable to receive a handle for unlocking
|
||||
* critical section
|
||||
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformSpiCsEnter(void);
|
||||
|
||||
|
||||
/*------------ Osal_platformSpiCsExit() function -------------------------*//**
|
||||
* @brief Function is used to exit a critical section protected using
|
||||
* Osal_paMtCsEnter() API.
|
||||
*
|
||||
* @param[in] key - handle for unlocking critical section
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
-----------------------------------------------------------------------------*/
|
||||
void Osal_platformSpiCsExit(void);
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
#endif /* BOARD_SETUP_H */
|
||||
|
||||
|
||||
@@ -0,0 +1,528 @@
|
||||
/* This is a small demo of the high-performance ThreadX kernel. It includes examples of eight
|
||||
threads of different priorities, using a message queue, semaphore, mutex, event flags group,
|
||||
byte pool, and block pool. */
|
||||
|
||||
#include "tx_api.h"
|
||||
#include "board_setup.h"
|
||||
|
||||
#define DEMO_STACK_SIZE 1024
|
||||
#define DEMO_BYTE_POOL_SIZE 9120
|
||||
#define DEMO_BLOCK_POOL_SIZE 100
|
||||
#define DEMO_QUEUE_SIZE 100
|
||||
|
||||
|
||||
/* Define TraceX trace oblects */
|
||||
#define TRACE_BUFFER_SIZE (4 * 1024)
|
||||
#define TRACE_OBJECTS_COUNT 20
|
||||
/* Define TraceX trace buffer */
|
||||
UCHAR tx_trace_buffer[TRACE_BUFFER_SIZE];
|
||||
|
||||
|
||||
/* Define the ThreadX object control blocks... */
|
||||
|
||||
TX_THREAD thread_0;
|
||||
TX_THREAD thread_1;
|
||||
TX_THREAD thread_2;
|
||||
TX_THREAD thread_3;
|
||||
TX_THREAD thread_4;
|
||||
TX_THREAD thread_5;
|
||||
TX_THREAD thread_6;
|
||||
TX_THREAD thread_7;
|
||||
TX_QUEUE queue_0;
|
||||
TX_SEMAPHORE semaphore_0;
|
||||
TX_MUTEX mutex_0;
|
||||
TX_EVENT_FLAGS_GROUP event_flags_0;
|
||||
TX_BYTE_POOL byte_pool_0;
|
||||
TX_BLOCK_POOL block_pool_0;
|
||||
|
||||
|
||||
/* Define demo timer */
|
||||
#define DEMO_TIMER_PERIOD 10
|
||||
#define DEMO_TIMER_VALUE 0xaaaaaaaa
|
||||
TX_TIMER timer_0;
|
||||
ULONG timer_0_counter;
|
||||
|
||||
|
||||
/* Define the counters used in the demo application... */
|
||||
|
||||
ULONG thread_0_counter;
|
||||
ULONG thread_1_counter;
|
||||
ULONG thread_1_messages_sent;
|
||||
ULONG thread_2_counter;
|
||||
ULONG thread_2_messages_received;
|
||||
ULONG thread_3_counter;
|
||||
ULONG thread_4_counter;
|
||||
ULONG thread_5_counter;
|
||||
ULONG thread_6_counter;
|
||||
ULONG thread_7_counter;
|
||||
|
||||
|
||||
/* Define thread prototypes. */
|
||||
|
||||
void thread_0_entry(ULONG thread_input);
|
||||
void thread_1_entry(ULONG thread_input);
|
||||
void thread_2_entry(ULONG thread_input);
|
||||
void thread_3_and_4_entry(ULONG thread_input);
|
||||
void thread_5_entry(ULONG thread_input);
|
||||
void thread_6_and_7_entry(ULONG thread_input);
|
||||
void my_stack_error_handler(TX_THREAD *thread_ptr);
|
||||
void my_timer_function(ULONG timer_input);
|
||||
|
||||
|
||||
/* Define main entry point. */
|
||||
|
||||
void main()
|
||||
{
|
||||
/* Setup the hardware. */
|
||||
hardware_setup();
|
||||
|
||||
/* Enter the ThreadX kernel. */
|
||||
tx_kernel_enter();
|
||||
}
|
||||
|
||||
|
||||
/* Define what the initial system looks like. */
|
||||
|
||||
void tx_application_define(void *first_unused_memory)
|
||||
{
|
||||
|
||||
CHAR *pointer = TX_NULL;
|
||||
UINT status;
|
||||
|
||||
/* Enable event tracing using the global <20>trace_buffer<65> memory and supporting
|
||||
a maximum of TRACE_OBJECTS_COUNT ThreadX objects in the registry. */
|
||||
if ((status = tx_trace_enable(tx_trace_buffer, TRACE_BUFFER_SIZE, TRACE_OBJECTS_COUNT)) != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Register thread stack error notification callback */
|
||||
if ((status = tx_thread_stack_error_notify(my_stack_error_handler)) != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create a byte memory pool from which to allocate the thread stacks. */
|
||||
status = tx_byte_pool_create(&byte_pool_0, "byte pool 0", first_unused_memory, DEMO_BYTE_POOL_SIZE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Put system definition stuff in here, e.g. thread creates and other assorted
|
||||
create information. */
|
||||
|
||||
/* Allocate the stack for thread 0. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the main thread. */
|
||||
status = tx_thread_create(&thread_0, "thread 0", thread_0_entry, 0,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 1. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 1 and 2. These threads pass information through a ThreadX
|
||||
message queue. It is also interesting to note that these threads have a time
|
||||
slice. */
|
||||
status = tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
16, 16, 4, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 2. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_2, "thread 2", thread_2_entry, 2,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
16, 16, 4, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 3. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 3 and 4. These threads compete for a ThreadX counting semaphore.
|
||||
An interesting thing here is that both threads share the same instruction area. */
|
||||
status = tx_thread_create(&thread_3, "thread 3", thread_3_and_4_entry, 3,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 4. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_4, "thread 4", thread_3_and_4_entry, 4,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 5. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create thread 5. This thread simply pends on an event flag which will be set
|
||||
by thread_0. */
|
||||
status = tx_thread_create(&thread_5, "thread 5", thread_5_entry, 5,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 6. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 6 and 7. These threads compete for a ThreadX mutex. */
|
||||
status = tx_thread_create(&thread_6, "thread 6", thread_6_and_7_entry, 6,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 7. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_7, "thread 7", thread_6_and_7_entry, 7,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the message queue. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_QUEUE_SIZE*sizeof(ULONG), TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the message queue shared by threads 1 and 2. */
|
||||
status = tx_queue_create(&queue_0, "queue 0", TX_1_ULONG, pointer, DEMO_QUEUE_SIZE*sizeof(ULONG));
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the semaphore used by threads 3 and 4. */
|
||||
status = tx_semaphore_create(&semaphore_0, "semaphore 0", 1);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the event flags group used by threads 1 and 5. */
|
||||
status = tx_event_flags_create(&event_flags_0, "event flags 0");
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the mutex used by thread 6 and 7 without priority inheritance. */
|
||||
status = tx_mutex_create(&mutex_0, "mutex 0", TX_NO_INHERIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the memory for a small block pool. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_BLOCK_POOL_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create a block memory pool to allocate a message buffer from. */
|
||||
status = tx_block_pool_create(&block_pool_0, "block pool 0", sizeof(ULONG), pointer, DEMO_BLOCK_POOL_SIZE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate a block and release the block memory. */
|
||||
status = tx_block_allocate(&block_pool_0, (VOID **) &pointer, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Release the block back to the pool. */
|
||||
status = tx_block_release(pointer);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the periodic timer. */
|
||||
status = tx_timer_create(&timer_0, "timer 0", my_timer_function, (ULONG) DEMO_TIMER_VALUE, DEMO_TIMER_PERIOD, DEMO_TIMER_PERIOD, TX_AUTO_ACTIVATE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Define the test threads. */
|
||||
|
||||
void thread_0_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This thread simply sits in while-forever-sleep loop. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_0_counter++;
|
||||
|
||||
/* Sleep for 10 ticks. */
|
||||
tx_thread_sleep(10);
|
||||
|
||||
/* Set event flag 0 to wakeup thread 5. */
|
||||
status = tx_event_flags_set(&event_flags_0, 0x1, TX_OR);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_1_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This thread simply sends messages to a queue shared by thread 2. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_1_counter++;
|
||||
|
||||
/* Send message to queue 0. */
|
||||
status = tx_queue_send(&queue_0, &thread_1_messages_sent, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check completion status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Increment the message sent. */
|
||||
thread_1_messages_sent++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_2_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
ULONG received_message;
|
||||
UINT status;
|
||||
|
||||
/* This thread retrieves messages placed on the queue by thread 1. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_2_counter++;
|
||||
|
||||
/* Retrieve a message from the queue. */
|
||||
status = tx_queue_receive(&queue_0, &received_message, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check completion status and make sure the message is what we
|
||||
expected. */
|
||||
if ((status != TX_SUCCESS) || (received_message != thread_2_messages_received))
|
||||
break;
|
||||
|
||||
/* Otherwise, all is okay. Increment the received message count. */
|
||||
thread_2_messages_received++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_3_and_4_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This function is executed from thread 3 and thread 4. As the loop
|
||||
below shows, these function compete for ownership of semaphore_0. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
if (thread_input == 3)
|
||||
thread_3_counter++;
|
||||
else
|
||||
thread_4_counter++;
|
||||
|
||||
/* Get the semaphore with suspension. */
|
||||
status = tx_semaphore_get(&semaphore_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Sleep for 2 ticks to hold the semaphore. */
|
||||
tx_thread_sleep(2);
|
||||
|
||||
/* Release the semaphore. */
|
||||
status = tx_semaphore_put(&semaphore_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_5_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
ULONG actual_flags;
|
||||
|
||||
|
||||
/* This thread simply waits for an event in a forever loop. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_5_counter++;
|
||||
|
||||
/* Wait for event flag 0. */
|
||||
status = tx_event_flags_get(&event_flags_0, 0x1, TX_OR_CLEAR,
|
||||
&actual_flags, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if ((status != TX_SUCCESS) || (actual_flags != 0x1))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_6_and_7_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This function is executed from thread 6 and thread 7. As the loop
|
||||
below shows, these function compete for ownership of mutex_0. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
if (thread_input == 6)
|
||||
thread_6_counter++;
|
||||
else
|
||||
thread_7_counter++;
|
||||
|
||||
/* Get the mutex with suspension. */
|
||||
status = tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Get the mutex again with suspension. This shows
|
||||
that an owning thread may retrieve the mutex it
|
||||
owns multiple times. */
|
||||
status = tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Sleep for 2 ticks to hold the mutex. */
|
||||
tx_thread_sleep(2);
|
||||
|
||||
/* Release the mutex. */
|
||||
status = tx_mutex_put(&mutex_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Release the mutex again. This will actually
|
||||
release ownership since it was obtained twice. */
|
||||
status = tx_mutex_put(&mutex_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void my_stack_error_handler(TX_THREAD *thread_ptr)
|
||||
{
|
||||
while(1);
|
||||
}
|
||||
|
||||
|
||||
void my_timer_function(ULONG timer_input)
|
||||
{
|
||||
/* Increment the thread counter. */
|
||||
timer_0_counter++;
|
||||
|
||||
if (timer_input != DEMO_TIMER_VALUE)
|
||||
while(1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
-c
|
||||
-heap 0x400
|
||||
-stack 0x1000
|
||||
-l C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.ae66
|
||||
-l C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.intc.ae66
|
||||
-l c:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\release\ti.platform.evm6678l.ae66
|
||||
|
||||
/* Memory Map */
|
||||
MEMORY
|
||||
{
|
||||
L1PSRAM (RWX) : org = 0x00E00000, len = 0x00008000
|
||||
L1DSRAM (RWX) : org = 0x00F00000, len = 0x00008000
|
||||
CODE_RAM (RWX) : org = 0x00800000, len = 0x00020000
|
||||
DATA_RAM (RWX) : org = 0x00820000, len = 0x00060000
|
||||
MSMCSRAM (RWX) : org = 0x0c000000, len = 0x00400000
|
||||
DDR3 (RWX) : org = 0x80000000, len = 0x80000000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text > CODE_RAM
|
||||
.stack > CODE_RAM
|
||||
.cio > CODE_RAM
|
||||
.const > CODE_RAM
|
||||
.data > CODE_RAM
|
||||
.switch > CODE_RAM
|
||||
.sysmem > CODE_RAM
|
||||
.far > CODE_RAM
|
||||
.args > CODE_RAM
|
||||
.ppinfo > CODE_RAM
|
||||
.ppdata > CODE_RAM
|
||||
.csl_vect > CODE_RAM
|
||||
platform_lib > CODE_RAM
|
||||
|
||||
GROUP
|
||||
{
|
||||
.neardata
|
||||
.rodata
|
||||
.bss
|
||||
} > CODE_RAM
|
||||
|
||||
/* COFF sections */
|
||||
.pinit > CODE_RAM
|
||||
.cinit > CODE_RAM
|
||||
|
||||
/* EABI sections */
|
||||
.binit > CODE_RAM
|
||||
.init_array > CODE_RAM
|
||||
.fardata > CODE_RAM
|
||||
.c6xabi.exidx > CODE_RAM
|
||||
.c6xabi.extab > CODE_RAM
|
||||
|
||||
/* ThreadX section which should be the last RAM section loaded */
|
||||
.zend > DATA_RAM
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<configurations XML_version="1.2" id="configurations_0">
|
||||
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS100v1 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS100v1 USB Debug Probe_0" href="connections/TIXDS100usb_Connection.xml" id="Texas Instruments XDS100v1 USB Debug Probe_0" xml="TIXDS100usb_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS100v1 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds100icepick_d.xml" id="drivers" xml="tixds100icepick_d.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100c66xx.xml" id="drivers" xml="tixds100c66xx.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100cs_dap.xml" id="drivers" xml="tixds100cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100csstm.xml" id="drivers" xml="tixds100csstm.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100etbcs.xml" id="drivers" xml="tixds100etbcs.xml" xmlpath="drivers"/>
|
||||
<platform XML_version="1.2" id="platform_0">
|
||||
<instance XML_version="1.2" desc="TMS320C6678_0" href="devices/C6678.xml" id="TMS320C6678_0" xml="C6678.xml" xmlpath="devices"/>
|
||||
</platform>
|
||||
</connection>
|
||||
</configuration>
|
||||
</configurations>
|
||||
@@ -0,0 +1,9 @@
|
||||
The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based
|
||||
on the device and connection settings specified in your project on the Properties > General page.
|
||||
|
||||
Please note that in automatic target-configuration management, changes to the project's device and/or
|
||||
connection settings will either modify an existing or generate a new target-configuration file. Thus,
|
||||
if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively,
|
||||
you may create your own target-configuration file for this project and manage it manually. You can
|
||||
always switch back to automatic target-configuration management by checking the "Manage the project's
|
||||
target-configuration automatically" checkbox on the project's Properties > General page.
|
||||
@@ -0,0 +1,405 @@
|
||||
;/**************************************************************************/
|
||||
;/* */
|
||||
;/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
||||
;/* */
|
||||
;/* This software is licensed under the Microsoft Software License */
|
||||
;/* Terms for Microsoft Azure RTOS. Full text of the license can be */
|
||||
;/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
|
||||
;/* and in the root directory of this software. */
|
||||
;/* */
|
||||
;/**************************************************************************/
|
||||
;
|
||||
;
|
||||
;/**************************************************************************/
|
||||
;/**************************************************************************/
|
||||
;/** */
|
||||
;/** ThreadX Component */
|
||||
;/** */
|
||||
;/** Initialize */
|
||||
;/** */
|
||||
;/**************************************************************************/
|
||||
;/**************************************************************************/
|
||||
;
|
||||
;
|
||||
;#define TX_SOURCE_CODE
|
||||
;
|
||||
;
|
||||
;/* Include necessary system files. */
|
||||
;
|
||||
;#include "tx_api.h"
|
||||
;#include "tx_initialize.h"
|
||||
;#include "tx_thread.h"
|
||||
;#include "tx_timer.h"
|
||||
;
|
||||
|
||||
SP .set B15
|
||||
ADDRESS_MSK .set 0xFFFFFFF0 ; Ensure 16-byte alignment
|
||||
|
||||
; Use Timer 8 as it's available for all DSP cores at C6678
|
||||
; Timer 8 interrupt high event (TINT8H) ID is 67
|
||||
; Assume DSP core clock 1000 MHz
|
||||
; Timer is clocked at DSP core clock / 6 = 167 MHz
|
||||
; Timer frequency will set to 100 Hz
|
||||
TMR8_INTCTLSTAT_ADDR .set 0x02280044 ; Timer 8 Interrupt Control and Status Register
|
||||
INTCTLSTAT_VAL .set 0x00010000 ; Enable TIMHI interrupt
|
||||
|
||||
EVTCLR2_ADDR .set 0x01800048 ; Event Clear register 2 address
|
||||
EVTCLR2_TMR8_VAL .set 0x00000008 ; Clear event 67 - TINT8H
|
||||
|
||||
EVTMASK2_ADDR .set 0x01800088 ; Event Mask register 2 address
|
||||
EVTMASK2_TMR8_VAL .set 0x00000008 ; Mask event 67 - TINT8H
|
||||
|
||||
INTMUX1_ADDR .set 0x01800104 ; Interrupt Mux Register 1 address
|
||||
INTMUX1_TMR8_VAL .set 0x43 ; Tie in Event 67 (TINT8H) to INT4
|
||||
;
|
||||
;
|
||||
.global _tx_thread_system_stack_ptr
|
||||
.global _tx_initialize_unused_memory
|
||||
.global _tx_thread_context_save
|
||||
.global _tx_thread_context_restore
|
||||
.global _tx_timer_interrupt
|
||||
|
||||
|
||||
; External interrupt handlers - should be defined by user
|
||||
.global tx_nmi_handler
|
||||
.global tx_int5_handler
|
||||
.global tx_int6_handler
|
||||
.global tx_int7_handler
|
||||
.global tx_int8_handler
|
||||
.global tx_int9_handler
|
||||
.global tx_int10_handler
|
||||
.global tx_int11_handler
|
||||
.global tx_int12_handler
|
||||
.global tx_int13_handler
|
||||
.global tx_int14_handler
|
||||
.global tx_int15_handler
|
||||
|
||||
;
|
||||
;
|
||||
;/* Define the first available address in memory, which is typically just the last
|
||||
; RAM section loaded. */
|
||||
.sect ".zend"
|
||||
.space 20
|
||||
.global _tx_first_free_memory
|
||||
.align 16
|
||||
_tx_first_free_memory:
|
||||
.space 4
|
||||
|
||||
; Useful macro definitions
|
||||
; Load 32-bit integer into register
|
||||
MVK_LH .macro val,reg
|
||||
MVKL val,reg
|
||||
MVKH val,reg
|
||||
.endm
|
||||
; Interrupt entry - allocate stack space, save A0-A4 and B3 registers to stack,
|
||||
; build return address in B3 register for context save function and
|
||||
; call context save function
|
||||
TX_INTERRUPT_ENTRY .macro
|
||||
ADDK.S2 -288,SP
|
||||
STW B3,*+SP(96)
|
||||
STW A0,*+SP(20)
|
||||
STW A1,*+SP(24)
|
||||
STW A2,*+SP(28)
|
||||
STW A3,*+SP(32)
|
||||
STW A4,*+SP(36)
|
||||
B _tx_thread_context_save
|
||||
.endm
|
||||
; Interrupt exit - jump to context restore function
|
||||
TX_INTERRUPT_EXIT .macro
|
||||
B _tx_thread_context_restore
|
||||
NOP 5
|
||||
.endm
|
||||
|
||||
|
||||
.sect ".text"
|
||||
;/**************************************************************************/
|
||||
;/* */
|
||||
;/* FUNCTION RELEASE */
|
||||
;/* */
|
||||
;/* _tx_initialize_low_level C667x/TI */
|
||||
;/* 6.0 */
|
||||
;/* AUTHOR */
|
||||
;/* */
|
||||
;/* William E. Lamie, Microsoft Corporation */
|
||||
;/* */
|
||||
;/* DESCRIPTION */
|
||||
;/* */
|
||||
;/* This function is responsible for any low-level processor */
|
||||
;/* initialization, including setting up interrupt vectors, setting */
|
||||
;/* up a periodic timer interrupt source, saving the system stack */
|
||||
;/* pointer for use in ISR processing later, and finding the first */
|
||||
;/* available RAM memory address for tx_application_define. */
|
||||
;/* */
|
||||
;/* INPUT */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* OUTPUT */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* CALLS */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* CALLED BY */
|
||||
;/* */
|
||||
;/* _tx_initialize_kernel_enter ThreadX entry function */
|
||||
;/* */
|
||||
;/* RELEASE HISTORY */
|
||||
;/* */
|
||||
;/* DATE NAME DESCRIPTION */
|
||||
;/* */
|
||||
;/* 05-19-2020 William E. Lamie Initial Version 6.0 */
|
||||
;/* */
|
||||
;/**************************************************************************/
|
||||
;VOID _tx_initialize_low_level(VOID)
|
||||
;{
|
||||
.global _tx_initialize_low_level
|
||||
_tx_initialize_low_level:
|
||||
;
|
||||
; /* Save the system stack pointer. */
|
||||
; _tx_thread_system_stack_ptr = (VOID_PTR) (SP);
|
||||
;
|
||||
MVK_LH _tx_thread_system_stack_ptr,A0 ; Build address of system stack
|
||||
STW SP,*A0 ; Save system stack address
|
||||
;
|
||||
; /* Pickup the first available memory address. */
|
||||
;
|
||||
MVK_LH ADDRESS_MSK,A0 ; Build address mask
|
||||
MVK_LH _tx_first_free_memory,A1 ; Build address of free memory
|
||||
AND A0,A1,A1 ; Ensure alignment
|
||||
;
|
||||
; /* Save the first available memory address. */
|
||||
; _tx_initialize_unused_memory = (VOID_PTR) end;
|
||||
;
|
||||
MVK_LH _tx_initialize_unused_memory,A0 ; Build address of variable
|
||||
STW A1,*A0 ; Save free memory address
|
||||
;
|
||||
; /* Setup Timer 8 HIGH interrupt event */
|
||||
;
|
||||
MVK_LH INTMUX1_ADDR,A0 ; Select event 67 to send through INT4
|
||||
MVK_LH INTMUX1_TMR8_VAL,A1
|
||||
STW A1,*A0
|
||||
|
||||
MVK_LH EVTMASK2_ADDR,A0 ; Build address of Event Mask 2 Register
|
||||
MVK_LH EVTMASK2_TMR8_VAL,A1 ; Build value of Event Mask 2 Register
|
||||
STW A1,*A0
|
||||
;
|
||||
; /* Done, return to caller. */
|
||||
;
|
||||
B B3 ; Return to caller
|
||||
NOP 5 ; Delay slots
|
||||
;}
|
||||
;
|
||||
|
||||
|
||||
.global _tx_nmi_vector
|
||||
.global _tx_nmi_vector_processing
|
||||
_tx_nmi_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_nmi_vector_processing,B3
|
||||
MVKH _tx_nmi_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_nmi_vector_processing:
|
||||
CALLP tx_nmi_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int4_vector
|
||||
_tx_int4_vector:
|
||||
ADDK.S2 -288,SP ; Allocate stack space
|
||||
STW B3,*+SP(96) ; Save B3
|
||||
STW A0,*+SP(20) ; Save A0
|
||||
STW A1,*+SP(24) ; Save A1
|
||||
STW A2,*+SP(28) ; Save A2
|
||||
STW A3,*+SP(32) ; Save A3
|
||||
STW A4,*+SP(36) ; Save A4
|
||||
NOP
|
||||
|
||||
;_tx_timer_interrupt_preamble:
|
||||
|
||||
MVK_LH TMR8_INTCTLSTAT_ADDR,A0 ; Build address of Timer Interrupt Control Register
|
||||
MVK_LH INTCTLSTAT_VAL,A1 ; Build value of Timer Interrupt Control Register
|
||||
STW A1,*A0 ; Clear Timer Interrupts
|
||||
|
||||
; Clear DSP Event flag - DSP events are not self-cleared
|
||||
MVK_LH EVTCLR2_ADDR,A0 ; Build address of Event Clear 2 Register
|
||||
MVK_LH EVTCLR2_TMR8_VAL,A1 ; Build value of Event Clear 2 Register
|
||||
STW A1,*A0 ; Clear Timer Event
|
||||
|
||||
MVK_LH _tx_timer_interrupt,A0
|
||||
B A0 ; Branch ThreadX timer ISR routine
|
||||
NOP 5 ; Delay slots
|
||||
NOP
|
||||
|
||||
|
||||
|
||||
.global _tx_int5_vector
|
||||
.global _tx_int5_vector_processing
|
||||
_tx_int5_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int5_vector_processing,B3
|
||||
MVKH _tx_int5_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int5_vector_processing:
|
||||
CALLP tx_int5_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int6_vector
|
||||
.global _tx_int6_vector_processing
|
||||
_tx_int6_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int6_vector_processing,B3
|
||||
MVKH _tx_int6_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int6_vector_processing:
|
||||
CALLP tx_int6_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int7_vector
|
||||
.global _tx_int7_vector_processing
|
||||
_tx_int7_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int7_vector_processing,B3
|
||||
MVKH _tx_int7_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int7_vector_processing:
|
||||
CALLP tx_int7_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int8_vector
|
||||
.global _tx_int8_vector_processing
|
||||
_tx_int8_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int8_vector_processing,B3
|
||||
MVKH _tx_int8_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int8_vector_processing:
|
||||
CALLP tx_int8_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int9_vector
|
||||
.global _tx_int9_vector_processing
|
||||
_tx_int9_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int9_vector_processing,B3
|
||||
MVKH _tx_int9_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int9_vector_processing:
|
||||
CALLP tx_int9_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int10_vector
|
||||
.global _tx_int10_vector_processing
|
||||
_tx_int10_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int10_vector_processing,B3
|
||||
MVKH _tx_int10_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int10_vector_processing:
|
||||
CALLP tx_int10_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int11_vector
|
||||
.global _tx_int11_vector_processing
|
||||
_tx_int11_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int11_vector_processing,B3
|
||||
MVKH _tx_int11_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int11_vector_processing:
|
||||
CALLP tx_int11_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int12_vector
|
||||
.global _tx_int12_vector_processing
|
||||
_tx_int12_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int12_vector_processing,B3
|
||||
MVKH _tx_int12_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int12_vector_processing:
|
||||
CALLP tx_int12_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int13_vector
|
||||
.global _tx_int13_vector_processing
|
||||
_tx_int13_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int13_vector_processing,B3
|
||||
MVKH _tx_int13_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int13_vector_processing:
|
||||
CALLP tx_int13_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int14_vector
|
||||
.global _tx_int14_vector_processing
|
||||
_tx_int14_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int14_vector_processing,B3
|
||||
MVKH _tx_int14_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int14_vector_processing:
|
||||
CALLP tx_int14_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int15_vector
|
||||
.global _tx_int15_vector_processing
|
||||
_tx_int15_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int15_vector_processing,B3
|
||||
MVKH _tx_int15_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int15_vector_processing:
|
||||
CALLP tx_int15_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?ccsproject version="1.0"?>
|
||||
<projectOptions>
|
||||
<deviceVariant value="TMS320C66XX.TMS320C6678"/>
|
||||
<deviceFamily value="C6000"/>
|
||||
<deviceEndianness value="little"/>
|
||||
<codegenToolVersion value="7.4.20"/>
|
||||
<isElfFormat value="true"/>
|
||||
<connection value="common/targetdb/connections/TIXDS100usb_Connection.xml"/>
|
||||
<rts value="libc.a"/>
|
||||
<templateProperties value="id=com.ti.common.project.core.emptyProjectWithMainTemplate,"/>
|
||||
<isTargetManual value="false"/>
|
||||
<origin value="C:/release/threadx/sample_threadx_ta6678fmc"/>
|
||||
</projectOptions>
|
||||
168
ports/c667x/ccs/example_build/sample_threadx_ta6678fmc/.cproject
Normal file
168
ports/c667x/ccs/example_build/sample_threadx_ta6678fmc/.cproject
Normal file
@@ -0,0 +1,168 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule configRelations="2" moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876" name="Debug" parent="com.ti.ccstudio.buildDefinitions.C6000.Debug">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Debug.846961876." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.DebugToolchain.1016787538" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug.289825208">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1499025916" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C66XX.TMS320C6678"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=sample_threadx.cmd"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
<listOptionValue builtIn="false" value="PRODUCTS="/>
|
||||
<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1870836759" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="8.2.5" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.targetPlatformDebug.1937484540" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.builderDebug.1651217286" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.compilerDebug.31749926" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION.1103021134" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION" value="6600" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.1704586848" name="Application binary interface (coffabi not supported) (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.338790199" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH.1971914009" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/inc_generic}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/inc_port}"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="C:\ti\pdk_C6678_1_1_2_6\packages"/>
|
||||
<listOptionValue builtIn="false" value="../../include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER.1163813604" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING.406812226" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE.179183794" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS.790833726" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS.661437522" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS.70410549" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS.114424515" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug.289825208" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.OUTPUT_FILE.965663998" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.MAP_FILE.64990652" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.LIBRARY.416324183" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="tx.lib"/>
|
||||
<listOptionValue builtIn="false" value="C66XX_DSP.lib"/>
|
||||
<listOptionValue builtIn="false" value="TA66XX_DSP.lib"/>
|
||||
<listOptionValue builtIn="false" value="TA66XX_DSP_BC.lib"/>
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.SEARCH_PATH.76327986" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/tx/Debug}"/>
|
||||
<listOptionValue builtIn="false" value="../../include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.DISPLAY_ERROR_NUMBER.1684196593" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.XML_LINK_INFO.135972852" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD_SRCS.1019082881" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD2_SRCS.1148975579" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__GEN_CMDS.1562873674" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.hex.812200189" name="C6000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.hex"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="sample_threadx_coff.cmd|tx_initialize_low_level_c66xx.c|sample_threadx_eabi.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949" name="Release" parent="com.ti.ccstudio.buildDefinitions.C6000.Release">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Release.2052286949." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.ReleaseToolchain.90306702" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.ReleaseToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease.998313649">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.151553215" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=com.ti.ccstudio.deviceModel.C6000.GenericC674xDevice"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.392978422" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="7.3.4" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.targetPlatformRelease.319204404" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.targetPlatformRelease"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.builderRelease.141715821" keepEnvironmentInBuildfile="false" name="GNU Make" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.builderRelease"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.compilerRelease.159632685" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.compilerRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.SILICON_VERSION.303722149" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.SILICON_VERSION" value="6740" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DIAG_WARNING.1765266621" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DISPLAY_ERROR_NUMBER.1773551018" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.INCLUDE_PATH.1723913498" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI.2043470764" name="Application binary interface (coffabi, eabi) [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_7.3.compilerID.ABI.coffabi" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__C_SRCS.384290240" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__CPP_SRCS.1541283167" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM_SRCS.1810509774" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM2_SRCS.1148466239" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease.998313649" name="C6000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exe.linkerRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.OUTPUT_FILE.632244326" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.OUTPUT_FILE" useByScannerDiscovery="false" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.MAP_FILE.1445784323" name="Input and output sections listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.DISPLAY_ERROR_NUMBER.1855368593" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.SEARCH_PATH.1845797039" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.SEARCH_PATH" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.LIBRARY.538535709" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value=""libc.a""/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.XML_LINK_INFO.499733938" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD_SRCS.1613219748" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD2_SRCS.1041720846" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__GEN_CMDS.1908930597" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C6000_7.3.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="sample_threadx.cmd" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="sample_threadx.com.ti.ccstudio.buildDefinitions.C6000.ProjectType.869979204" name="C6000" projectType="com.ti.ccstudio.buildDefinitions.C6000.ProjectType"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
<storageModule moduleId="scannerConfiguration"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping">
|
||||
<project-mappings>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.asmSource" language="com.ti.ccstudio.core.TIASMLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cHeader" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cSource" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxHeader" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
</project-mappings>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>sample_threadx_ta6678fmc</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>?name?</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value>-k</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||
<value>${CCS_UTILS_DIR}/bin/gmake</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||
<value>${BuildDirectory}</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.ti.ccstudio.core.ccsNature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<variableList>
|
||||
<variable>
|
||||
<name>ORIGINAL_PROJECT_ROOT</name>
|
||||
<value>file:/C:/release/threadx/sample_threadx_ta6678fmc</value>
|
||||
</variable>
|
||||
</variableList>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
inEditor=false
|
||||
onBuild=false
|
||||
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker
|
||||
@@ -0,0 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//Debug/makefile=UTF-8
|
||||
encoding//Debug/objects.mk=UTF-8
|
||||
encoding//Debug/sources.mk=UTF-8
|
||||
encoding//Debug/subdir_rules.mk=UTF-8
|
||||
encoding//Debug/subdir_vars.mk=UTF-8
|
||||
@@ -0,0 +1,329 @@
|
||||
/*
|
||||
* board_setup.c
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "board_setup.h"
|
||||
#include <string.h>
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ General definitions ============================================
|
||||
//=============================================================================
|
||||
// DSP Timer-8 definition
|
||||
#define C66XX_DSP_TIMER C66XX_TIMER_8
|
||||
// DSP Timer-8 output frequency in Hz
|
||||
#define C66XX_DSP_TIMER_FREQ 100
|
||||
/* DSP Timer-8 interrupt event ID */
|
||||
#define C66XX_DSP_TIMER_EVENT_ID 67
|
||||
//=============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Global functions ===============================================
|
||||
//=============================================================================
|
||||
void _tx_nmi_vector(void);
|
||||
void _tx_int4_vector(void);
|
||||
void _tx_int5_vector(void);
|
||||
void _tx_int6_vector(void);
|
||||
void _tx_int7_vector(void);
|
||||
void _tx_int8_vector(void);
|
||||
void _tx_int9_vector(void);
|
||||
void _tx_int10_vector(void);
|
||||
void _tx_int11_vector(void);
|
||||
void _tx_int12_vector(void);
|
||||
void _tx_int13_vector(void);
|
||||
void _tx_int14_vector(void);
|
||||
void _tx_int15_vector(void);
|
||||
//=============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Static functions ===============================================
|
||||
//=============================================================================
|
||||
static int32_t tx_timer_init(C66XX_TIMER timer, uint32_t frequency);
|
||||
static int32_t tx_interrupt_init(void);
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*------------ init_output_timer() function -----------------------------------
|
||||
* DESCRIPTION: Function initializes Timer64 module
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: Error code
|
||||
-----------------------------------------------------------------------------*/
|
||||
static int32_t tx_timer_init(C66XX_TIMER timer, uint32_t frequency)
|
||||
{
|
||||
int32_t r;
|
||||
C66XX_TIMER_CFG_DD cfg_dd;
|
||||
|
||||
// Reset 64-bit timer
|
||||
if ((r = C66XX_TIMER_reset(timer, C66XX_TIMER_HW_CFG_64BIT)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Fill configuration data descriptor
|
||||
memset(&cfg_dd, 0, C66XX_TIMER_CFG_DD_LEN);
|
||||
cfg_dd.timer_mode = C66XX_TIMER_MODE_32BIT_UNCHAINED;
|
||||
cfg_dd.timer_high.clk_src_output_mode = C66XX_TIMER_CLK_OUTPUT_MODE_CLK;
|
||||
// Init DSP Timer64 module
|
||||
if ((r = C66XX_TIMER_init(timer, frequency, &cfg_dd)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Enable timer interrupt
|
||||
if ((r = C66XX_TIMER_enable_interrupts(timer, C66XX_TIMER_HW_CFG_32BIT_HIGH)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// Start 32-bit timer high to enable continuously
|
||||
if ((r = C66XX_TIMER_start(timer, C66XX_TIMER_HW_CFG_32BIT_HIGH, C66XX_TIMER_COUNT_MODE_CONTINUOUSLY)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
// TIMER module configuration is completed
|
||||
printf("Timer #%u configuration is completed\n", timer);
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_interrupt_init() function -----------------------------------
|
||||
* DESCRIPTION: Function initializes CorePack interrupt module
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: Error code
|
||||
-----------------------------------------------------------------------------*/
|
||||
static int32_t tx_interrupt_init(void)
|
||||
{
|
||||
int32_t r;
|
||||
|
||||
// Set DSP interrupt handlers to the ones defined in tx_initialize_low_level.asm
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_NMI, _tx_nmi_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_4, _tx_int4_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_5, _tx_int5_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_6, _tx_int6_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_7, _tx_int7_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_8, _tx_int8_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_9, _tx_int9_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_10, _tx_int10_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_11, _tx_int11_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_12, _tx_int12_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_13, _tx_int13_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_14, _tx_int14_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
if ((r = C66XX_INT_set_core_dsp_interrupt_handler(C66XX_DSP_VECTID_15, _tx_int15_vector)) != C66XX_OK)
|
||||
goto exit;
|
||||
|
||||
/* CorePack interrupt module configuration is completed */
|
||||
printf("INTC configuration is completed\n");
|
||||
// Exit without errors
|
||||
r = TASDK_OK;
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ hardware_setup() function --------------------------------------
|
||||
* DESCRIPTION: Function intializes board hardware
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
int hardware_setup()
|
||||
{
|
||||
int r;
|
||||
|
||||
/* Init DSP */
|
||||
if ((r = TA66XX_BC_init()) != TASDK_OK)
|
||||
goto exit;
|
||||
|
||||
// Initialize UART
|
||||
if ((r = TA66XX_BC_init_uart(C66XX_UART_BAUD_RATE_115200, C66XX_UART_DATA_BITS_8BITS, C66XX_UART_PARITY_NONE, C66XX_UART_STOP_BITS_1BIT)) != TASDK_OK)
|
||||
goto exit;
|
||||
|
||||
// Init DSP Timer
|
||||
if ((r = tx_timer_init(C66XX_DSP_TIMER, C66XX_DSP_TIMER_FREQ)) != TASDK_OK)
|
||||
goto exit;
|
||||
|
||||
// Init DSP interrupt controller
|
||||
if ((r = tx_interrupt_init()) != TASDK_OK)
|
||||
goto exit;
|
||||
|
||||
printf("Board is initialized\n");
|
||||
/* Exit with no errors */
|
||||
|
||||
exit:
|
||||
return (r);
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_nmi_handler() function --------------------------------------
|
||||
* DESCRIPTION: Function handles NMI interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_nmi_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int4_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT4 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int4_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int5_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT5 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int5_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int6_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT6 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int6_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int7_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT7 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int7_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int8_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT8 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int8_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int9_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT9 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int9_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int10_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT10 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int10_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int11_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT11 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int11_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int12_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT12 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int12_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int13_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT13 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int13_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int14_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT14 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int14_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/*------------ tx_int15_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT15 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int15_handler(void)
|
||||
{
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
/*
|
||||
* board_setup.h
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BOARD_SETUP_H // check for this file has been already included
|
||||
#define BOARD_SETUP_H 1
|
||||
|
||||
|
||||
/* Include T-AMC DSP API */
|
||||
#include "TA66XX_DSP_BC.h"
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//============ Printf output definitions ======================================
|
||||
//=============================================================================
|
||||
#define printf TA66XX_BC_uart_printf
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*------------ hardware_setup() function --------------------------------------
|
||||
* DESCRIPTION: Function intializes board hardware
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
int hardware_setup();
|
||||
|
||||
|
||||
/*------------ tx_nmi_handler() function --------------------------------------
|
||||
* DESCRIPTION: Function handles NMI interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_nmi_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int4_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT4 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int4_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int5_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT5 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int5_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int6_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT6 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int6_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int7_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT7 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int7_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int8_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT8 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int8_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int9_handler() function -------------------------------------
|
||||
* DESCRIPTION: Function handles INT9 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int9_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int10_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT10 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int10_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int11_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT11 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int11_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int12_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT12 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int12_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int13_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT13 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int13_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int14_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT14 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int14_handler(void);
|
||||
|
||||
|
||||
/*------------ tx_int15_handler() function ------------------------------------
|
||||
* DESCRIPTION: Function handles INT15 interrupt
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
* RETURNED VALUE: None
|
||||
-----------------------------------------------------------------------------*/
|
||||
void tx_int15_handler(void);
|
||||
|
||||
|
||||
//=============================================================================
|
||||
#endif /* BOARD_SETUP_H */
|
||||
|
||||
|
||||
@@ -0,0 +1,528 @@
|
||||
/* This is a small demo of the high-performance ThreadX kernel. It includes examples of eight
|
||||
threads of different priorities, using a message queue, semaphore, mutex, event flags group,
|
||||
byte pool, and block pool. */
|
||||
|
||||
#include "tx_api.h"
|
||||
#include "board_setup.h"
|
||||
|
||||
#define DEMO_STACK_SIZE 1024
|
||||
#define DEMO_BYTE_POOL_SIZE 9120
|
||||
#define DEMO_BLOCK_POOL_SIZE 100
|
||||
#define DEMO_QUEUE_SIZE 100
|
||||
|
||||
|
||||
/* Define TraceX trace oblects */
|
||||
#define TRACE_BUFFER_SIZE (4 * 1024)
|
||||
#define TRACE_OBJECTS_COUNT 20
|
||||
/* Define TraceX trace buffer */
|
||||
UCHAR tx_trace_buffer[TRACE_BUFFER_SIZE];
|
||||
|
||||
|
||||
/* Define the ThreadX object control blocks... */
|
||||
|
||||
TX_THREAD thread_0;
|
||||
TX_THREAD thread_1;
|
||||
TX_THREAD thread_2;
|
||||
TX_THREAD thread_3;
|
||||
TX_THREAD thread_4;
|
||||
TX_THREAD thread_5;
|
||||
TX_THREAD thread_6;
|
||||
TX_THREAD thread_7;
|
||||
TX_QUEUE queue_0;
|
||||
TX_SEMAPHORE semaphore_0;
|
||||
TX_MUTEX mutex_0;
|
||||
TX_EVENT_FLAGS_GROUP event_flags_0;
|
||||
TX_BYTE_POOL byte_pool_0;
|
||||
TX_BLOCK_POOL block_pool_0;
|
||||
|
||||
|
||||
/* Define demo timer */
|
||||
#define DEMO_TIMER_PERIOD 10
|
||||
#define DEMO_TIMER_VALUE 0xaaaaaaaa
|
||||
TX_TIMER timer_0;
|
||||
ULONG timer_0_counter;
|
||||
|
||||
|
||||
/* Define the counters used in the demo application... */
|
||||
|
||||
ULONG thread_0_counter;
|
||||
ULONG thread_1_counter;
|
||||
ULONG thread_1_messages_sent;
|
||||
ULONG thread_2_counter;
|
||||
ULONG thread_2_messages_received;
|
||||
ULONG thread_3_counter;
|
||||
ULONG thread_4_counter;
|
||||
ULONG thread_5_counter;
|
||||
ULONG thread_6_counter;
|
||||
ULONG thread_7_counter;
|
||||
|
||||
|
||||
/* Define thread prototypes. */
|
||||
|
||||
void thread_0_entry(ULONG thread_input);
|
||||
void thread_1_entry(ULONG thread_input);
|
||||
void thread_2_entry(ULONG thread_input);
|
||||
void thread_3_and_4_entry(ULONG thread_input);
|
||||
void thread_5_entry(ULONG thread_input);
|
||||
void thread_6_and_7_entry(ULONG thread_input);
|
||||
void my_stack_error_handler(TX_THREAD *thread_ptr);
|
||||
void my_timer_function(ULONG timer_input);
|
||||
|
||||
|
||||
/* Define main entry point. */
|
||||
|
||||
void main()
|
||||
{
|
||||
/* Setup the hardware. */
|
||||
hardware_setup();
|
||||
|
||||
/* Enter the ThreadX kernel. */
|
||||
tx_kernel_enter();
|
||||
}
|
||||
|
||||
|
||||
/* Define what the initial system looks like. */
|
||||
|
||||
void tx_application_define(void *first_unused_memory)
|
||||
{
|
||||
|
||||
CHAR *pointer = TX_NULL;
|
||||
UINT status;
|
||||
|
||||
/* Enable event tracing using the global <20>trace_buffer<65> memory and supporting
|
||||
a maximum of TRACE_OBJECTS_COUNT ThreadX objects in the registry. */
|
||||
if ((status = tx_trace_enable(tx_trace_buffer, TRACE_BUFFER_SIZE, TRACE_OBJECTS_COUNT)) != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Register thread stack error notification callback */
|
||||
if ((status = tx_thread_stack_error_notify(my_stack_error_handler)) != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create a byte memory pool from which to allocate the thread stacks. */
|
||||
status = tx_byte_pool_create(&byte_pool_0, "byte pool 0", first_unused_memory, DEMO_BYTE_POOL_SIZE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Put system definition stuff in here, e.g. thread creates and other assorted
|
||||
create information. */
|
||||
|
||||
/* Allocate the stack for thread 0. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the main thread. */
|
||||
status = tx_thread_create(&thread_0, "thread 0", thread_0_entry, 0,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 1. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 1 and 2. These threads pass information through a ThreadX
|
||||
message queue. It is also interesting to note that these threads have a time
|
||||
slice. */
|
||||
status = tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
16, 16, 4, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 2. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_2, "thread 2", thread_2_entry, 2,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
16, 16, 4, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 3. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 3 and 4. These threads compete for a ThreadX counting semaphore.
|
||||
An interesting thing here is that both threads share the same instruction area. */
|
||||
status = tx_thread_create(&thread_3, "thread 3", thread_3_and_4_entry, 3,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 4. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_4, "thread 4", thread_3_and_4_entry, 4,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 5. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create thread 5. This thread simply pends on an event flag which will be set
|
||||
by thread_0. */
|
||||
status = tx_thread_create(&thread_5, "thread 5", thread_5_entry, 5,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 6. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create threads 6 and 7. These threads compete for a ThreadX mutex. */
|
||||
status = tx_thread_create(&thread_6, "thread 6", thread_6_and_7_entry, 6,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the stack for thread 7. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
status = tx_thread_create(&thread_7, "thread 7", thread_6_and_7_entry, 7,
|
||||
pointer, DEMO_STACK_SIZE,
|
||||
8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the message queue. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_QUEUE_SIZE*sizeof(ULONG), TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the message queue shared by threads 1 and 2. */
|
||||
status = tx_queue_create(&queue_0, "queue 0", TX_1_ULONG, pointer, DEMO_QUEUE_SIZE*sizeof(ULONG));
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the semaphore used by threads 3 and 4. */
|
||||
status = tx_semaphore_create(&semaphore_0, "semaphore 0", 1);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the event flags group used by threads 1 and 5. */
|
||||
status = tx_event_flags_create(&event_flags_0, "event flags 0");
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the mutex used by thread 6 and 7 without priority inheritance. */
|
||||
status = tx_mutex_create(&mutex_0, "mutex 0", TX_NO_INHERIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate the memory for a small block pool. */
|
||||
status = tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_BLOCK_POOL_SIZE, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create a block memory pool to allocate a message buffer from. */
|
||||
status = tx_block_pool_create(&block_pool_0, "block pool 0", sizeof(ULONG), pointer, DEMO_BLOCK_POOL_SIZE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Allocate a block and release the block memory. */
|
||||
status = tx_block_allocate(&block_pool_0, (VOID **) &pointer, TX_NO_WAIT);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Release the block back to the pool. */
|
||||
status = tx_block_release(pointer);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/* Create the periodic timer. */
|
||||
status = tx_timer_create(&timer_0, "timer 0", my_timer_function, (ULONG) DEMO_TIMER_VALUE, DEMO_TIMER_PERIOD, DEMO_TIMER_PERIOD, TX_AUTO_ACTIVATE);
|
||||
if (status != TX_SUCCESS)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Define the test threads. */
|
||||
|
||||
void thread_0_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This thread simply sits in while-forever-sleep loop. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_0_counter++;
|
||||
|
||||
/* Sleep for 10 ticks. */
|
||||
tx_thread_sleep(10);
|
||||
|
||||
/* Set event flag 0 to wakeup thread 5. */
|
||||
status = tx_event_flags_set(&event_flags_0, 0x1, TX_OR);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_1_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This thread simply sends messages to a queue shared by thread 2. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_1_counter++;
|
||||
|
||||
/* Send message to queue 0. */
|
||||
status = tx_queue_send(&queue_0, &thread_1_messages_sent, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check completion status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Increment the message sent. */
|
||||
thread_1_messages_sent++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_2_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
ULONG received_message;
|
||||
UINT status;
|
||||
|
||||
/* This thread retrieves messages placed on the queue by thread 1. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_2_counter++;
|
||||
|
||||
/* Retrieve a message from the queue. */
|
||||
status = tx_queue_receive(&queue_0, &received_message, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check completion status and make sure the message is what we
|
||||
expected. */
|
||||
if ((status != TX_SUCCESS) || (received_message != thread_2_messages_received))
|
||||
break;
|
||||
|
||||
/* Otherwise, all is okay. Increment the received message count. */
|
||||
thread_2_messages_received++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_3_and_4_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This function is executed from thread 3 and thread 4. As the loop
|
||||
below shows, these function compete for ownership of semaphore_0. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
if (thread_input == 3)
|
||||
thread_3_counter++;
|
||||
else
|
||||
thread_4_counter++;
|
||||
|
||||
/* Get the semaphore with suspension. */
|
||||
status = tx_semaphore_get(&semaphore_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Sleep for 2 ticks to hold the semaphore. */
|
||||
tx_thread_sleep(2);
|
||||
|
||||
/* Release the semaphore. */
|
||||
status = tx_semaphore_put(&semaphore_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_5_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
ULONG actual_flags;
|
||||
|
||||
|
||||
/* This thread simply waits for an event in a forever loop. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
thread_5_counter++;
|
||||
|
||||
/* Wait for event flag 0. */
|
||||
status = tx_event_flags_get(&event_flags_0, 0x1, TX_OR_CLEAR,
|
||||
&actual_flags, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if ((status != TX_SUCCESS) || (actual_flags != 0x1))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void thread_6_and_7_entry(ULONG thread_input)
|
||||
{
|
||||
|
||||
UINT status;
|
||||
|
||||
|
||||
/* This function is executed from thread 6 and thread 7. As the loop
|
||||
below shows, these function compete for ownership of mutex_0. */
|
||||
while(1)
|
||||
{
|
||||
|
||||
/* Increment the thread counter. */
|
||||
if (thread_input == 6)
|
||||
thread_6_counter++;
|
||||
else
|
||||
thread_7_counter++;
|
||||
|
||||
/* Get the mutex with suspension. */
|
||||
status = tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Get the mutex again with suspension. This shows
|
||||
that an owning thread may retrieve the mutex it
|
||||
owns multiple times. */
|
||||
status = tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Sleep for 2 ticks to hold the mutex. */
|
||||
tx_thread_sleep(2);
|
||||
|
||||
/* Release the mutex. */
|
||||
status = tx_mutex_put(&mutex_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
|
||||
/* Release the mutex again. This will actually
|
||||
release ownership since it was obtained twice. */
|
||||
status = tx_mutex_put(&mutex_0);
|
||||
|
||||
/* Check status. */
|
||||
if (status != TX_SUCCESS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void my_stack_error_handler(TX_THREAD *thread_ptr)
|
||||
{
|
||||
while(1);
|
||||
}
|
||||
|
||||
|
||||
void my_timer_function(ULONG timer_input)
|
||||
{
|
||||
/* Increment the thread counter. */
|
||||
timer_0_counter++;
|
||||
|
||||
if (timer_input != DEMO_TIMER_VALUE)
|
||||
while(1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
-c
|
||||
-heap 0x400
|
||||
-stack 0x1000
|
||||
-l C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.ae66
|
||||
-l C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.intc.ae66
|
||||
|
||||
/* Memory Map */
|
||||
MEMORY
|
||||
{
|
||||
L1PSRAM (RWX) : org = 0x00E00000, len = 0x00008000
|
||||
L1DSRAM (RWX) : org = 0x00F00000, len = 0x00008000
|
||||
CODE_RAM (RWX) : org = 0x00800000, len = 0x00020000
|
||||
DATA_RAM (RWX) : org = 0x00820000, len = 0x00060000
|
||||
MSMCSRAM (RWX) : org = 0x0c000000, len = 0x00400000
|
||||
DDR3 (RWX) : org = 0x80000000, len = 0x80000000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text > CODE_RAM
|
||||
.stack > CODE_RAM
|
||||
.cio > CODE_RAM
|
||||
.const > CODE_RAM
|
||||
.data > CODE_RAM
|
||||
.switch > CODE_RAM
|
||||
.sysmem > CODE_RAM
|
||||
.far > CODE_RAM
|
||||
.args > CODE_RAM
|
||||
.ppinfo > CODE_RAM
|
||||
.ppdata > CODE_RAM
|
||||
.csl_vect > CODE_RAM
|
||||
|
||||
GROUP
|
||||
{
|
||||
.neardata
|
||||
.rodata
|
||||
.bss
|
||||
} > CODE_RAM
|
||||
|
||||
/* COFF sections */
|
||||
.pinit > CODE_RAM
|
||||
.cinit > CODE_RAM
|
||||
|
||||
/* EABI sections */
|
||||
.binit > CODE_RAM
|
||||
.init_array > CODE_RAM
|
||||
.fardata > CODE_RAM
|
||||
.c6xabi.exidx > CODE_RAM
|
||||
.c6xabi.extab > CODE_RAM
|
||||
|
||||
/* ThreadX section which should be the last RAM section loaded */
|
||||
.zend > DATA_RAM
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<configurations XML_version="1.2" id="configurations_0">
|
||||
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS100v1 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS100v1 USB Debug Probe_0" href="connections/TIXDS100usb_Connection.xml" id="Texas Instruments XDS100v1 USB Debug Probe_0" xml="TIXDS100usb_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS100v1 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds100icepick_d.xml" id="drivers" xml="tixds100icepick_d.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100c66xx.xml" id="drivers" xml="tixds100c66xx.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100cs_dap.xml" id="drivers" xml="tixds100cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100csstm.xml" id="drivers" xml="tixds100csstm.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100etbcs.xml" id="drivers" xml="tixds100etbcs.xml" xmlpath="drivers"/>
|
||||
<platform XML_version="1.2" id="platform_0">
|
||||
<instance XML_version="1.2" desc="TMS320C6678_0" href="devices/C6678.xml" id="TMS320C6678_0" xml="C6678.xml" xmlpath="devices"/>
|
||||
</platform>
|
||||
</connection>
|
||||
</configuration>
|
||||
</configurations>
|
||||
@@ -0,0 +1,9 @@
|
||||
The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based
|
||||
on the device and connection settings specified in your project on the Properties > General page.
|
||||
|
||||
Please note that in automatic target-configuration management, changes to the project's device and/or
|
||||
connection settings will either modify an existing or generate a new target-configuration file. Thus,
|
||||
if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively,
|
||||
you may create your own target-configuration file for this project and manage it manually. You can
|
||||
always switch back to automatic target-configuration management by checking the "Manage the project's
|
||||
target-configuration automatically" checkbox on the project's Properties > General page.
|
||||
@@ -0,0 +1,406 @@
|
||||
;/**************************************************************************/
|
||||
;/* */
|
||||
;/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
||||
;/* */
|
||||
;/* This software is licensed under the Microsoft Software License */
|
||||
;/* Terms for Microsoft Azure RTOS. Full text of the license can be */
|
||||
;/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
|
||||
;/* and in the root directory of this software. */
|
||||
;/* */
|
||||
;/**************************************************************************/
|
||||
;
|
||||
;
|
||||
;/**************************************************************************/
|
||||
;/**************************************************************************/
|
||||
;/** */
|
||||
;/** ThreadX Component */
|
||||
;/** */
|
||||
;/** Initialize */
|
||||
;/** */
|
||||
;/**************************************************************************/
|
||||
;/**************************************************************************/
|
||||
;
|
||||
;
|
||||
;#define TX_SOURCE_CODE
|
||||
;
|
||||
;
|
||||
;/* Include necessary system files. */
|
||||
;
|
||||
;#include "tx_api.h"
|
||||
;#include "tx_initialize.h"
|
||||
;#include "tx_thread.h"
|
||||
;#include "tx_timer.h"
|
||||
;
|
||||
|
||||
SP .set B15
|
||||
ADDRESS_MSK .set 0xFFFFFFF0 ; Ensure 16-byte alignment
|
||||
|
||||
; Use Timer 8 as it's available for all DSP cores at C6678
|
||||
; Timer 8 interrupt high event (TINT8H) ID is 67
|
||||
; Assume DSP core clock 1250 MHz
|
||||
; Timer is clocked at DSP core clock / 6 = 208 MHz
|
||||
; Timer frequency will set to 100 Hz
|
||||
TMR8_INTCTLSTAT_ADDR .set 0x02280044 ; Timer 8 Interrupt Control and Status Register
|
||||
INTCTLSTAT_VAL .set 0x00010000 ; Enable TIMHI interrupt
|
||||
|
||||
EVTCLR2_ADDR .set 0x01800048 ; Event Clear register 2 address
|
||||
EVTCLR2_TMR8_VAL .set 0x00000008 ; Clear event 67 - TINT8H
|
||||
|
||||
EVTMASK2_ADDR .set 0x01800088 ; Event Mask register 2 address
|
||||
EVTMASK2_TMR8_VAL .set 0x00000008 ; Mask event 67 - TINT8H
|
||||
|
||||
INTMUX1_ADDR .set 0x01800104 ; Interrupt Mux Register 1 address
|
||||
INTMUX1_TMR8_VAL .set 0x43 ; Tie in Event 67 (TINT8H) to INT4
|
||||
;
|
||||
;
|
||||
.global _tx_thread_system_stack_ptr
|
||||
.global _tx_initialize_unused_memory
|
||||
.global _tx_thread_context_save
|
||||
.global _tx_thread_context_restore
|
||||
.global _tx_timer_interrupt
|
||||
|
||||
|
||||
; External interrupt handlers - should be defined by user
|
||||
.global tx_nmi_handler
|
||||
.global tx_int5_handler
|
||||
.global tx_int6_handler
|
||||
.global tx_int7_handler
|
||||
.global tx_int8_handler
|
||||
.global tx_int9_handler
|
||||
.global tx_int10_handler
|
||||
.global tx_int11_handler
|
||||
.global tx_int12_handler
|
||||
.global tx_int13_handler
|
||||
.global tx_int14_handler
|
||||
.global tx_int15_handler
|
||||
|
||||
;
|
||||
;
|
||||
;/* Define the first available address in memory, which is typically just the last
|
||||
; RAM section loaded. */
|
||||
.sect ".zend"
|
||||
.space 20
|
||||
.global _tx_first_free_memory
|
||||
.align 16
|
||||
_tx_first_free_memory:
|
||||
.space 4
|
||||
|
||||
; Useful macro definitions
|
||||
; Load 32-bit integer into register
|
||||
MVK_LH .macro val,reg
|
||||
MVKL val,reg
|
||||
MVKH val,reg
|
||||
.endm
|
||||
; Interrupt entry - allocate stack space, save A0-A4 and B3 registers to stack,
|
||||
; build return address in B3 register for context save function and
|
||||
; call context save function
|
||||
TX_INTERRUPT_ENTRY .macro
|
||||
ADDK.S2 -288,SP
|
||||
STW B3,*+SP(96)
|
||||
STW A0,*+SP(20)
|
||||
STW A1,*+SP(24)
|
||||
STW A2,*+SP(28)
|
||||
STW A3,*+SP(32)
|
||||
STW A4,*+SP(36)
|
||||
B _tx_thread_context_save
|
||||
.endm
|
||||
; Interrupt exit - jump to context restore function
|
||||
TX_INTERRUPT_EXIT .macro
|
||||
B _tx_thread_context_restore
|
||||
NOP 5
|
||||
.endm
|
||||
|
||||
|
||||
.sect ".text"
|
||||
;/**************************************************************************/
|
||||
;/* */
|
||||
;/* FUNCTION RELEASE */
|
||||
;/* */
|
||||
;/* _tx_initialize_low_level C667x+/TI */
|
||||
;/* 6.0 */
|
||||
;/* AUTHOR */
|
||||
;/* */
|
||||
;/* William E. Lamie, Microsoft Corporation */
|
||||
;/* */
|
||||
;/* DESCRIPTION */
|
||||
;/* */
|
||||
;/* This function is responsible for any low-level processor */
|
||||
;/* initialization, including setting up interrupt vectors, setting */
|
||||
;/* up a periodic timer interrupt source, saving the system stack */
|
||||
;/* pointer for use in ISR processing later, and finding the first */
|
||||
;/* available RAM memory address for tx_application_define. */
|
||||
;/* */
|
||||
;/* INPUT */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* OUTPUT */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* CALLS */
|
||||
;/* */
|
||||
;/* None */
|
||||
;/* */
|
||||
;/* CALLED BY */
|
||||
;/* */
|
||||
;/* _tx_initialize_kernel_enter ThreadX entry function */
|
||||
;/* */
|
||||
;/* RELEASE HISTORY */
|
||||
;/* */
|
||||
;/* DATE NAME DESCRIPTION */
|
||||
;/* */
|
||||
;/* 05-19-2020 William E. Lamie Initial Version 6.0 */
|
||||
;/* */
|
||||
;/**************************************************************************/
|
||||
;VOID _tx_initialize_low_level(VOID)
|
||||
;{
|
||||
.global _tx_initialize_low_level
|
||||
_tx_initialize_low_level:
|
||||
;
|
||||
; /* Save the system stack pointer. */
|
||||
; _tx_thread_system_stack_ptr = (VOID_PTR) (SP);
|
||||
;
|
||||
MVK_LH _tx_thread_system_stack_ptr,A0 ; Build address of system stack
|
||||
STW SP,*A0 ; Save system stack address
|
||||
;
|
||||
; /* Pickup the first available memory address. */
|
||||
;
|
||||
MVK_LH ADDRESS_MSK,A0 ; Build address mask
|
||||
MVK_LH _tx_first_free_memory,A1 ; Build address of free memory
|
||||
AND A0,A1,A1 ; Ensure alignment
|
||||
;
|
||||
; /* Save the first available memory address. */
|
||||
; _tx_initialize_unused_memory = (VOID_PTR) end;
|
||||
;
|
||||
MVK_LH _tx_initialize_unused_memory,A0 ; Build address of variable
|
||||
STW A1,*A0 ; Save free memory address
|
||||
;
|
||||
; /* Setup Timer 8 HIGH interrupt event */
|
||||
;
|
||||
MVK_LH INTMUX1_ADDR,A0 ; Select event 67 to send through INT4
|
||||
MVK_LH INTMUX1_TMR8_VAL,A1
|
||||
STW A1,*A0
|
||||
|
||||
MVK_LH EVTMASK2_ADDR,A0 ; Build address of Event Mask 2 Register
|
||||
MVK_LH EVTMASK2_TMR8_VAL,A1 ; Build value of Event Mask 2 Register
|
||||
STW A1,*A0
|
||||
;
|
||||
; /* Done, return to caller. */
|
||||
;
|
||||
B B3 ; Return to caller
|
||||
NOP 5 ; Delay slots
|
||||
;}
|
||||
;
|
||||
|
||||
|
||||
.global _tx_nmi_vector
|
||||
.global _tx_nmi_vector_processing
|
||||
_tx_nmi_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_nmi_vector_processing,B3
|
||||
MVKH _tx_nmi_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_nmi_vector_processing:
|
||||
CALLP tx_nmi_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int4_vector
|
||||
_tx_int4_vector:
|
||||
ADDK.S2 -288,SP ; Allocate stack space
|
||||
STW B3,*+SP(96) ; Save B3
|
||||
STW A0,*+SP(20) ; Save A0
|
||||
STW A1,*+SP(24) ; Save A1
|
||||
STW A2,*+SP(28) ; Save A2
|
||||
STW A3,*+SP(32) ; Save A3
|
||||
STW A4,*+SP(36) ; Save A4
|
||||
NOP
|
||||
|
||||
;_tx_timer_interrupt_preamble:
|
||||
|
||||
MVK_LH TMR8_INTCTLSTAT_ADDR,A0 ; Build address of Timer Interrupt Control Register
|
||||
MVK_LH INTCTLSTAT_VAL,A1 ; Build value of Timer Interrupt Control Register
|
||||
STW A1,*A0 ; Clear Timer Interrupts
|
||||
|
||||
; Clear DSP Event flag - DSP events are not self-cleared
|
||||
MVK_LH EVTCLR2_ADDR,A0 ; Build address of Event Clear 2 Register
|
||||
MVK_LH EVTCLR2_TMR8_VAL,A1 ; Build value of Event Clear 2 Register
|
||||
STW A1,*A0 ; Clear Timer Event
|
||||
|
||||
|
||||
MVK_LH _tx_timer_interrupt,A0
|
||||
B A0 ; Branch ThreadX timer ISR routine
|
||||
NOP 5 ; Delay slots
|
||||
NOP
|
||||
|
||||
|
||||
|
||||
.global _tx_int5_vector
|
||||
.global _tx_int5_vector_processing
|
||||
_tx_int5_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int5_vector_processing,B3
|
||||
MVKH _tx_int5_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int5_vector_processing:
|
||||
CALLP tx_int5_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int6_vector
|
||||
.global _tx_int6_vector_processing
|
||||
_tx_int6_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int6_vector_processing,B3
|
||||
MVKH _tx_int6_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int6_vector_processing:
|
||||
CALLP tx_int6_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int7_vector
|
||||
.global _tx_int7_vector_processing
|
||||
_tx_int7_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int7_vector_processing,B3
|
||||
MVKH _tx_int7_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int7_vector_processing:
|
||||
CALLP tx_int7_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int8_vector
|
||||
.global _tx_int8_vector_processing
|
||||
_tx_int8_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int8_vector_processing,B3
|
||||
MVKH _tx_int8_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int8_vector_processing:
|
||||
CALLP tx_int8_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int9_vector
|
||||
.global _tx_int9_vector_processing
|
||||
_tx_int9_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int9_vector_processing,B3
|
||||
MVKH _tx_int9_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int9_vector_processing:
|
||||
CALLP tx_int9_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int10_vector
|
||||
.global _tx_int10_vector_processing
|
||||
_tx_int10_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int10_vector_processing,B3
|
||||
MVKH _tx_int10_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int10_vector_processing:
|
||||
CALLP tx_int10_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int11_vector
|
||||
.global _tx_int11_vector_processing
|
||||
_tx_int11_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int11_vector_processing,B3
|
||||
MVKH _tx_int11_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int11_vector_processing:
|
||||
CALLP tx_int11_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int12_vector
|
||||
.global _tx_int12_vector_processing
|
||||
_tx_int12_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int12_vector_processing,B3
|
||||
MVKH _tx_int12_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int12_vector_processing:
|
||||
CALLP tx_int12_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int13_vector
|
||||
.global _tx_int13_vector_processing
|
||||
_tx_int13_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int13_vector_processing,B3
|
||||
MVKH _tx_int13_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int13_vector_processing:
|
||||
CALLP tx_int13_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int14_vector
|
||||
.global _tx_int14_vector_processing
|
||||
_tx_int14_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int14_vector_processing,B3
|
||||
MVKH _tx_int14_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int14_vector_processing:
|
||||
CALLP tx_int14_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
.global _tx_int15_vector
|
||||
.global _tx_int15_vector_processing
|
||||
_tx_int15_vector:
|
||||
TX_INTERRUPT_ENTRY
|
||||
;
|
||||
; /* Application specific processing goes here! */
|
||||
;
|
||||
MVKL _tx_int15_vector_processing,B3
|
||||
MVKH _tx_int15_vector_processing,B3
|
||||
NOP 3
|
||||
_tx_int15_vector_processing:
|
||||
CALLP tx_int15_handler,B3 ; CALLP instruction should be used here to call handler and save return address to B3
|
||||
TX_INTERRUPT_EXIT
|
||||
|
||||
|
||||
12
ports/c667x/ccs/example_build/tx/.ccsproject
Normal file
12
ports/c667x/ccs/example_build/tx/.ccsproject
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?ccsproject version="1.0"?>
|
||||
<projectOptions>
|
||||
<deviceVariant value="com.ti.ccstudio.deviceModel.C6000.GenericC62xxDevice"/>
|
||||
<deviceFamily value="C6000"/>
|
||||
<deviceEndianness value="little"/>
|
||||
<codegenToolVersion value="7.3.4"/>
|
||||
<isElfFormat value="false"/>
|
||||
<connection value=""/>
|
||||
<templateProperties value="id=com.ti.common.project.core.emptyProjectTemplate,"/>
|
||||
<isTargetManual value="false"/>
|
||||
</projectOptions>
|
||||
126
ports/c667x/ccs/example_build/tx/.cproject
Normal file
126
ports/c667x/ccs/example_build/tx/.cproject
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule configRelations="2" moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="lib" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006" name="Debug" parent="com.ti.ccstudio.buildDefinitions.C6000.Debug">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_8.2.libraryDebugToolchain.1327787266" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.libraryDebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianDebug.1999522240">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.595213316" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C66XX.TMS320C6678"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=staticLibrary"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1102326510" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="8.2.5" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.targetPlatformDebug.1885281669" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.builderDebug.1552990214" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.compilerDebug.537602571" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION.504082056" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION" value="6600" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.1773772732" name="Application binary interface (coffabi not supported) (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.702613718" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH.1880977296" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/inc_generic}"/>
|
||||
<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/inc_port}"/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE.1699221181" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="TX_ENABLE_EVENT_TRACE"/>
|
||||
<listOptionValue builtIn="false" value="TX_ENABLE_STACK_CHECKING"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER.2004467600" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING.2039373439" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS.1047893315" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS.1584200101" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS.1222315488" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS.1917028109" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianDebug.1999522240" name="C6000 Archiver" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.archiverID.OUTPUT_FILE.180454448" name="Output file" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.archiverID.OUTPUT_FILE" value="${ProjName}.lib" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="com.ti.ccstudio.buildDefinitions.C6000.Release.758214915">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.C6000.Release.758214915" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="lib" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C6000.Release.758214915" name="Release" parent="com.ti.ccstudio.buildDefinitions.C6000.Release">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.C6000.Release.758214915." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.ReleaseToolchain.1136091576" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.ReleaseToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianRelease.1477572467">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2111880104" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C66XX.TMS320C6678"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=staticLibrary"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1971817502" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="8.2.5" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.targetPlatformRelease.1939700034" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.targetPlatformRelease"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.builderRelease.567122587" name="GNU Make.Release" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="true" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.builderRelease"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.compilerRelease.1419235652" name="C6000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.compilerRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION.1154568986" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.SILICON_VERSION" value="6600" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.1566621045" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH.894819299" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER.1459970438" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING.1863284507" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS.853854688" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS.544305463" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS.1665595500" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS.219132884" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianRelease.1477572467" name="C6000 Archiver" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.library.librarianRelease">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.C6000_8.2.archiverID.OUTPUT_FILE.256691019" superClass="com.ti.ccstudio.buildDefinitions.C6000_8.2.archiverID.OUTPUT_FILE" value="${ProjName}.lib" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="tx.com.ti.ccstudio.buildDefinitions.C6000.ProjectType.1433968872" name="C6000" projectType="com.ti.ccstudio.buildDefinitions.C6000.ProjectType"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping">
|
||||
<project-mappings>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.asmSource" language="com.ti.ccstudio.core.TIASMLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cHeader" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cSource" language="com.ti.ccstudio.core.TIGCCLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxHeader" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
</project-mappings>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
105
ports/c667x/ccs/example_build/tx/.project
Normal file
105
ports/c667x/ccs/example_build/tx/.project
Normal file
@@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>tx</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>?name?</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value>-k</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||
<value>${CCS_UTILS_DIR}/bin/gmake</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||
<value>${BuildDirectory}</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.ti.ccstudio.core.ccsNature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>inc_generic</name>
|
||||
<type>2</type>
|
||||
<locationURI>$%7BPARENT-5-PROJECT_LOC%7D/common/inc</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>inc_port</name>
|
||||
<type>2</type>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/inc</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src_generic</name>
|
||||
<type>2</type>
|
||||
<locationURI>$%7BPARENT-5-PROJECT_LOC%7D/common/src</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src_port</name>
|
||||
<type>2</type>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/src</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
inEditor=false
|
||||
onBuild=false
|
||||
@@ -0,0 +1,5 @@
|
||||
eclipse.preferences.version=1
|
||||
environment/project/com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006/append=true
|
||||
environment/project/com.ti.ccstudio.buildDefinitions.C6000.Debug.832256006/appendContributed=true
|
||||
environment/project/com.ti.ccstudio.buildDefinitions.C6000.Release.758214915/append=true
|
||||
environment/project/com.ti.ccstudio.buildDefinitions.C6000.Release.758214915/appendContributed=true
|
||||
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker
|
||||
@@ -0,0 +1,6 @@
|
||||
#Fri Aug 03 15:02:35 PDT 2012
|
||||
com.ti.ccstudio.buildDefinitions.C6000.Debug.2070078368/internalBuilder/enabled=false
|
||||
com.ti.ccstudio.buildDefinitions.C6000.Debug.2070078368/internalBuilder/ignoreErr=true
|
||||
com.ti.ccstudio.buildDefinitions.C6000.Release.664540310/internalBuilder/enabled=false
|
||||
com.ti.ccstudio.buildDefinitions.C6000.Release.664540310/internalBuilder/ignoreErr=true
|
||||
eclipse.preferences.version=1
|
||||
@@ -0,0 +1,15 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//Debug/makefile=UTF-8
|
||||
encoding//Debug/objects.mk=UTF-8
|
||||
encoding//Debug/sources.mk=UTF-8
|
||||
encoding//Debug/src_generic/subdir_rules.mk=UTF-8
|
||||
encoding//Debug/src_generic/subdir_vars.mk=UTF-8
|
||||
encoding//Debug/src_port/subdir_rules.mk=UTF-8
|
||||
encoding//Debug/src_port/subdir_vars.mk=UTF-8
|
||||
encoding//Debug/subdir_rules.mk=UTF-8
|
||||
encoding//Debug/subdir_vars.mk=UTF-8
|
||||
encoding//Release/makefile=UTF-8
|
||||
encoding//Release/objects.mk=UTF-8
|
||||
encoding//Release/sources.mk=UTF-8
|
||||
encoding//Release/subdir_rules.mk=UTF-8
|
||||
encoding//Release/subdir_vars.mk=UTF-8
|
||||
1
ports/c667x/ccs/example_build/tx/Release/ccsObjs.opt
Normal file
1
ports/c667x/ccs/example_build/tx/Release/ccsObjs.opt
Normal file
File diff suppressed because one or more lines are too long
8
ports/c667x/ccs/example_build/tx/Release/objects.mk
Normal file
8
ports/c667x/ccs/example_build/tx/Release/objects.mk
Normal file
@@ -0,0 +1,8 @@
|
||||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
USER_OBJS :=
|
||||
|
||||
LIBS :=
|
||||
|
||||
110
ports/c667x/ccs/example_build/tx/Release/sources.mk
Normal file
110
ports/c667x/ccs/example_build/tx/Release/sources.mk
Normal file
@@ -0,0 +1,110 @@
|
||||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
C55_SRCS :=
|
||||
A_SRCS :=
|
||||
ASM_UPPER_SRCS :=
|
||||
LDS_UPPER_SRCS :=
|
||||
CPP_SRCS :=
|
||||
CMD_SRCS :=
|
||||
O_SRCS :=
|
||||
C??_SRCS :=
|
||||
C64_SRCS :=
|
||||
C67_SRCS :=
|
||||
SA_SRCS :=
|
||||
S64_SRCS :=
|
||||
OPT_SRCS :=
|
||||
CXX_SRCS :=
|
||||
S67_SRCS :=
|
||||
S??_SRCS :=
|
||||
PDE_SRCS :=
|
||||
SV7A_SRCS :=
|
||||
K_SRCS :=
|
||||
CLA_SRCS :=
|
||||
S55_SRCS :=
|
||||
LD_UPPER_SRCS :=
|
||||
INO_SRCS :=
|
||||
LIB_SRCS :=
|
||||
ASM_SRCS :=
|
||||
S_UPPER_SRCS :=
|
||||
S43_SRCS :=
|
||||
LD_SRCS :=
|
||||
CMD_UPPER_SRCS :=
|
||||
C_UPPER_SRCS :=
|
||||
C++_SRCS :=
|
||||
C43_SRCS :=
|
||||
OBJ_SRCS :=
|
||||
LDS_SRCS :=
|
||||
S_SRCS :=
|
||||
CC_SRCS :=
|
||||
S62_SRCS :=
|
||||
C62_SRCS :=
|
||||
C_SRCS :=
|
||||
C55_DEPS :=
|
||||
C_UPPER_DEPS :=
|
||||
S67_DEPS :=
|
||||
S62_DEPS :=
|
||||
S_DEPS :=
|
||||
OPT_DEPS :=
|
||||
C??_DEPS :=
|
||||
ASM_UPPER_DEPS :=
|
||||
S??_DEPS :=
|
||||
C64_DEPS :=
|
||||
CXX_DEPS :=
|
||||
S64_DEPS :=
|
||||
INO_DEPS :=
|
||||
CLA_DEPS :=
|
||||
S55_DEPS :=
|
||||
SV7A_DEPS :=
|
||||
C62_DEPS :=
|
||||
C67_DEPS :=
|
||||
PDE_DEPS :=
|
||||
K_DEPS :=
|
||||
C_DEPS :=
|
||||
LIB_OUTPUTS :=
|
||||
CC_DEPS :=
|
||||
C++_DEPS :=
|
||||
C43_DEPS :=
|
||||
S43_DEPS :=
|
||||
OBJS :=
|
||||
ASM_DEPS :=
|
||||
S_UPPER_DEPS :=
|
||||
CPP_DEPS :=
|
||||
SA_DEPS :=
|
||||
C++_DEPS__QUOTED :=
|
||||
OPT_DEPS__QUOTED :=
|
||||
S_UPPER_DEPS__QUOTED :=
|
||||
SA_DEPS__QUOTED :=
|
||||
C??_DEPS__QUOTED :=
|
||||
S67_DEPS__QUOTED :=
|
||||
C55_DEPS__QUOTED :=
|
||||
CC_DEPS__QUOTED :=
|
||||
ASM_UPPER_DEPS__QUOTED :=
|
||||
SV7A_DEPS__QUOTED :=
|
||||
S??_DEPS__QUOTED :=
|
||||
OBJS__QUOTED :=
|
||||
C67_DEPS__QUOTED :=
|
||||
LIB_OUTPUTS__QUOTED :=
|
||||
K_DEPS__QUOTED :=
|
||||
S55_DEPS__QUOTED :=
|
||||
INO_DEPS__QUOTED :=
|
||||
C62_DEPS__QUOTED :=
|
||||
C_DEPS__QUOTED :=
|
||||
C_UPPER_DEPS__QUOTED :=
|
||||
C43_DEPS__QUOTED :=
|
||||
CPP_DEPS__QUOTED :=
|
||||
C64_DEPS__QUOTED :=
|
||||
CXX_DEPS__QUOTED :=
|
||||
CLA_DEPS__QUOTED :=
|
||||
S_DEPS__QUOTED :=
|
||||
ASM_DEPS__QUOTED :=
|
||||
S43_DEPS__QUOTED :=
|
||||
S64_DEPS__QUOTED :=
|
||||
S62_DEPS__QUOTED :=
|
||||
PDE_DEPS__QUOTED :=
|
||||
|
||||
# Every subdirectory with source files must be described here
|
||||
SUBDIRS := \
|
||||
. \
|
||||
|
||||
22
ports/c667x/ccs/example_build/tx/Release/subdir_rules.mk
Normal file
22
ports/c667x/ccs/example_build/tx/Release/subdir_rules.mk
Normal file
@@ -0,0 +1,22 @@
|
||||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
SHELL = cmd.exe
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
%.obj: ../%.c $(GEN_OPTS) | $(GEN_FILES)
|
||||
@echo 'Building file: "$<"'
|
||||
@echo 'Invoking: C6000 Compiler'
|
||||
"C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4/bin/cl6x" -mv6600 --abi=eabi -O2 --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4/include" --display_error_number --diag_warning=225 --preproc_with_compile --preproc_dependency="$(basename $(<F)).d_raw" $(GEN_OPTS__FLAG) "$<"
|
||||
@echo 'Finished building: "$<"'
|
||||
@echo ' '
|
||||
|
||||
%.obj: ../%.asm $(GEN_OPTS) | $(GEN_FILES)
|
||||
@echo 'Building file: "$<"'
|
||||
@echo 'Invoking: C6000 Compiler'
|
||||
"C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4/bin/cl6x" -mv6600 --abi=eabi -O2 --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4/include" --display_error_number --diag_warning=225 --preproc_with_compile --preproc_dependency="$(basename $(<F)).d_raw" $(GEN_OPTS__FLAG) "$<"
|
||||
@echo 'Finished building: "$<"'
|
||||
@echo ' '
|
||||
|
||||
|
||||
1174
ports/c667x/ccs/example_build/tx/Release/subdir_vars.mk
Normal file
1174
ports/c667x/ccs/example_build/tx/Release/subdir_vars.mk
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user