Browse Source

[bsp][c28x] add support to not disable global interrupt in context-switch to enable zero-latency isr for critical interrupts.

Yunjie Gu 2 years ago
parent
commit
8fa9fde43a

+ 22 - 2
bsp/ti/c28x/libraries/tms320f28379d/common/source/F2837xD_usDelay.asm

@@ -71,12 +71,21 @@
 ;// $
 ;// $
 ;//###########################################################################
 ;//###########################################################################
 
 
-       .def _F28x_usDelay
-
        .cdecls LIST ;;Used to populate __TI_COMPILER_VERSION__ macro
        .cdecls LIST ;;Used to populate __TI_COMPILER_VERSION__ macro
        %{
        %{
+           #ifdef __TI_EABI__
+           #define __EABI__ 1
+           #else
+           #define __EABI__ 0
+           #endif
        %}
        %}
 
 
+       .if __EABI__
+       .def F28x_usDelay
+       .else
+       .def _F28x_usDelay
+       .endif
+
        .if __TI_COMPILER_VERSION__
        .if __TI_COMPILER_VERSION__
        .if __TI_COMPILER_VERSION__ >= 15009000
        .if __TI_COMPILER_VERSION__ >= 15009000
        .sect ".TI.ramfunc"      ;;Used with compiler v15.9.0 and newer
        .sect ".TI.ramfunc"      ;;Used with compiler v15.9.0 and newer
@@ -86,9 +95,20 @@
        .endif
        .endif
 
 
         .global  __F28x_usDelay
         .global  __F28x_usDelay
+
+       .if __EABI__
+F28x_usDelay:
+       .else
 _F28x_usDelay:
 _F28x_usDelay:
+       .endif
+
         SUB    ACC,#1
         SUB    ACC,#1
+       .if __EABI__
+        BF     F28x_usDelay,GEQ    ;; Loop if ACC >= 0
+       .else
         BF     _F28x_usDelay,GEQ    ;; Loop if ACC >= 0
         BF     _F28x_usDelay,GEQ    ;; Loop if ACC >= 0
+       .endif
+
         LRETR
         LRETR
 
 
 ;There is a 9/10 cycle overhead and each loop
 ;There is a 9/10 cycle overhead and each loop

+ 32 - 281
bsp/ti/c28x/tms320f28379d/.config

@@ -17,8 +17,7 @@ CONFIG_RT_THREAD_PRIORITY_8=y
 CONFIG_RT_THREAD_PRIORITY_MAX=8
 CONFIG_RT_THREAD_PRIORITY_MAX=8
 CONFIG_RT_TICK_PER_SECOND=100
 CONFIG_RT_TICK_PER_SECOND=100
 # CONFIG_RT_USING_OVERFLOW_CHECK is not set
 # CONFIG_RT_USING_OVERFLOW_CHECK is not set
-CONFIG_RT_USING_HOOK=y
-CONFIG_RT_HOOK_USING_FUNC_PTR=y
+# CONFIG_RT_USING_HOOK is not set
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=1024
 CONFIG_IDLE_THREAD_STACK_SIZE=1024
@@ -209,19 +208,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 #
 #
 # IoT - internet of things
 # IoT - internet of things
 #
 #
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
 # CONFIG_PKG_USING_WEBCLIENT is not set
 # CONFIG_PKG_USING_WEBCLIENT is not set
 # CONFIG_PKG_USING_WEBNET is not set
 # CONFIG_PKG_USING_WEBNET is not set
 # CONFIG_PKG_USING_MONGOOSE is not set
 # CONFIG_PKG_USING_MONGOOSE is not set
 # CONFIG_PKG_USING_MYMQTT is not set
 # CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
 # CONFIG_PKG_USING_WEBTERMINAL is not set
 # CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_LIBMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
 # CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
 # CONFIG_PKG_USING_NANOPB is not set
 
 
 #
 #
@@ -241,12 +240,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
 # CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
 # CONFIG_PKG_USING_PPP_DEVICE is not set
 # CONFIG_PKG_USING_PPP_DEVICE is not set
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_WIZNET is not set
 # CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
 
 
 #
 #
 # IoT Cloud
 # IoT Cloud
@@ -255,14 +252,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_GAGENT_CLOUD is not set
 # CONFIG_PKG_USING_GAGENT_CLOUD is not set
 # CONFIG_PKG_USING_ALI_IOTKIT is not set
 # CONFIG_PKG_USING_ALI_IOTKIT is not set
 # CONFIG_PKG_USING_AZURE is not set
 # CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
 # CONFIG_PKG_USING_IPMSG is not set
 # CONFIG_PKG_USING_IPMSG is not set
 # CONFIG_PKG_USING_LSSDP is not set
 # CONFIG_PKG_USING_LSSDP is not set
@@ -270,110 +263,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_LIBRWS is not set
 # CONFIG_PKG_USING_LIBRWS is not set
 # CONFIG_PKG_USING_TCPSERVER is not set
 # CONFIG_PKG_USING_TCPSERVER is not set
 # CONFIG_PKG_USING_PROTOBUF_C is not set
 # CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
 # CONFIG_PKG_USING_DLT645 is not set
 # CONFIG_PKG_USING_DLT645 is not set
 # CONFIG_PKG_USING_QXWZ is not set
 # CONFIG_PKG_USING_QXWZ is not set
 # CONFIG_PKG_USING_SMTP_CLIENT is not set
 # CONFIG_PKG_USING_SMTP_CLIENT is not set
 # CONFIG_PKG_USING_ABUP_FOTA is not set
 # CONFIG_PKG_USING_ABUP_FOTA is not set
 # CONFIG_PKG_USING_LIBCURL2RTT is not set
 # CONFIG_PKG_USING_LIBCURL2RTT is not set
 # CONFIG_PKG_USING_CAPNP is not set
 # CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
 
 
 #
 #
 # security packages
 # security packages
 #
 #
 # CONFIG_PKG_USING_MBEDTLS is not set
 # CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
 
 
 #
 #
 # language packages
 # language packages
 #
 #
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
 
 
 #
 #
 # multimedia packages
 # multimedia packages
 #
 #
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_OPENMV is not set
 # CONFIG_PKG_USING_OPENMV is not set
 # CONFIG_PKG_USING_MUPDF is not set
 # CONFIG_PKG_USING_MUPDF is not set
 # CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_TJPGD is not set
 # CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
 
 
 #
 #
 # tools packages
 # tools packages
@@ -382,115 +305,36 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_EASYFLASH is not set
 # CONFIG_PKG_USING_EASYFLASH is not set
 # CONFIG_PKG_USING_EASYLOGGER is not set
 # CONFIG_PKG_USING_EASYLOGGER is not set
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
 # CONFIG_PKG_USING_RDB is not set
 # CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
 # CONFIG_PKG_USING_ADBD is not set
 # CONFIG_PKG_USING_ADBD is not set
 # CONFIG_PKG_USING_COREMARK is not set
 # CONFIG_PKG_USING_COREMARK is not set
 # CONFIG_PKG_USING_DHRYSTONE is not set
 # CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
 # CONFIG_PKG_USING_NR_MICRO_SHELL is not set
 # CONFIG_PKG_USING_NR_MICRO_SHELL is not set
 # CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
 # CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
 # CONFIG_PKG_USING_LUNAR_CALENDAR is not set
 # CONFIG_PKG_USING_LUNAR_CALENDAR is not set
 # CONFIG_PKG_USING_BS8116A is not set
 # CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 
 
 #
 #
 # system packages
 # system packages
 #
 #
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
 # CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_THREAD_POOL is not set
 # CONFIG_PKG_USING_THREAD_POOL is not set
 # CONFIG_PKG_USING_ROBOTS is not set
 # CONFIG_PKG_USING_ROBOTS is not set
 # CONFIG_PKG_USING_EV is not set
 # CONFIG_PKG_USING_EV is not set
 # CONFIG_PKG_USING_SYSWATCH is not set
 # CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
 
 
 #
 #
 # peripheral libraries and drivers
 # peripheral libraries and drivers
@@ -499,29 +343,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
 # CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_RTT_ESP_IDF is not set
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
 # CONFIG_PKG_USING_SX12XX is not set
 # CONFIG_PKG_USING_SIGNAL_LED is not set
 # CONFIG_PKG_USING_SIGNAL_LED is not set
 # CONFIG_PKG_USING_LEDBLINK is not set
 # CONFIG_PKG_USING_LEDBLINK is not set
 # CONFIG_PKG_USING_LITTLED is not set
 # CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -535,126 +369,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_RPLIDAR is not set
 # CONFIG_PKG_USING_RPLIDAR is not set
 # CONFIG_PKG_USING_AS608 is not set
 # CONFIG_PKG_USING_AS608 is not set
 # CONFIG_PKG_USING_RC522 is not set
 # CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
 # CONFIG_PKG_USING_EMBARC_BSP is not set
 # CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
 
 
 #
 #
 # miscellaneous packages
 # miscellaneous packages
 #
 #
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
 # CONFIG_PKG_USING_ZLIB is not set
 # CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
 # CONFIG_PKG_USING_DSTR is not set
 # CONFIG_PKG_USING_DSTR is not set
 # CONFIG_PKG_USING_TINYFRAME is not set
 # CONFIG_PKG_USING_TINYFRAME is not set
 # CONFIG_PKG_USING_KENDRYTE_DEMO is not set
 # CONFIG_PKG_USING_KENDRYTE_DEMO is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_UPACKER is not set
 # CONFIG_PKG_USING_UPACKER is not set
 # CONFIG_PKG_USING_UPARAM is not set
 # CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
 # CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
 
 
 #
 #
 # Hardware Drivers Config
 # Hardware Drivers Config

+ 84 - 84
bsp/ti/c28x/tms320f28379d/.cproject

@@ -15,31 +15,31 @@
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
 				<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.778586462" name="FLASH" parent="com.ti.ccstudio.buildDefinitions.C2000.Debug">
 				<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.778586462" name="FLASH" parent="com.ti.ccstudio.buildDefinitions.C2000.Debug">
 					<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.778586462." name="/" resourcePath="">
 					<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.778586462." name="/" resourcePath="">
-						<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain.2044377796" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.1259067527">
-							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.907629852" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
+						<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain.849704194" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.142319676">
+							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1542708035" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
 								<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C28XX.TMS320F28379D"/>
 								<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C28XX.TMS320F28379D"/>
-								<listOptionValue builtIn="false" value="DEVICE_CORE_ID="/>
 								<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
 								<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
-								<listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>
-								<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=2837x_RAM_lnk_cpu1.cmd"/>
+								<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
+								<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=2837x_FLASH_lnk_cpu1.cmd"/>
 								<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
 								<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
 								<listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>
 								<listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>
 								<listOptionValue builtIn="false" value="PRODUCTS="/>
 								<listOptionValue builtIn="false" value="PRODUCTS="/>
 								<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
 								<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
 								<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
 								<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
+								<listOptionValue builtIn="false" value="DEVICE_CORE_ID="/>
 							</option>
 							</option>
-							<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1552953057" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="20.2.5.LTS" valueType="string"/>
-							<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug.2050944283" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug"/>
-							<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug.1111748461" name="GNU Make.FLASH" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug"/>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug.1700912152" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug">
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL.1042201530" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY.448196689" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.1231731663" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.28" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.1065615623" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.softlib" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.469331775" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.cla1" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.1234731689" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.vcu2" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.193422151" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.tmu0" valueType="enumerated"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH.2126563574" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH" valueType="includePath">
+							<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1744465090" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="20.2.7.LTS" valueType="string"/>
+							<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug.1574916446" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug"/>
+							<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug.1313415835" name="GNU Make.FLASH" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug"/>
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug.87472552" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL.1431503331" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY.1740013292" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.2145022217" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.28" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.1197706648" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.softlib" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.1791235101" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.cla1" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.979262857" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.vcu2" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.929439957" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.tmu0" valueType="enumerated"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH.341376928" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH" valueType="includePath">
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../../../../components/finsh"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../../../../components/finsh"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../../../../components/drivers/include"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../../../../components/drivers/include"/>
@@ -52,47 +52,47 @@
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../libraries/HAL_Drivers/config"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../libraries/HAL_Drivers/config"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE.1010893294" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE.1502427633" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE" valueType="definedSymbols">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE.1377491695" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE.1651489263" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="CPU1"/>
 									<listOptionValue builtIn="false" value="CPU1"/>
 									<listOptionValue builtIn="false" value="_FLASH"/>
 									<listOptionValue builtIn="false" value="_FLASH"/>
 									<listOptionValue builtIn="false" value="_LAUNCHXL_F28379D"/>
 									<listOptionValue builtIn="false" value="_LAUNCHXL_F28379D"/>
 									<listOptionValue builtIn="false" value="RT_USING_LIBC"/>
 									<listOptionValue builtIn="false" value="RT_USING_LIBC"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.1872798069" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING.857737305" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING" valueType="stringList">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.1749585847" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING.917153758" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING" valueType="stringList">
 									<listOptionValue builtIn="false" value="225"/>
 									<listOptionValue builtIn="false" value="225"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.1299904459" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER.1711157967" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.558396365" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.coffabi" valueType="enumerated"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS.1112595076" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS.159997053" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS.1088320457" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS.859912541" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.367188262" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER.496956990" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.1527896698" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.eabi" valueType="enumerated"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS.2136632562" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS.673572586" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS.1466157815" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS.42100818" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS"/>
 							</tool>
 							</tool>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.1259067527" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug">
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE.1680037485" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE" value="0x100" valueType="string"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE.1336908518" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE" value="${ProjName}.map" valueType="string"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE.138792315" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY.1616369464" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY" valueType="libs">
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.142319676" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE.2028265325" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE" value="0x100" valueType="string"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE.1191073315" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE" value="${ProjName}.map" valueType="string"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE.868787653" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY.1575259848" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY" valueType="libs">
 									<listOptionValue builtIn="false" value="libc.a"/>
 									<listOptionValue builtIn="false" value="libc.a"/>
 								</option>
 								</option>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH.1205925932" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH" valueType="libPaths">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH.1128623802" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH" valueType="libPaths">
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.945425329" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER.773669389" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO.1871311927" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO" value="${ProjName}_linkInfo.xml" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS.247879329" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS" valueType="stringList">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.1756500091" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER.1842868969" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO.1570517177" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO" value="${ProjName}_linkInfo.xml" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS.2002945717" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS" valueType="stringList">
 									<listOptionValue builtIn="false" value=""/>
 									<listOptionValue builtIn="false" value=""/>
 								</option>
 								</option>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS.323866969" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS.1688694601" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS.1900797066" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS.1246470232" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS.681608377" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS.932961869" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS"/>
 							</tool>
 							</tool>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex.1911695373" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex"/>
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex.1883144197" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex"/>
 						</toolChain>
 						</toolChain>
 					</folderInfo>
 					</folderInfo>
 					<sourceEntries>
 					<sourceEntries>
@@ -116,31 +116,31 @@
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
 				<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.1625729396" name="RAM" parent="com.ti.ccstudio.buildDefinitions.C2000.Debug">
 				<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.1625729396" name="RAM" parent="com.ti.ccstudio.buildDefinitions.C2000.Debug">
 					<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.1625729396." name="/" resourcePath="">
 					<folderInfo id="com.ti.ccstudio.buildDefinitions.C2000.Debug.1821767246.1625729396." name="/" resourcePath="">
-						<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain.1894579497" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.723836870">
-							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.28035281" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
+						<toolChain id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain.422374197" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.141707934">
+							<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2012120824" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
 								<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C28XX.TMS320F28379D"/>
 								<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=TMS320C28XX.TMS320F28379D"/>
-								<listOptionValue builtIn="false" value="DEVICE_CORE_ID="/>
 								<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
 								<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
-								<listOptionValue builtIn="false" value="OUTPUT_FORMAT=COFF"/>
+								<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
 								<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=2837x_RAM_lnk_cpu1.cmd"/>
 								<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=2837x_RAM_lnk_cpu1.cmd"/>
 								<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
 								<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
 								<listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>
 								<listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>
 								<listOptionValue builtIn="false" value="PRODUCTS="/>
 								<listOptionValue builtIn="false" value="PRODUCTS="/>
 								<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
 								<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
 								<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
 								<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
+								<listOptionValue builtIn="false" value="DEVICE_CORE_ID="/>
 							</option>
 							</option>
-							<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.2064551334" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="20.2.5.LTS" valueType="string"/>
-							<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug.824785581" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug"/>
-							<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug.1472806917" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug"/>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug.304346228" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug">
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL.1535045148" name="Option deprecated, set by default (--large_memory_model, -ml)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY.906261740" name="Unified memory (--unified_memory, -mt)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.601611777" name="Processor version (--silicon_version, -v)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.28" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.813293878" name="Specify floating point support (--float_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.softlib" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.804303600" name="Specify CLA support (--cla_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.cla1" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.1139839682" name="Specify VCU support (--vcu_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.vcu2" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.2050172951" name="Specify TMU support (--tmu_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.tmu0" valueType="enumerated"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH.1843203671" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH" valueType="includePath">
+							<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.2005906842" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="20.2.7.LTS" valueType="string"/>
+							<targetPlatform id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug.862563039" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.targetPlatformDebug"/>
+							<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug.1939252005" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.builderDebug"/>
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug.1912415751" name="C2000 Compiler" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.compilerDebug">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL.450636362" name="Option deprecated, set by default (--large_memory_model, -ml)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.LARGE_MEMORY_MODEL" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY.1784592818" name="Unified memory (--unified_memory, -mt)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.UNIFIED_MEMORY" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.67929190" name="Processor version (--silicon_version, -v)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.SILICON_VERSION.28" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.1591138550" name="Specify floating point support (--float_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.FLOAT_SUPPORT.softlib" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.952602232" name="Specify CLA support (--cla_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.CLA_SUPPORT.cla1" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.1047595603" name="Specify VCU support (--vcu_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.VCU_SUPPORT.vcu2" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.886419495" name="Specify TMU support (--tmu_support)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.TMU_SUPPORT.tmu0" valueType="enumerated"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH.52599811" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.INCLUDE_PATH" valueType="includePath">
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}/../libraries/HAL_Drivers"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}/../libraries/HAL_Drivers"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}/board"/>
 									<listOptionValue builtIn="false" value="${PROJECT_ROOT}/board"/>
@@ -154,48 +154,48 @@
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../libraries/HAL_Drivers"/>
 									<listOptionValue builtIn="false" value="${PROJECT_LOC}/../libraries/HAL_Drivers"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE.1493387349" name="Provide advice on optimization techniques (--advice:performance)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE.919278576" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE" valueType="definedSymbols">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE.1352786766" name="Provide advice on optimization techniques (--advice:performance)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE.1541262003" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEFINE" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="CPU1"/>
 									<listOptionValue builtIn="false" value="CPU1"/>
 									<listOptionValue builtIn="false" value="_RAM"/>
 									<listOptionValue builtIn="false" value="_RAM"/>
 									<listOptionValue builtIn="false" value="_LAUNCHXL_F28379D"/>
 									<listOptionValue builtIn="false" value="_LAUNCHXL_F28379D"/>
 									<listOptionValue builtIn="false" value="RT_USING_LIBC"/>
 									<listOptionValue builtIn="false" value="RT_USING_LIBC"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.693081276" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING.786362056" name="Treat diagnostic &lt;id&gt; as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING" valueType="stringList">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.1423191744" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING.1840608528" name="Treat diagnostic &lt;id&gt; as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WARNING" valueType="stringList">
 									<listOptionValue builtIn="false" value="225"/>
 									<listOptionValue builtIn="false" value="225"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.1556568762" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER.1577631276" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.2027726774" name="Application binary interface [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.coffabi" valueType="enumerated"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS.981846727" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS.1629306683" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS.842081719" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS.766905856" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.1852455040" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER.2066495142" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.692692220" name="Application binary interface [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.compilerID.ABI.eabi" valueType="enumerated"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS.1477923054" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__C_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS.1871147166" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__CPP_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS.1514279895" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS.1020974336" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.compiler.inputType__ASM2_SRCS"/>
 							</tool>
 							</tool>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.723836870" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug">
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE.1596712579" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE" value="0x100" valueType="string"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE.845861019" name="Link information (map) listed into &lt;file&gt; (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE" value="${ProjName}.map" valueType="string"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE.1541688694" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.HEAP_SIZE.1545484419" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.HEAP_SIZE" value="0x100" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY.213017876" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY" valueType="libs">
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug.141707934" name="C2000 Linker" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exe.linkerDebug">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE.782328928" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.STACK_SIZE" value="0x100" valueType="string"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE.1413595505" name="Link information (map) listed into &lt;file&gt; (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.MAP_FILE" value="${ProjName}.map" valueType="string"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE.307045250" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.HEAP_SIZE.1213465714" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.HEAP_SIZE" value="0x100" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY.168172028" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.LIBRARY" valueType="libs">
 									<listOptionValue builtIn="false" value="libc.a"/>
 									<listOptionValue builtIn="false" value="libc.a"/>
 								</option>
 								</option>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH.1435003304" name="Add &lt;dir&gt; to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH" valueType="libPaths">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH.1910081775" name="Add &lt;dir&gt; to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.SEARCH_PATH" valueType="libPaths">
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
 								</option>
 								</option>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.1659796551" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER.2031339547" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
-								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO.1568286565" name="Detailed link information data-base into &lt;file&gt; (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO" value="${ProjName}_linkInfo.xml" valueType="string"/>
-								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS.1380482368" name="Other flags" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS" valueType="stringList">
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.1915505336" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER.1559534904" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+								<option id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO.1910530672" name="Detailed link information data-base into &lt;file&gt; (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.XML_LINK_INFO" value="${ProjName}_linkInfo.xml" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS.513202260" name="Other flags" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.linkerID.OTHER_FLAGS" valueType="stringList">
 									<listOptionValue builtIn="false" value=""/>
 									<listOptionValue builtIn="false" value=""/>
 								</option>
 								</option>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS.1170965277" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS.1115134067" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS"/>
-								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS.2069562709" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS.1974422172" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS.643837524" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__CMD2_SRCS"/>
+								<inputType id="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS.175083014" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.exeLinker.inputType__GEN_CMDS"/>
 							</tool>
 							</tool>
-							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex.1389940238" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex"/>
+							<tool id="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex.2133579492" name="C2000 Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.C2000_20.2.hex"/>
 						</toolChain>
 						</toolChain>
 					</folderInfo>
 					</folderInfo>
 					<sourceEntries>
 					<sourceEntries>

+ 29 - 29
bsp/ti/c28x/tms320f28379d/2837x_FLASH_lnk_cpu1.cmd

@@ -1,4 +1,4 @@
-___heap_end = 0x010000;
+__heap_end = 0x010000;
 MEMORY
 MEMORY
 {
 {
 PAGE 0 :  /* Program Memory */
 PAGE 0 :  /* Program Memory */
@@ -7,7 +7,7 @@ PAGE 0 :  /* Program Memory */
 
 
    BEGIN           	: origin = 0x080000, length = 0x000002
    BEGIN           	: origin = 0x080000, length = 0x000002
    RESET           	: origin = 0x3FFFC0, length = 0x000002
    RESET           	: origin = 0x3FFFC0, length = 0x000002
-   RAMGS8_15      : origin = 0x013000, length = 0x009000
+   RAMGS8_15        : origin = 0x013000, length = 0x009000
    
    
    /* Flash sectors */
    /* Flash sectors */
    FLASHA           : origin = 0x080002, length = 0x001FFE	/* on-chip Flash */
    FLASHA           : origin = 0x080002, length = 0x001FFE	/* on-chip Flash */
@@ -30,7 +30,7 @@ PAGE 1 : /* Data Memory */
    BOOT_RSVD       : origin = 0x000002, length = 0x000120     /* Part of M0, BOOT rom will use this for stack */
    BOOT_RSVD       : origin = 0x000002, length = 0x000120     /* Part of M0, BOOT rom will use this for stack */
    RAMM0           : origin = 0x000122, length = 0x0002DE
    RAMM0           : origin = 0x000122, length = 0x0002DE
    RAMM1           : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
    RAMM1           : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
-   EBSS	       		: origin = 0x008000, length = 0x008000     /* RAMLS0-4, 5*0x0800   */
+   EBSS	       	   : origin = 0x008000, length = 0x008000     /* RAMLS0-4, 5*0x0800   */
    CPU2TOCPU1RAM   : origin = 0x03F800, length = 0x000400
    CPU2TOCPU1RAM   : origin = 0x03F800, length = 0x000400
    CPU1TOCPU2RAM   : origin = 0x03FC00, length = 0x000400
    CPU1TOCPU2RAM   : origin = 0x03FC00, length = 0x000400
 }
 }
@@ -40,37 +40,37 @@ SECTIONS
 {
 {
    /* Allocate program areas: */
    /* Allocate program areas: */
    .cinit              : > FLASHF      PAGE = 0, ALIGN(4)
    .cinit              : > FLASHF      PAGE = 0, ALIGN(4)
-   .pinit              : > FLASHF,     PAGE = 0, ALIGN(4)
-   .text               : >> FLASHE      PAGE = 0, ALIGN(4)
+   .init_array         : > FLASHF,     PAGE = 0, ALIGN(4)
+   .text               : > FLASHE      PAGE = 0, ALIGN(4)
    codestart           : > BEGIN       PAGE = 0, ALIGN(4)
    codestart           : > BEGIN       PAGE = 0, ALIGN(4)
 
 
 #ifdef __TI_COMPILER_VERSION__
 #ifdef __TI_COMPILER_VERSION__
    #if __TI_COMPILER_VERSION__ >= 15009000
    #if __TI_COMPILER_VERSION__ >= 15009000
     .TI.ramfunc : {} LOAD = FLASHF,
     .TI.ramfunc : {} LOAD = FLASHF,
                          RUN = RAMGS8_15,
                          RUN = RAMGS8_15,
-                         LOAD_START(_RamfuncsLoadStart),
-                         LOAD_SIZE(_RamfuncsLoadSize),
-                         LOAD_END(_RamfuncsLoadEnd),
-                         RUN_START(_RamfuncsRunStart),
-                         RUN_SIZE(_RamfuncsRunSize),
-                         RUN_END(_RamfuncsRunEnd),
+                         LOAD_START(RamfuncsLoadStart),
+                         LOAD_SIZE(RamfuncsLoadSize),
+                         LOAD_END(RamfuncsLoadEnd),
+                         RUN_START(RamfuncsRunStart),
+                         RUN_SIZE(RamfuncsRunSize),
+                         RUN_END(RamfuncsRunEnd),
                          PAGE = 0, ALIGN(4)
                          PAGE = 0, ALIGN(4)
    #else
    #else
    ramfuncs            : LOAD = FLASHF,
    ramfuncs            : LOAD = FLASHF,
                          RUN = RAMGS8_15,
                          RUN = RAMGS8_15,
-                         LOAD_START(_RamfuncsLoadStart),
-                         LOAD_SIZE(_RamfuncsLoadSize),
-                         LOAD_END(_RamfuncsLoadEnd),
-                         RUN_START(_RamfuncsRunStart),
-                         RUN_SIZE(_RamfuncsRunSize),
-                         RUN_END(_RamfuncsRunEnd),
+                         LOAD_START(RamfuncsLoadStart),
+                         LOAD_SIZE(RamfuncsLoadSize),
+                         LOAD_END(RamfuncsLoadEnd),
+                         RUN_START(RamfuncsRunStart),
+                         RUN_SIZE(RamfuncsRunSize),
+                         RUN_END(RamfuncsRunEnd),
                          PAGE = 0, ALIGN(4)   
                          PAGE = 0, ALIGN(4)   
    #endif
    #endif
 #endif
 #endif
 
 
-   FSymTab : > RAMM1, PAGE = 1, ALIGN(4)
-   LOAD_START(___fsymtab_start)
-   LOAD_END(___fsymtab_end)
+   FSymTab          : > RAMM1,     PAGE = 1
+               LOAD_START(__fsymtab_start)
+               LOAD_END(__fsymtab_end)
    .rti_fn.0.end    : > RAMM1,     PAGE = 1
    .rti_fn.0.end    : > RAMM1,     PAGE = 1
    .rti_fn.0        : > RAMM1,     PAGE = 1
    .rti_fn.0        : > RAMM1,     PAGE = 1
    .rti_fn.1        : > RAMM1,     PAGE = 1
    .rti_fn.1        : > RAMM1,     PAGE = 1
@@ -81,19 +81,19 @@ SECTIONS
    .rti_fn.1.end    : > RAMM1,     PAGE = 1
    .rti_fn.1.end    : > RAMM1,     PAGE = 1
    .rti_fn.6.end    : > RAMM1,     PAGE = 1
    .rti_fn.6.end    : > RAMM1,     PAGE = 1
    .rti_fn.6        : > RAMM1,     PAGE = 1
    .rti_fn.6        : > RAMM1,     PAGE = 1
+
    /* Allocate uninitalized data sections: */
    /* Allocate uninitalized data sections: */
-   .stack              : > RAMM1        PAGE = 1
-   .ebss            : > EBSS,
-			   LOAD_START(___ebss_start),
-			   LOAD_END(___ebss_end),
-			   PAGE = 1
-   .esysmem            : >> RAMM1     PAGE = 1
+   .stack           : > RAMM1      PAGE = 1
+   .sysmem          : > RAMM1      PAGE = 1
+   .bss             : > EBSS,	   PAGE = 1
+   .data            : > EBSS,
+				    LOAD_END(__ebss_end),
+				    PAGE = 1
 
 
    /* Initalized sections go in Flash */
    /* Initalized sections go in Flash */
-   .econst             : >> FLASHF      PAGE = 0, ALIGN(4)
+   .const              : > FLASHF      PAGE = 0, ALIGN(4)
    .switch             : > FLASHF      PAGE = 0, ALIGN(4)
    .switch             : > FLASHF      PAGE = 0, ALIGN(4)
-   
-   .reset              : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
+   .reset              : > RESET,      PAGE = 0, TYPE = DSECT /* not used, */
    
    
    /* The following section definitions are required when using the IPC API Drivers */ 
    /* The following section definitions are required when using the IPC API Drivers */ 
     GROUP : > CPU1TOCPU2RAM, PAGE = 1 
     GROUP : > CPU1TOCPU2RAM, PAGE = 1 

+ 11 - 13
bsp/ti/c28x/tms320f28379d/2837x_RAM_lnk_cpu1.cmd

@@ -1,4 +1,4 @@
-___heap_end = 0x00F000;
+__heap_end = 0x00F000;
 
 
 MEMORY
 MEMORY
 {
 {
@@ -32,7 +32,7 @@ SECTIONS
 #endif   
 #endif   
    .text            : > RAMGS8_15, PAGE = 0
    .text            : > RAMGS8_15, PAGE = 0
    .cinit           : > RAMM0,     PAGE = 0
    .cinit           : > RAMM0,     PAGE = 0
-   .pinit           : > RAMM0,     PAGE = 0
+   .init_array      : > RAMM0,     PAGE = 0
    .switch          : > RAMM0,     PAGE = 0
    .switch          : > RAMM0,     PAGE = 0
    .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
    .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
    .rti_fn.0.end    : > RAMM1,     PAGE = 1
    .rti_fn.0.end    : > RAMM1,     PAGE = 1
@@ -46,19 +46,17 @@ SECTIONS
    .rti_fn.6.end    : > RAMM1,     PAGE = 1
    .rti_fn.6.end    : > RAMM1,     PAGE = 1
    .rti_fn.6        : > RAMM1,     PAGE = 1
    .rti_fn.6        : > RAMM1,     PAGE = 1
    .stack           : > RAMM1,     PAGE = 1
    .stack           : > RAMM1,     PAGE = 1
-   .esysmem         : > RAMM1,    PAGE = 1
-
-   .ebss            : > EBSS,
-				   LOAD_START(___ebss_start),
-				   LOAD_END(___ebss_end),
-				   PAGE = 1
-
-   .econst          : > ECONST,  PAGE = 1
+   .sysmem          : > RAMM1,     PAGE = 1
+   .bss             : > EBSS,      PAGE = 1
+   .data            : > EBSS,
+				    LOAD_END(__ebss_end),
+				    PAGE = 1
+   .const           : > ECONST,  PAGE = 1
 
 
    /* finsh symbol table */
    /* finsh symbol table */
-   FSymTab          : > RAMM1,     PAGE = 1, ALIGN(4)
-   LOAD_START(___fsymtab_start)
-   LOAD_END(___fsymtab_end)
+   FSymTab          : > RAMM1,   PAGE = 1
+   LOAD_START(__fsymtab_start)
+   LOAD_END(__fsymtab_end)
 
 
    /* The following section definitions are required when using the IPC API Drivers */ 
    /* The following section definitions are required when using the IPC API Drivers */ 
     GROUP : > CPU1TOCPU2RAM, PAGE = 1 
     GROUP : > CPU1TOCPU2RAM, PAGE = 1 

+ 3 - 26
bsp/ti/c28x/tms320f28379d/board/board.c

@@ -22,25 +22,7 @@ extern volatile rt_uint8_t rt_interrupt_nest;
 
 
 extern rt_uint32_t rt_thread_switch_interrupt_flag;
 extern rt_uint32_t rt_thread_switch_interrupt_flag;
 
 
-extern interrupt void RTOSINT_Handler();
-void trap_rtosint()
-{
-    if(rt_thread_switch_interrupt_flag)
-    {
-        /* only do pendsv at the end of the last level of interrupt nesting,
-         * so that threads do not preempt any isrs. */
-        if(rt_interrupt_nest == 1)
-        {
-            /* rt_interrupt_leave_hook is called before rt_interrupt_nest --
-             * in rt_interrupt_leave. We need to do this manually here to indicate
-             * that all isrs have been cleared before we switch to thread. */
-            rt_interrupt_nest --;
-            asm(" trap #16");
-            /* increment rt_interrupt_nest to compensate for the previous decrement. */
-            rt_interrupt_nest ++;
-        }
-    }
-}
+extern interrupt void rtosint_handler();
 
 
 /**
 /**
  * This is the timer interrupt service routine.
  * This is the timer interrupt service routine.
@@ -50,13 +32,10 @@ interrupt void cpu_timer2_isr(void)
 {
 {
     CpuTimer2Regs.TCR.all = 0xC000;
     CpuTimer2Regs.TCR.all = 0xC000;
 
 
-    ALLOW_ISR_PREEMPT();
-
-    /* enter interrupt */
     rt_interrupt_enter();
     rt_interrupt_enter();
 
 
     rt_tick_increase();
     rt_tick_increase();
-    /* leave interrupt */
+
     rt_interrupt_leave();
     rt_interrupt_leave();
 }
 }
 
 
@@ -84,7 +63,7 @@ void rt_hw_board_init()
 #endif
 #endif
     EALLOW;  // This is needed to write to EALLOW protected registers
     EALLOW;  // This is needed to write to EALLOW protected registers
     PieVectTable.TIMER2_INT = &cpu_timer2_isr;
     PieVectTable.TIMER2_INT = &cpu_timer2_isr;
-    PieVectTable.RTOS_INT = &RTOSINT_Handler;
+    PieVectTable.RTOS_INT = &rtosint_handler;
 
 
 #ifdef BSP_USING_XINT1
 #ifdef BSP_USING_XINT1
     PieVectTable.XINT1_INT = &XINT1_Handler;
     PieVectTable.XINT1_INT = &XINT1_Handler;
@@ -127,8 +106,6 @@ void rt_hw_board_init()
 #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
 #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
     rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
     rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
 #endif
 #endif
-
-    rt_interrupt_leave_sethook((void (*)(void))trap_rtosint);
 }
 }
 
 
 int _args_main()
 int _args_main()

+ 0 - 36
bsp/ti/c28x/tms320f28379d/rtconfig.h

@@ -13,8 +13,6 @@
 #define RT_THREAD_PRIORITY_8
 #define RT_THREAD_PRIORITY_8
 #define RT_THREAD_PRIORITY_MAX 8
 #define RT_THREAD_PRIORITY_MAX 8
 #define RT_TICK_PER_SECOND 100
 #define RT_TICK_PER_SECOND 100
-#define RT_USING_HOOK
-#define RT_HOOK_USING_FUNC_PTR
 #define RT_USING_IDLE_HOOK
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 1024
 #define IDLE_THREAD_STACK_SIZE 1024
@@ -126,59 +124,25 @@
 
 
 /* language packages */
 /* language packages */
 
 
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
 
 
 /* multimedia packages */
 /* multimedia packages */
 
 
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
 
 
 /* tools packages */
 /* tools packages */
 
 
 
 
 /* system packages */
 /* system packages */
 
 
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
 
 
 /* peripheral libraries and drivers */
 /* peripheral libraries and drivers */
 
 
 
 
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
 /* miscellaneous packages */
 /* miscellaneous packages */
 
 
-/* project laboratory */
 
 
 /* samples: kernel and components samples */
 /* samples: kernel and components samples */
 
 
 
 
-/* entertainment: terminal games and other interesting software packages */
-
-
 /* Hardware Drivers Config */
 /* Hardware Drivers Config */
 
 
 /* Onboard Peripheral Drivers */
 /* Onboard Peripheral Drivers */

+ 3 - 0
bsp/ti/c28x/tms320f28379d/rtconfig_project.h

@@ -24,4 +24,7 @@ typedef unsigned char  uint8_t;     /**<  8bit unsigned integer type */
  * this macro at the start of preemptible interrupt service routines*/
  * this macro at the start of preemptible interrupt service routines*/
 #define ALLOW_ISR_PREEMPT() __asm(" CLRC INTM")
 #define ALLOW_ISR_PREEMPT() __asm(" CLRC INTM")
 
 
+#define RT_USING_ZERO_LATENCY
+#define ZERO_LATENCY_INT_MASK 0x0000
+
 #endif
 #endif

+ 6 - 2
components/finsh/finsh.h

@@ -36,17 +36,21 @@ typedef long (*syscall_func)(void);
 #pragma comment(linker, "/merge:FSymTab=mytext")
 #pragma comment(linker, "/merge:FSymTab=mytext")
 
 
 #elif defined(__TI_COMPILER_VERSION__)
 #elif defined(__TI_COMPILER_VERSION__)
+#ifdef __TMS320C28XX__
+#define RT_NOBLOCKED __attribute__((noblocked))
+#else
+#define RT_NOBLOCKED
+#endif
 #define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)      \
 #define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)      \
                 __TI_FINSH_EXPORT_FUNCTION(__fsym_##cmd);           \
                 __TI_FINSH_EXPORT_FUNCTION(__fsym_##cmd);           \
                 const char __fsym_##cmd##_name[] = #cmd;            \
                 const char __fsym_##cmd##_name[] = #cmd;            \
                 const char __fsym_##cmd##_desc[] = #desc;           \
                 const char __fsym_##cmd##_desc[] = #desc;           \
-                const struct finsh_syscall __fsym_##cmd =           \
+                RT_USED RT_NOBLOCKED const struct finsh_syscall __fsym_##cmd =           \
                 {                           \
                 {                           \
                     __fsym_##cmd##_name,    \
                     __fsym_##cmd##_name,    \
                     __fsym_##cmd##_desc,    \
                     __fsym_##cmd##_desc,    \
                     (syscall_func)&name     \
                     (syscall_func)&name     \
                 };
                 };
-
 #else
 #else
 #define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)                      \
 #define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)                      \
                 const char __fsym_##cmd##_name[] RT_SECTION(".rodata.name") = #cmd;    \
                 const char __fsym_##cmd##_name[] RT_SECTION(".rodata.name") = #cmd;    \

+ 8 - 0
include/rtdef.h

@@ -210,10 +210,18 @@ typedef __gnuc_va_list              va_list;
     * GCC and MDK) compilers. See ARM Optimizing C/C++ Compiler 5.9.3 for more
     * GCC and MDK) compilers. See ARM Optimizing C/C++ Compiler 5.9.3 for more
     * details. */
     * details. */
 #define RT_SECTION(x)               __attribute__((section(x)))
 #define RT_SECTION(x)               __attribute__((section(x)))
+#ifdef __TI_EABI__
+#define RT_USED                     __attribute__((retain)) __attribute__((used))
+#else
 #define RT_USED                     __attribute__((used))
 #define RT_USED                     __attribute__((used))
+#endif
 #define PRAGMA(x)                   _Pragma(#x)
 #define PRAGMA(x)                   _Pragma(#x)
 #define ALIGN(n)                    __attribute__((aligned(n)))
 #define ALIGN(n)                    __attribute__((aligned(n)))
+#ifdef __TI_EABI__
 #define RT_WEAK                     __attribute__((weak))
 #define RT_WEAK                     __attribute__((weak))
+#else
+#define RT_WEAK
+#endif
 #define rt_inline                   static inline
 #define rt_inline                   static inline
 #define RTT_API
 #define RTT_API
 #elif defined (__TASKING__)
 #elif defined (__TASKING__)

+ 208 - 136
libcpu/ti-dsp/c28x/context.s

@@ -11,95 +11,57 @@
 ; 2019-12-05     xiaolifan    add support for hardware fpu32
 ; 2019-12-05     xiaolifan    add support for hardware fpu32
 ; 2022-06-21     guyunjie     trim pendsv (RTOSINT_Handler)
 ; 2022-06-21     guyunjie     trim pendsv (RTOSINT_Handler)
 ; 2022-08-24     guyunjie     fix bugs in context switching
 ; 2022-08-24     guyunjie     fix bugs in context switching
-
-    .ref   _rt_interrupt_to_thread
-    .ref   _rt_interrupt_from_thread
-    .ref   _rt_thread_switch_interrupt_flag
-
-    .def   _RTOSINT_Handler
-    .def   _rt_hw_get_st0
-    .def   _rt_hw_get_st1
-    .def   _rt_hw_calc_csb
-    .def   _rt_hw_context_switch_interrupt
-    .def   _rt_hw_context_switch
-    .def   _rt_hw_context_switch_to
-    .def   _rt_hw_interrupt_thread_switch
-    .def   _rt_hw_interrupt_disable
-    .def   _rt_hw_interrupt_enable
-
-;workaround for importing fpu settings from the compiler
+; 2022-10-15     guyunjie     add zero-latency interrupt
+
+    .ref   rt_interrupt_to_thread
+    .ref   rt_interrupt_from_thread
+    .ref   rt_thread_switch_interrupt_flag
+
+    .def   rtosint_handler
+    .def   rt_hw_get_st0
+    .def   rt_hw_get_st1
+    .def   rt_hw_calc_csb
+    .def   rt_hw_context_switch_interrupt
+    .def   rt_hw_context_switch
+    .def   rt_hw_context_switch_to
+    .def   rt_hw_interrupt_thread_switch
+    .def   rt_hw_interrupt_disable
+    .def   rt_hw_interrupt_enable
+
+    ;importing settings from compiler and config
     .cdecls C,NOLIST
     .cdecls C,NOLIST
     %{
     %{
+        #include <rtconfig.h>
+
         #ifdef __TMS320C28XX_FPU32__
         #ifdef __TMS320C28XX_FPU32__
             #define __FPU32__ 1
             #define __FPU32__ 1
         #else
         #else
             #define __FPU32__ 0
             #define __FPU32__ 0
         #endif
         #endif
-    %}
-
-
-RT_CTX_SAVE  .macro
-
-    PUSH    AR1H:AR0H
-    PUSH    XAR2
-    PUSH    XAR3
-    PUSH    XAR4
-    PUSH    XAR5
-    PUSH    XAR6
-    PUSH    XAR7
-    PUSH    XT
-    PUSH    RPC
-
-    .if __FPU32__
-    PUSH    RB
-    MOV32   *SP++, STF
-    MOV32   *SP++, R0H
-    MOV32   *SP++, R1H
-    MOV32   *SP++, R2H
-    MOV32   *SP++, R3H
-    MOV32   *SP++, R4H
-    MOV32   *SP++, R5H
-    MOV32   *SP++, R6H
-    MOV32   *SP++, R7H
-    .endif
-
-    .endm
-
 
 
-RT_CTX_RESTORE  .macro
-
-    .if __FPU32__
-    MOV32   R7H, *--SP, UNCF
-    MOV32   R6H, *--SP, UNCF
-    MOV32   R5H, *--SP, UNCF
-    MOV32   R4H, *--SP, UNCF
-    MOV32   R3H, *--SP, UNCF
-    MOV32   R2H, *--SP, UNCF
-    MOV32   R1H, *--SP, UNCF
-    MOV32   R0H, *--SP, UNCF
-    MOV32   STF, *--SP
-    POP     RB
-    .endif
-
-    POP     RPC
-    POP     XT
-    POP     XAR7
-    POP     XAR6
-    POP     XAR5
-    POP     XAR4
-    POP     XAR3
-    POP     XAR2
-
-    MOVZ    AR0 , @SP
-    SUBB    XAR0, #6
-    MOVL    ACC , *XAR0
-    AND     ACC, #0xFFFF << 16
-    MOV     AL, IER
-    MOVL   *XAR0, ACC
+        #ifdef __TMS320C28XX_FPU64__
+            #define __FPU64__ 1
+        #else
+            #define __FPU64__ 0
+        #endif
 
 
-    POP     AR1H:AR0H
+        #ifdef __TMS320C28XX_VCRC__
+            #define __VCRC__ 1
+        #else
+            #define __VCRC__ 0
+        #endif
 
 
-    .endm
+        #ifdef RT_USING_ZERO_LATENCY
+            #define ZERO_LATENCY 1
+            #ifndef ZERO_LATENCY_INT_MASK
+                #error ZERO_LATENCY_INT_MASK must be defined for zero latency interrupt
+            #elif ZERO_LATENCY_INT_MASK & 0x8000
+                #error RTOS bit (0x8000) must not be set in ZERO_LATENCY_INT_MASK
+            #endif
+        #else
+            #define ZERO_LATENCY 0
+        #endif
+    %}
 
 
 
 
 .text
 .text
@@ -109,10 +71,16 @@ RT_CTX_RESTORE  .macro
 ; rt_base_t rt_hw_interrupt_disable();
 ; rt_base_t rt_hw_interrupt_disable();
 ;
 ;
     .asmfunc
     .asmfunc
-_rt_hw_interrupt_disable:
+rt_hw_interrupt_disable:
+    .if ZERO_LATENCY
+    MOV   AL, IER
+    AND   IER, #ZERO_LATENCY_INT_MASK
+    .else
     PUSH  ST1
     PUSH  ST1
-    SETC  INTM,DBGM
-    MOV   AL, *--SP
+    SETC  INTM
+    POP   AL
+    .endif
+    MOV   AH, #0
     LRETR
     LRETR
     .endasmfunc
     .endasmfunc
 
 
@@ -120,9 +88,13 @@ _rt_hw_interrupt_disable:
 ; void rt_hw_interrupt_enable(rt_base_t level);
 ; void rt_hw_interrupt_enable(rt_base_t level);
 ;
 ;
     .asmfunc
     .asmfunc
-_rt_hw_interrupt_enable:
-    MOV   *SP++, AL
+rt_hw_interrupt_enable:
+    .if ZERO_LATENCY
+    MOV   IER, AL
+    .else
+    PUSH  AL
     POP   ST1
     POP   ST1
+    .endif
     LRETR
     LRETR
     .endasmfunc
     .endasmfunc
 
 
@@ -132,23 +104,29 @@ _rt_hw_interrupt_enable:
 ; SP[4] --> to
 ; SP[4] --> to
 ;
 ;
     .asmfunc
     .asmfunc
-_rt_hw_context_switch_interrupt:
-    MOVL    XAR0, ACC
+rt_hw_context_switch_interrupt:
+
+; ACC, XAR4-7 are "save on call" following TI C28x C/C++ compiler convention
+; and therefore can be used in a function without being saved on stack first
+; (the compiler has already saved it before the call).
+; Reference: TMS320C28x Optimizing CC++ Compiler
+; note this convention is only applicable to normal functions not to isrs
+
+    MOVL    XAR6, ACC
     MOVL    XAR4, *-SP[4]
     MOVL    XAR4, *-SP[4]
     ; set rt_thread_switch_interrupt_flag to 1
     ; set rt_thread_switch_interrupt_flag to 1
-    MOVL    XAR5, #_rt_thread_switch_interrupt_flag
+    MOVL    XAR5, #rt_thread_switch_interrupt_flag
     MOVL    ACC, *XAR5
     MOVL    ACC, *XAR5
-    BF      _reswitch, NEQ                     ; ACC!=0
+    BF      reswitch2, NEQ                    ; ACC!=0
     MOVB    ACC, #1
     MOVB    ACC, #1
     MOVL    *XAR5, ACC
     MOVL    *XAR5, ACC
 
 
-    MOVL    XAR5, #_rt_interrupt_from_thread   ; set rt_interrupt_from_thread
-    MOVL    *XAR5, XAR0
+    MOVL    XAR5, #rt_interrupt_from_thread   ; set rt_interrupt_from_thread
+    MOVL    *XAR5, XAR6
 
 
-_reswitch:
-    MOVL    XAR5, #_rt_interrupt_to_thread     ; set rt_interrupt_to_thread
+reswitch2:
+    MOVL    XAR5, #rt_interrupt_to_thread     ; set rt_interrupt_to_thread
     MOVL    *XAR5, XAR4
     MOVL    *XAR5, XAR4
-
     LRETR
     LRETR
     .endasmfunc
     .endasmfunc
 
 
@@ -158,102 +136,196 @@ _reswitch:
 ; SP[4] --> to
 ; SP[4] --> to
 ;
 ;
     .asmfunc
     .asmfunc
-_rt_hw_context_switch:
-    MOVL    XAR0, ACC
+rt_hw_context_switch:
+
+    MOVL    XAR6, ACC
     MOVL    XAR4, *-SP[4]
     MOVL    XAR4, *-SP[4]
     ; set rt_thread_switch_interrupt_flag to 1
     ; set rt_thread_switch_interrupt_flag to 1
-    MOVL    XAR5, #_rt_thread_switch_interrupt_flag
+    MOVL    XAR5, #rt_thread_switch_interrupt_flag
     MOVL    ACC, *XAR5
     MOVL    ACC, *XAR5
-    BF      _reswitch2, NEQ                    ; ACC!=0
+    BF      reswitch1, NEQ                    ; ACC!=0
     MOVB    ACC, #1
     MOVB    ACC, #1
     MOVL    *XAR5, ACC
     MOVL    *XAR5, ACC
 
 
-    MOVL    XAR5, #_rt_interrupt_from_thread   ; set rt_interrupt_from_thread
-    MOVL    *XAR5, XAR0
+    MOVL    XAR5, #rt_interrupt_from_thread   ; set rt_interrupt_from_thread
+    MOVL    *XAR5, XAR6
 
 
-_reswitch2:
-    MOVL    XAR5, #_rt_interrupt_to_thread     ; set rt_interrupt_to_thread
+reswitch1:
+    MOVL    XAR5, #rt_interrupt_to_thread     ; set rt_interrupt_to_thread
     MOVL    *XAR5, XAR4
     MOVL    *XAR5, XAR4
-
-    TRAP    #16
+    OR      IFR, #0x8000
     LRETR
     LRETR
     .endasmfunc
     .endasmfunc
-
 ;
 ;
 ; * void rt_hw_context_switch_to(rt_uint32 to);
 ; * void rt_hw_context_switch_to(rt_uint32 to);
 ; * ACC --> to
 ; * ACC --> to
 ;
 ;
     .asmfunc
     .asmfunc
-_rt_hw_context_switch_to:
+rt_hw_context_switch_to:
     ; get to thread
     ; get to thread
-    MOVL    XAR1, #_rt_interrupt_to_thread
-    MOVL    *XAR1, ACC
+    MOVL    XAR5, #rt_interrupt_to_thread
+    MOVL    *XAR5, ACC
 
 
     ; set from thread to 0
     ; set from thread to 0
-    MOVL    XAR1, #_rt_interrupt_from_thread
-    MOVL    XAR0, #0
-    MOVL    *XAR1, XAR0
+    MOVL    XAR5, #rt_interrupt_from_thread
+    MOVL    XAR4, #0
+    MOVL    *XAR5, XAR4
 
 
     ; set interrupt flag to 1
     ; set interrupt flag to 1
-    MOVL    XAR1, #_rt_thread_switch_interrupt_flag
-    MOVL    XAR0, #1
-    MOVL    *XAR1, XAR0
+    MOVL    XAR5, #rt_thread_switch_interrupt_flag
+    MOVL    XAR4, #1
+    MOVL    *XAR5, XAR4
 
 
-    TRAP    #16
+    ; trigger rtos interrupt
+    OR      IFR, #0x8000
+    OR      IER, #0x8000
+    CLRC    INTM
 
 
     ; never reach here!
     ; never reach here!
     .endasmfunc
     .endasmfunc
 
 
     .asmfunc
     .asmfunc
-_RTOSINT_Handler:
-    ; disable interrupt to protect context switch
-    ; DINT ;this is done by hardware so not needed
+rtosint_handler:
+
+    .if ZERO_LATENCY
+    ; mask out non-critical interrupts and enable global interrupt
+    ; so rtosint_handler won't block critical interrupts
+    AND  IER, #ZERO_LATENCY_INT_MASK
+    CLRC INTM
+    .endif
+
+    MOVL ACC, *-SP[4]
+    MOV  AR0, AL   ; save original IER
+
+    PUSH    AR1H:AR0H
+    PUSH    XAR2
 
 
     ; get rt_thread_switch_interrupt_flag
     ; get rt_thread_switch_interrupt_flag
-    MOVL    XAR0, #_rt_thread_switch_interrupt_flag
-    MOVL    ACC, *XAR0
-    BF      rtosint_exit, EQ         ; pendsv already handled
+    MOVL    XAR1, #rt_thread_switch_interrupt_flag
+    MOVL    ACC, *XAR1
+    BF      rtosint_exit, EQ         ; rtos_int already handled
 
 
     ; clear rt_thread_switch_interrupt_flag to 0
     ; clear rt_thread_switch_interrupt_flag to 0
-    MOVL    XAR1, #0
-    MOVL    *XAR0, XAR1
+    MOVL    XAR2, #0
+    MOVL    *XAR1, XAR2
 
 
-    MOVL    XAR0, #_rt_interrupt_from_thread
-    MOVL    ACC, *XAR0
+    MOVL    XAR1, #rt_interrupt_from_thread
+    MOVL    ACC, *XAR1
     BF      switch_to_thread, EQ     ; skip register save at the first time
     BF      switch_to_thread, EQ     ; skip register save at the first time
 
 
-    RT_CTX_SAVE                      ; push cpu registers
+    PUSH    XAR3
+    PUSH    XAR4
+    PUSH    XAR5
+    PUSH    XAR6
+    PUSH    XAR7
+    PUSH    XT
+    PUSH    RPC
 
 
-    MOVL    ACC, *XAR0
-    MOVL    XAR0, ACC
-    MOVZ    AR1, @SP                 ; get from thread stack pointer
-    MOVL    *XAR0, XAR1              ; update from thread stack pointer
+    .if __FPU32__
+    PUSH    RB
+    MOV32   *SP++, STF
+    MOV32   *SP++, R0H
+    MOV32   *SP++, R1H
+    MOV32   *SP++, R2H
+    MOV32   *SP++, R3H
+    MOV32   *SP++, R4H
+    MOV32   *SP++, R5H
+    MOV32   *SP++, R6H
+    MOV32   *SP++, R7H
+    .endif
+
+    .if __FPU64__
+    MOV32   *SP++, R0L
+    MOV32   *SP++, R1L
+    MOV32   *SP++, R2L
+    MOV32   *SP++, R3L
+    MOV32   *SP++, R4L
+    MOV32   *SP++, R5L
+    MOV32   *SP++, R6L
+    MOV32   *SP++, R7L
+    .endif
+
+    .if __VCRC__
+    VMOV32  *SP++, VCRC
+    VMOV32  *SP++, VSTATUS
+    VMOV32  *SP++, VCRCPOLY
+    VMOV32  *SP++, VCRCSIZE
+    .endif
+
+    MOVL    ACC, *XAR1
+    MOVL    XAR1, ACC
+    MOVZ    AR2, @SP                 ; get from thread stack pointer
+    MOVL    *XAR1, XAR2              ; update from thread stack pointer
 
 
 switch_to_thread:
 switch_to_thread:
-    MOVL    XAR1, #_rt_interrupt_to_thread
+    MOVL    XAR1, #rt_interrupt_to_thread
     MOVL    ACC, *XAR1
     MOVL    ACC, *XAR1
     MOVL    XAR1, ACC
     MOVL    XAR1, ACC
     MOVL    ACC, *XAR1
     MOVL    ACC, *XAR1
     MOV     @SP, AL                  ; load thread stack pointer
     MOV     @SP, AL                  ; load thread stack pointer
 
 
-    RT_CTX_RESTORE                   ; pop cpu registers
+    .if __VCRC__
+    VMOV32  VCRCSIZE, *--SP
+    VMOV32  VCRCPOLY, *--SP
+    VMOV32  VSTATUS, *--SP
+    VMOV32  VCRC, *--SP
+    .endif
+
+    .if __FPU64__
+    MOV32   R7L, *--SP
+    MOV32   R6L, *--SP
+    MOV32   R5L, *--SP
+    MOV32   R4L, *--SP
+    MOV32   R3L, *--SP
+    MOV32   R2L, *--SP
+    MOV32   R1L, *--SP
+    MOV32   R0L, *--SP
+    .endif
+
+    .if __FPU32__
+    MOV32   R7H, *--SP
+    MOV32   R6H, *--SP
+    MOV32   R5H, *--SP
+    MOV32   R4H, *--SP
+    MOV32   R3H, *--SP
+    MOV32   R2H, *--SP
+    MOV32   R1H, *--SP
+    MOV32   R0H, *--SP
+    MOV32   STF, *--SP
+    POP     RB
+    .endif
+
+    POP     RPC
+    POP     XT
+    POP     XAR7
+    POP     XAR6
+    POP     XAR5
+    POP     XAR4
+    POP     XAR3
 
 
 rtosint_exit:
 rtosint_exit:
     ; do not restore interrupt here: to be restored according to the
     ; do not restore interrupt here: to be restored according to the
     ; switched-to context during IRET (automaticlly by hardware)
     ; switched-to context during IRET (automaticlly by hardware)
 
 
+    POP     XAR2
+    POP     AR1H:AR0H
+
+    MOVL    ACC , *-SP[4]
+    MOV     AL, AR0
+    MOVL    *-SP[4], ACC
+
     IRET
     IRET
     .endasmfunc
     .endasmfunc
 
 
     .asmfunc
     .asmfunc
-_rt_hw_get_st0:
+rt_hw_get_st0:
     PUSH    ST0
     PUSH    ST0
     POP     AL
     POP     AL
     LRETR
     LRETR
     .endasmfunc
     .endasmfunc
 
 
     .asmfunc
     .asmfunc
-_rt_hw_get_st1:
+rt_hw_get_st1:
     PUSH    ST1
     PUSH    ST1
     POP     AL
     POP     AL
     LRETR
     LRETR
@@ -269,18 +341,18 @@ _rt_hw_get_st1:
 ; 0x000001FF    22      8
 ; 0x000001FF    22      8
 ; 0x000001F0    22      8
 ; 0x000001F0    22      8
     .asmfunc
     .asmfunc
-_rt_hw_calc_csb:
+rt_hw_calc_csb:
     MOV     AH, #0
     MOV     AH, #0
     CSB     ACC                   ; T = no. of sign bits - 1
     CSB     ACC                   ; T = no. of sign bits - 1
     MOVU    ACC, T                ; ACC = no. of sign bits - 1
     MOVU    ACC, T                ; ACC = no. of sign bits - 1
     SUBB    ACC, #30              ; ACC = ACC - 30
     SUBB    ACC, #30              ; ACC = ACC - 30
     ABS     ACC                   ; ACC = |ACC|
     ABS     ACC                   ; ACC = |ACC|
-    lretr
+    LRETR
     .endasmfunc
     .endasmfunc
 
 
 ; compatible with old version
 ; compatible with old version
     .asmfunc
     .asmfunc
-_rt_hw_interrupt_thread_switch:
+rt_hw_interrupt_thread_switch:
     LRETR
     LRETR
     NOP
     NOP
     .endasmfunc
     .endasmfunc

+ 58 - 11
libcpu/ti-dsp/c28x/cpuport.c

@@ -8,9 +8,12 @@
  * 2018-09-01     xuzhuoyi     the first version.
  * 2018-09-01     xuzhuoyi     the first version.
  * 2019-07-03     zhaoxiaowei  add support for __rt_ffs.
  * 2019-07-03     zhaoxiaowei  add support for __rt_ffs.
  * 2019-12-05     xiaolifan    add support for hardware fpu32
  * 2019-12-05     xiaolifan    add support for hardware fpu32
+ * 2022-10-17     guyunjie     add support for hardware fpu64 and vcrc
  */
  */
 
 
-#include <rtthread.h>
+#include <rthw.h>
+
+extern volatile rt_uint8_t rt_interrupt_nest;
 
 
 /* exception and interrupt handler table */
 /* exception and interrupt handler table */
 rt_uint32_t rt_interrupt_from_thread;
 rt_uint32_t rt_interrupt_from_thread;
@@ -64,6 +67,24 @@ struct stack_frame
     rt_uint32_t r7h;
     rt_uint32_t r7h;
 #endif
 #endif
 
 
+#ifdef __TMS320C28XX_FPU64__
+    rt_uint32_t r0l;
+    rt_uint32_t r1l;
+    rt_uint32_t r2l;
+    rt_uint32_t r3l;
+    rt_uint32_t r4l;
+    rt_uint32_t r5l;
+    rt_uint32_t r6l;
+    rt_uint32_t r7l;
+#endif
+
+#ifdef __TMS320C28XX_VCRC__
+    rt_uint32_t vcrc;
+    rt_uint32_t vstatus;
+    rt_uint32_t vcrcpoly;
+    rt_uint32_t vcrcsize;
+#endif
+
 };
 };
 
 
 rt_uint8_t *rt_hw_stack_init(void       *tentry,
 rt_uint8_t *rt_hw_stack_init(void       *tentry,
@@ -81,20 +102,17 @@ rt_uint8_t *rt_hw_stack_init(void       *tentry,
 
 
     stack_frame = (struct stack_frame *)stk;
     stack_frame = (struct stack_frame *)stk;
 
 
-    /* init all register */
+    /* zero all registers */
     for (i = 0; i < sizeof(struct stack_frame) / sizeof(rt_uint32_t); i ++)
     for (i = 0; i < sizeof(struct stack_frame) / sizeof(rt_uint32_t); i ++)
     {
     {
-        ((rt_uint32_t *)stack_frame)[i] = 0xdeadbeef;
+        ((rt_uint32_t *)stack_frame)[i] = 0;
     }
     }
 
 
-    stack_frame->exception_stack_frame.t_st0   = 0x11110000 | rt_hw_get_st0();
-    stack_frame->exception_stack_frame.acc     = 0x33332222;
-    stack_frame->exception_stack_frame.ar1_ar0 = 0x00001111 & (unsigned long)parameter; /* ar0 : argument */
-    stack_frame->exception_stack_frame.p       = 0x55554444;                            /* p */
-    stack_frame->exception_stack_frame.dp_st1  = (0x00000000) | rt_hw_get_st1() & 0xFFFFFFFE;        /* dp_st1 */
-    stack_frame->exception_stack_frame.dbgstat_ier    = 0;                              /* dbgstat_ier */
-    stack_frame->exception_stack_frame.return_address = (unsigned long)tentry;          /* return_address */
-    stack_frame->rpc = (unsigned long)texit;
+    /* configure special registers*/
+    stack_frame->exception_stack_frame.dp_st1  = 0x00000A08;
+    stack_frame->xar4 = (rt_uint32_t)parameter;
+    stack_frame->exception_stack_frame.return_address = (rt_uint32_t)tentry;
+    stack_frame->rpc = (rt_uint32_t)texit;
 
 
 #ifdef __TMS320C28XX_FPU32__
 #ifdef __TMS320C28XX_FPU32__
     stack_frame->stf = 0x00000200;
     stack_frame->stf = 0x00000200;
@@ -145,3 +163,32 @@ RT_WEAK void rt_hw_cpu_shutdown(void)
 
 
     RT_ASSERT(0);
     RT_ASSERT(0);
 }
 }
+
+void rt_interrupt_enter(void)
+{
+    rt_base_t level;
+
+    __asm("  EINT");
+    level = rt_hw_interrupt_disable();
+    rt_interrupt_nest ++;
+    RT_OBJECT_HOOK_CALL(rt_interrupt_enter_hook,());
+    rt_hw_interrupt_enable(level);
+
+    RT_DEBUG_LOG(RT_DEBUG_IRQ, ("irq has come..., irq current nest:%d\n",
+                                (rt_int32_t)rt_interrupt_nest));
+}
+
+void rt_interrupt_leave(void)
+{
+    RT_DEBUG_LOG(RT_DEBUG_IRQ, ("irq is going to leave, irq current nest:%d\n",
+                                (rt_int32_t)rt_interrupt_nest));
+
+    rt_hw_interrupt_disable();
+    RT_OBJECT_HOOK_CALL(rt_interrupt_leave_hook,());
+    rt_interrupt_nest --;
+    if(rt_thread_switch_interrupt_flag && !rt_interrupt_nest)
+    {
+        __asm("  OR IFR, #0x8000"); /* trigger rtos int */
+    }
+    /* rt_hw_interrupt_enable auto done by hardware on IRET */
+}

+ 2 - 2
src/irq.c

@@ -78,7 +78,7 @@ volatile rt_uint8_t rt_interrupt_nest = 0;
  *
  *
  * @see rt_interrupt_leave
  * @see rt_interrupt_leave
  */
  */
-void rt_interrupt_enter(void)
+RT_WEAK void rt_interrupt_enter(void)
 {
 {
     rt_base_t level;
     rt_base_t level;
 
 
@@ -100,7 +100,7 @@ RTM_EXPORT(rt_interrupt_enter);
  *
  *
  * @see rt_interrupt_enter
  * @see rt_interrupt_enter
  */
  */
-void rt_interrupt_leave(void)
+RT_WEAK void rt_interrupt_leave(void)
 {
 {
     rt_base_t level;
     rt_base_t level;