diff --git a/.github/workflows/BLE_Examples_Test.yml b/.github/workflows/BLE_Examples_Test.yml
index b2e230ddcdb..fb7db194fbb 100644
--- a/.github/workflows/BLE_Examples_Test.yml
+++ b/.github/workflows/BLE_Examples_Test.yml
@@ -43,7 +43,7 @@ on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
- push:
+
env:
LOCK_MAX32655_B2: false
@@ -63,7 +63,6 @@ jobs:
with:
submodules: false
repository: analogdevicesinc/msdk
- ref: ble-workflow-update
fetch-depth: 0
- name: Check MAX32655
@@ -591,7 +590,7 @@ jobs:
fi
- name: Lock Boards
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1.1
with:
boards: |
max32655_board1
@@ -605,19 +604,19 @@ jobs:
run: |
#set advertising names
- sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c
- sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c
- sed -i "s/'S'/'!'/g" Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c
- sed -i "s/'S'/'!'/g" Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c
+ # sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c
+ # sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c
+ # sed -i "s/'S'/'!'/g" Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c
+ # sed -i "s/'S'/'!'/g" Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c
- sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c
- sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c
- sed -i "s/'S'/'!'/g" Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c
- sed -i "s/'S'/'!'/g" Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c
+ # sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c
+ # sed -i "s/'S'/'?'/g" Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c
+ # sed -i "s/'S'/'!'/g" Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c
+ # sed -i "s/'S'/'!'/g" Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c
- name: Erase Boards DATS
if: ${{env.MAX32655_DATS_CONNECTED_TEST == 'true' || env.MAX32665_DATS_CONNECTED_TEST == 'true' || env.MAX32690_DATS_CONNECTED_TEST == 'true'}}
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocderase@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocderase@v1.1
with:
board: |
max32655_board1
@@ -633,7 +632,7 @@ jobs:
- name: Flash DATS 655
if: ${{env.MAX32655_DATS_CONNECTED_TEST == 'true'}}
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocdflash@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocdflash@v1.1
with:
board: |
max32655_board1
@@ -644,7 +643,11 @@ jobs:
BLE_datc
suppress_output: true
-
+ build_flags: |
+ ADV_NAME=DAT?
+ ADV_NAME=DAT?
+
+
build: true
distclean: true
@@ -660,7 +663,7 @@ jobs:
- name: Erase Boards OTAS
if: ${{env.MAX32655_DATS_CONNECTED_TEST == 'true' || env.MAX32665_DATS_CONNECTED_TEST == 'true' || env.MAX32690_DATS_CONNECTED_TEST == 'true'}}
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocderase@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocderase@v1.1
with:
board: |
max32655_board1
@@ -670,13 +673,18 @@ jobs:
- name: Flash OTAS
if: ${{env.MAX32655_DATS_CONNECTED_TEST == 'true' || env.MAX32665_DATS_CONNECTED_TEST == 'true' || env.MAX32690_DATS_CONNECTED_TEST == 'true'}}
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocdflash@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/ocdflash@v1.1
with:
board: |
max32655_board1
max32655_board2
max32665_board1
-
+ build_flags: |
+ ADV_NAME=OTA?
+ ADV_NAME=OTA?
+ ADV_NAME=OTA!
+ ADV_NAME=OTA!
+
project: |
BLE_otas
BLE_otac
@@ -719,7 +727,7 @@ jobs:
- name: Unlock Boards
if: always()
- uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1.1
with:
lock: false
all_owned: true
diff --git a/.github/workflows/example_tester.yml b/.github/workflows/example_tester.yml
new file mode 100644
index 00000000000..854c1c83f45
--- /dev/null
+++ b/.github/workflows/example_tester.yml
@@ -0,0 +1,100 @@
+###############################################################################
+#
+# Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
+# Analog Devices, Inc.),
+# Copyright (C) 2023-2024 Analog Devices, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+##############################################################################
+
+name: Basic Examples Test
+
+# Cancels workflows in progress that are in the same PR
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events but only for the "main" branch
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ # Any files in a docs directory anywhere in the repository.
+ - "**/docs/**"
+ - "**/Documentation/**"
+ # Any README.md file anywhere in the repository.
+ - "**/README.md"
+ # Any .pdf file anywhere in the repository.
+ - "**/*.pdf"
+ # Any .yml file anywhere in the repository.
+ # can comment this out when testing changes to THIS yml file
+ - "**/*.yml"
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+
+env:
+ MAXIM_PATH: ''
+
+jobs:
+ Example_Tests:
+ # The type of runner that the job will run on
+ runs-on: [self-hosted]
+ if: github.event.pull_request.draft == false
+
+
+ steps:
+
+ - uses: actions/checkout@v4
+ with:
+ submodules: false
+ repository: analogdevicesinc/msdk
+ fetch-depth: 0
+
+ - name: Set MAXIM_PATH
+ run: |
+ echo "MAXIM_PATH=$(pwd)" >> $GITHUB_ENV
+ printenv
+
+ - name: Lock Boards
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1.1
+ with:
+ boards: |
+ max32690_board_ex
+ lock: true
+ timeout: 900 # Attempt to lock for an hour
+
+ - name: run_example_test
+ run: |
+ bash .github/workflows/scripts/example_tester.sh max32690_board_ex
+
+ - name: Unlock Boards
+ if: always()
+ uses: Analog-Devices-MSDK/btm-ci-scripts/actions/lock-board@v1.1
+ with:
+ lock: false
+ all_owned: true
+
+
+
+
+
+
+
+
+
+
diff --git a/.github/workflows/scripts/example_tester.sh b/.github/workflows/scripts/example_tester.sh
new file mode 100644
index 00000000000..2d3211d263a
--- /dev/null
+++ b/.github/workflows/scripts/example_tester.sh
@@ -0,0 +1,515 @@
+#! /usr/bin/bash
+
+<<"CONFIGURATION"
+The following is the configuration for hardware (max32690):
+remove JP7(RX_EN) and install JP8(TX_EN) headers
+Install headers JP9 and JP10 to SDA and SCL respectively.
+You must connect P1.8->P2.8 (SCL) and P1.7->P2.7 (SCL).
+Connect pins P2.12->P1.9 for UART test
+connect MISO (P2.27) and MOSI (P2.28) pins
+Apply an input voltage between 0 and 1.25V to pin labeled 0 of the JH6 (Analog) header. for ADC
+CONFIGURATION
+
+
+# variable for configuration
+baudRate=115200
+timeLimit=5
+timeLimitICC=30 #ICC needs around 20s to finish the test
+boardVersion=max32690
+#boardName=max32690-1
+boardName=$1
+uartPort=$(resource_manager -g $boardName.console_port)
+target_uc=$(resource_manager -g $boardName.target)
+#MAXIM_PATH=/home/jcai/Workspace/msdk
+Path=$MAXIM_PATH/Examples/$target_uc
+
+# variable for testing purpose
+tempFile=.temp.txt
+result_UART_INTERRUPT='not tested'
+result_UART_DMA='not tested'
+result_HelloWorld='not tested'
+result_HelloWorld_Cpp='not tested'
+result_TRNG='not tested'
+result_I2C='not tested'
+result_SPI_POLLING='not tested'
+result_SPI_INTERRUPT='not tested'
+result_SPI_DMA='not tested'
+result_SPI_V2_POLLING='not tested' #this is only for max32690
+result_SPI_V2_INTERRUPT='not tested' #this is only for max32690
+result_SPI_V2_DMA='not tested' #this is only for max32690
+result_ICC='not tested'
+result_Hash='not tested'
+result_DMA='not tested'
+result_CRC='not tested'
+result_ADC_POLLING='not tested'
+result_ADC_INTERRUPT='not tested'
+result_ADC_DMA='not tested'
+result_Lib_Gen='not tested'
+result_Lib_Use='not tested'
+
+function init() {
+ # print the testcase
+ echo "-------------------------------------------------------------------"
+ echo "Start testing $1 Example:"
+ # clean the temp file
+ rm -rf $tempFile
+ sleep 2
+
+ # do initialization, compiler and flash the code
+ testName=$1
+ if [[ $testName != Library_Use ]]
+ then
+ make -C $Path/$testName distclean
+
+ if [[ $1 = "SPI" || $1 = "SPI_v2" || $1 = "ADC" || $1 = "UART" ]];
+ then
+ make -C $Path/$testName METHOD=$2
+ else
+ make -C $Path/$testName
+ fi
+ fi
+
+ if [[ $testName != Library_Generate && $testName != Library_Use ]]
+ then
+ stty -F $uartPort $baudRate
+ ocdflash $boardName $Path/$testName/build/$boardVersion.elf
+ if [[ $testName = ICC ]]
+ then
+ timeout $timeLimitICC cat $uartPort > $tempFile
+ else
+ timeout $timeLimit cat $uartPort > $tempFile
+ fi
+ fi
+}
+
+function test_Hello_World() {
+ init Hello_World
+
+ # start testing the output
+ grep "Hello World!" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_HelloWorld='pass'
+ else
+ result_HelloWorld='fail'
+ fi
+
+ printf "Test result for Hello_World: $result_HelloWorld\n"
+
+}
+
+function test_Hello_World_Cpp() {
+ init Hello_World_Cpp
+
+ # start testing the output
+ grep "C++ Hello World Example" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_HelloWorld_Cpp='pass'
+ else
+ result_HelloWorld_Cpp='fail'
+ fi
+
+ printf "Test result for Hello_World_Cpp: $result_HelloWorld_Cpp\n"
+
+}
+
+function test_UART() {
+ init UART INTERRUPT
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_UART_INTERRUPT='pass'
+ else
+ result_UART_INTERRUPT='fail'
+ fi
+
+ printf "Test result for UART_INTERRUPT: $result_UART_INTERRUPT\n"
+: '
+ init UART DMA
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_UART_DMA='pass'
+ else
+ result_UART_DMA='fail'
+ fi
+
+ printf "Test result for UART_DMA: $result_UART_DMA\n"
+'
+}
+
+function test_TRNG() {
+ init TRNG
+
+ # start testing the output
+ grep "Test Complete" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_TRNG='pass'
+ else
+ result_TRNG='fail'
+ fi
+
+ printf "Test result for TRNG: $result_TRNG\n"
+
+}
+
+
+function test_I2C() {
+ init I2C
+
+ # start testing the output
+ grep "I2C Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_I2C='pass'
+ else
+ result_I2C='fail'
+ fi
+
+ printf "Test result for I2C: $result_I2C\n"
+
+}
+
+function test_SPI() {
+ init SPI MASTERSYNC
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_POLLING='pass'
+ else
+ result_SPI_POLLING='fail'
+ fi
+
+ printf "Test result for SPI_POLLING: $result_SPI_POLLING\n"
+
+ init SPI MASTERASYNC
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_INTERRUPT='pass'
+ else
+ result_SPI_INTERRUPT='fail'
+ fi
+
+ printf "Test result for SPI_INTERRUPT: $result_SPI_INTERRUPT\n"
+
+ init SPI MASTERDMA
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_DMA='pass'
+ else
+ result_SPI_DMA='fail'
+ fi
+
+ printf "Test result for SPI_DMA: $result_SPI_DMA\n"
+
+}
+
+function test_SPI_V2() {
+ init SPI_v2 CONTROLLER_SYNC
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_V2_POLLING='pass'
+ else
+ result_SPI_V2_POLLING='fail'
+ fi
+
+ printf "Test result for SPI_v2_POLLING: $result_SPI_V2_POLLING\n"
+
+ init SPI_v2 CONTROLLER_ASYNC
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_V2_INTERRUPT='pass'
+ else
+ result_SPI_V2_INTERRUPT='fail'
+ fi
+
+ printf "Test result for SPI_v2_INTERRUPT: $result_SPI_V2_INTERRUPT\n"
+
+ init SPI_v2 CONTROLLER_DMA
+
+ # start testing the output
+ grep "16 Bits Transaction Successful" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_SPI_V2_DMA='pass'
+ else
+ result_SPI_V2_DMA='fail'
+ fi
+
+ printf "Test result for SPI_v2_DMA: $result_SPI_V2_DMA\n"
+
+}
+function test_ICC() {
+ init ICC
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_ICC='pass'
+ else
+ result_ICC='fail'
+ fi
+
+ printf "Test result for ICC: $result_ICC\n"
+
+}
+
+function test_Hash() {
+ init Hash
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_Hash='pass'
+ else
+ result_Hash='fail'
+ fi
+
+ printf "Test result for Hash: $result_Hash\n"
+
+}
+
+function test_DMA() {
+ init DMA
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_DMA='pass'
+ else
+ result_DMA='fail'
+ fi
+
+ printf "Test result for DMA: $result_DMA\n"
+
+}
+
+function test_CRC() {
+ init CRC
+
+ # start testing the output
+ grep "Example Succeeded" $tempFile
+ if [[ $? -eq 0 ]];
+ then
+ result_CRC='pass'
+ else
+ result_CRC='fail'
+ fi
+
+ printf "Test result for CRC: $result_CRC\n"
+
+}
+
+
+function test_ADC() {
+
+ init ADC POLLING
+
+ # start testing the output
+ result_ADC_POLLING='pass'
+ grep "Running Single Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_POLLING='fail'
+ fi
+
+ grep "Running Temperature Sensor Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_POLLING='fail'
+ fi
+
+ grep "Running Multi Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_POLLING='fail'
+ fi
+ printf "Test result for ADC_POLLING: $result_ADC_POLLING\n"
+
+ init ADC INTERRUPT
+
+ # start testing the output
+ result_ADC_INTERRUPT='pass'
+ grep "Running Single Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_INTERRUPT='fail'
+ fi
+
+ grep "Running Temperature Sensor Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_INTERRUPT='fail'
+ fi
+
+ grep "Running Multi Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_INTERRUPT='fail'
+ fi
+ printf "Test result for ADC_INTERRUPT: $result_ADC_INTERRUPT\n"
+
+ init ADC DMA
+
+ # start testing the output
+ result_ADC_DMA='pass'
+ grep "Running Single Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_DMA='fail'
+ fi
+
+ grep "Running Temperature Sensor Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_DMA='fail'
+ fi
+
+ grep "Running Multi Channel Example" $tempFile
+ if [[ $? -ne 0 ]];
+ then
+ result_ADC_DMA='fail'
+ fi
+ printf "Test result for ADC_DMA: $result_ADC_DMA\n"
+}
+
+function test_Lib_Gen() {
+ init Library_Generate
+
+ # start testing the output
+ find $Path/$testName/build/$boardVersion.a
+ if [[ $? -eq 0 ]];
+ then
+ result_Lib_Gen='pass'
+ else
+ result_Lib_Gen='fail'
+ fi
+
+ printf "Test result for Library_Generate: $result_Lib_Gen\n"
+
+}
+
+function test_Lib_Use() {
+ init Library_Use
+
+ # start testing the output
+ make -C $Path/$testName distclean
+ make -C $Path/$testName
+ if [[ $? -eq 0 ]];
+ then
+ result_Lib_Use='pass'
+ else
+ result_Lib_Use='fail'
+ fi
+
+ printf "Test result for Library_Use: $result_Lib_Use\n"
+
+}
+
+function summary() {
+ printf "*************************Result Summary****************************\n"
+ printf "Test result for Hello_World: $result_HelloWorld\n"
+ printf "Test result for Hello_World_Cpp: $result_HelloWorld_Cpp\n"
+ printf "Test result for UART_INTERRUPT: $result_UART_INTERRUPT\n"
+ printf "Test result for UART_DMA: $result_UART_DMA\n"
+ printf "Test result for TRNG: $result_TRNG\n"
+ printf "Test result for I2C: $result_I2C\n"
+ printf "Test result for SPI_POLLING: $result_SPI_POLLING\n"
+ printf "Test result for SPI_INTERRUPT: $result_SPI_INTERRUPT\n"
+ printf "Test result for SPI_DMA: $result_SPI_DMA\n"
+ if [[ $boardVersion = max32690 ]]
+ then
+ printf "Test result for SPI_v2_POLLING: $result_SPI_V2_POLLING\n"
+ printf "Test result for SPI_v2_INTERRUPT: $result_SPI_V2_INTERRUPT\n"
+ printf "Test result for SPI_v2_DMA: $result_SPI_V2_DMA\n"
+ fi
+ printf "Test result for ICC: $result_ICC\n"
+ printf "Test result for Hash: $result_Hash\n"
+ printf "Test result for DMA: $result_DMA\n"
+ printf "Test result for CRC: $result_CRC\n"
+ printf "Test result for ADC_POLLING: $result_ADC_POLLING\n"
+ printf "Test result for ADC_INTERRUPT: $result_ADC_INTERRUPT\n"
+ printf "Test result for ADC_DMA: $result_ADC_DMA\n"
+ printf "Test result for Library_Generate: $result_Lib_Gen\n"
+ printf "Test result for Library_Use: $result_Lib_Use\n"
+
+}
+
+function main() {
+ test_UART
+ if [[ $result_UART_INTERRUPT = 'fail' ]]
+ then
+ printf "Since UART INTERRUPT test fails, example test stops. "
+ return
+ fi
+ test_Hello_World
+ test_Hello_World_Cpp
+ test_TRNG
+ #test_I2C
+ test_SPI
+ if [[ $boardVersion = max32690 ]]
+ then
+ test_SPI_V2
+ fi
+ test_Hash
+ test_DMA
+ test_CRC
+ test_ADC
+ test_ICC
+ test_Lib_Gen
+ test_Lib_Use
+
+ summary
+ # clean the temp file
+ rm -rf $tempFile
+}
+
+main
+if [[ $result_UART_INTERRUPT = "fail" ||
+ $result_UART_DMA = "fail" ||
+ $result_HelloWorld = "fail" ||
+ $result_HelloWorld_Cpp = "fail" ||
+ $result_TRNG = "fail" ||
+ $result_I2C = "fail" ||
+ $result_SPI_POLLING = "fail" ||
+ $result_SPI_INTERRUPT = "fail" ||
+ $result_SPI_DMA = "fail" ||
+ $result_SPI_V2_POLLING = "fail" || # Only for max32690
+ $result_SPI_V2_INTERRUPT = "fail" || # Only for max32690
+ $result_SPI_V2_DMA = "fail" || # Only for max32690
+ $result_ICC = "fail" ||
+ $result_Hash = "fail" ||
+ $result_DMA = "fail" ||
+ $result_CRC = "fail" ||
+ $result_ADC_POLLING = "fail" ||
+ $result_ADC_INTERRUPT = "fail" ||
+ $result_ADC_DMA = "fail" ||
+ $result_Lib_Gen = "fail" ||
+ $result_Lib_Use = "fail" ]]; then
+ exit 2
+ else
+ exit 0
+fi
diff --git a/.gitignore b/.gitignore
index 85ab7ee4683..5ec3816451d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,6 @@ Examples/*/*/*/buildrv
.vscode/settings.json
Libraries/PeriphDrivers/Documentation/MAX*
Libraries/PeriphDrivers/bin
-docs
Documentation/Libraries
Documentation/res
Examples/MAX78000/PowerTest
@@ -38,3 +37,5 @@ node_modules
package-lock.json
package.json
.python-version
+mxc_version.h
+mxc_version.mk
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.cproject b/Examples/MAX32650/CLCD_FreeRTOS/.cproject
new file mode 100644
index 00000000000..51c0d16d047
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.cproject
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.project b/Examples/MAX32650/CLCD_FreeRTOS/.project
new file mode 100644
index 00000000000..9b781da479b
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.project
@@ -0,0 +1,26 @@
+
+
+ CLCD_FreeRTOS
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.settings/language.settings.xml b/Examples/MAX32650/CLCD_FreeRTOS/.settings/language.settings.xml
new file mode 100644
index 00000000000..d32717b6f37
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.settings/language.settings.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.codan.core.prefs b/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 00000000000..59c0b37ba75
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,93 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
+org.eclipse.cdt.codan.checkers.nocommentinside=-Error
+org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
+org.eclipse.cdt.codan.checkers.nolinecomment=-Error
+org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
+org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")"}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"}
+org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error
+org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Goto statement used\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"}
+org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false}
+org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing reference return value in assignment operator\\")"}
+org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing self check in assignment operator\\")"}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Using directive in header\\")"}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"}
+org.eclipse.cdt.qt.core.qtproblem=Warning
+org.eclipse.cdt.qt.core.qtproblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>true,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.core.prefs b/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.core.prefs
new file mode 100644
index 00000000000..1066cd0b35d
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.settings/org.eclipse.cdt.core.prefs
@@ -0,0 +1,15 @@
+eclipse.preferences.version=1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/BOARD/delimiter=;
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/BOARD/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/BOARD/value=EvKit_V1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/GCC_PREFIX/delimiter=;
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/GCC_PREFIX/operation=replace
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/GCC_PREFIX/value=arm-none-eabi-
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/PROJECT/delimiter=;
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/PROJECT/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/PROJECT/value=CLCD_FreeRTOS
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/TARGET/delimiter=;
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/TARGET/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/TARGET/value=MAX32650
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1028364529/appendContributed=true
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/README.md b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/README.md
new file mode 100644
index 00000000000..5b355bd51c9
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/README.md
@@ -0,0 +1,47 @@
+# VSCode-Maxim
+
+_(If you're viewing this document from within Visual Studio Code you can press `CTRL+SHIFT+V` to open a Markdown preview window.)_
+
+## Quick Links
+
+* [MSDK User Guide](https://analogdevicesinc.github.io/msdk/USERGUIDE/)
+* [VSCode-Maxim Github](https://github.com/analogdevicesinc/VSCode-Maxim)
+
+## Introduction
+
+VSCode-Maxim is a set of [Visual Studio Code](https://code.visualstudio.com/) project configurations and utilities for enabling embedded development for [Analog Device's MSDK](https://github.com/analogdevicesinc/msdk) and the [MAX32xxx/MAX78xxx microcontrollers](https://www.analog.com/en/product-category/microcontrollers.html).
+
+The following features are supported:
+
+* Code editing with intellisense down to the register level
+* Code compilation with the ability to easily re-target a project for different microcontrollers and boards
+* Flashing programs
+* GUI and command-line debugging
+
+## Dependencies
+
+* [Visual Studio Code](https://code.visualstudio.com/)
+ * [C/C++ VSCode Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
+ * [Cortex-Debug Extension](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug)
+* [Analog Devices MSDK](https://analogdevicesinc.github.io/msdk/)
+
+## Installation
+
+Install the MSDK, then set `"MAXIM_PATH"` in your _user_ VS Code settings.
+
+See [Getting Started with Visual Studio Code](https://analogdevicesinc.github.io/msdk/USERGUIDE/#getting-started-with-visual-studio-code) in the MSDK User Guide for detailed instructions.
+
+## Usage
+
+See the [MSDK User Guide](https://analogdevicesinc.github.io/msdk/USERGUIDE/#visual-studio-code) for detailed usage info.
+
+## Issue Tracker
+
+Bug reports, feature requests, and contributions are welcome via the [issues](https://github.com/analogdevicesinc/VSCode-Maxim/issues) tracker on Github.
+
+New issues should contain _at minimum_ the following information:
+
+* Visual Studio Code version #s (see `Help -> About`)
+* C/C++ Extension version #
+* Target microcontroller and evaluation platform
+* The projects `.vscode` folder and `Makefile` (where applicable). Standard compression formats such as `.zip`, `.rar`, `.tar.gz`, etc. are all acceptable.
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/c_cpp_properties.json b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/c_cpp_properties.json
new file mode 100644
index 00000000000..b043b809363
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/c_cpp_properties.json
@@ -0,0 +1,55 @@
+{
+ "configurations": [
+ {
+ "name": "windows-gcc-x64",
+ "includePath": [
+ "${workspaceFolder}/**"
+ ],
+ "defines": [
+ "${default}"
+ ],
+ "intelliSenseMode": "windows-gcc-x64",
+ "compilerPath": "C:/msys64/mingw64/bin/gcc.exe",
+ "browse": {
+ "path": [
+ "${default}"
+ ]
+ },
+ "cStandard": "${default}",
+ "cppStandard": "${default}"
+ },
+ {
+ "name": "Linux",
+ "includePath": [
+ "${default}"
+ ],
+ "defines": [
+ "${default}"
+ ],
+ "intelliSenseMode": "gcc-arm",
+ "compilerPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gcc",
+ "browse": {
+ "path": [
+ "${default}"
+ ]
+ }
+ },
+ {
+ "name": "Mac",
+ "includePath": [
+ "${default}"
+ ],
+ "defines": [
+ "${default}"
+ ],
+ "intelliSenseMode": "gcc-arm",
+ "compilerPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gcc",
+ "browse": {
+ "path": [
+ "${default}"
+ ]
+ }
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/flash.gdb b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/flash.gdb
new file mode 100644
index 00000000000..8f22801a47d
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/flash.gdb
@@ -0,0 +1,17 @@
+define flash_m4
+ set architecture armv7e-m
+ set remotetimeout 10
+ target remote | openocd -c "gdb_port pipe;log_output flash.log" -s $arg0/scripts -f interface/$arg1 -f target/$arg2 -c "init; reset halt"
+ load
+ compare-sections
+ monitor reset halt
+end
+
+define flash_m4_run
+ set architecture armv7e-m
+ set remotetimeout 10
+ target remote | openocd -c "gdb_port pipe;log_output flash.log" -s $arg0/scripts -f interface/$arg1 -f target/$arg2 -c "init; reset halt"
+ load
+ compare-sections
+ monitor resume
+end
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/launch.json b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/launch.json
new file mode 100644
index 00000000000..c3d7a82a4d7
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/launch.json
@@ -0,0 +1,209 @@
+{
+ "configurations": [
+ {
+ "name": "Debug Arm (Cortex-debug)",
+ "cwd": "${workspaceRoot}",
+ "executable": "${workspaceFolder}/build/${config:program_file}",
+ "loadFiles": [
+ "${workspaceFolder}/build/${config:program_file}"
+ ],
+ "symbolFiles": [
+ {
+ "file": "${workspaceFolder}/build/${config:symbol_file}"
+ }
+ ],
+ "request": "launch",
+ "type": "cortex-debug",
+ "servertype": "openocd",
+ "linux": {
+ "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
+ "serverpath": "${config:OCD_path}/openocd"
+ },
+ "windows": {
+ "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb.exe",
+ "serverpath": "${config:OCD_path}/openocd.exe"
+ },
+ "osx": {
+ "gdbPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
+ "serverpath": "${config:OCD_path}/openocd"
+ },
+ "searchDir": [
+ "${config:OCD_path}/scripts"
+ ],
+ "configFiles": [
+ "interface/${config:M4_OCD_interface_file}",
+ "target/${config:M4_OCD_target_file}"
+ ],
+ "interface": "swd",
+ "runToEntryPoint": "main",
+ "svdFile": "${config:MAXIM_PATH}/Libraries/CMSIS/Device/Maxim/${config:target}/Include/${config:target}.svd"
+ },
+ {
+ "name": "GDB (Arm M4)",
+ "type": "cppdbg",
+ "request": "launch",
+ "program": "${workspaceFolder}/build/${config:program_file}",
+ "args": [],
+ "stopAtEntry": true,
+ "cwd": "${workspaceFolder}",
+ "environment": [],
+ "externalConsole": false,
+ "MIMode": "gdb",
+ "linux": {
+ "miDebuggerPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
+ "debugServerPath": "${config:OCD_path}/openocd"
+ },
+ "windows": {
+ "miDebuggerPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb.exe",
+ "debugServerPath": "${config:OCD_path}/openocd.exe"
+ },
+ "osx": {
+ "miDebuggerPath": "${config:ARM_GCC_path}/bin/arm-none-eabi-gdb",
+ "debugServerPath": "${config:OCD_path}/bin/openocd"
+ },
+ "logging": {
+ "exceptions": true,
+ "trace": false,
+ "traceResponse": false,
+ "engineLogging": false
+ },
+ "miDebuggerServerAddress": "localhost:3333",
+ "debugServerArgs": "-s ${config:OCD_path}/scripts -f interface/${config:M4_OCD_interface_file} -f target/${config:M4_OCD_target_file} -c \"init; reset halt\"",
+ "serverStarted": "Info : Listening on port 3333 for gdb connections",
+ "filterStderr": true,
+ "targetArchitecture": "arm",
+ "customLaunchSetupCommands": [
+ {
+ "text": "-list-features"
+ }
+ ],
+ "setupCommands": [
+ {
+ "text": "set logging overwrite on"
+ },
+ {
+ "text": "set logging file debug-arm.log"
+ },
+ {
+ "text": "set logging on"
+ },
+ {
+ "text": "cd ${workspaceFolder}"
+ },
+ {
+ "text": "exec-file build/${config:program_file}"
+ },
+ {
+ "text": "symbol-file build/${config:symbol_file}"
+ },
+ {
+ "text": "target remote localhost:3333"
+ },
+ {
+ "text": "monitor reset halt"
+ },
+ {
+ "text": "set $pc=Reset_Handler"
+ },
+ {
+ "text": "b main"
+ }
+ ]
+ },
+ {
+ "name": "GDB (RISC-V)",
+ "type": "cppdbg",
+ "request": "launch",
+ "program": "${workspaceFolder}/buildrv/${config:program_file}",
+ "args": [],
+ "stopAtEntry": false,
+ "cwd": "${workspaceFolder}",
+ "environment": [],
+ "externalConsole": false,
+ "MIMode": "gdb",
+ "linux": {
+ "miDebuggerPath": "${config:xPack_GCC_path}/bin/riscv-none-elf-gdb",
+ "debugServerPath": "${config:OCD_path}/openocd"
+ },
+ "windows": {
+ "miDebuggerPath": "${config:xPack_GCC_path}/bin/riscv-none-elf-gdb.exe",
+ "debugServerPath": "${config:OCD_path}/openocd.exe"
+ },
+ "osx": {
+ "miDebuggerPath": "${config:xPack_GCC_path}/bin/riscv-none-elf-gdb",
+ "debugServerPath": "${config:OCD_path}/bin/openocd"
+ },
+ "logging": {
+ "exceptions": true,
+ "trace": false,
+ "traceResponse": false,
+ "engineLogging": false
+ },
+ "miDebuggerServerAddress": "localhost:3334",
+ "debugServerArgs": "-c \"gdb_port 3334\" -s ${config:OCD_path}/scripts -f interface/${config:RV_OCD_interface_file} -f target/${config:RV_OCD_target_file}",
+ "serverStarted": "Info : Listening on port 3334 for gdb connections",
+ "filterStderr": true,
+ "customLaunchSetupCommands": [
+ {
+ "text": "-list-features"
+ }
+ ],
+ "targetArchitecture": "arm",
+ "setupCommands": [
+ {
+ "text": "set logging overwrite on"
+ },
+ {
+ "text": "set logging file debug-riscv.log"
+ },
+ {
+ "text": "set logging on"
+ },
+ {
+ "text": "cd ${workspaceFolder}"
+ },
+ {
+ "text": "set architecture riscv:rv32",
+ "ignoreFailures": false
+ },
+ {
+ "text": "exec-file build/${config:program_file}",
+ "ignoreFailures": false
+ },
+ {
+ "text": "symbol-file buildrv/${config:symbol_file}",
+ "ignoreFailures": false
+ },
+ {
+ "text": "target remote localhost:3334"
+ },
+ {
+ "text": "b main"
+ },
+ {
+ "text": "set $pc=Reset_Handler",
+ "ignoreFailures": false
+ }
+ ]
+ },
+ {
+ "name": "C/C++ Runner: Debug Session",
+ "type": "cppdbg",
+ "request": "launch",
+ "args": [],
+ "stopAtEntry": false,
+ "externalConsole": true,
+ "cwd": "c:/Workspace/MSDK_Development/brentk-adi-fork/Examples/MAX32650/CLCD_FreeRTOS",
+ "program": "c:/Workspace/MSDK_Development/brentk-adi-fork/Examples/MAX32650/CLCD_FreeRTOS/build/Debug/outDebug",
+ "MIMode": "gdb",
+ "miDebuggerPath": "gdb",
+ "setupCommands": [
+ {
+ "description": "Enable pretty-printing for gdb",
+ "text": "-enable-pretty-printing",
+ "ignoreFailures": true
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/settings.json b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/settings.json
new file mode 100644
index 00000000000..ae20d60e51c
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/settings.json
@@ -0,0 +1,138 @@
+{
+ "terminal.integrated.env.windows": {
+ "Path": "${config:OCD_path};${config:ARM_GCC_path}/bin;${config:xPack_GCC_path}/bin;${config:MSYS_path}/usr/bin;${config:Make_path};${env:PATH}",
+ "MAXIM_PATH": "${config:MAXIM_PATH}"
+ },
+ "terminal.integrated.defaultProfile.windows": "Command Prompt",
+ "terminal.integrated.env.linux": {
+ "PATH": "${config:OCD_path}:${config:ARM_GCC_path}/bin:${config:xPack_GCC_path}/bin:${config:Make_path}:${env:PATH}",
+ "MAXIM_PATH": "${config:MAXIM_PATH}"
+ },
+ "terminal.integrated.env.osx": {
+ "PATH": "${config:OCD_path}/bin:${config:ARM_GCC_path}/bin:${config:xPack_GCC_path}/bin:${config:Make_path}:${env:PATH}",
+ "MAXIM_PATH": "${config:MAXIM_PATH}"
+ },
+ "target": "MAX32650",
+ "board": "EvKit_V1",
+ "project_name": "${workspaceFolderBasename}",
+ "program_file": "${config:project_name}.elf",
+ "symbol_file": "${config:program_file}",
+ "M4_OCD_interface_file": "cmsis-dap.cfg",
+ "M4_OCD_target_file": "max32650.cfg",
+ "RV_OCD_interface_file": "ftdi/olimex-arm-usb-ocd-h.cfg",
+ "RV_OCD_target_file": "${config:target}_riscv.cfg",
+ "v_Arm_GCC": "10.3",
+ "v_xPack_GCC": "12.2.0-3.1",
+ "OCD_path": "${config:MAXIM_PATH}/Tools/OpenOCD",
+ "ARM_GCC_path": "${config:MAXIM_PATH}/Tools/GNUTools/${config:v_Arm_GCC}",
+ "xPack_GCC_path": "${config:MAXIM_PATH}/Tools/xPack/riscv-none-elf-gcc/${config:v_xPack_GCC}",
+ "Make_path": "${config:MAXIM_PATH}/Tools/GNUTools/Make",
+ "MSYS_path": "${config:MAXIM_PATH}/Tools/MSYS2",
+ "C_Cpp.default.includePath": [
+ "${workspaceFolder}",
+ "${workspaceFolder}/**",
+ "${config:MAXIM_PATH}/Libraries/Boards/${config:target}/Include",
+ "${config:MAXIM_PATH}/Libraries/Boards/${config:target}/${config:board}/Include",
+ "${config:MAXIM_PATH}/Libraries/CMSIS/Device/Maxim/${config:target}/Include",
+ "${config:MAXIM_PATH}/Libraries/CMSIS/Include",
+ "${config:ARM_GCC_path}/arm-none-eabi/include",
+ "${config:ARM_GCC_path}/lib/gcc/arm-none-eabi/${config:v_Arm_GCC}/include",
+ "${config:MAXIM_PATH}/Libraries/PeriphDrivers/Include/${config:target}",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Camera",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Display",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Display/fonts",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/ExtMemory",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/LED",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/PMIC",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/PushButton",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Touchscreen",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source/include",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM4F",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source/portable/GCC/RISC-V"
+ ],
+ "C_Cpp.default.browse.path": [
+ "${workspaceFolder}",
+ "${config:MAXIM_PATH}/Libraries/Boards/${config:target}/Source",
+ "${config:MAXIM_PATH}/Libraries/Boards/${config:target}/${config:board}/Source",
+ "${config:MAXIM_PATH}/Libraries/PeriphDrivers/Source",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Camera",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Display",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Display/fonts",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/LED",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/PMIC",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/PushButton",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers/Touchscreen",
+ "${config:MAXIM_PATH}/Libraries/MiscDrivers",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM4F",
+ "${config:MAXIM_PATH}/Libraries/FreeRTOS/Source/portable/GCC/RISC-V"
+ ],
+ "C_Cpp.default.defines": [],
+ "C_Cpp.default.forcedInclude": [
+ "${workspaceFolder}/build/project_defines.h"
+ ],
+ "C_Cpp_Runner.cCompilerPath": "gcc",
+ "C_Cpp_Runner.cppCompilerPath": "g++",
+ "C_Cpp_Runner.debuggerPath": "gdb",
+ "C_Cpp_Runner.cStandard": "",
+ "C_Cpp_Runner.cppStandard": "",
+ "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
+ "C_Cpp_Runner.useMsvc": false,
+ "C_Cpp_Runner.warnings": [
+ "-Wall",
+ "-Wextra",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wformat=2",
+ "-Wcast-align",
+ "-Wconversion",
+ "-Wsign-conversion",
+ "-Wnull-dereference"
+ ],
+ "C_Cpp_Runner.msvcWarnings": [
+ "/W4",
+ "/permissive-",
+ "/w14242",
+ "/w14287",
+ "/w14296",
+ "/w14311",
+ "/w14826",
+ "/w44062",
+ "/w44242",
+ "/w14905",
+ "/w14906",
+ "/w14263",
+ "/w44265",
+ "/w14928"
+ ],
+ "C_Cpp_Runner.enableWarnings": true,
+ "C_Cpp_Runner.warningsAsError": false,
+ "C_Cpp_Runner.compilerArgs": [],
+ "C_Cpp_Runner.linkerArgs": [],
+ "C_Cpp_Runner.includePaths": [],
+ "C_Cpp_Runner.includeSearch": [
+ "*",
+ "**/*"
+ ],
+ "C_Cpp_Runner.excludeSearch": [
+ "**/build",
+ "**/build/**",
+ "**/.*",
+ "**/.*/**",
+ "**/.vscode",
+ "**/.vscode/**"
+ ],
+ "C_Cpp_Runner.useAddressSanitizer": false,
+ "C_Cpp_Runner.useUndefinedSanitizer": false,
+ "C_Cpp_Runner.useLeakSanitizer": false,
+ "C_Cpp_Runner.showCompilationTime": false,
+ "C_Cpp_Runner.useLinkTimeOptimization": false,
+ "C_Cpp_Runner.msvcSecureNoWarnings": false,
+ "files.associations": {
+ "usagetrace.h": "c",
+ "core_cm4.h": "c",
+ "lcd_task.h": "c"
+ }
+}
\ No newline at end of file
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/.vscode/tasks.json b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/tasks.json
new file mode 100644
index 00000000000..e95445e2b3e
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/.vscode/tasks.json
@@ -0,0 +1,115 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build",
+ "type": "shell",
+ "command": "make -r -j 8 --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}",
+ "osx":{
+ "command": "source ~/.zshrc && make -r -j 8 --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}"
+ },
+ "group": "build",
+ "problemMatcher": []
+ },
+ {
+ "label": "clean",
+ "type": "shell",
+ "command": "make -j 8 clean --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}",
+ "osx":{
+ "command": "source ~/.zshrc && make -j 8 clean --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}"
+ },
+ "group": "build",
+ "problemMatcher": []
+ },
+ {
+ "label": "clean-periph",
+ "type": "shell",
+ "command": "make -j 8 distclean --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}",
+ "osx":{
+ "command": "source ~/.zshrc && make -j 8 distclean --output-sync=target --no-print-directory TARGET=${config:target} BOARD=${config:board} MAXIM_PATH=${config:MAXIM_PATH} MAKE=make PROJECT=${config:project_name}"
+ },
+ "group": "build",
+ "problemMatcher": []
+ },
+ {
+ "label": "flash",
+ "type": "shell",
+ "command": "arm-none-eabi-gdb",
+ "args": [
+ "--cd=\"${workspaceFolder}\"",
+ "--se=\"build/${config:program_file}\"",
+ "--symbols=build/${config:symbol_file}",
+ "-x=\"${workspaceFolder}/.vscode/flash.gdb\"",
+ "--ex=\"flash_m4 ${config:OCD_path} ${config:M4_OCD_interface_file} ${config:M4_OCD_target_file}\"",
+ "--batch"
+ ],
+ "group": "build",
+ "problemMatcher": [],
+ "dependsOn":["build"]
+ },
+ {
+ "label": "flash & run",
+ "type": "shell",
+ "command": "arm-none-eabi-gdb",
+ "args": [
+ "--cd=\"${workspaceFolder}\"",
+ "--se=\"build/${config:program_file}\"",
+ "--symbols=build/${config:symbol_file}",
+ "-x=\"${workspaceFolder}/.vscode/flash.gdb\"",
+ "--ex=\"flash_m4_run ${config:OCD_path} ${config:M4_OCD_interface_file} ${config:M4_OCD_target_file}\"",
+ "--batch"
+ ],
+ "group": "build",
+ "problemMatcher": [],
+ "dependsOn":["build"]
+ },
+ {
+ "label": "erase flash",
+ "type": "shell",
+ "command": "openocd",
+ "args": [
+ "-s", "${config:OCD_path}/scripts",
+ "-f", "interface/${config:M4_OCD_interface_file}",
+ "-f", "target/${config:M4_OCD_target_file}",
+ "-c", "\"init; reset halt; max32xxx mass_erase 0;\"",
+ "-c", "exit"
+ ],
+ "group":"build",
+ "problemMatcher": [],
+ "dependsOn":[]
+ },
+ {
+ "label": "openocd (m4)",
+ "type": "shell",
+ "command": "openocd",
+ "args": [
+ "-s",
+ "${config:OCD_path}/scripts",
+ "-f",
+ "interface/${config:M4_OCD_interface_file}",
+ "-f",
+ "target/${config:M4_OCD_target_file}",
+ "-c",
+ "\"init; reset halt\""
+ ],
+ "problemMatcher": [],
+ "dependsOn":[]
+ },
+ {
+ "label": "gdb (m4)",
+ "type": "shell",
+ "command": "arm-none-eabi-gdb",
+ "args": [
+ "--ex=\"cd ${workspaceFolder}\"",
+ "--se=\"build/${config:program_file}\"",
+ "--symbols=build/${config:symbol_file}",
+ "--ex=\"target remote localhost:3333\"",
+ "--ex=\"monitor reset halt\"",
+ "--ex=\"b main\"",
+ "--ex=\"c\""
+ ],
+ "problemMatcher": [],
+ "dependsOn":[]
+ },
+ ]
+}
\ No newline at end of file
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/CLCD_FreeRTOS.launch b/Examples/MAX32650/CLCD_FreeRTOS/CLCD_FreeRTOS.launch
new file mode 100644
index 00000000000..5967931ccf3
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/CLCD_FreeRTOS.launch
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOSConfig.h b/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOSConfig.h
new file mode 100644
index 00000000000..5e0cfa4b534
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOSConfig.h
@@ -0,0 +1,110 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+
+#ifndef EXAMPLES_MAX32650_CLCD_FREERTOS_FREERTOSCONFIG_H_
+#define EXAMPLES_MAX32650_CLCD_FREERTOS_FREERTOSCONFIG_H_
+
+#include
+#include "max32650.h"
+
+/*-----------------------------------------------------------
+ * Application specific definitions.
+ *
+ * These definitions should be adjusted for your particular hardware and
+ * application requirements.
+ *
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
+ *
+ * See http://www.freertos.org/a00110.html.
+ *----------------------------------------------------------*/
+
+/* Ensure definitions are only used by the compiler, and not by the assembler. */
+#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
+extern uint32_t SystemCoreClock;
+#endif
+
+#define configCPU_CLOCK_HZ (SystemCoreClock)
+
+#define configTICK_RATE_HZ ((portTickType)1000)
+#define configRTC_TICK_RATE_HZ (32768)
+
+#define configTOTAL_HEAP_SIZE ((size_t)(16 * 1024))
+
+#define configMINIMAL_STACK_SIZE ((uint16_t)128)
+
+#define configMAX_PRIORITIES 5
+#define configUSE_PREEMPTION 1
+#define configUSE_IDLE_HOOK 0
+#define configUSE_TICK_HOOK 0
+#define configUSE_CO_ROUTINES 0
+#define configUSE_16_BIT_TICKS 0
+#define configUSE_MUTEXES 1
+
+/* Run time and task stats gathering related definitions. */
+#define configUSE_TRACE_FACILITY 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+#define INCLUDE_vTaskPrioritySet 0
+#define INCLUDE_vTaskDelete 0
+#define INCLUDE_vTaskSuspend 1
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_uxTaskPriorityGet 0
+#define INCLUDE_vTaskDelay 1
+
+/* # of priority bits (configured in hardware) is provided by CMSIS */
+#define configPRIO_BITS __NVIC_PRIO_BITS
+
+/* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */
+#define configKERNEL_INTERRUPT_PRIORITY ((unsigned char)7 << (8 - configPRIO_BITS))
+
+/* Priority 5, or 160 as only the top three bits are implemented. */
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY ((unsigned char)5 << (8 - configPRIO_BITS))
+
+/* Alias the default handler names to match CMSIS weak symbols */
+#define vPortSVCHandler SVC_Handler
+#define xPortPendSVHandler PendSV_Handler
+#define xPortSysTickHandler SysTick_Handler
+
+/* FreeRTOS+CLI requires this size to be defined, but we do not use it */
+#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1
+
+// MSDK Debug flags
+#if defined(DEBUG) && DEBUG == 1
+// RTOS Stats Timer Functions
+extern void ConfigTimerForStats(void);
+extern uint32_t GetTimerForStats(void);
+#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() (ConfigTimerForStats())
+#define portGET_RUN_TIME_COUNTER_VALUE() (GetTimerForStats())
+#define configGENERATE_RUN_TIME_STATS 1
+
+// RTOS Assert & other debug configuration
+#define configASSERT(x) \
+ if ((x) == 0) { \
+ taskDISABLE_INTERRUPTS(); \
+ for (;;) {} \
+ }
+#define configENABLE_BACKWARD_COMPATIBILITY 1
+#define configQUEUE_REGISTRY_SIZE 10
+#define configRECORD_STACK_HIGH_ADDRESS 1
+
+#endif
+
+#endif //EXAMPLES_MAX32650_CLCD_FREERTOS_FREERTOSCONFIG_H_
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOS_Debug.c b/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOS_Debug.c
new file mode 100644
index 00000000000..b6576a27223
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/FreeRTOS_Debug.c
@@ -0,0 +1,124 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+
+/**
+ * @file FreeRTOS_Debug.c
+ * @brief FreeRTOS Debug utilities including RTOS Stats Timer
+ * and template HardFault Handler
+ */
+
+#include "FreeRTOS.h"
+#include "task.h"
+#include "tmr.h"
+#include "nvic_table.h"
+
+// Only include the contents of this file if DEBUG == 1
+#if defined(DEBUG) && (DEBUG == 1)
+
+// Scheduler tick is 1ms
+// RTOS Stats Clock should be 10-100x faster
+// MAX32650 Timers are based on PCLK. Prescale 1024 = 58kHz
+#define RTOS_STATS_TMR MXC_TMR0
+#define RTOS_STATS_TMR_PSCALE MXC_TMR_PRES_1024
+#define RTOS_STATS_TMR_CNT 0xFFFFFFFF
+
+/** NOTE:
+ * Based on this configuration, this timer will roll over after 2^32 / (TMR_SRC / prescaler) seconds.
+ * Because the RTOS tracks the total time, rollover events cannot be protected by the application.
+ * Thus, rollover events will affect statistics over long periods of measurement.
+ **/
+void ConfigTimerForStats()
+{
+ mxc_tmr_cfg_t tmr;
+
+ MXC_TMR_Shutdown(RTOS_STATS_TMR);
+
+ tmr.pres = RTOS_STATS_TMR_PSCALE;
+ tmr.mode = TMR_MODE_CONTINUOUS;
+ tmr.cmp_cnt = RTOS_STATS_TMR_CNT;
+ tmr.pol = 0;
+ MXC_TMR_Init(RTOS_STATS_TMR, &tmr);
+
+ MXC_TMR_Start(RTOS_STATS_TMR);
+}
+
+uint32_t GetTimerForStats()
+{
+ return MXC_TMR_GetCount(RTOS_STATS_TMR);
+}
+
+/* For this debugging function, the register values are loaded into variables
+ * to be viewed in a debugging context easier. The compiler will complain if
+ * warnings are enabled, so disable those warnings just for this function
+ * to filter out build notifications
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+void prvGetRegistersFromStack(uint32_t *pulFaultStackAddress)
+{
+ /* These are volatile to try and prevent the compiler/linker optimising them
+ away as the variables never actually get used. If the debugger won't show the
+ values of the variables, make them global my moving their declaration outside
+ of this function. */
+ volatile uint32_t r0;
+ volatile uint32_t r1;
+ volatile uint32_t r2;
+ volatile uint32_t r3;
+ volatile uint32_t r12;
+ volatile uint32_t lr; /* Link register. */
+ volatile uint32_t pc; /* Program counter. */
+ volatile uint32_t psr; /* Program status register. */
+
+ r0 = pulFaultStackAddress[0];
+ r1 = pulFaultStackAddress[1];
+ r2 = pulFaultStackAddress[2];
+ r3 = pulFaultStackAddress[3];
+
+ r12 = pulFaultStackAddress[4];
+ lr = pulFaultStackAddress[5];
+ pc = pulFaultStackAddress[6];
+ psr = pulFaultStackAddress[7];
+
+ /* When the following line is hit, the variables contain the register values. */
+ for (;;) {}
+}
+#pragma GCC diagnostic pop
+
+void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName)
+{
+ for (;;) {}
+}
+
+/* The prototype shows it is a naked function - in effect this is just an
+assembly function. */
+void HardFault_Handler(void) __attribute__((naked, aligned(8)));
+
+/* The fault handler implementation calls a function called
+prvGetRegistersFromStack(). */
+void HardFault_Handler(void)
+{
+ __asm volatile(" tst lr, #4 \n"
+ " ite eq \n"
+ " mrseq r0, msp \n"
+ " mrsne r0, psp \n"
+ " ldr r1, [r0, #24] \n"
+ " ldr r2, handler2_address_const \n"
+ " bx r2 \n"
+ " handler2_address_const: .word prvGetRegistersFromStack \n");
+}
+#endif
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.c b/Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.c
new file mode 100644
index 00000000000..0fe9b161949
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.c
@@ -0,0 +1,360 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+#include
+#include
+#include
+#include
+
+#include "FreeRTOS.h"
+#include "FreeRTOSConfig.h"
+#include "portable.h"
+#include "semphr.h"
+#include "task.h"
+
+#include "clcd.h"
+#include "clcd_regs.h"
+#include "nvic_table.h"
+
+#include "LCD_Task.h"
+#include "UsageTrace.h"
+
+/* Update rate for the frame buffer. This drives the FreeRTOS delay time */
+#define FRAME_RATE_MS (1000 / 3)
+
+/* Panel information */
+#define PANEL_W 320
+#define PANEL_H 240
+
+/* Helper constant for drawing colors bars */
+#define COLOR_BAR_COUNT 8
+
+/* FreeRTOS task handle */
+static TaskHandle_t lcdTask;
+
+/* Slightly different operation if double buffering is enabled. Double buffering
+ * should eliminate any flickering related to drawing while the display is
+ * updating, at the cost of an additional frame buffer
+ *
+ * The variable activeFrame is used for both single and double buffering by the
+ * task to make code portable
+ */
+#ifdef LCD_DOUBLE_BUFFER
+/* Support for double buffering, Has 2 frame buffers, controlled via a FreeRTOS
+ * semaphore to ensure frames aren't redrawn mid-update
+ */
+static uint32_t frameBuffer[2][PANEL_W * PANEL_H] __attribute__((aligned(32)));
+static uint32_t *activeFrame; //Frame active for drawing
+static uint32_t *runningFrame; //Frame running in the controller
+static SemaphoreHandle_t newFrameSem; //Sem that a new frame is ready to show
+static SemaphoreHandle_t emptyFrameSem; //Sem that a buffer is avail to draw
+#else
+/* Frame buffer
+ * Note: This assumes 24-bits per pixel, word packed to 32. For other bit-depts
+ * or palletized colors, this buffer will need to change type and/or size.
+ * However, the 32-bit alignment is required by the peripheral
+ */
+static uint32_t activeFrame[PANEL_W * PANEL_H] __attribute__((aligned(32)));
+#endif
+
+/* Local Prototypes */
+static void LCD_TaskBody(void *pvParameters);
+static void LCD_DrawColorBars(uint32_t *buf);
+static void LCD_DrawTaskStats(uint32_t *buf);
+static void LCD_DrawTextString(uint32_t *buf, const char *str, uint32_t color);
+static int LCD_DrawCharacter(uint32_t *buf, char ch, uint32_t color);
+static void LCD_ISR_Handler(void);
+
+/**
+ * Initializes the LCD task. Configures the LCD peripheral for the panel and
+ * kicks off the FreeRTOS task.
+*/
+void LCD_TaskInitialize()
+{
+ mxc_clcd_cfg_t panel;
+
+ panel.width = PANEL_W; //Set the size of the panel in pixels
+ panel.height = PANEL_H; //Set the width of the panel in pixels
+ panel.frequency = 6400000; //minimum panel supported frequency
+ panel.vfrontporch = 2;
+ panel.vbackporch = 2;
+ panel.vsyncwidth = 10;
+ panel.hfrontporch = 12;
+ panel.hbackporch = 2;
+ panel.hsyncwidth = 70;
+ panel.bpp = MXC_BPP24; //24-bit per pixel
+ panel.palette = NULL; //Only palletized for lower bit depths
+ panel.paletteSize = 0;
+
+ //Initialize the peripheral
+ MXC_CLCD_Init(&panel);
+
+#ifdef LCD_DOUBLE_BUFFER
+ /* For double buffering, create the semaphores and initialize the empty
+ * frame as available to draw, and the newFrame as not yet ready
+ */
+ newFrameSem = xSemaphoreCreateBinary();
+ emptyFrameSem = xSemaphoreCreateBinary();
+ xSemaphoreTake(newFrameSem, 0);
+ xSemaphoreGive(emptyFrameSem);
+ activeFrame = frameBuffer[0];
+ runningFrame = frameBuffer[1];
+ memset(runningFrame, 0, sizeof(uint32_t) * PANEL_W * PANEL_H);
+ MXC_CLCD_SetFrameAddr((void *)runningFrame);
+
+ //Setup the system to get interrupts from the LCD
+ MXC_NVIC_SetVector(LCD_IRQn, LCD_ISR_Handler);
+ NVIC_SetPriority(LCD_IRQn, configMAX_PRIORITIES);
+ NVIC_EnableIRQ(LCD_IRQn);
+
+ //Set interrupts on Address Ready
+ MXC_CLCD->int_en = MXC_S_CLCD_INT_EN_ADDR_RDY_IE_EN;
+#else
+ memset(activeFrame, 0, sizeof(uint32_t) * PANEL_W * PANEL_H);
+ MXC_CLCD_SetFrameAddr((void *)activeFrame);
+#endif
+
+ //Enable the CLCD to display the image
+ MXC_CLCD_Enable();
+
+ //Create the LCD task
+ xTaskCreate(LCD_TaskBody, (const char *)"LCD", 1024, NULL, tskIDLE_PRIORITY + 2, &lcdTask);
+}
+
+/**
+ * Task body for the LCD task. Periodically draw the updated display.
+*/
+void LCD_TaskBody(void *pvParameters)
+{
+ while (1) //Loop forever
+ {
+//When double buffering, need to wait for a frame to be ready
+#ifdef LCD_DOUBLE_BUFFER
+ xSemaphoreTake(emptyFrameSem, portMAX_DELAY);
+#endif
+
+ //Track time spent here
+ _UsageTraceStart();
+
+#if defined(LCD_DISP_COLORBARS)
+ LCD_DrawColorBars(activeFrame);
+#elif defined(LCD_DISP_TASK_STATS)
+ LCD_DrawTaskStats(activeFrame);
+#else
+//You can add your own drawing routine here
+#error "No Display type defined"
+#endif
+
+ //Track time spent here
+ _UsageTraceEnd();
+
+//When double buffering, notify of a new frame ready
+#ifdef LCD_DOUBLE_BUFFER
+ xSemaphoreGive(newFrameSem);
+#endif
+
+ //Delay until the next frame. This will give us a close match to the
+ //desired frame rate. Because of the time it takes to actually do the
+ //drawing, we'll be a bit slower. A more exact implementation would use
+ //a timer and have this task wake up at the frame rate period, versus
+ //delaying
+ vTaskDelay(FRAME_RATE_MS / portTICK_PERIOD_MS);
+ }
+}
+
+/**
+ * Interrupt handler for the LCD. This specifically looks for the Address ready
+ * bit, and if a new frame is available does a buffer swap
+*/
+static void LCD_ISR_Handler()
+{
+ //Get and clear all the flags
+ uint32_t flags = MXC_CLCD->int_stat;
+ MXC_CLCD->int_stat = flags;
+
+#ifdef LCD_DOUBLE_BUFFER
+ BaseType_t higherPriorityWoken = 0;
+ uint32_t *tempAddr;
+ if (flags & MXC_F_CLCD_INT_STAT_ADDR_RDY) //Address is available for update
+ {
+ //Try to take a new frame semaphore, only swap frames if successful
+ if (xSemaphoreTakeFromISR(newFrameSem, &higherPriorityWoken) == pdTRUE) {
+ tempAddr = runningFrame;
+ runningFrame = activeFrame;
+ MXC_CLCD_SetFrameAddr((void *)runningFrame);
+ activeFrame = tempAddr;
+
+ //Let the task know they can draw on activeFrame again
+ xSemaphoreGiveFromISR(emptyFrameSem, &higherPriorityWoken);
+ }
+ }
+#endif
+}
+
+#ifdef LCD_DISP_TASK_STATS
+/* Buffer for holding task information.
+ * FreeRTOS recommends 40 chars per task. Arbitrarily assume 20 tasks or less
+ */
+#define MAX_TASK_STATUS 20
+static char taskStatusBuf[MAX_TASK_STATUS * 40];
+
+/* Grab the font from the MSDK's Provided Library */
+extern const unsigned char Liberation_Sans16x16[];
+
+/**
+ * Helper for accessing font data. For the 16x16 font, the first byte is the
+ * width of the character in pixels, following by 16, 16-bitmapped vertical
+ * columns
+ */
+#pragma pack(1)
+typedef struct {
+ uint8_t width;
+ uint16_t vertPixels[16];
+} font16x16_helper_t;
+#pragma pack()
+
+/* The Font table in the .C has 4 bytes of header info, skip ahead to the chars */
+static const font16x16_helper_t *fontTable = (font16x16_helper_t *)&(Liberation_Sans16x16[4]);
+
+/**
+ * Draws the task statistics from FreeRTOS onto the screen based on the data
+ * provided by vTaskGetRunTimeStats()
+ *
+ * It is assumed the buf
+ * pointer is the correct depth and size per the PANEL_W and PANEL_H constants.
+ *
+ * @param buf - Frame buffer to draw
+ */
+static void LCD_DrawTaskStats(uint32_t *buf)
+{
+ //Clean slate. Could be smarter here an just erase area's we've touched
+ memset(buf, 0, sizeof(uint32_t) * PANEL_W * PANEL_H);
+
+ snprintf(taskStatusBuf, sizeof(taskStatusBuf), "Tick Count: %u", xTaskGetTickCount());
+ LCD_DrawTextString(buf + (PANEL_W * 5), taskStatusBuf, 0xFFFFFFFF);
+ vTaskGetRunTimeStats(taskStatusBuf);
+ LCD_DrawTextString(buf + (PANEL_W * 22), taskStatusBuf, 0xFFFFFFFF);
+}
+
+/**
+ * Draws a string of text on the display. Buf represents the upper left corner
+ * of the display to draw. Will automatically jump lines when a '\n' is
+ * seen. Loops until a '\0' is found.
+ *
+ * @param buf - Buffer to draw into
+ * @param str - String to draw
+ * @param color - Color to use
+*/
+static void LCD_DrawTextString(uint32_t *buf, const char *str, uint32_t color)
+{
+ uint32_t *workingBuf = buf;
+ uint32_t *lineStart = buf;
+ while (*str != '\0') {
+ if (*str == '\n') {
+ lineStart += PANEL_W * 17;
+ workingBuf = lineStart;
+ } else {
+ workingBuf += LCD_DrawCharacter(workingBuf, *str, color) + 1;
+ }
+ str++;
+ }
+}
+
+/**
+ * Draws a character on the location of the screen. Buf is the upper left pixel
+ * location. Returns the width of the pixel drawn
+ *
+ * @param buf - Buffer to draw into
+ * @param ch - Character to draw
+ * @param color - Color to use
+ * @returns Widdth in pixels of the character drawn
+*/
+static int LCD_DrawCharacter(uint32_t *buf, char ch, uint32_t color)
+{
+ uint32_t *workingBuf;
+ const font16x16_helper_t *charData;
+
+ //The font supports ' ' through '~'. If outside that range, draw a space
+ if ((ch < ' ') || (ch > '~')) {
+ ch = ' ';
+ }
+
+ //Grab the pixel data
+ charData = &fontTable[ch - ' '];
+
+ //For each row in the font
+ for (int y = 0; y < 16; y++) {
+ //Get the start of the row
+ workingBuf = buf + (PANEL_W * y);
+
+ //For each column in the font
+ for (int x = 0; x < 16; x++) {
+ //Font is based on vertical pixels, so mask is based on y
+ if (charData->vertPixels[x] & (1U << y)) {
+ *workingBuf++ = color;
+ } else {
+ *workingBuf++ = 0x00;
+ }
+ }
+ }
+
+ return charData->width;
+}
+#endif //LCD_DISP_TASK_STATS
+
+#ifdef LCD_DISP_COLORBARS
+/* Color definitions for drawing color bars */
+static const uint32_t colors[COLOR_BAR_COUNT] = { 0x00000000, 0x000000FF, 0x0000FF00, 0x0000FFFF,
+ 0x00FF0000, 0x00FF00FF, 0x00FFFF00, 0x00FFFFFF };
+
+/**
+ * Draws a simple color bar test pattern in the buffer. It is assumed the buf
+ * pointer is the correct depth and size per the PANEL_W and PANEL_H constants.
+ *
+ * This does a 'rolling' color bar, where the location of the bars shift by 1
+ * column on every refresh.
+ *
+ * @param buf - Frame buffer to draw
+ */
+static void LCD_DrawColorBars(uint32_t *buf)
+{
+ static uint8_t colorIdx = 0; //Non-volatile tracking of color index
+
+ uint32_t *ptr = buf;
+ uint32_t color;
+
+ //Loop the height of the frame
+ for (int y = 0; y < PANEL_H; y++) {
+ //Loop through each color
+ for (int i = 0; i < COLOR_BAR_COUNT; i++) {
+ //Grab the next colors
+ color = colors[colorIdx];
+
+ //Divide the width evenly
+ for (int x = 0; x < (PANEL_W / COLOR_BAR_COUNT); x++) {
+ *ptr++ = color;
+ }
+
+ //Increment the color index
+ colorIdx = (colorIdx + 1) % COLOR_BAR_COUNT;
+ }
+ }
+
+ //Once again at the end to give a rotating effect
+ colorIdx = (colorIdx + 1) % COLOR_BAR_COUNT;
+}
+#endif //LCD_DISP_COLORBARS
diff --git a/mxc_version.h b/Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.h
similarity index 59%
rename from mxc_version.h
rename to Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.h
index bfdc18c99a6..a4450603bc1 100644
--- a/mxc_version.h
+++ b/Examples/MAX32650/CLCD_FreeRTOS/LCD_Task.h
@@ -15,23 +15,10 @@
* limitations under the License.
*
******************************************************************************/
-#ifndef MXC_VERSION_H_
-#define MXC_VERSION_H_
-// @autogenerated version info
+#ifndef EXAMPLES_MAX32650_CLCD_FREERTOS_LCD_TASK_H_
+#define EXAMPLES_MAX32650_CLCD_FREERTOS_LCD_TASK_H_
-/**
- * @brief The string representing the current MSDK version.
- * Format: `[Release tag]-[commits since release tag]-g[commit SHA]`
- * If exactly on a release tag, this string will match the tag
- */
-#define MSDK_VERSION_STRING "v2023_10-152-g0f61712462"
-/**
- * @brief The month of the current MSDK version
- */
-#define MSDK_VERSION_YEAR 2023
-/**
- * @brief The year of the current MSDK version
- */
-#define MSDK_VERSION_MONTH 10
+/* Initializes the LCD and starts the FreeRTOS task */
+void LCD_TaskInitialize(void);
-#endif // MXC_VERSION_H_
+#endif //EXAMPLES_MAX32650_CLCD_FREERTOS_LCD_TASK_H_
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/LiberationSans16x16.c b/Examples/MAX32650/CLCD_FreeRTOS/LiberationSans16x16.c
new file mode 100644
index 00000000000..19c01385222
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/LiberationSans16x16.c
@@ -0,0 +1,306 @@
+//Digitized data copyright (c) 2010 Google Corporation
+// with Reserved Font Arimo, Tinos and Cousine.
+//Copyright (c) 2012 Red Hat, Inc.
+// with Reserved Font Name Liberation.
+//
+//This Font Software is licensed under the SIL Open Font License,
+//Version 1.1, see LICENSE
+//
+//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
+//MikroElektronika 2011
+//http://www.mikroe.com
+
+//GLCD FontName : Liberation_Sans16x16
+//GLCD FontSize : 16 x 16
+
+const unsigned char Liberation_Sans16x16[] = {
+ 33, 16, 16, 2, // number of bytes per character; horizontal size in pixels; vertical size in pixels; number of bytes per vertical line
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1B, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char !
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char "
+ 0x0A, 0x00, 0x00, 0x10, 0x02, 0x10, 0x1E, 0xF0, 0x03, 0x1E, 0x02,
+ 0x10, 0x02, 0x10, 0x1E, 0xF8, 0x03, 0x16, 0x02, 0x10, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char #
+ 0x0A, 0x00, 0x00, 0x00, 0x08, 0x3C, 0x18, 0x66, 0x10, 0x42, 0x10,
+ 0xFF, 0x3F, 0xC2, 0x10, 0x82, 0x10, 0x84, 0x0F, 0x00, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x10,
+ 0x7E, 0x0C, 0x00, 0x06, 0x80, 0x01, 0x60, 0x00, 0x38, 0x00, 0x8C,
+ 0x1F, 0x82, 0x10, 0x80, 0x10, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, // Code for char %
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x19, 0xF8, 0x10,
+ 0xC4, 0x11, 0x44, 0x13, 0x64, 0x0E, 0x38, 0x0C, 0x00, 0x1B, 0x80,
+ 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char &
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char '
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x3C, 0x78, 0x06, 0xC0,
+ 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char (
+ 0x05, 0x00, 0x00, 0x02, 0x80, 0x06, 0xC0, 0x3C, 0x78, 0xE0, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char )
+ 0x07, 0x00, 0x00, 0x08, 0x00, 0x48, 0x00, 0x38, 0x00, 0x3E, 0x00,
+ 0x48, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char *
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+ 0xF0, 0x07, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char +
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x78, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char -
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char .
+ 0x05, 0x00, 0x00, 0x00, 0x18, 0x80, 0x07, 0x78, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char /
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x04, 0x0C, 0x02, 0x10,
+ 0x02, 0x10, 0x02, 0x10, 0x04, 0x0C, 0xF8, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x10, 0x06, 0x10,
+ 0xFE, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x06, 0x1C, 0x02, 0x12,
+ 0x02, 0x11, 0x82, 0x10, 0xEE, 0x10, 0x3C, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06, 0x18, 0x42, 0x10,
+ 0x42, 0x10, 0x62, 0x10, 0xF6, 0x18, 0x9C, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3
+ 0x0A, 0x00, 0x00, 0x00, 0x02, 0x80, 0x03, 0xC0, 0x02, 0x30, 0x02,
+ 0x1C, 0x02, 0x06, 0x02, 0xFE, 0x1F, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x08, 0x4E, 0x18, 0x22, 0x10,
+ 0x22, 0x10, 0x22, 0x10, 0x62, 0x08, 0xC2, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0xCC, 0x0C, 0x22, 0x10,
+ 0x22, 0x10, 0x22, 0x10, 0x66, 0x18, 0xC4, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x1E,
+ 0xC2, 0x07, 0x72, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x0F, 0xA6, 0x18, 0x42, 0x10,
+ 0x42, 0x10, 0x42, 0x10, 0xA6, 0x18, 0xBC, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x08, 0x86, 0x19, 0x02, 0x11,
+ 0x02, 0x11, 0x02, 0x11, 0x8C, 0x0C, 0xF8, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x30, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char :
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x30, 0x78, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ;
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x40, 0x01, 0x40, 0x01,
+ 0x60, 0x03, 0x20, 0x02, 0x20, 0x02, 0x10, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char <
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02,
+ 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char =
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x20, 0x02, 0x20, 0x02,
+ 0x60, 0x03, 0x40, 0x01, 0x40, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char >
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x02, 0x18,
+ 0x02, 0x1B, 0x82, 0x00, 0xC6, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ?
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x70, 0x1C, 0x18, 0x30,
+ 0x84, 0x27, 0xE4, 0x4C, 0x32, 0x48, 0x12, 0x48, 0x12, 0x44, 0x32,
+ 0x42, 0xE2, 0x2F, 0x34, 0x28, 0x0C, 0x0C, 0x38, 0x07, 0xE0, 0x00, // Code for char @
+ 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x80, 0x03, 0xF0, 0x01,
+ 0x1E, 0x01, 0x02, 0x01, 0x1E, 0x01, 0xF0, 0x01, 0x80, 0x03, 0x00,
+ 0x1E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x42, 0x10,
+ 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x66, 0x10, 0xBC, 0x0C, 0x80,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x1C, 0x0F, 0x04, 0x08,
+ 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x04,
+ 0x08, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x02, 0x10,
+ 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x18, 0x04, 0x08, 0x1C,
+ 0x0E, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x42, 0x10,
+ 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x02,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E
+ 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00,
+ 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x1C, 0x0E, 0x04, 0x08,
+ 0x02, 0x10, 0x02, 0x10, 0x82, 0x10, 0x82, 0x10, 0x86, 0x18, 0x8C,
+ 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x40, 0x00,
+ 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xFE, 0x1F, 0xFE,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I
+ 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x10, 0x02, 0x10,
+ 0x02, 0x10, 0xFE, 0x0F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0xC0, 0x00,
+ 0x60, 0x00, 0xF0, 0x01, 0x18, 0x03, 0x0C, 0x06, 0x06, 0x0C, 0x02,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x10,
+ 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L
+ 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x3C, 0x00,
+ 0xE0, 0x00, 0x00, 0x07, 0x00, 0x18, 0x00, 0x0F, 0xE0, 0x01, 0x3C,
+ 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x1C, 0x00,
+ 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x0C, 0xFE, 0x1F, 0xFE,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03, 0x1C, 0x0E, 0x04, 0x08,
+ 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x04, 0x08, 0x1C,
+ 0x0E, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00,
+ 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x6C, 0x00, 0x7C,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03, 0x1C, 0x0E, 0x04, 0x08,
+ 0x02, 0x10, 0x02, 0x10, 0x02, 0x70, 0x02, 0xD0, 0x04, 0x88, 0x1C,
+ 0x8E, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00,
+ 0x82, 0x00, 0x82, 0x00, 0x82, 0x01, 0x82, 0x07, 0x7C, 0x1C, 0x38,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0x3C, 0x08, 0x66, 0x10,
+ 0x42, 0x10, 0x42, 0x10, 0xC2, 0x10, 0x82, 0x10, 0x8C, 0x09, 0x0C,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S
+ 0x0A, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0xFE, 0x1F, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0xFE, 0x0F, 0x00, 0x18,
+ 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0xFE, 0x0F, 0xFE,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U
+ 0x0C, 0x00, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x03,
+ 0x00, 0x0E, 0x00, 0x10, 0x00, 0x0E, 0xC0, 0x03, 0x78, 0x00, 0x1E,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V
+ 0x10, 0x00, 0x00, 0x06, 0x00, 0x3E, 0x00, 0xF0, 0x03, 0x00, 0x1F,
+ 0x00, 0x1C, 0xC0, 0x07, 0x7C, 0x00, 0x06, 0x00, 0x7C, 0x00, 0xC0,
+ 0x07, 0x00, 0x1C, 0x00, 0x1E, 0xE0, 0x03, 0x3E, 0x00, 0x06, 0x00, // Code for char W
+ 0x0B, 0x00, 0x00, 0x00, 0x00, 0x02, 0x18, 0x0E, 0x0C, 0x18, 0x07,
+ 0xB0, 0x01, 0xC0, 0x00, 0xF0, 0x01, 0x18, 0x07, 0x0E, 0x0C, 0x02,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x70, 0x00,
+ 0xC0, 0x1F, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y
+ 0x0A, 0x00, 0x00, 0x00, 0x10, 0x02, 0x1C, 0x02, 0x16, 0x82, 0x13,
+ 0xE2, 0x10, 0x32, 0x10, 0x1E, 0x10, 0x06, 0x10, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x80, 0x02, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [
+ 0x05, 0x00, 0x00, 0x06, 0x00, 0x78, 0x00, 0x80, 0x07, 0x00, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash
+ 0x04, 0x00, 0x00, 0x02, 0x80, 0x02, 0x80, 0xFE, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ]
+ 0x08, 0x00, 0x00, 0x40, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x02, 0x00,
+ 0x0E, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^
+ 0x0A, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
+ 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char `
+ 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0E, 0x30, 0x13, 0x10, 0x11,
+ 0x10, 0x11, 0x10, 0x09, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xEE, 0x0F, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0xFE, 0x0F, 0xFE, 0x1F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x19, 0x10, 0x11,
+ 0x10, 0x11, 0x10, 0x11, 0x30, 0x19, 0xE0, 0x09, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e
+ 0x05, 0x00, 0x00, 0x10, 0x00, 0xFC, 0x1F, 0xFE, 0x1F, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x4F, 0x30, 0xD8, 0x10, 0x90,
+ 0x10, 0x90, 0x30, 0x88, 0xC0, 0x7F, 0xF0, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x60, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x1F, 0xF2, 0x1F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i
+ 0x03, 0x00, 0x00, 0x00, 0x80, 0xF2, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x03, 0x80, 0x01,
+ 0xC0, 0x03, 0x60, 0x0E, 0x30, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l
+ 0x0D, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x10, 0x00, 0xE0, 0x1F, 0x20, 0x00, 0x10, 0x00, 0x10,
+ 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char m
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xE0, 0xEF, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0xE0, 0xEF, 0xF0, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x08, 0x90, 0x11, 0x10, 0x11,
+ 0x10, 0x11, 0x10, 0x13, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s
+ 0x05, 0x00, 0x00, 0x10, 0x00, 0xFC, 0x1F, 0xFC, 0x1F, 0x10, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x18, 0x00, 0x10,
+ 0x00, 0x10, 0x00, 0x0C, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u
+ 0x08, 0x00, 0x00, 0x30, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, 0x10,
+ 0x00, 0x0F, 0xF0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v
+ 0x0C, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1E, 0x00, 0x1E,
+ 0xE0, 0x03, 0x10, 0x00, 0xE0, 0x03, 0x00, 0x1C, 0x00, 0x1E, 0xE0,
+ 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w
+ 0x08, 0x00, 0x00, 0x00, 0x10, 0x30, 0x18, 0xE0, 0x06, 0x80, 0x01,
+ 0xE0, 0x06, 0x30, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x
+ 0x08, 0x00, 0x00, 0x10, 0x80, 0xF0, 0x81, 0x80, 0xCF, 0x00, 0x78,
+ 0x00, 0x0F, 0xF0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1C, 0x10, 0x16, 0x90, 0x13,
+ 0xF0, 0x10, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z
+ 0x06, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xFE, 0xFE, 0x02, 0x80,
+ 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char {
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char |
+ 0x06, 0x00, 0x00, 0x02, 0x80, 0x02, 0x80, 0xFE, 0xFE, 0x80, 0x03,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char }
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00,
+ 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~
+ 0x04, 0x00, 0x00, 0xFC, 0x0F, 0x04, 0x08, 0xFC, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char
+};
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/Makefile b/Examples/MAX32650/CLCD_FreeRTOS/Makefile
new file mode 100644
index 00000000000..7cc647840b1
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/Makefile
@@ -0,0 +1,382 @@
+###############################################################################
+ #
+ # Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
+ # Analog Devices, Inc.),
+ # Copyright (C) 2023-2024 Analog Devices, Inc.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ #
+ ##############################################################################
+
+# ** Readme! **
+# Don't edit this file! This is the core Makefile for a MaximSDK
+# project. The available configuration options can be overridden
+# in "project.mk", on the command-line, or with system environment
+# variables.
+
+# See https://analogdevicesinc.github.io/msdk/USERGUIDE/#build-system
+# for more detailed instructions on how to use this system.
+
+# The detailed instructions mentioned above are easier to read than
+# this file, but the comments found in this file also outline the
+# available configuration variables. This file is organized into
+# sub-sections, some of which expose config variables.
+
+
+# *******************************************************************************
+# Set the target microcontroller and board to compile for.
+
+# Every TARGET microcontroller has some Board Support Packages (BSPs) that are
+# available for it under the MaximSDK/Libraries/Boards/TARGET folder. The BSP
+# that gets selected is MaximSDK/Libraries/Boards/TARGET/BOARD.
+
+# Configuration Variables:
+# - TARGET : Override the default target microcontroller. Ex: TARGET=MAX78000
+# - BOARD : Override the default BSP (case sensitive). Ex: BOARD=EvKit_V1, BOARD=FTHR_RevA
+
+
+ifeq "$(TARGET)" ""
+# Default target microcontroller
+TARGET := MAX32650
+TARGET_UC := MAX32650
+TARGET_LC := max32650
+else
+# "TARGET" has been overridden in the environment or on the command-line.
+# We need to calculate an upper and lowercase version of the part number,
+# because paths on Linux and MacOS are case-sensitive.
+TARGET_UC := $(subst m,M,$(subst a,A,$(subst x,X,$(TARGET))))
+TARGET_LC := $(subst M,m,$(subst A,a,$(subst X,x,$(TARGET))))
+endif
+
+# Default board.
+BOARD ?= EvKit_V1
+
+# *******************************************************************************
+# Locate the MaximSDK
+
+# This Makefile needs to know where to find the MaximSDK, and the MAXIM_PATH variable
+# should point to the root directory of the MaximSDK installation. Setting this manually
+# is usually only required if you're working on the command-line.
+
+# If MAXIM_PATH is not specified, we assume the project still lives inside of the MaximSDK
+# and move up from this project's original location.
+
+# Configuration Variables:
+# - MAXIM_PATH : Tell this Makefile where to find the MaximSDK. Ex: MAXIM_PATH=C:/MaximSDK
+
+
+ifneq "$(MAXIM_PATH)" ""
+# Sanitize MAXIM_PATH for backslashes
+MAXIM_PATH := $(subst \,/,$(MAXIM_PATH))
+# Locate some other useful paths...
+LIBS_DIR := $(abspath $(MAXIM_PATH)/Libraries)
+CMSIS_ROOT := $(LIBS_DIR)/CMSIS
+endif
+
+# *******************************************************************************
+# Include project Makefile. We do this after formulating TARGET, BOARD, and MAXIM_PATH
+# in case project.mk needs to reference those values. However, we also include
+# this as early as possible in the Makefile so that it can append to or override
+# the variables below.
+
+
+PROJECTMK ?= $(abspath ./project.mk)
+include $(PROJECTMK)
+$(info Loaded project.mk)
+# PROJECTMK is also used by implicit rules and other libraries to add project.mk as a watch file
+
+# *******************************************************************************
+# Final path sanitization and re-calculation. No options here.
+
+ifeq "$(MAXIM_PATH)" ""
+# MAXIM_PATH is still not defined...
+DEPTH := ../../../
+MAXIM_PATH := $(abspath $(DEPTH))
+$(warning Warning: MAXIM_PATH is not set! Set MAXIM_PATH in your environment or in project.mk to clear this warning.)
+$(warning Warning: Attempting to use $(MAXIM_PATH) calculated from relative path)
+else
+# Sanitize MAXIM_PATH for backslashes
+MAXIM_PATH := $(subst \,/,$(MAXIM_PATH))
+endif
+
+# Final recalculation of LIBS_DIR/CMSIS_ROOT
+LIBS_DIR := $(abspath $(MAXIM_PATH)/Libraries)
+CMSIS_ROOT := $(LIBS_DIR)/CMSIS
+
+# One final UC/LC check in case user set TARGET in project.mk
+TARGET_UC := $(subst m,M,$(subst a,A,$(subst x,X,$(TARGET))))
+TARGET_LC := $(subst M,m,$(subst A,a,$(subst X,x,$(TARGET))))
+
+export TARGET
+export TARGET_UC
+export TARGET_LC
+export CMSIS_ROOT
+# TODO: Remove dependency on exports for these variables.
+
+# *******************************************************************************
+# Set up search paths, and auto-detect all source code on those paths.
+
+# The following paths are searched by default, where "./" is the project directory.
+# ./
+# |- *.h
+# |- *.c
+# |-include (optional)
+# |- *.h
+# |-src (optional)
+# |- *.c
+
+# Configuration Variables:
+# - VPATH : Tell this Makefile to search additional locations for source (.c) files.
+# You should use the "+=" operator with this option.
+# Ex: VPATH += your/new/path
+# - IPATH : Tell this Makefile to search additional locations for header (.h) files.
+# You should use the "+=" operator with this option.
+# Ex: VPATH += your/new/path
+# - SRCS : Tell this Makefile to explicitly add a source (.c) file to the build.
+# This is really only useful if you want to add a source file that isn't
+# on any VPATH, in which case you can add the full path to the file here.
+# You should use the "+=" operator with this option.
+# Ex: SRCS += your/specific/source/file.c
+# - AUTOSEARCH : Set whether this Makefile should automatically detect .c files on
+# VPATH and add them to the build. This is enabled by default. Set
+# to 0 to disable. If autosearch is disabled, source files must be
+# manually added to SRCS.
+# Ex: AUTOSEARCH = 0
+
+
+# Where to find source files for this project.
+VPATH += .
+VPATH += src
+VPATH := $(VPATH)
+
+# Where to find header files for this project
+IPATH += .
+IPATH += include
+IPATH := $(IPATH)
+
+AUTOSEARCH ?= 1
+ifeq ($(AUTOSEARCH), 1)
+# Auto-detect all C/C++ source files on VPATH
+SRCS += $(wildcard $(addsuffix /*.c, $(VPATH)))
+SRCS += $(wildcard $(addsuffix /*.cpp, $(VPATH)))
+endif
+
+# Collapse SRCS before passing them on to the next stage
+SRCS := $(SRCS)
+
+# *******************************************************************************
+# Set the output filename
+
+# Configuration Variables:
+# - PROJECT : Override the default output filename. Ex: PROJECT=MyProject
+
+
+# The default value creates a file named after the target micro. Ex: MAX78000.elf
+PROJECT ?= $(TARGET_LC)
+
+# *******************************************************************************
+# Compiler options
+
+# Configuration Variables:
+# - DEBUG : Set DEBUG=1 to build explicitly for debugging. This adds some additional
+# symbols and sets -Og as the default optimization level.
+# - MXC_OPTIMIZE_CFLAGS : Override the default compiler optimization level.
+# Ex: MXC_OPTIMIZE_CFLAGS = -O2
+# - PROJ_CFLAGS : Add additional compiler flags to the build.
+# You should use the "+=" operator with this option.
+# Ex: PROJ_CFLAGS += -Wextra
+# - MFLOAT_ABI : Set the floating point acceleration level.
+# The only options are "hard", "soft", or "softfp".
+# Ex: MFLOAT_ABI = hard
+# - LINKERFILE : Override the default linkerfile.
+# Ex: LINKERFILE = customlinkerfile.ld
+# - LINKERPATH : Override the default search location for $(LINKERFILE)
+# The default search location is $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source/GCC
+# If $(LINKERFILE) cannot be found at this path, then the root project
+# directory will be used as a fallback.
+
+# Select 'GCC' or 'IAR' compiler
+ifeq "$(COMPILER)" ""
+COMPILER := GCC
+endif
+
+# Set default compiler optimization levels
+ifeq "$(MAKECMDGOALS)" "release"
+# Default optimization level for "release" builds (make release)
+MXC_OPTIMIZE_CFLAGS ?= -O2
+DEBUG = 0
+endif
+
+ifeq ($(DEBUG),1)
+# Optimizes for debugging as recommended
+# by GNU for code-edit-debug cycles
+# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options
+MXC_OPTIMIZE_CFLAGS := -Og
+endif
+
+# Default level if not building for release or explicitly for debug
+MXC_OPTIMIZE_CFLAGS ?= -Og
+
+# Set compiler flags
+PROJ_CFLAGS += -Wall # Enable warnings
+PROJ_CFLAGS += -DMXC_ASSERT_ENABLE
+
+# Set hardware floating point acceleration.
+# Options are:
+# - hard
+# - soft
+# - softfp (default if MFLOAT_ABI is not set)
+MFLOAT_ABI ?= softfp
+# MFLOAT_ABI must be exported to other Makefiles
+export MFLOAT_ABI
+
+# This path contains system-level intialization files for the target micro. Add to the build.
+VPATH += $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source
+
+# *******************************************************************************
+# Secure Boot Tools (SBT)
+
+# This section integrates the Secure Boot Tools. It's intended for use with
+# microcontrollers that have a secure bootloader.
+
+# Enabling SBT integration will add some special rules, such as "make sla", "make scpa", etc.
+
+# Configuration variables:
+# SBT : Toggle SBT integration. Set to 1 to enable, or 0
+# to disable
+# MAXIM_SBT_DIR : Specify the location of the SBT tool binaries. This defaults to
+# Tools/SBT in the MaximSDK. The standalone SBT installer will override
+# this via an environment variable.
+# TARGET_SEC : Specify the part number to be passed into the SBT. This should match
+# the secure variant part #. The default value will depend on TARGET.
+# For example, TARGET=MAX32650 will result in TARGET_SEC=MAX32651, and
+# the default selection happens in Tools/SBT/SBT-config.
+# However, if there are multiple secure part #s for the target
+# microcontroller this variable may need to be changed.
+
+SBT ?= 0
+ifeq ($(SBT), 1)
+MAXIM_SBT_DIR ?= $(MAXIM_PATH)/Tools/SBT
+MAXIM_SBT_DIR := $(subst \,/,$(MAXIM_SBT_DIR))
+# ^ Must sanitize path for \ on Windows, since this may come from an environment
+# variable.
+
+export MAXIM_SBT_DIR # SBTs must have this environment variable defined to work
+
+# SBT-config.mk and SBT-rules.mk are included further down this Makefile.
+
+endif # SBT
+
+# *******************************************************************************
+# Default goal selection. This section allows you to override the default goal
+# that will run if no targets are specified on the command-line.
+# (ie. just running 'make' instead of 'make all')
+
+# Configuration variables:
+# .DEFAULT_GOAL : Set the default goal if no targets were specified on the
+# command-line
+# ** "override" must be used with this variable. **
+# Ex: "override .DEFAULT_GOAL = mygoal"
+
+ifeq "$(.DEFAULT_GOAL)" ""
+ifeq ($(SBT),1)
+override .DEFAULT_GOAL := sla
+else
+override .DEFAULT_GOAL := all
+endif
+endif
+
+# Developer note: 'override' is used above for legacy Makefile compatibility.
+# gcc.mk/gcc_riscv.mk need to hard-set 'all' internally, so this new system
+# uses 'override' to come in over the top without breaking old projects.
+
+# It's also necessary to explicitly set MAKECMDGOALS...
+ifeq "$(MAKECMDGOALS)" ""
+MAKECMDGOALS:=$(.DEFAULT_GOAL)
+endif
+
+# Enable colors when --sync-output is used.
+# See https://www.gnu.org/software/make/manual/make.html#Terminal-Output (section 13.2)
+ifneq ($(MAKE_TERMOUT),)
+PROJ_CFLAGS += -fdiagnostics-color=always
+endif
+
+ifneq ($(FORCE_COLOR),)
+PROJ_CFLAGS += -fdiagnostics-color=always
+endif
+
+# *******************************************************************************
+# Include SBT config. We need to do this here because it needs to know
+# the current MAKECMDGOAL.
+ifeq ($(SBT),1)
+include $(MAXIM_PATH)/Tools/SBT/SBT-config.mk
+endif
+
+# *******************************************************************************
+# Libraries
+
+# This section offers "toggle switches" to include or exclude the libraries that
+# are available in the MaximSDK. Set a configuration variable to 1 to include the
+# library in the build, or 0 to exclude.
+
+# Each library may also have its own library specific configuration variables. See
+# Libraries/libs.mk for more details.
+
+# Configuration variables:
+# - LIB_BOARD : Include the Board-Support Package (BSP) library. (Enabled by default)
+# - LIB_PERIPHDRIVERS : Include the peripheral driver library. (Enabled by default)
+# - LIB_CMSIS_DSP : Include the CMSIS-DSP library.
+# - LIB_CORDIO : Include the Cordio BLE library
+# - LIB_FCL : Include the Free Cryptographic Library (FCL)
+# - LIB_FREERTOS : Include the FreeRTOS and FreeRTOS-Plus-CLI libraries
+# - LIB_LC3 : Include the Low Complexity Communication Codec (LC3) library
+# - LIB_LITTLEFS : Include the "little file system" (littleFS) library
+# - LIB_LWIP : Include the lwIP library
+# - LIB_MAXUSB : Include the MAXUSB library
+# - LIB_SDHC : Include the SDHC library
+
+include $(LIBS_DIR)/libs.mk
+
+
+# *******************************************************************************
+# Rules
+
+# Include the rules for building for this target. All other makefiles should be
+# included before this one.
+include $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source/$(COMPILER)/$(TARGET_LC).mk
+
+# Include the rules that integrate the SBTs. SBTs are a special case that must be
+# include after the core gcc rules to extend them.
+ifeq ($(SBT), 1)
+include $(MAXIM_PATH)/Tools/SBT/SBT-rules.mk
+endif
+
+
+# Get .DEFAULT_GOAL working.
+ifeq "$(MAKECMDGOALS)" ""
+MAKECMDGOALS:=$(.DEFAULT_GOAL)
+endif
+
+
+all:
+# Extend the functionality of the "all" recipe here
+ arm-none-eabi-size --format=berkeley $(BUILD_DIR)/$(PROJECT).elf
+
+libclean:
+ $(MAKE) -f ${PERIPH_DRIVER_DIR}/periphdriver.mk clean.periph
+
+clean:
+# Extend the functionality of the "clean" recipe here
+
+# The rule to clean out all the build products.
+distclean: clean libclean
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/README.md b/Examples/MAX32650/CLCD_FreeRTOS/README.md
new file mode 100644
index 00000000000..be76e58f7ce
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/README.md
@@ -0,0 +1,148 @@
+# Description
+
+This example demonstrates use of the LCD within a FreeRTOS application.
+
+In addition to providing display support, the application optionally utilizes
+double buffering to eliminate display flicker, and provides several trace and
+debug options for measuring execution time of code.
+
+## Display Example
+
+The provided display example utilizes a FreeRTOS task to periodically update the
+display at a 3Hz. The refresh rate can be adjusted through the `FRAME_RATE_MS`
+constant in LCD_Task.c.
+
+The display example has two different graphics options
+ - FreeRTOS Stats (default) - Displays the run time statistics for running tasks
+ - Colorbars - Displays generic colorbar test pattern with a rotating effect.
+
+### Page Flipping / Double Buffering
+
+The display task has an optional (enabled by default) double buffering
+capability through the use of page flipping. Two frame buffers are utilized,
+one is actively being drawn by the display controller, and the other is free to
+be updated by the display task. The flipping is synchronized with the Address
+Ready interrupt of the display controller, and is protected by FreeRTOS
+semaphores to ensure frame data is not changed while being redrawn to the screen.
+This use of page flipping eliminates flickering and tearing artifacts that can
+occur while the actively displayed frame buffer is modified.
+
+## Usage Tracing
+
+This project also incorporates several CPU usage features to track the execution
+time and utilization of the display task. These concepts can easily by migrated
+to other tasks or applications.
+
+### FreeRTOS Run-Time Stats
+
+FreeRTOS run time stats are enabled through the `configGENERATE_RUN_TIME_STATS`
+definition in FreeRTOSConfig.h. This, along with the assigned timer and
+supporting functions, allow FreeRTOS to track the amount of CPU time each
+individual task is utilizing, relative to the whole system.
+
+The run time statistics may be accessed in code through the `vTaskGetRunTimeStats()`
+function. This method populates a string buffer, and is by default printed to
+the console of this application (via the BackgroundTask) and shown on the LCD.
+
+It is also possible to get the run time statistics from a debugging context.
+Utilizing VS Code as the development IDE, the XRTOS tab may be used. This comes
+installed as a default when using the Cortex-Debug extension. With the
+application running in the debugger, pause execution and view the XRTOS tab.
+The task run times will be populated with the RTOS data. In addition, with the
+`configRECORD_STACK_HIGH_ADDRESS` definition in FreeRTOSConfig.h, the stack
+usage and high watermark will also be shown.
+
+![XRTOS Output](doc/xrtos.png)
+
+### Execution Time Tracing
+
+To provide a detailed look at the executing time for a specific block of code,
+two methods are provided with the UsageTrace implementation. To measure a block
+of code with the executing time tracing, wrap the block with `_UsageTraceStart()`
+and `_UsageTraceEnd()` respectively.
+
+Due to interrupts potential running during the code block, the UsageTrace code
+can optionally be compiled to disable interrupts during the measured block. This
+should only be used for measurement and debug, and not recommended for release
+code.
+
+#### GPIO Tracing
+
+GPIO Tracing uses a spare GPIO pin on the device to set its state high while
+the specified block of code running. With this pin, you can utilize an
+oscilloscope or other test equipment to accurately measure run time and see the
+frequency of the code running. The default GPIO assigned for this application
+is P2.0.
+
+![GPIO Output](doc/gpio_output.png) ![GPIO Output](doc/gpio_output2.png)
+
+#### Timer Tracing
+
+Timer tracing uses a spare timer peripheral to count ticks that elapsed during
+the code block executing. The UsageTrace module has a prototype for function
+`UsageTraceUserHook()` which needs to be implemented by the user to handle the
+completion of each code block event. In this demo application, the hook simply
+just prints the results to the console
+
+```
+void UsageTraceUserHook(uint32_t count, usage_src_t src)
+{
+ printf("Usage: %d %d\n", count, src);
+}
+```
+
+# Software
+
+## Project Usage
+
+Universal instructions on building, flashing, and debugging this project can be found in the **[MSDK User Guide](https://analogdevicesinc.github.io/msdk/USERGUIDE/)**.
+
+## Project-Specific Build Notes
+
+There are several user configurable options to tailor what aspects of this
+project are run. While these #defines can be added to the source code, it
+is recommended they are incorporated with PROJ_CFLAGS variable in the project.mk
+file.
+
+| Definition | Description | Default |
+| ---------- | ----------- |-|
+| `LCD_DISP_COLORBARS` | Displays a colorbar pattern on the screen. | |
+| `LCD_DISP_TASK_STATS` | Displays the FreeRTOS task stats on the screen. | Y |
+| `LCD_DOUBLE_BUFFER` | Uses double buffering for the display. | Y |
+| `USAGE_NO_IRQ` | Disables interrupts when tracing usage. | Y |
+| `USAGE_GPIO_OUT` | Enables GPIO toggling for usage tracing. | Y |
+| `USAGE_TMR` | Enables Timer counts for usage tracing. | Y |
+
+## Required Connections
+
+- Connect a USB cable between the PC and the CN2 (USB/PWR) connector.
+- Open an terminal application on the PC and connect to the EV kit's console UART at 115200, 8-N-1.
+
+## Expected Output
+
+Using the default build definitions, the default console output will be the
+FreeRTOS task statistics every 10 seconds, as well as the output from the
+`UsageTraceUserHook()` on each call.
+
+```
+Usage: 252014 0
+Usage: 251702 0
+Usage: 251327 0
+Usage: 251709 0
+Usage: 251197 0
+Usage: 251433 0
+====================
+Tick Count: 540542
+Background 33527 <1
+IDLE 31522282 98
+LCD 400989 1
+====================
+Usage: 251116 0
+Usage: 251423 0
+Usage: 250642 0
+Usage: 250764 0
+Usage: 251576 0
+Usage: 251805 0
+```
+
+
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.c b/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.c
new file mode 100644
index 00000000000..88bffa2c568
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.c
@@ -0,0 +1,48 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+#include "UsageTrace.h"
+
+/**
+ * Initializes the UsageTrace functionality. Needs to be called before Start and
+ * End are used
+*/
+void UsageTraceInit()
+{
+#ifdef USAGE_GPIO_OUT
+ mxc_gpio_cfg_t gpioCfg;
+ gpioCfg.port = USAGE_GPIO_PORT;
+ gpioCfg.mask = USAGE_GPIO_PIN;
+ gpioCfg.drvstr = MXC_GPIO_DRVSTR_0;
+ gpioCfg.func = MXC_GPIO_FUNC_OUT;
+ gpioCfg.pad = MXC_GPIO_PAD_NONE;
+ gpioCfg.vssel = MXC_GPIO_VSSEL_VDDIO;
+ USAGE_GPIO_PORT->out_clr = USAGE_GPIO_PIN;
+ MXC_GPIO_Config(&gpioCfg);
+#endif
+
+#ifdef USAGE_TMR
+ mxc_tmr_cfg_t tmrCfg;
+ MXC_TMR_Shutdown(USAGE_TMR_INST);
+ tmrCfg.pres = MXC_TMR_PRES_1;
+ tmrCfg.mode = TMR_MODE_CONTINUOUS;
+ tmrCfg.cmp_cnt = 0xFFFFFFFF;
+ tmrCfg.pol = 0;
+ MXC_TMR_Init(USAGE_TMR_INST, &tmrCfg);
+ MXC_TMR_Start(USAGE_TMR_INST);
+#endif
+}
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.h b/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.h
new file mode 100644
index 00000000000..128aeb4a909
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/UsageTrace.h
@@ -0,0 +1,110 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+#ifndef EXAMPLES_MAX32650_CLCD_FREERTOS_USAGETRACE_H_
+#define EXAMPLES_MAX32650_CLCD_FREERTOS_USAGETRACE_H_
+#include "gpio.h"
+#include "mxc_device.h"
+#include "tmr.h"
+
+/****************************************
+ * This code intends to provide a basic wrapper of functionality for tracking
+ * amount of time spent in a block of code. It provides several methods for
+ * doing so, enabled by the various #defines:
+ *
+ * - USAGE_TMR - Measure time in a code block using a timer peripheral
+ * - USAGE_GPIO_OUT - Set a GPIO high while the block is executing
+ * - USAGE_NO_IRQ - Disable interrupts while this block is running
+*/
+
+/* If USAGE_TMR, configure the peripheral timer */
+#ifdef USAGE_TMR
+#define USAGE_TMR_INST MXC_TMR3
+#endif
+
+/* If USAGE_GPIO_OUT, configure the GPIO signal */
+#ifdef USAGE_GPIO_OUT
+#define USAGE_GPIO_PORT MXC_GPIO2
+#define USAGE_GPIO_PIN MXC_GPIO_PIN_0
+#endif
+
+/* Enum used for notifying the source during the hook*/
+typedef enum { USAGE_SRC_TMR } usage_src_t;
+
+/**
+ * Initializes the UsageTrace functionality. Needs to be called before Start and
+ * End are used
+*/
+void UsageTraceInit(void);
+
+/**
+ * Prototype type for the UserHook. For timer based tracing, it is up to the
+ * user to implement this and determine what to do with the timing data
+ *
+ * @param count - Timer count in the units defined by the source
+ * @param src - Source of the timer data. In case multiple sources are enabled
+*/
+void UsageTraceUserHook(uint32_t count, usage_src_t src);
+
+/**
+ * Inline function to be placed at the start of the code to be measured.
+ * Disables interrupts (if defined) and starts all defined timing mechanisms
+ */
+static inline void _UsageTraceStart(void)
+{
+#ifdef USAGE_NO_IRQ
+ __disable_irq();
+#endif
+
+#ifdef USAGE_TMR
+ USAGE_TMR_INST->cnt = 0;
+#endif
+
+#ifdef USAGE_GPIO_OUT
+ USAGE_GPIO_PORT->out_set = USAGE_GPIO_PIN;
+#endif
+}
+
+/**
+ * Inline function to be placed at the end of the code to be measured.
+ * Stops all defined timing mechanisms, calls the user hook (if necessary) and
+ * re-enables interrupts if they were disabled.
+ */
+static inline void _UsageTraceEnd(void)
+{
+#ifdef USAGE_GPIO_OUT
+ USAGE_GPIO_PORT->out_clr = USAGE_GPIO_PIN;
+#endif
+
+#ifdef USAGE_TMR
+ uint32_t countTmr;
+ countTmr = USAGE_TMR_INST->cnt;
+#endif
+
+#ifdef USAGE_NO_IRQ
+ __enable_irq();
+#endif
+
+//Defer the user hook until after interrupts are enabled and all counts are
+//gathered to not skew the timing, and let the user do what they want in the
+//hook
+#ifdef USAGE_TMR
+ UsageTraceUserHook(countTmr, USAGE_SRC_TMR);
+#endif
+}
+
+#endif //EXAMPLES_MAX32650_CLCD_FREERTOS_USAGETRACE_H_
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output.png b/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output.png
new file mode 100644
index 00000000000..fa077213770
Binary files /dev/null and b/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output.png differ
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output2.png b/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output2.png
new file mode 100644
index 00000000000..3f2fbf9bbbf
Binary files /dev/null and b/Examples/MAX32650/CLCD_FreeRTOS/doc/gpio_output2.png differ
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/doc/xrtos.png b/Examples/MAX32650/CLCD_FreeRTOS/doc/xrtos.png
new file mode 100644
index 00000000000..a4fb12c9781
Binary files /dev/null and b/Examples/MAX32650/CLCD_FreeRTOS/doc/xrtos.png differ
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/main.c b/Examples/MAX32650/CLCD_FreeRTOS/main.c
new file mode 100644
index 00000000000..8ec6dc0f2d9
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/main.c
@@ -0,0 +1,117 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2024 Analog Devices, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+#include
+#include
+#include
+
+#include "FreeRTOS.h"
+#include "FreeRTOSConfig.h"
+#include "portable.h"
+#include "task.h"
+
+#include "mxc_device.h"
+#include "mxc_sys.h"
+#include "tmr.h"
+
+#include "LCD_Task.h"
+#include "UsageTrace.h"
+
+/* Frequency to print the task information to the console */
+#define TASK_PRINT_PERIOD_MS 10000
+
+/* Buffer for holding task information.
+ * FreeRTOS recommends 40 chars per task. Arbitrarily assume 20 tasks or less
+ */
+#define MAX_TASK_STATUS 20
+static char taskStatusBuf[MAX_TASK_STATUS * 40];
+
+/* Background task handle */
+static TaskHandle_t backgroundTask;
+
+/* Local Prototypes */
+static void BackgroundTaskBody(void *pvParameters);
+
+/**
+ * Define a custom PreInit function to set the system clock to the full 120MHz
+ * overriding the default 60MHz. This is done here prior to the BSP getting
+ * initialized so the console baud rate and other features are correct
+ *
+ * See Libraries\CMSIS\Device\Maxim\MAX32650\Source\system_max32650.c
+ */
+int PreInit(void)
+{
+ /* Workaround: Write to SCON register on power up to fix trim issue for SRAM */
+ MXC_GCR->scon = (MXC_GCR->scon & ~(MXC_F_GCR_SCON_OVR)) | (MXC_S_GCR_SCON_OVR_1V1);
+
+ MXC_SYS_Clock_Select(MXC_SYS_CLOCK_HIRC96);
+ MXC_SYS_Clock_Div(MXC_SYS_SYSTEM_DIV_1);
+ return 0;
+}
+
+/**
+ * Main entry point into our application.
+ */
+int main(void)
+{
+ /* Print banner (RTOS scheduler not running) */
+ printf("\n-=- FreeRTOS (%s) Demo -=-\n", tskKERNEL_VERSION_NUMBER);
+ printf("SystemCoreClock = %d\n", SystemCoreClock);
+
+ /* Initialize the trace helper */
+ UsageTraceInit();
+
+ //Create the background task, which also initializes any other system tasks
+ xTaskCreate(BackgroundTaskBody, (const char *)"Background", 1024, NULL, tskIDLE_PRIORITY + 1,
+ &backgroundTask);
+ vTaskStartScheduler();
+
+ //Should never get here!
+ while (1) {
+ __NOP();
+ }
+}
+
+/**
+ * Hook for handling the timer trace calls. This application just prints to the
+ * terminal.
+ * @param count - Number of timer ticks
+ * @param src - Source of the timer data
+ */
+void UsageTraceUserHook(uint32_t count, usage_src_t src)
+{
+ printf("Usage: %d %d\n", count, src);
+}
+
+/**
+ * Background task body. Initialize the other tasks at startup, then
+ * periodically print the FreeRTOS task statistics
+ */
+void BackgroundTaskBody(void *pvParameters)
+{
+ LCD_TaskInitialize();
+
+ while (1) {
+ //Periodically print the Task information
+ vTaskGetRunTimeStats(taskStatusBuf);
+ printf("====================\n");
+ printf("Tick Count: %u\n", xTaskGetTickCount());
+ printf("%s", taskStatusBuf);
+ printf("====================\n");
+ vTaskDelay(TASK_PRINT_PERIOD_MS / portTICK_PERIOD_MS);
+ }
+}
diff --git a/Examples/MAX32650/CLCD_FreeRTOS/project.mk b/Examples/MAX32650/CLCD_FreeRTOS/project.mk
new file mode 100644
index 00000000000..5d1239a8312
--- /dev/null
+++ b/Examples/MAX32650/CLCD_FreeRTOS/project.mk
@@ -0,0 +1,25 @@
+# This file can be used to set build configuration
+# variables. These variables are defined in a file called
+# "Makefile" that is located next to this one.
+
+# For instructions on how to use this system, see
+# https://analogdevicesinc.github.io/msdk/USERGUIDE/#build-system
+
+#BOARD=FTHR_RevA
+# ^ For example, you can uncomment this line to make the
+# project build for the "FTHR_RevA" board.
+
+# **********************************************************
+
+MXC_OPTIMIZE_CFLAGS += -Og
+
+PROJ_CFLAGS += -DUSAGE_GPIO_OUT -DUSAGE_TMR -DUSAGE_NO_IRQ
+PROJ_CFLAGS += -DLCD_DISP_TASK_STATS -DLCD_DOUBLE_BUFFER
+
+# If you have secure version of MCU (MAX32651), set SBT=1 to generate signed binary
+# For more information on how sing process works, see
+# https://www.analog.com/en/education/education-library/videos/6313214207112.html
+SBT=0
+
+# Enable FreeRTOS library
+LIB_FREERTOS=1
diff --git a/Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c b/Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c
index 7d40b53b3ef..c5443651ef1 100644
--- a/Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c
+++ b/Examples/MAX32655/Bluetooth/BLE_datc/datc_main.c
@@ -147,7 +147,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -569,9 +569,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'D') &&
- (pData[DM_AD_DATA_IDX + 1] == 'A') && (pData[DM_AD_DATA_IDX + 2] == 'T') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32655/Bluetooth/BLE_datc/project.mk b/Examples/MAX32655/Bluetooth/BLE_datc/project.mk
index 64f019d693a..3e599dfedd2 100644
--- a/Examples/MAX32655/Bluetooth/BLE_datc/project.mk
+++ b/Examples/MAX32655/Bluetooth/BLE_datc/project.mk
@@ -19,3 +19,11 @@ INIT_CENTRAL = 1
# Set to 1 to enable serial port trace messages
# Set to 2 to enable verbose messages
TRACE = 1
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
\ No newline at end of file
diff --git a/Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c b/Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c
index 0bab2fd13f0..aca2d6c459c 100644
--- a/Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c
+++ b/Examples/MAX32655/Bluetooth/BLE_dats/dats_main.c
@@ -121,7 +121,7 @@ static const appSecCfg_t datsSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -214,15 +214,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'D',
- 'A',
- 'T',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -538,7 +531,9 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
-
+ memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
AppAdvSetData(APP_SCAN_DATA_DISCOVERABLE, sizeof(datsScanDataDisc),
@@ -760,7 +755,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32655/Bluetooth/BLE_dats/project.mk b/Examples/MAX32655/Bluetooth/BLE_dats/project.mk
index b29e241ed7e..0d96d9a3701 100644
--- a/Examples/MAX32655/Bluetooth/BLE_dats/project.mk
+++ b/Examples/MAX32655/Bluetooth/BLE_dats/project.mk
@@ -23,3 +23,12 @@ TRACE = 1
# Add services directory to build
IPATH += services
VPATH += services
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=FALSE
\ No newline at end of file
diff --git a/Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c b/Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c
index eac8eb6bf41..77fd6fe8972 100644
--- a/Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c
+++ b/Examples/MAX32655/Bluetooth/BLE_otac/datc_main.c
@@ -154,7 +154,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -494,9 +494,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'O') &&
- (pData[DM_AD_DATA_IDX + 1] == 'T') && (pData[DM_AD_DATA_IDX + 2] == 'A') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32655/Bluetooth/BLE_otac/project.mk b/Examples/MAX32655/Bluetooth/BLE_otac/project.mk
index 4dc2cedd016..16a4fc3c339 100644
--- a/Examples/MAX32655/Bluetooth/BLE_otac/project.mk
+++ b/Examples/MAX32655/Bluetooth/BLE_otac/project.mk
@@ -54,3 +54,13 @@ fw_obj: $(FW_UPDATE_OBJ)
${FW_UPDATE_OBJ}: fw_update.S ${FW_UPDATE_BIN}
${CC} ${AFLAGS} -o ${@} -c fw_update.S
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
\ No newline at end of file
diff --git a/Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c b/Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c
index 2d68b8219eb..a4a0b965403 100644
--- a/Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c
+++ b/Examples/MAX32655/Bluetooth/BLE_otas/dats_main.c
@@ -120,7 +120,7 @@ static const appSecCfg_t datsSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -200,15 +200,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'O',
- 'T',
- 'A',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -462,6 +455,9 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
+ memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
@@ -683,7 +679,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32655/Bluetooth/BLE_otas/project.mk b/Examples/MAX32655/Bluetooth/BLE_otas/project.mk
index 931e65f0d2b..00a62465081 100644
--- a/Examples/MAX32655/Bluetooth/BLE_otas/project.mk
+++ b/Examples/MAX32655/Bluetooth/BLE_otas/project.mk
@@ -63,3 +63,12 @@ bl_obj: $(BOOTLOADER_OBJ)
${BOOTLOADER_OBJ}: bl_build.S ${BOOTLOADER_BIN}
${CC} ${AFLAGS} -o ${@} -c bl_build.S
endif
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
\ No newline at end of file
diff --git a/Examples/MAX32665/Bluetooth/BLE_datc/datc_main.c b/Examples/MAX32665/Bluetooth/BLE_datc/datc_main.c
index 7d40b53b3ef..c5443651ef1 100644
--- a/Examples/MAX32665/Bluetooth/BLE_datc/datc_main.c
+++ b/Examples/MAX32665/Bluetooth/BLE_datc/datc_main.c
@@ -147,7 +147,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -569,9 +569,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'D') &&
- (pData[DM_AD_DATA_IDX + 1] == 'A') && (pData[DM_AD_DATA_IDX + 2] == 'T') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32665/Bluetooth/BLE_datc/project.mk b/Examples/MAX32665/Bluetooth/BLE_datc/project.mk
index 08dab61991b..569749ac0e3 100644
--- a/Examples/MAX32665/Bluetooth/BLE_datc/project.mk
+++ b/Examples/MAX32665/Bluetooth/BLE_datc/project.mk
@@ -24,3 +24,11 @@ INIT_CENTRAL = 1
# Set to 1 to enable serial port trace messages
# Set to 2 to enable verbose messages
TRACE = 1
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
\ No newline at end of file
diff --git a/Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c b/Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c
index 65fb72c0e98..7e907555f2f 100644
--- a/Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c
+++ b/Examples/MAX32665/Bluetooth/BLE_dats/dats_main.c
@@ -121,7 +121,7 @@ static const appSecCfg_t datsSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- FALSE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -214,15 +214,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'D',
- 'A',
- 'T',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -537,7 +530,9 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
-
+ memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
AppAdvSetData(APP_SCAN_DATA_DISCOVERABLE, sizeof(datsScanDataDisc),
@@ -759,7 +754,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32665/Bluetooth/BLE_dats/project.mk b/Examples/MAX32665/Bluetooth/BLE_dats/project.mk
index ad2f370e321..9fae4f457b0 100644
--- a/Examples/MAX32665/Bluetooth/BLE_dats/project.mk
+++ b/Examples/MAX32665/Bluetooth/BLE_dats/project.mk
@@ -28,3 +28,12 @@ TRACE = 1
# Add services directory to build
IPATH += services
VPATH += services
+
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=FALSE
diff --git a/Examples/MAX32665/Bluetooth/BLE_otac/datc_main.c b/Examples/MAX32665/Bluetooth/BLE_otac/datc_main.c
index 488d6b7ee05..990b90693d9 100644
--- a/Examples/MAX32665/Bluetooth/BLE_otac/datc_main.c
+++ b/Examples/MAX32665/Bluetooth/BLE_otac/datc_main.c
@@ -154,7 +154,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -494,9 +494,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'O') &&
- (pData[DM_AD_DATA_IDX + 1] == 'T') && (pData[DM_AD_DATA_IDX + 2] == 'A') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32665/Bluetooth/BLE_otac/project.mk b/Examples/MAX32665/Bluetooth/BLE_otac/project.mk
index 59dca33d592..0d90e161633 100644
--- a/Examples/MAX32665/Bluetooth/BLE_otac/project.mk
+++ b/Examples/MAX32665/Bluetooth/BLE_otac/project.mk
@@ -60,3 +60,13 @@ fw_obj: $(FW_UPDATE_OBJ)
${FW_UPDATE_OBJ}: fw_update.S ${FW_UPDATE_BIN}
${CC} ${AFLAGS} -o ${@} -c fw_update.S
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
diff --git a/Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c b/Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c
index f07f4a2766b..342d5826cbf 100644
--- a/Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c
+++ b/Examples/MAX32665/Bluetooth/BLE_otas/dats_main.c
@@ -121,7 +121,7 @@ static const appSecCfg_t datsSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -197,15 +197,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'O',
- 'T',
- 'A',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -459,6 +452,9 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
+ memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
@@ -680,7 +676,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32665/Bluetooth/BLE_otas/project.mk b/Examples/MAX32665/Bluetooth/BLE_otas/project.mk
index f8a248e2f92..35e61ac6df2 100644
--- a/Examples/MAX32665/Bluetooth/BLE_otas/project.mk
+++ b/Examples/MAX32665/Bluetooth/BLE_otas/project.mk
@@ -76,3 +76,12 @@ bl_obj: $(BOOTLOADER_OBJ)
${BOOTLOADER_OBJ}: bl_build.S ${BOOTLOADER_BIN}
${CC} ${AFLAGS} -o ${@} -c bl_build.S
endif
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
diff --git a/Examples/MAX32690/ADC/main.c b/Examples/MAX32690/ADC/main.c
index d25f5be923b..47a0a4ad966 100644
--- a/Examples/MAX32690/ADC/main.c
+++ b/Examples/MAX32690/ADC/main.c
@@ -35,10 +35,10 @@
#include "fcr_regs.h"
#include "led.h"
#include "tmr.h"
-
+#include "nvic_table.h"
/***** Definitions *****/
-#define POLLING // Uncomment to perform ADC conversions using blocking/polling method
+//#define POLLING // Uncomment to perform ADC conversions using blocking/polling method
// #define INTERRUPT // Uncomment to perform ADC conversions using interrupt driven method
// #define DMA // Uncomment to perform ADC conversions using DMA driven method.
diff --git a/Examples/MAX32690/ADC/project.mk b/Examples/MAX32690/ADC/project.mk
index 96eb02eae1d..4cc4eee9c3c 100644
--- a/Examples/MAX32690/ADC/project.mk
+++ b/Examples/MAX32690/ADC/project.mk
@@ -13,3 +13,6 @@
# For more information on how sing process works, see
# https://www.analog.com/en/education/education-library/videos/6313214207112.html
SBT=0
+
+METHOD ?= POLLING
+PROJ_CFLAGS += -D$(METHOD)
\ No newline at end of file
diff --git a/Examples/MAX32690/Bluetooth/BLE5_ctr/README.md b/Examples/MAX32690/Bluetooth/BLE5_ctr/README.md
index c268ca4fcce..a27ed5565e2 100644
--- a/Examples/MAX32690/Bluetooth/BLE5_ctr/README.md
+++ b/Examples/MAX32690/Bluetooth/BLE5_ctr/README.md
@@ -15,9 +15,8 @@ Universal instructions on building, flashing, and debugging this project can be
If using the MAX32690EVKIT:
- Connect a USB cable between the PC and the CN2 (USB/PWR) connector.
- Install headers JP7(RX\_EN) and JP8(TX\_EN).
-- Open a terminal application on the PC and connect to the EV kit's console UART at 115200, 8-N-1.
-- Use an external USB-to-UART adapter to access HCI UART. Connect a USB cable between the PC or BLE Tester
- and USB side of the adapter. Connect UART side of the adapter to board TX,RX and GND header pins.
+- Open a terminal app on the PC and connect to the EV kit's console UART at 115200, 8-N-1.
+- If using the EvKit, the HCI UART is configured as LPUART and is accessible via the CMSIS-DAP. No external serial converter is needed.
- Optionally you can reconfigure the UART definitions in board.h to use the on-board USB to UART
adapter for the HCI UART.
diff --git a/Examples/MAX32690/Bluetooth/BLE5_ctr/project.mk b/Examples/MAX32690/Bluetooth/BLE5_ctr/project.mk
index 6dde0241e19..aead6a261be 100644
--- a/Examples/MAX32690/Bluetooth/BLE5_ctr/project.mk
+++ b/Examples/MAX32690/Bluetooth/BLE5_ctr/project.mk
@@ -14,6 +14,7 @@ SBT=0
# Enable Cordio library
LIB_CORDIO = 1
+#CHIP_REVISION = a
# Cordio library options
BLE_HOST = 0
diff --git a/Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c b/Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c
index 47934a08841..9702c94baeb 100644
--- a/Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c
+++ b/Examples/MAX32690/Bluetooth/BLE_datc/datc_main.c
@@ -148,7 +148,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -570,9 +570,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'D') &&
- (pData[DM_AD_DATA_IDX + 1] == 'A') && (pData[DM_AD_DATA_IDX + 2] == 'T') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32690/Bluetooth/BLE_datc/project.mk b/Examples/MAX32690/Bluetooth/BLE_datc/project.mk
index f22549e03a8..445bc9070e8 100644
--- a/Examples/MAX32690/Bluetooth/BLE_datc/project.mk
+++ b/Examples/MAX32690/Bluetooth/BLE_datc/project.mk
@@ -24,3 +24,14 @@ INIT_CENTRAL = 1
# Set to 1 to enable serial port trace messages
# Set to 2 to enable verbose messages
TRACE = 1
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
+
+
+
diff --git a/Examples/MAX32690/Bluetooth/BLE_dats/dats_main.c b/Examples/MAX32690/Bluetooth/BLE_dats/dats_main.c
index cbb22c89a85..385b79dc7ae 100644
--- a/Examples/MAX32690/Bluetooth/BLE_dats/dats_main.c
+++ b/Examples/MAX32690/Bluetooth/BLE_dats/dats_main.c
@@ -116,12 +116,13 @@ static const appSlaveCfg_t datsSlaveCfg = {
* -DM_KEY_DIST_IRK : Distribute IRK used for privacy
* -DM_KEY_DIST_CSRK : Distribute CSRK used for signed data
*/
+
static const appSecCfg_t datsSecCfg = {
DM_AUTH_BOND_FLAG | DM_AUTH_SC_FLAG | DM_AUTH_MITM_FLAG, /*! Authentication and bonding flags */
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/* OOB UART parameters */
@@ -214,15 +215,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'D',
- 'A',
- 'T',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -538,7 +532,9 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
-
+ memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
AppAdvSetData(APP_SCAN_DATA_DISCOVERABLE, sizeof(datsScanDataDisc),
@@ -760,7 +756,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32690/Bluetooth/BLE_dats/project.mk b/Examples/MAX32690/Bluetooth/BLE_dats/project.mk
index fbf455e2956..0c350397566 100644
--- a/Examples/MAX32690/Bluetooth/BLE_dats/project.mk
+++ b/Examples/MAX32690/Bluetooth/BLE_dats/project.mk
@@ -29,3 +29,16 @@ TRACE = 1
# Add services directory to build
IPATH += services
VPATH += services
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
+
+
+
+
diff --git a/Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c b/Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c
index 488d6b7ee05..990b90693d9 100644
--- a/Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c
+++ b/Examples/MAX32690/Bluetooth/BLE_otac/datc_main.c
@@ -154,7 +154,7 @@ static const appSecCfg_t datcSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -494,9 +494,9 @@ static void datcScanReport(dmEvt_t *pMsg)
if (!connect && ((pData = DmFindAdType(DM_ADV_TYPE_LOCAL_NAME, pMsg->scanReport.len,
pMsg->scanReport.pData)) != NULL)) {
/* check length and device name */
- if (pData[DM_AD_LEN_IDX] >= 4 && (pData[DM_AD_DATA_IDX] == 'O') &&
- (pData[DM_AD_DATA_IDX + 1] == 'T') && (pData[DM_AD_DATA_IDX + 2] == 'A') &&
- (pData[DM_AD_DATA_IDX + 3] == 'S')) {
+ char advName[] = ADV_NAME;
+ if (pData[DM_AD_LEN_IDX] == sizeof(advName) &&
+ !strncmp(advName, (char *)&(pData[DM_AD_DATA_IDX]), sizeof(advName))) {
connect = TRUE;
}
}
diff --git a/Examples/MAX32690/Bluetooth/BLE_otac/project.mk b/Examples/MAX32690/Bluetooth/BLE_otac/project.mk
index e382b57fcca..80daf587293 100644
--- a/Examples/MAX32690/Bluetooth/BLE_otac/project.mk
+++ b/Examples/MAX32690/Bluetooth/BLE_otac/project.mk
@@ -63,3 +63,16 @@ ${FW_UPDATE_OBJ}: fw_update.S ${FW_UPDATE_BIN}
ifeq ($(BOARD),FTHR)
$(error ERR_NOTSUPPORTED: This project is not supported for the FTHR board)
endif
+
+
+# set ADVTISEMENT name you want to connect
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
+
+
diff --git a/Examples/MAX32690/Bluetooth/BLE_otas/dats_main.c b/Examples/MAX32690/Bluetooth/BLE_otas/dats_main.c
index aea4d4ff213..6c8ebd4e8b3 100644
--- a/Examples/MAX32690/Bluetooth/BLE_otas/dats_main.c
+++ b/Examples/MAX32690/Bluetooth/BLE_otas/dats_main.c
@@ -119,7 +119,7 @@ static const appSecCfg_t datsSecCfg = {
DM_KEY_DIST_IRK, /*! Initiator key distribution flags */
DM_KEY_DIST_LTK | DM_KEY_DIST_IRK, /*! Responder key distribution flags */
FALSE, /*! TRUE if Out-of-band pairing data is present */
- TRUE /*! TRUE to initiate security upon connection */
+ INIT_SECURITY /*! TRUE to initiate security upon connection */
};
/*! TRUE if Out-of-band pairing data is to be sent */
@@ -195,15 +195,8 @@ static const uint8_t datsAdvDataDisc[] = {
};
/*! scan data, discoverable mode */
-static const uint8_t datsScanDataDisc[] = {
- /*! device name */
- 5, /*! length */
- DM_ADV_TYPE_LOCAL_NAME, /*! AD type */
- 'O',
- 'T',
- 'A',
- 'S'
-};
+static const uint8_t deviceName[] = ADV_NAME;
+static uint8_t datsScanDataDisc[sizeof(deviceName) + 2];
/**************************************************************************************************
Client Characteristic Configuration Descriptors
@@ -457,6 +450,13 @@ static void datsSetup(dmEvt_t *pMsg)
{
/* Initialize control information */
datsCb.restoringResList = FALSE;
+ < < < < < < < < <
+ Temporary merge branch 1 memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
+ == == == == = memcpy(&datsScanDataDisc[2], deviceName, sizeof(deviceName));
+ datsScanDataDisc[0] = sizeof(deviceName);
+ datsScanDataDisc[1] = DM_ADV_TYPE_LOCAL_NAME;
/* set advertising and scan response data for discoverable mode */
AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(datsAdvDataDisc), (uint8_t *)datsAdvDataDisc);
@@ -678,7 +678,7 @@ void DatsHandlerInit(wsfHandlerId_t handlerId)
AppGetBdAddr(addr);
APP_TRACE_INFO6("MAC Addr: %02x:%02x:%02x:%02x:%02x:%02x", addr[5], addr[4], addr[3], addr[2],
addr[1], addr[0]);
- APP_TRACE_INFO1("Adv local name: %s", &datsScanDataDisc[2]);
+ APP_TRACE_INFO1("Adv local name: %s", deviceName);
/* store handler ID */
datsCb.handlerId = handlerId;
diff --git a/Examples/MAX32690/Bluetooth/BLE_otas/project.mk b/Examples/MAX32690/Bluetooth/BLE_otas/project.mk
index f17c6967a21..9096fe5a148 100644
--- a/Examples/MAX32690/Bluetooth/BLE_otas/project.mk
+++ b/Examples/MAX32690/Bluetooth/BLE_otas/project.mk
@@ -59,3 +59,14 @@ endif
ifeq ($(BOARD),FTHR)
$(error ERR_NOTSUPPORTED: This project is not supported for the FTHR board)
endif
+
+
+
+# SET advertising name
+ADV_NAME?=DATS
+PROJ_CFLAGS += -DADV_NAME=\"$(ADV_NAME)\"
+
+
+### CONFIGURE security
+# /*! TRUE to initiate security upon connection*/
+PROJ_CFLAGS += -DINIT_SECURITY=TRUE
diff --git a/Examples/MAX32690/SPI/main.c b/Examples/MAX32690/SPI/main.c
index 31d31ebe228..0d249567748 100644
--- a/Examples/MAX32690/SPI/main.c
+++ b/Examples/MAX32690/SPI/main.c
@@ -41,16 +41,12 @@
#include "led.h"
/***** Preprocessors *****/
-#define MASTERSYNC 1
-#define MASTERASYNC 0
-#define MASTERDMA 0
+//#define MASTERSYNC 1
+//#define MASTERASYNC 0
+//#define MASTERDMA 0
+// define three METHOD above in project.mk
+// MASTERSYNC is default
-#if (!(MASTERSYNC || MASTERASYNC || MASTERDMA))
-#error "You must set either MASTERSYNC or MASTERASYNC or MASTERDMA to 1."
-#endif
-#if ((MASTERSYNC && MASTERASYNC) || (MASTERASYNC && MASTERDMA) || (MASTERDMA && MASTERSYNC))
-#error "You must select either MASTERSYNC or MASTERASYNC or MASTERDMA, not all 3."
-#endif
/***** Definitions *****/
#define DATA_LEN 100 // Words
#define DATA_VALUE 0xA5A5 // This is for master mode only...
@@ -153,11 +149,11 @@ int main(void)
return retVal;
}
-#if MASTERSYNC
+#ifdef MASTERSYNC
MXC_SPI_MasterTransaction(&req);
#endif
-#if MASTERASYNC
+#ifdef MASTERASYNC
MXC_NVIC_SetVector(SPI_IRQ, SPI_IRQHandler);
NVIC_EnableIRQ(SPI_IRQ);
MXC_SPI_MasterTransactionAsync(&req);
@@ -166,7 +162,7 @@ int main(void)
#endif
-#if MASTERDMA
+#ifdef MASTERDMA
MXC_DMA_ReleaseChannel(0);
MXC_DMA_ReleaseChannel(1);
diff --git a/Examples/MAX32690/SPI/project.mk b/Examples/MAX32690/SPI/project.mk
index 96eb02eae1d..f5d5f71759c 100644
--- a/Examples/MAX32690/SPI/project.mk
+++ b/Examples/MAX32690/SPI/project.mk
@@ -13,3 +13,7 @@
# For more information on how sing process works, see
# https://www.analog.com/en/education/education-library/videos/6313214207112.html
SBT=0
+
+
+METHOD ?= MASTERSYNC
+PROJ_CFLAGS += -D$(METHOD)
\ No newline at end of file
diff --git a/Examples/MAX32690/SPI_v2/main.c b/Examples/MAX32690/SPI_v2/main.c
index 282032c1bb1..2f7c674e46d 100644
--- a/Examples/MAX32690/SPI_v2/main.c
+++ b/Examples/MAX32690/SPI_v2/main.c
@@ -37,18 +37,11 @@
#include "led.h"
/***** Preprocessors *****/
-#define CONTROLLER_SYNC 1
-#define CONTROLLER_ASYNC 0
-#define CONTROLLER_DMA 0
-
-// Preprocessor Error Checking
-#if (!(CONTROLLER_SYNC || CONTROLLER_ASYNC || CONTROLLER_DMA))
-#error "You must set either CONTROLLER_SYNC or CONTROLLER_ASYNC or CONTROLLER_DMA to 1."
-#endif
-#if ((CONTROLLER_SYNC && CONTROLLER_ASYNC) || (CONTROLLER_ASYNC && CONTROLLER_DMA) || \
- (CONTROLLER_DMA && CONTROLLER_SYNC))
-#error "You must select either CONTROLLER_SYNC or CONTROLLER_ASYNC or CONTROLLER_DMA, not all 3."
-#endif
+//#define CONTROLLER_SYNC
+//#define CONTROLLER_ASYNC
+//#define CONTROLLER_DMA
+// define three METHOD above in project.mk
+// CONTROLLER_SYNC is default
/***** Definitions *****/
#define DATA_LEN 100 // Words
diff --git a/Examples/MAX32690/SPI_v2/project.mk b/Examples/MAX32690/SPI_v2/project.mk
index a607748507b..2a6864ac9fd 100644
--- a/Examples/MAX32690/SPI_v2/project.mk
+++ b/Examples/MAX32690/SPI_v2/project.mk
@@ -11,3 +11,7 @@
# Build SPI v2 library for example.
MXC_SPI_VERSION = v2
+
+
+METHOD ?= CONTROLLER_SYNC
+PROJ_CFLAGS += -D$(METHOD)
\ No newline at end of file
diff --git a/Examples/MAX32690/UART/main.c b/Examples/MAX32690/UART/main.c
index 8823637331b..c3617152853 100644
--- a/Examples/MAX32690/UART/main.c
+++ b/Examples/MAX32690/UART/main.c
@@ -37,7 +37,8 @@
#include "nvic_table.h"
/***** Definitions *****/
-// #define DMA
+// to enable DMA, define in project.mk
+// INTERRUPT is default in project.mk
#define UART_BAUD 115200
#define BUFF_SIZE 1024
diff --git a/Examples/MAX32690/UART/project.mk b/Examples/MAX32690/UART/project.mk
index 42b5536113b..fa98fb50d77 100644
--- a/Examples/MAX32690/UART/project.mk
+++ b/Examples/MAX32690/UART/project.mk
@@ -17,3 +17,7 @@ SBT=0
ifeq ($(BOARD),FTHR)
$(error ERR_NOTSUPPORTED: This project is not supported for the FTHR board)
endif
+
+
+METHOD ?= INTERRUPT
+PROJ_CFLAGS += -D$(METHOD)
diff --git a/Examples/MAX78000/CNN/facial_recognition/db_gen/generate_face_db.py b/Examples/MAX78000/CNN/facial_recognition/db_gen/generate_face_db.py
index 2b7d9bfdc16..802e993467b 100644
--- a/Examples/MAX78000/CNN/facial_recognition/db_gen/generate_face_db.py
+++ b/Examples/MAX78000/CNN/facial_recognition/db_gen/generate_face_db.py
@@ -21,12 +21,13 @@
"""
Script to generate Face Id embeddings
"""
+import torch
import argparse
import numpy as np
import os
import os.path as path
from ai85.ai85_adapter import AI85SimulatorAdapter
-from hawk_eyes.face import RetinaFace
+from batch_face import RetinaFace
from utils import append_db_file_from_path, create_weights_include_file, create_embeddings_include_file, create_baseaddr_include_file
@@ -42,8 +43,11 @@ def create_db_from_folder(args):
ai85_adapter = AI85SimulatorAdapter(MODEL_PATH)
- face_detector = RetinaFace(model_name='retina_l', conf=0.1)
-
+
+ if torch.cuda.is_available():
+ face_detector = RetinaFace(gpu_id=torch.cuda.current_device(), network="resnet50")
+ else:
+ face_detector = RetinaFace(gpu_id=-1, network="resnet50")
os.makedirs(args.db, exist_ok=True)
emb_array, recorded_subject = append_db_file_from_path(args.db, face_detector, ai85_adapter)
diff --git a/Examples/MAX78000/CNN/facial_recognition/db_gen/utils.py b/Examples/MAX78000/CNN/facial_recognition/db_gen/utils.py
index 004ca7de77f..7c6e8e2d9a3 100644
--- a/Examples/MAX78000/CNN/facial_recognition/db_gen/utils.py
+++ b/Examples/MAX78000/CNN/facial_recognition/db_gen/utils.py
@@ -26,7 +26,6 @@
from collections import defaultdict
import numpy as np
-
from cv2 import imread
from PIL import Image, ExifTags
import torch
@@ -101,7 +100,6 @@ def append_db_file_from_path(folder_path, face_detector, ai85_adapter):
img = get_face_image(img, face_detector)
if img is not None:
- img = ((img+1)*128)
img = (img.squeeze()).detach().cpu().numpy()
img = img.astype(np.uint8)
img = img.transpose([1, 2, 0])
@@ -118,28 +116,26 @@ def append_db_file_from_path(folder_path, face_detector, ai85_adapter):
emb_id += 1
summary[subject] += 1
- #np.save('emb_array.npy', emb_array)
print('Database Summary')
for key in summary:
print(f'\t{key}:', f'{summary[key]} images')
- #Format summary for printing image counts per subject
-
-
return emb_array, recorded_subject
+
def get_face_image(img, face_detector):
"""Detects face on the given image
"""
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
- bboxes, lndmrks = face_detector.detect(img)
- try:
- pbox = bboxes[0]
- except IndexError:
- print('No face detected')
- return None
+
+ faces = face_detector(img)
+ box, landmarks, score = faces[0]
+
+ pbox = box
+ for i in range(4):
+ pbox[i] = np.clip(pbox[i], 0, None)
+
img = torch.Tensor(img.transpose([2, 0, 1])).to(device).unsqueeze(0)
- img = Normalize_Img(img) #Normalize image for faceID
# Convert bounding box to square
height = pbox[3] - pbox[1]
@@ -153,7 +149,7 @@ def get_face_image(img, face_detector):
# Crop image with the square bounding box
img = VF.crop(img=img, top=int(pbox[1]), left=int(pbox[0]),
height=int(pbox[3]-pbox[1]), width=int(pbox[2]-pbox[0]))
-
+
# Check if the cropped image is square, if not, pad it
_, _, h, w = img.shape
@@ -224,7 +220,7 @@ def create_weights_include_file(emb_array, weights_h_path, baseaddr):
h_file.write('#define KERNELS_3 { \\\n ')
for dim in range(Embedding_dimension):
init_proccessor = False
- for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes TODO: Change this from Hardcoded
+ for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes
reindex = i + 8 - 2*(i%9)
if reindex < 1024: # Total emb count is 1024, last index 1023
single_byte = str(format(emb_array[reindex][dim], 'x')) #Relocate emb for cnn kernel
@@ -265,7 +261,7 @@ def create_weights_include_file(emb_array, weights_h_path, baseaddr):
four_byte = 0
data_arr = bytearray(np.uint8([data_arr]))
for dim in range(Embedding_dimension):
- for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes TODO: Change this from Hardcoded
+ for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes
reindex = i + 8 - 2*(i%9)
if reindex < 1024: # Total emb count is 1024, last index 1023
single_byte = int(emb_array[reindex][dim]) #Relocate emb for cnn kernel
diff --git a/Examples/MAX78000/FreeRTOSDemo/project.mk b/Examples/MAX78000/FreeRTOSDemo/project.mk
index 06b5bd69332..6d66198d848 100644
--- a/Examples/MAX78000/FreeRTOSDemo/project.mk
+++ b/Examples/MAX78000/FreeRTOSDemo/project.mk
@@ -16,6 +16,11 @@ DEBUG=1
LIB_FREERTOS = 1
+# Can provide a value for the FREERTOS heap allocation scheme
+# Default value is 4
+# FREERTOS_HEAP_TYPE := 2
+# export FREERTOS_HEAP_TYPE
+
ifeq ($(BOARD),Aud01_RevA)
$(error ERR_NOTSUPPORTED: This project is not supported for the Audio board)
endif
\ No newline at end of file
diff --git a/Examples/MAX78002/CNN/facial_recognition/db_gen/generate_face_db.py b/Examples/MAX78002/CNN/facial_recognition/db_gen/generate_face_db.py
index 2bacf0f142a..4173c00e156 100644
--- a/Examples/MAX78002/CNN/facial_recognition/db_gen/generate_face_db.py
+++ b/Examples/MAX78002/CNN/facial_recognition/db_gen/generate_face_db.py
@@ -21,12 +21,13 @@
"""
Script to generate Face Id embeddings
"""
+import torch
import argparse
import numpy as np
import os
import os.path as path
from ai85.ai85_adapter import AI85SimulatorAdapter
-from hawk_eyes.face import RetinaFace
+from batch_face import RetinaFace
from utils import append_db_file_from_path, create_weights_include_file, create_embeddings_include_file, create_baseaddr_include_file
@@ -41,8 +42,11 @@ def create_db_from_folder(args):
ai85_adapter = AI85SimulatorAdapter(MODEL_PATH)
- face_detector = RetinaFace(model_name='retina_l', conf=0.1)
-
+
+ if torch.cuda.is_available():
+ face_detector = RetinaFace(gpu_id=torch.cuda.current_device(), network="resnet50")
+ else:
+ face_detector = RetinaFace(gpu_id=-1, network="resnet50")
os.makedirs(args.db, exist_ok=True)
emb_array, recorded_subject = append_db_file_from_path(args.db, face_detector, ai85_adapter)
diff --git a/Examples/MAX78002/CNN/facial_recognition/db_gen/utils.py b/Examples/MAX78002/CNN/facial_recognition/db_gen/utils.py
index cdc31c2233f..d6089c4e967 100644
--- a/Examples/MAX78002/CNN/facial_recognition/db_gen/utils.py
+++ b/Examples/MAX78002/CNN/facial_recognition/db_gen/utils.py
@@ -1,35 +1,22 @@
-################################################################################
- # Copyright (C) 2022 Maxim Integrated Products, Inc., All Rights Reserved.
+###############################################################################
#
- # Permission is hereby granted, free of charge, to any person obtaining a
- # copy of this software and associated documentation files (the "Software"),
- # to deal in the Software without restriction, including without limitation
- # the rights to use, copy, modify, merge, publish, distribute, sublicense,
- # and/or sell copies of the Software, and to permit persons to whom the
- # Software is furnished to do so, subject to the following conditions:
+ # Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
+ # Analog Devices, Inc.),
+ # Copyright (C) 2023-2024 Analog Devices, Inc.
#
- # The above copyright notice and this permission notice shall be included
- # in all copies or substantial portions of the Software.
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
#
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- # IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
- # OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- # OTHER DEALINGS IN THE SOFTWARE.
+ # http://www.apache.org/licenses/LICENSE-2.0
#
- # Except as contained in this notice, the name of Maxim Integrated
- # Products, Inc. shall not be used except as stated in the Maxim Integrated
- # Products, Inc. Branding Policy.
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
#
- # The mere transfer of this software does not imply any licenses
- # of trade secrets, proprietary technology, copyrights, patents,
- # trademarks, maskwork rights, or any other form of intellectual
- # property whatsoever. Maxim Integrated Products, Inc. retains all
- # ownership rights.
- #
- ###############################################################################
+ ##############################################################################
"""
Utility functions to generate embeddings and I/O operations
@@ -43,7 +30,6 @@
from cv2 import imread
from PIL import Image, ExifTags
import torch
-import torchvision
import torchvision.transforms.functional as VF
@@ -115,7 +101,6 @@ def append_db_file_from_path(folder_path, face_detector, ai85_adapter):
img = get_face_image(img, face_detector)
if img is not None:
- img = ((img+1)*128)
img = (img.squeeze()).detach().cpu().numpy()
img = img.astype(np.uint8)
img = img.transpose([1, 2, 0])
@@ -133,29 +118,26 @@ def append_db_file_from_path(folder_path, face_detector, ai85_adapter):
emb_id += 1
summary[subject] += 1
- #np.save('emb_array.npy', emb_array)
print('Database Summary')
for key in summary:
print(f'\t{key}:', f'{summary[key]} images')
- #Format summary for printing image counts per subject
-
-
return emb_array, recorded_subject
+
def get_face_image(img, face_detector):
"""Detects face on the given image
"""
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
- bboxes, lndmrks = face_detector.detect(img)
- try:
- pbox = bboxes[0]
- except IndexError:
- print('No face detected')
- return None
- img = torch.Tensor(img.transpose([2, 0, 1])).to(device).unsqueeze(0)
- img = Normalize_Img(img) #Normalize image for faceID
-
+ faces = face_detector(img)
+ box, landmarks, score = faces[0]
+
+ pbox = box
+ for i in range(4):
+ pbox[i] = np.clip(pbox[i], 0, None)
+
+ img = torch.Tensor(img.transpose([2, 0, 1])).to(device).unsqueeze(0)
+
# Convert bounding box to square
height = pbox[3] - pbox[1]
width = pbox[2] - pbox[0]
@@ -168,7 +150,7 @@ def get_face_image(img, face_detector):
# Crop image with the square bounding box
img = VF.crop(img=img, top=int(pbox[1]), left=int(pbox[0]),
height=int(pbox[3]-pbox[1]), width=int(pbox[2]-pbox[0]))
-
+
# Check if the cropped image is square, if not, pad it
_, _, h, w = img.shape
@@ -238,7 +220,7 @@ def create_weights_include_file(emb_array, weights_h_path, baseaddr):
h_file.write('#define KERNELS_3 { \\\n ')
for dim in range(Embedding_dimension):
init_proccessor = False
- for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes TODO: Change this from Hardcoded
+ for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes
reindex = i + 8 - 2*(i%9)
if reindex < 1024: # Total emb count is 1024, last index 1023
single_byte = str(format(emb_array[reindex][dim], 'x')) #Relocate emb for cnn kernel
@@ -279,7 +261,7 @@ def create_weights_include_file(emb_array, weights_h_path, baseaddr):
four_byte = 0
data_arr = bytearray(np.uint8([data_arr]))
for dim in range(Embedding_dimension):
- for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes TODO: Change this from Hardcoded
+ for i in range(emb_array.shape[0] + 4): # nearest %9 == 0 for 1024 is 1027, it can be kept in 1028 bytes
reindex = i + 8 - 2*(i%9)
if reindex < 1024: # Total emb count is 1024, last index 1023
single_byte = int(emb_array[reindex][dim]) #Relocate emb for cnn kernel
diff --git a/Examples/MAX78002/CNN/facial_recognition/src/record.c b/Examples/MAX78002/CNN/facial_recognition/src/record.c
index dfdceac4f9d..ac072e21453 100644
--- a/Examples/MAX78002/CNN/facial_recognition/src/record.c
+++ b/Examples/MAX78002/CNN/facial_recognition/src/record.c
@@ -40,8 +40,6 @@
#include "utils.h"
#include "camera.h"
#include "faceID.h"
-#include "record.h"
-#include "utils.h"
#include "MAXCAM_Debug.h"
#include "cnn_1.h"
#include "cnn_2.h"
@@ -49,10 +47,8 @@
#include "led.h"
#include "lp.h"
#include "uart.h"
-#include "math.h"
#include "post_process.h"
#include "flc.h"
-#include "faceID.h"
#include "facedetection.h"
#include "weights_3.h"
#include "baseaddr.h"
@@ -655,7 +651,7 @@ int add_person(Person *p)
if (face_detected) {
printf("Box width: %d\n", box[2] - box[0]);
printf("Box height: %d\n", box[3] - box[1]);
- if ((box[2] - box[0]) < 90 || (box[3] - box[1]) < 130) {
+ if ((box[2] - box[0]) < 70 || (box[3] - box[1]) < 110) {
face_detected = 0;
if (!init_come_closer) {
diff --git a/Libraries/BlePhy/MAX32655/libphy_a1.a b/Libraries/BlePhy/MAX32655/libphy_a1.a
new file mode 100644
index 00000000000..33660682532
Binary files /dev/null and b/Libraries/BlePhy/MAX32655/libphy_a1.a differ
diff --git a/Libraries/BlePhy/MAX32655/libphy_a1_hard.a b/Libraries/BlePhy/MAX32655/libphy_a1_hard.a
new file mode 100644
index 00000000000..d5741f61f29
Binary files /dev/null and b/Libraries/BlePhy/MAX32655/libphy_a1_hard.a differ
diff --git a/Libraries/BlePhy/MAX32655/libphy_a1_riscv.a b/Libraries/BlePhy/MAX32655/libphy_a1_riscv.a
new file mode 100644
index 00000000000..1b69f283da4
Binary files /dev/null and b/Libraries/BlePhy/MAX32655/libphy_a1_riscv.a differ
diff --git a/Libraries/BlePhy/MAX32665/libphy.a b/Libraries/BlePhy/MAX32665/libphy.a
index 012c56a7d88..7087392eb6c 100644
Binary files a/Libraries/BlePhy/MAX32665/libphy.a and b/Libraries/BlePhy/MAX32665/libphy.a differ
diff --git a/Libraries/BlePhy/MAX32665/libphy_hard.a b/Libraries/BlePhy/MAX32665/libphy_hard.a
index 16756f51441..264622227a0 100644
Binary files a/Libraries/BlePhy/MAX32665/libphy_hard.a and b/Libraries/BlePhy/MAX32665/libphy_hard.a differ
diff --git a/Libraries/BlePhy/MAX32665/libphy_hardfp.log b/Libraries/BlePhy/MAX32665/libphy_hardfp.log
deleted file mode 100644
index 65d0bba0365..00000000000
--- a/Libraries/BlePhy/MAX32665/libphy_hardfp.log
+++ /dev/null
@@ -1,117 +0,0 @@
-+++ Compiling: ../../pal_bb.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/pal_bb.o ../../pal_bb.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/pal_bb.d -MP -MT obj/pal_bb.o ../../pal_bb.c
-+++ Compiling: ../../pal_bb_ble.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/pal_bb_ble.o ../../pal_bb_ble.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/pal_bb_ble.d -MP -MT obj/pal_bb_ble.o ../../pal_bb_ble.c
-+++ Compiling: ../../pal_bb_ble_rf.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/pal_bb_ble_rf.o ../../pal_bb_ble_rf.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/pal_bb_ble_rf.d -MP -MT obj/pal_bb_ble_rf.o ../../pal_bb_ble_rf.c
-+++ Compiling: ../../llc/ble/llc_api_ble.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/ble/llc_api_ble.o ../../llc/ble/llc_api_ble.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/ble/llc_api_ble.d -MP -MT obj/llc/ble/llc_api_ble.o ../../llc/ble/llc_api_ble.c
-+++ Compiling: ../../llc/shared/llc_api_rx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_rx.o ../../llc/shared/llc_api_rx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_rx.d -MP -MT obj/llc/shared/llc_api_rx.o ../../llc/shared/llc_api_rx.c
-+++ Compiling: ../../llc/shared/llc_api_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_setup.o ../../llc/shared/llc_api_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_setup.d -MP -MT obj/llc/shared/llc_api_setup.o ../../llc/shared/llc_api_setup.c
-+++ Compiling: ../../llc/shared/llc_api_timer.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_timer.o ../../llc/shared/llc_api_timer.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_timer.d -MP -MT obj/llc/shared/llc_api_timer.o ../../llc/shared/llc_api_timer.c
-+++ Compiling: ../../llc/shared/llc_api_timestamp.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_timestamp.o ../../llc/shared/llc_api_timestamp.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_timestamp.d -MP -MT obj/llc/shared/llc_api_timestamp.o ../../llc/shared/llc_api_timestamp.c
-+++ Compiling: ../../llc/shared/llc_util.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_util.o ../../llc/shared/llc_util.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_util.d -MP -MT obj/llc/shared/llc_util.o ../../llc/shared/llc_util.c
-+++ Compiling: ../../llc/shared/llc_api_tx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_tx.o ../../llc/shared/llc_api_tx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_tx.d -MP -MT obj/llc/shared/llc_api_tx.o ../../llc/shared/llc_api_tx.c
-+++ Compiling: ../../llc/shared/llc_int_handlers.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_int_handlers.o ../../llc/shared/llc_int_handlers.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_int_handlers.d -MP -MT obj/llc/shared/llc_int_handlers.o ../../llc/shared/llc_int_handlers.c
-+++ Compiling: ../../llc/shared/llc_api_crypto.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/llc/shared/llc_api_crypto.o ../../llc/shared/llc_api_crypto.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/llc/shared/llc_api_crypto.d -MP -MT obj/llc/shared/llc_api_crypto.o ../../llc/shared/llc_api_crypto.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_prot_init.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_prot_init.o ../../dbb/prot/ble/pan2g5/ble_prot_init.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_prot_init.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_prot_init.o ../../dbb/prot/ble/pan2g5/ble_prot_init.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_prot_trx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_prot_trx.o ../../dbb/prot/ble/pan2g5/ble_prot_trx.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_prot_trx.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_prot_trx.o ../../dbb/prot/ble/pan2g5/ble_prot_trx.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_ctrl.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_ctrl.o ../../dbb/prot/ble/pan2g5/ble_ctrl.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_ctrl.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_ctrl.o ../../dbb/prot/ble/pan2g5/ble_ctrl.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/pan2g_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/pan2g_config.o ../../dbb/prot/ble/pan2g5/pan2g_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/pan2g_config.d -MP -MT obj/dbb/prot/ble/pan2g5/pan2g_config.o ../../dbb/prot/ble/pan2g5/pan2g_config.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/afe/afe_modulation.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/afe/afe_modulation.o ../../dbb/prot/ble/pan2g5/afe/afe_modulation.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/afe/afe_modulation.d -MP -MT obj/dbb/prot/ble/pan2g5/afe/afe_modulation.o ../../dbb/prot/ble/pan2g5/afe/afe_modulation.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.o ../../dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.d -MP -MT obj/dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.o ../../dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/afe/max32665/rffe_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/afe/max32665/rffe_config.o ../../dbb/prot/ble/pan2g5/afe/max32665/rffe_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/afe/max32665/rffe_config.d -MP -MT obj/dbb/prot/ble/pan2g5/afe/max32665/rffe_config.o ../../dbb/prot/ble/pan2g5/afe/max32665/rffe_config.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/afe/max32665/board_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/afe/max32665/board_config.o ../../dbb/prot/ble/pan2g5/afe/max32665/board_config.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/afe/max32665/board_config.d -MP -MT obj/dbb/prot/ble/pan2g5/afe/max32665/board_config.o ../../dbb/prot/ble/pan2g5/afe/max32665/board_config.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/afe/max32665/agc_control.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/afe/max32665/agc_control.o ../../dbb/prot/ble/pan2g5/afe/max32665/agc_control.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/afe/max32665/agc_control.d -MP -MT obj/dbb/prot/ble/pan2g5/afe/max32665/agc_control.o ../../dbb/prot/ble/pan2g5/afe/max32665/agc_control.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_rx_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_rx_setup.o ../../dbb/prot/ble/pan2g5/ble_rx_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_rx_setup.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_rx_setup.o ../../dbb/prot/ble/pan2g5/ble_rx_setup.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_tx_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_tx_setup.o ../../dbb/prot/ble/pan2g5/ble_tx_setup.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_tx_setup.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_tx_setup.o ../../dbb/prot/ble/pan2g5/ble_tx_setup.c
-+++ Compiling: ../../dbb/prot/ble/pan2g5/ble_time_corr.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/prot/ble/pan2g5/ble_time_corr.o ../../dbb/prot/ble/pan2g5/ble_time_corr.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/prot/ble/pan2g5/ble_time_corr.d -MP -MT obj/dbb/prot/ble/pan2g5/ble_time_corr.o ../../dbb/prot/ble/pan2g5/ble_time_corr.c
-+++ Compiling: ../../dbb/control/pan/dbb_trx_timers.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_trx_timers.o ../../dbb/control/pan/dbb_trx_timers.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_trx_timers.d -MP -MT obj/dbb/control/pan/dbb_trx_timers.o ../../dbb/control/pan/dbb_trx_timers.c
-+++ Compiling: ../../dbb/control/pan/dbb_spim.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_spim.o ../../dbb/control/pan/dbb_spim.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_spim.d -MP -MT obj/dbb/control/pan/dbb_spim.o ../../dbb/control/pan/dbb_spim.c
-+++ Compiling: ../../dbb/control/pan/dbb_pmu.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_pmu.o ../../dbb/control/pan/dbb_pmu.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_pmu.d -MP -MT obj/dbb/control/pan/dbb_pmu.o ../../dbb/control/pan/dbb_pmu.c
-+++ Compiling: ../../dbb/control/pan/dbb_event.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_event.o ../../dbb/control/pan/dbb_event.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_event.d -MP -MT obj/dbb/control/pan/dbb_event.o ../../dbb/control/pan/dbb_event.c
-+++ Compiling: ../../dbb/control/pan/dbb_crypto.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_crypto.o ../../dbb/control/pan/dbb_crypto.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_crypto.d -MP -MT obj/dbb/control/pan/dbb_crypto.o ../../dbb/control/pan/dbb_crypto.c
-+++ Compiling: ../../dbb/control/pan/dbb_intc.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_intc.o ../../dbb/control/pan/dbb_intc.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_intc.d -MP -MT obj/dbb/control/pan/dbb_intc.o ../../dbb/control/pan/dbb_intc.c
-+++ Compiling: ../../dbb/control/pan/dbb_cmu.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/dbb/control/pan/dbb_cmu.o ../../dbb/control/pan/dbb_cmu.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/dbb/control/pan/dbb_cmu.d -MP -MT obj/dbb/control/pan/dbb_cmu.o ../../dbb/control/pan/dbb_cmu.c
-+++ Compiling: ../../debug/ll_dbg_pin.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -DMODULE_ID= -c -o obj/debug/ll_dbg_pin.o ../../debug/ll_dbg_pin.c
-arm-none-eabi-gcc -std=c99 -Wall -Wextra -Wno-unused-parameter -Wshadow -Wundef -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fno-common -fomit-frame-pointer -ffunction-sections -fdata-sections -Os -g -DDEBUG -DLL_DBG_PIN_ENABLED=1 -I../../../../../Libraries/Cordio/wsf/include -I../../../../../Libraries/Cordio/wsf/include/util -I../../../../../Libraries/Cordio/platform/include -I../../../../../Libraries/PeriphDrivers/Include/MAX32665 -I../../../../../Libraries/CMSIS/Include -I../../../../../Libraries/CMSIS/Device/Maxim/MAX32665/Include -I../../llc -I../../llc/ble -I../../llc/shared -I../../include -I../../library -I../../dbb -I../../dbb/prot -I../../dbb/prot/ble -I../../dbb/prot/ble/pan2g5 -I../../dbb/prot/ble/pan2g5/include -I../../dbb/prot/ble/pan2g5/afe -I../../dbb/prot/ble/pan2g5/afe/max32665 -I../../dbb/prot/ble/pan2g5/afe/max32665/include -I../../dbb/prot/shared -I../../dbb/control -I../../dbb/control/pan -I../../debug -DBB_CLK_RATE_HZ=1000000 -DFORCE_PMU_WAKEUP=1 -DTARGET=MAX32665 -DTARGET_REV=0x4131 -MM -MF obj/debug/ll_dbg_pin.d -MP -MT obj/debug/ll_dbg_pin.o ../../debug/ll_dbg_pin.c
-+++ Build options
- CPU = cortex-m4
- DEBUG = 1
- STRIP_LIB = 1
- COPY_LIB = 1
- DTM_TIMING = 0
- MFLOAT = hard
- CFG_DEV = BB_CLK_RATE_HZ=1000000 FORCE_PMU_WAKEUP=1 TARGET=MAX32665 TARGET_REV=0x4131
-+++ Archiving: ../../libphy_hard.a
-arm-none-eabi-gcc-ar --version
-GNU ar (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621
-Copyright (C) 2021 Free Software Foundation, Inc.
-This program is free software; you may redistribute it under the terms of
-the GNU General Public License version 3 or (at your option) any later version.
-This program has absolutely no warranty.
-arm-none-eabi-gcc-ar rcs -o ../../libphy_hard.a obj/pal_bb.o obj/pal_bb_ble.o obj/pal_bb_ble_rf.o obj/llc/ble/llc_api_ble.o obj/llc/shared/llc_api_rx.o obj/llc/shared/llc_api_setup.o obj/llc/shared/llc_api_timer.o obj/llc/shared/llc_api_timestamp.o obj/llc/shared/llc_util.o obj/llc/shared/llc_api_tx.o obj/llc/shared/llc_int_handlers.o obj/llc/shared/llc_api_crypto.o obj/dbb/prot/ble/pan2g5/ble_prot_init.o obj/dbb/prot/ble/pan2g5/ble_prot_trx.o obj/dbb/prot/ble/pan2g5/ble_ctrl.o obj/dbb/prot/ble/pan2g5/pan2g_config.o obj/dbb/prot/ble/pan2g5/afe/afe_modulation.o obj/dbb/prot/ble/pan2g5/afe/max32665/sequencer_ext.o obj/dbb/prot/ble/pan2g5/afe/max32665/rffe_config.o obj/dbb/prot/ble/pan2g5/afe/max32665/board_config.o obj/dbb/prot/ble/pan2g5/afe/max32665/agc_control.o obj/dbb/prot/ble/pan2g5/ble_rx_setup.o obj/dbb/prot/ble/pan2g5/ble_tx_setup.o obj/dbb/prot/ble/pan2g5/ble_time_corr.o obj/dbb/control/pan/dbb_trx_timers.o obj/dbb/control/pan/dbb_spim.o obj/dbb/control/pan/dbb_pmu.o obj/dbb/control/pan/dbb_event.o obj/dbb/control/pan/dbb_crypto.o obj/dbb/control/pan/dbb_intc.o obj/dbb/control/pan/dbb_cmu.o obj/debug/ll_dbg_pin.o
-+++ Stripping: ../../libphy_hard.a
-arm-none-eabi-strip --strip-unneeded ../../libphy_hard.a
-+++ Copying: ../../libphy_hard.a to msdk
-cp ../../libphy_hard.a ../../../../../Libraries/BlePhy/MAX32665/libphy_hard.a
-revision: 1d56fa0
diff --git a/Libraries/CMSIS/Device/Maxim/GCC/mxc_version.mk b/Libraries/CMSIS/Device/Maxim/GCC/mxc_version.mk
index b61ba29bf55..6a910da3fea 100644
--- a/Libraries/CMSIS/Device/Maxim/GCC/mxc_version.mk
+++ b/Libraries/CMSIS/Device/Maxim/GCC/mxc_version.mk
@@ -16,9 +16,9 @@
#
##############################################################################
# Autogenerated version info for build system.
-MSDK_VERSION_STRING := v2024_02-33-g2895589c63
-MSDK_VERSION_YEAR := 2024
-MSDK_VERSION_MONTH := 2
+MSDK_VERSION_STRING := v2023_10-172-gd3f8669fd6
+MSDK_VERSION_YEAR := 2023
+MSDK_VERSION_MONTH := 10
# Add root MAXIM_PATH to IPATH so compiler can locate msdk_version.h
IPATH += $(MAXIM_PATH)
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32520/Source/header_MAX32520.c b/Libraries/CMSIS/Device/Maxim/MAX32520/Source/sla_header_MAX32520.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32520/Source/header_MAX32520.c
rename to Libraries/CMSIS/Device/Maxim/MAX32520/Source/sla_header_MAX32520.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32520/Source/system_max32520.c b/Libraries/CMSIS/Device/Maxim/MAX32520/Source/system_max32520.c
index 4fdbbe9bca7..4f98ee0c34a 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32520/Source/system_max32520.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32520/Source/system_max32520.c
@@ -39,12 +39,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32570/Source/header_MAX32570.c b/Libraries/CMSIS/Device/Maxim/MAX32570/Source/sla_header_MAX32570.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32570/Source/header_MAX32570.c
rename to Libraries/CMSIS/Device/Maxim/MAX32570/Source/sla_header_MAX32570.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32570/Source/system_max32570.c b/Libraries/CMSIS/Device/Maxim/MAX32570/Source/system_max32570.c
index 8c0fc6d125d..d437a2f9890 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32570/Source/system_max32570.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32570/Source/system_max32570.c
@@ -36,12 +36,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32572/Source/header_MAX32572.c b/Libraries/CMSIS/Device/Maxim/MAX32572/Source/sla_header_MAX32572.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32572/Source/header_MAX32572.c
rename to Libraries/CMSIS/Device/Maxim/MAX32572/Source/sla_header_MAX32572.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_max32572.c b/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_max32572.c
index 13d09951ed1..c14d69d15c0 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_max32572.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_max32572.c
@@ -36,12 +36,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_riscv_max32572.c b/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_riscv_max32572.c
index b922ac0d4d6..6d51ac0a79e 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_riscv_max32572.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32572/Source/system_riscv_max32572.c
@@ -33,12 +33,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32650/Source/header_MAX32650.c b/Libraries/CMSIS/Device/Maxim/MAX32650/Source/sla_header_MAX32650.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32650/Source/header_MAX32650.c
rename to Libraries/CMSIS/Device/Maxim/MAX32650/Source/sla_header_MAX32650.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32650/Source/system_max32650.c b/Libraries/CMSIS/Device/Maxim/MAX32650/Source/system_max32650.c
index 567c6ca19d7..0cb9e4191b6 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32650/Source/system_max32650.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32650/Source/system_max32650.c
@@ -38,12 +38,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_max32655.c b/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_max32655.c
index d269e39c513..c735e55dd17 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_max32655.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_max32655.c
@@ -37,12 +37,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_riscv_max32655.c b/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_riscv_max32655.c
index 58f4f77d3f4..c9d37353235 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_riscv_max32655.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32655/Source/system_riscv_max32655.c
@@ -38,12 +38,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32657/Source/system_max32657.c b/Libraries/CMSIS/Device/Maxim/MAX32657/Source/system_max32657.c
index 417f887b2ab..ac9719da57d 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32657/Source/system_max32657.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32657/Source/system_max32657.c
@@ -35,12 +35,12 @@ uint32_t SystemCoreClock = IPO_FREQ; // Part defaults to IPO on startup
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32660/Source/system_max32660.c b/Libraries/CMSIS/Device/Maxim/MAX32660/Source/system_max32660.c
index bb818302ff5..024c30fefa1 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32660/Source/system_max32660.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32660/Source/system_max32660.c
@@ -41,12 +41,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32662/Source/header_MAX32662.c b/Libraries/CMSIS/Device/Maxim/MAX32662/Source/sla_header_MAX32662.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32662/Source/header_MAX32662.c
rename to Libraries/CMSIS/Device/Maxim/MAX32662/Source/sla_header_MAX32662.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32662/Source/system_max32662.c b/Libraries/CMSIS/Device/Maxim/MAX32662/Source/system_max32662.c
index 1d0fcd037d4..89c352333d6 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32662/Source/system_max32662.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32662/Source/system_max32662.c
@@ -32,20 +32,19 @@
extern void (*const __isr_vector[])(void);
-uint32_t SystemCoreClock __attribute__((section(".shared")));
-volatile uint32_t mailbox __attribute__((section(".mailbox")));
+uint32_t SystemCoreClock = HIRC_FREQ;
/*
The libc implementation from GCC 11+ depends on _getpid and _kill in some places.
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32665/Source/header_MAX32665.c b/Libraries/CMSIS/Device/Maxim/MAX32665/Source/sla_header_MAX32665.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32665/Source/header_MAX32665.c
rename to Libraries/CMSIS/Device/Maxim/MAX32665/Source/sla_header_MAX32665.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32665/Source/system_max32665.c b/Libraries/CMSIS/Device/Maxim/MAX32665/Source/system_max32665.c
index a7e5bb1411c..2729e992edd 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32665/Source/system_max32665.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32665/Source/system_max32665.c
@@ -43,12 +43,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32670/Source/system_max32670.c b/Libraries/CMSIS/Device/Maxim/MAX32670/Source/system_max32670.c
index 7b8b644d6c2..b7951e511a4 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32670/Source/system_max32670.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32670/Source/system_max32670.c
@@ -37,12 +37,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32672/Source/header_MAX32672.c b/Libraries/CMSIS/Device/Maxim/MAX32672/Source/sla_header_MAX32672.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32672/Source/header_MAX32672.c
rename to Libraries/CMSIS/Device/Maxim/MAX32672/Source/sla_header_MAX32672.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32672/Source/system_max32672.c b/Libraries/CMSIS/Device/Maxim/MAX32672/Source/system_max32672.c
index fbe7fc3b453..67a1c371c62 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32672/Source/system_max32672.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32672/Source/system_max32672.c
@@ -35,12 +35,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32675/Source/system_max32675.c b/Libraries/CMSIS/Device/Maxim/MAX32675/Source/system_max32675.c
index 190e2b21852..ce9f218b571 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32675/Source/system_max32675.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32675/Source/system_max32675.c
@@ -37,12 +37,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_max32680.c b/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_max32680.c
index 33191b596dd..b3395119eef 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_max32680.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_max32680.c
@@ -36,12 +36,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_riscv_max32680.c b/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_riscv_max32680.c
index b5528022bf3..b0296209e64 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_riscv_max32680.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32680/Source/system_riscv_max32680.c
@@ -38,12 +38,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32690/Source/header_MAX32690.c b/Libraries/CMSIS/Device/Maxim/MAX32690/Source/sla_header_MAX32690.c
similarity index 100%
rename from Libraries/CMSIS/Device/Maxim/MAX32690/Source/header_MAX32690.c
rename to Libraries/CMSIS/Device/Maxim/MAX32690/Source/sla_header_MAX32690.c
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_max32690.c b/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_max32690.c
index 08c66bc3094..f51599c5bc9 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_max32690.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_max32690.c
@@ -36,12 +36,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_riscv_max32690.c b/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_riscv_max32690.c
index e4787f588bb..cf40e1d0033 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_riscv_max32690.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX32690/Source/system_riscv_max32690.c
@@ -33,12 +33,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_max78000.c b/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_max78000.c
index 2b05de216cc..4c5c1dc564b 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_max78000.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_max78000.c
@@ -36,12 +36,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_riscv_max78000.c b/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_riscv_max78000.c
index b706dafca0b..c54653cb329 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_riscv_max78000.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX78000/Source/system_riscv_max78000.c
@@ -33,12 +33,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_max78002.c b/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_max78002.c
index 1f153a3bd0b..d6cbd2fcbbf 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_max78002.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_max78002.c
@@ -35,12 +35,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_riscv_max78002.c b/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_riscv_max78002.c
index ba04dec793d..14a8fdc39ae 100644
--- a/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_riscv_max78002.c
+++ b/Libraries/CMSIS/Device/Maxim/MAX78002/Source/system_riscv_max78002.c
@@ -33,12 +33,12 @@ The libc implementation from GCC 11+ depends on _getpid and _kill in some places
There is no concept of processes/PIDs in the baremetal PeriphDrivers, therefore
we implement stub functions that return an error code to resolve linker warnings.
*/
-int _getpid(void)
+__weak int _getpid(void)
{
return E_NOT_SUPPORTED;
}
-int _kill(void)
+__weak int _kill(void)
{
return E_NOT_SUPPORTED;
}
diff --git a/Libraries/Cordio/controller/include/ble/bb_ble_api.h b/Libraries/Cordio/controller/include/ble/bb_ble_api.h
index d7f330dd60a..b18268d60ec 100644
--- a/Libraries/Cordio/controller/include/ble/bb_ble_api.h
+++ b/Libraries/Cordio/controller/include/ble/bb_ble_api.h
@@ -304,7 +304,14 @@ uint16_t BbBleInitPeriodicList(uint8_t numEntries, uint8_t *pFreeMem, uint32_t f
*/
/*************************************************************************************************/
void BbBleGetAdvStats(BbBleAdvPktStats_t *pStats);
-
+/*************************************************************************************************/
+/*!
+ * \brief Reset scan packet statistics.
+ *
+ * \return None.
+ */
+/*************************************************************************************************/
+void BbBleResetAdvStats(void);
/*************************************************************************************************/
/*!
* \brief Get scan packet statistics.
@@ -314,6 +321,15 @@ void BbBleGetAdvStats(BbBleAdvPktStats_t *pStats);
/*************************************************************************************************/
void BbBleGetScanStats(BbBleScanPktStats_t *pStats);
+/*************************************************************************************************/
+/*!
+ * \brief Reset scan packet statistics.
+ *
+ * \return None.
+ */
+/*************************************************************************************************/
+void BbBleResetScanStats(void);
+
/*************************************************************************************************/
/*!
* \brief Get auxiliary advertising packet statistics.
diff --git a/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_master.c b/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_master.c
index 39609fa941a..742e7cd63fb 100644
--- a/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_master.c
+++ b/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_master.c
@@ -600,3 +600,7 @@ void BbBleGetScanStats(BbBleScanPktStats_t *pStats)
{
*pStats = bbScanStats;
}
+void BbBleResetScanStats(void)
+{
+ memset(&bbScanStats, 0, sizeof(BbBleScanPktStats_t));
+}
diff --git a/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_slave.c b/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_slave.c
index 67bafc4c51e..5577111e96b 100644
--- a/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_slave.c
+++ b/Libraries/Cordio/controller/sources/ble/bb/bb_ble_adv_slave.c
@@ -465,3 +465,7 @@ void BbBleGetAdvStats(BbBleAdvPktStats_t *pStats)
{
*pStats = bbAdvStats;
}
+void BbBleResetAdvStats(void)
+{
+ memset(&bbAdvStats, 0, sizeof(BbBleAdvPktStats_t));
+}
diff --git a/Libraries/Cordio/controller/sources/ble/lhci/lhci_cmd_vs.c b/Libraries/Cordio/controller/sources/ble/lhci/lhci_cmd_vs.c
index 6bd67c63d40..666385ca2c2 100644
--- a/Libraries/Cordio/controller/sources/ble/lhci/lhci_cmd_vs.c
+++ b/Libraries/Cordio/controller/sources/ble/lhci/lhci_cmd_vs.c
@@ -218,16 +218,16 @@ bool_t lhciCommonVsStdDecodeCmdPkt(LhciHdr_t *pHdr, uint8_t *pBuf)
evtParamLen += sizeof(int8_t);
break;
}
- case LHCI_OPCODE_VS_PHY_EN:
+ case LHCI_OPCODE_VS_RESET_ADV_STATS:
{
status = LL_SUCCESS;
- PalBbEnable();
+ BbBleResetAdvStats();
break;
}
- case LHCI_OPCODE_VS_PHY_DIS:
+ case LHCI_OPCODE_VS_RESET_SCAN_STATS:
{
status = LL_SUCCESS;
- PalBbDisable();
+ BbBleResetScanStats();
break;
}
@@ -255,9 +255,8 @@ bool_t lhciCommonVsStdDecodeCmdPkt(LhciHdr_t *pHdr, uint8_t *pBuf)
case LHCI_OPCODE_VS_REG_WRITE:
case LHCI_OPCODE_VS_RX_TEST:
case LHCI_OPCODE_VS_TX_TEST:
- case LHCI_OPCODE_VS_PHY_EN:
- case LHCI_OPCODE_VS_PHY_DIS:
-
+ case LHCI_OPCODE_VS_RESET_ADV_STATS:
+ case LHCI_OPCODE_VS_RESET_SCAN_STATS:
/* no action */
break;
@@ -270,6 +269,7 @@ bool_t lhciCommonVsStdDecodeCmdPkt(LhciHdr_t *pHdr, uint8_t *pBuf)
/*
TODO: Needs feature in PHY
*/
+ // PalBbEnable();
pBuf[0] = -10;
break;
}
diff --git a/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h b/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h
index 81c62560094..962e7852bdf 100644
--- a/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h
+++ b/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h
@@ -369,10 +369,10 @@ extern "C" {
#define LHCI_OPCODE_VS_GET_RSSI \
HCI_OPCODE(HCI_OGF_VENDOR_SPEC, \
0x306) /*! MAX_G_FRAME_COMPLETE_US) {
+ MXC_CSI2_RevA_Stop((mxc_csi2_reva_regs_t *)MXC_CSI2);
+ return E_NO_RESPONSE;
+ }
+ }
+ MXC_TMR_SW_Stop(MXC_TMR0);
if (!csi2_state.capture_stats.success)
return E_FAIL;
diff --git a/Libraries/PeriphDrivers/Source/SDHC/sdhc_ai87.c b/Libraries/PeriphDrivers/Source/SDHC/sdhc_ai87.c
index aed74ee5f0d..6377a5e93de 100644
--- a/Libraries/PeriphDrivers/Source/SDHC/sdhc_ai87.c
+++ b/Libraries/PeriphDrivers/Source/SDHC/sdhc_ai87.c
@@ -68,17 +68,17 @@ int MXC_SDHC_Init(const mxc_sdhc_cfg_t *cfg)
unsigned int MXC_SDHC_Get_Input_Clock_Freq(void)
{
// Figure 4-1 of the preliminary AI85 UG (04/01/2022) shows the SDHC hardware block
- // connected directly to the SYS_CLK node. This is most likely inaccurate, but the
+ // connected directly to the IPO Clock node. This is most likely inaccurate, but the
// register description for MXC_GCR->pclkdiv marks the usual SDHC divider as reserved.
// We will follow figure 4-1 for now.
if (MXC_GCR->pclkdiv & MXC_F_GCR_PCLKDIS1_SDHC) {
- return SystemCoreClock >> 2; // Div by 4
+ return IPO_FREQ >> 2; // Div by 4
} else {
- return SystemCoreClock >> 1; // Div by 2
+ return IPO_FREQ >> 1; // Div by 2
}
- return SystemCoreClock;
+ return IPO_FREQ;
}
/* ************************************************************************** */
diff --git a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me10.c b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me10.c
index a50a15977ef..d775c49cdb4 100644
--- a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me10.c
+++ b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me10.c
@@ -85,9 +85,9 @@ unsigned int MXC_SDHC_Get_Clock_Config(void)
unsigned int MXC_SDHC_Get_Input_Clock_Freq(void)
{
if (MXC_GCR->pclk_div & MXC_F_GCR_PCLK_DIV_SDHCFRQ) {
- return SystemCoreClock >> 1; // Div by 2
+ return HIRC96_FREQ >> 1; // Div by 2
} else {
- return 50000000; // UG specifies a hard-coded 50Mhz value in this case
+ return 50000000; // UG specifies a hard-coded 50Mhz low-power oscillator
}
}
diff --git a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me13.c b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me13.c
index 96c1d99a91d..fa7d25570fd 100644
--- a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me13.c
+++ b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me13.c
@@ -68,9 +68,9 @@ unsigned int MXC_SDHC_Get_Input_Clock_Freq(void)
{
// TODO(JC): Confirm this is the scheme used by ME13
if (MXC_GCR->pclkdiv & MXC_F_GCR_PCLKDIV_SDHCFRQ) {
- return SystemCoreClock >> 2; // Div by 4
+ return IPO_FREQ >> 2; // Div by 4
} else {
- return SystemCoreClock >> 1; // Div by 2
+ return IPO_FREQ >> 1; // Div by 2
}
}
diff --git a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me14.c b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me14.c
index fb96f3fa3bb..5b7c749a96e 100644
--- a/Libraries/PeriphDrivers/Source/SDHC/sdhc_me14.c
+++ b/Libraries/PeriphDrivers/Source/SDHC/sdhc_me14.c
@@ -68,9 +68,9 @@ int MXC_SDHC_Init(const mxc_sdhc_cfg_t *cfg)
unsigned int MXC_SDHC_Get_Input_Clock_Freq(void)
{
if (MXC_GCR->pckdiv & MXC_F_GCR_PCKDIV_SDHCFRQ) {
- return SystemCoreClock >> 2; // Div by 4
+ return HIRC96_FREQ >> 2; // Div by 4
} else {
- return SystemCoreClock >> 1; // Div by 2
+ return HIRC96_FREQ >> 1; // Div by 2
}
}
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_ai85.c b/Libraries/PeriphDrivers/Source/SYS/sys_ai85.c
index da47775af87..b58d1eb1a2b 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_ai85.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_ai85.c
@@ -75,7 +75,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
uint32_t _usn_32[MXC_SYS_USN_CHECKSUM_LEN / 4];
// ^ Declare as uint32_t to preserve mem alignment
uint8_t *_usn_8 = (uint8_t *)_usn_32;
- memset(_usn_8, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(_usn_8, 0, MXC_SYS_USN_LEN);
_usn_8[0] = (infoblock[0] & 0x007F8000) >> 15;
_usn_8[1] = (infoblock[0] & 0x7F800000) >> 23;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_ai87.c b/Libraries/PeriphDrivers/Source/SYS/sys_ai87.c
index fdb03567b21..808705d1f38 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_ai87.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_ai87.c
@@ -75,7 +75,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
uint32_t _usn_32[MXC_SYS_USN_CHECKSUM_LEN / 4];
// ^ Declare as uint32_t to preserve mem alignment
uint8_t *_usn_8 = (uint8_t *)_usn_32;
- memset(_usn_8, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(_usn_8, 0, MXC_SYS_USN_LEN);
_usn_8[0] = (infoblock[0] & 0x007F8000) >> 15;
_usn_8[1] = (infoblock[0] & 0x7F800000) >> 23;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me12.c b/Libraries/PeriphDrivers/Source/SYS/sys_me12.c
index f2881904cb1..d7db012f1eb 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me12.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me12.c
@@ -70,7 +70,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -103,10 +103,12 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
// Set NULL Key
MXC_AES_SetExtKey((const void *)aes_key, MXC_AES_128BITS);
+ uint8_t usn_copy[MXC_SYS_USN_LEN] = { 0 };
+ memcpy(usn_copy, usn, MXC_SYS_USN_LEN);
// Compute Checksum
mxc_aes_req_t aes_req;
aes_req.length = MXC_SYS_USN_CHECKSUM_LEN / 4;
- aes_req.inputData = (uint32_t *)usn;
+ aes_req.inputData = (uint32_t *)usn_copy;
aes_req.resultData = (uint32_t *)check_csum;
aes_req.keySize = MXC_AES_128BITS;
aes_req.encryption = MXC_AES_ENCRYPT_EXT_KEY;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me14.c b/Libraries/PeriphDrivers/Source/SYS/sys_me14.c
index 520f5bf91b5..142244fa433 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me14.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me14.c
@@ -64,7 +64,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -82,9 +82,11 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
// Compute the checksum
if (checksum != NULL) {
+ uint8_t usn_copy[MXC_SYS_USN_CHECKSUM_LEN] = { 0 };
uint8_t check_csum[MXC_SYS_USN_CHECKSUM_LEN];
uint8_t key[MXC_SYS_USN_CHECKSUM_LEN];
+ memcpy(usn_copy, usn, MXC_SYS_USN_LEN);
/* Initialize the remainder of the USN and key */
memset(key, 0, MXC_SYS_USN_CHECKSUM_LEN);
memset(checksum, 0, MXC_SYS_USN_CSUM_FIELD_LEN);
@@ -94,7 +96,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
checksum[0] = ((infoblock[4] & 0x007F8000) >> 15);
MXC_TPU_Cipher_Config(MXC_TPU_MODE_ECB, MXC_TPU_CIPHER_AES128);
- MXC_TPU_Cipher_AES_Encrypt((const char *)usn, NULL, (const char *)key,
+ MXC_TPU_Cipher_AES_Encrypt((const char *)usn_copy, NULL, (const char *)key,
MXC_TPU_CIPHER_AES128, MXC_TPU_MODE_ECB, MXC_AES_DATA_LEN,
(char *)check_csum);
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me15.c b/Libraries/PeriphDrivers/Source/SYS/sys_me15.c
index 6ffab731d0a..dd4ad6874dc 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me15.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me15.c
@@ -76,7 +76,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -110,10 +110,13 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
// Set NULL Key
MXC_AES_SetExtKey((const void *)aes_key, MXC_AES_128BITS);
+ uint8_t usn_copy[MXC_SYS_USN_LEN] = { 0 };
+ memcpy(usn_copy, usn, MXC_SYS_USN_LEN);
+
// Compute Checksum
mxc_aes_req_t aes_req;
aes_req.length = MXC_SYS_USN_CHECKSUM_LEN / 4;
- aes_req.inputData = (uint32_t *)usn;
+ aes_req.inputData = (uint32_t *)usn_copy;
aes_req.resultData = (uint32_t *)check_csum;
aes_req.keySize = MXC_AES_128BITS;
aes_req.encryption = MXC_AES_ENCRYPT_EXT_KEY;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me16.c b/Libraries/PeriphDrivers/Source/SYS/sys_me16.c
index b9268fc263b..bb5974685af 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me16.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me16.c
@@ -62,7 +62,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me17.c b/Libraries/PeriphDrivers/Source/SYS/sys_me17.c
index 9f2b06d85bd..cb9ad4328bc 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me17.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me17.c
@@ -72,7 +72,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -105,10 +105,13 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
// Set NULL Key
MXC_AES_SetExtKey((const void *)aes_key, MXC_AES_128BITS);
+ uint8_t usn_copy[MXC_SYS_USN_LEN] = { 0 };
+ memcpy(usn_copy, usn, MXC_SYS_USN_LEN);
+
// Compute Checksum
mxc_aes_req_t aes_req;
aes_req.length = MXC_SYS_USN_CHECKSUM_LEN / 4;
- aes_req.inputData = (uint32_t *)usn;
+ aes_req.inputData = (uint32_t *)usn_copy;
aes_req.resultData = (uint32_t *)check_csum;
aes_req.keySize = MXC_AES_128BITS;
aes_req.encryption = MXC_AES_ENCRYPT_EXT_KEY;
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me18.c b/Libraries/PeriphDrivers/Source/SYS/sys_me18.c
index 9b39a6bc91d..2c8ffa88940 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me18.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me18.c
@@ -71,7 +71,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -97,9 +97,9 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Initialize key and plaintext */
memset(key, 0, MXC_SYS_USN_CHECKSUM_LEN);
memset(pt32, 0, MXC_SYS_USN_CHECKSUM_LEN);
- memcpy(pt32, usn, MXC_SYS_USN_CHECKSUM_LEN);
+ memcpy(pt32, usn, MXC_SYS_USN_LEN);
- /* Read the checksum from the info block */
+ /* Read the checksum from the inspfo block */
checksum[1] = ((infoblock[3] & 0x7F800000) >> 23);
checksum[0] = ((infoblock[4] & 0x007F8000) >> 15);
diff --git a/Libraries/PeriphDrivers/Source/SYS/sys_me21.c b/Libraries/PeriphDrivers/Source/SYS/sys_me21.c
index da04b656a3c..f84de5857a3 100644
--- a/Libraries/PeriphDrivers/Source/SYS/sys_me21.c
+++ b/Libraries/PeriphDrivers/Source/SYS/sys_me21.c
@@ -68,7 +68,7 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
/* Read the USN from the info block */
MXC_FLC_UnlockInfoBlock(MXC_INFO0_MEM_BASE);
- memset(usn, 0, MXC_SYS_USN_CHECKSUM_LEN);
+ memset(usn, 0, MXC_SYS_USN_LEN);
usn[0] = (infoblock[0] & 0x007F8000) >> 15;
usn[1] = (infoblock[0] & 0x7F800000) >> 23;
@@ -102,10 +102,13 @@ int MXC_SYS_GetUSN(uint8_t *usn, uint8_t *checksum)
// Set NULL Key
MXC_AES_SetExtKey((const void *)aes_key, MXC_AES_128BITS);
+ uint8_t usn_copy[MXC_SYS_USN_LEN] = { 0 };
+ memcpy(usn_copy, usn, MXC_SYS_USN_LEN);
+
// Compute Checksum
mxc_aes_req_t aes_req;
aes_req.length = MXC_SYS_USN_CHECKSUM_LEN / 4;
- aes_req.inputData = (uint32_t *)usn;
+ aes_req.inputData = (uint32_t *)usn_copy;
aes_req.resultData = (uint32_t *)check_csum;
aes_req.keySize = MXC_AES_128BITS;
aes_req.encryption = MXC_AES_ENCRYPT_EXT_KEY;
diff --git a/Libraries/PeriphDrivers/max32655_files.mk b/Libraries/PeriphDrivers/max32655_files.mk
index 5a19badb54f..fdf45ea2461 100644
--- a/Libraries/PeriphDrivers/max32655_files.mk
+++ b/Libraries/PeriphDrivers/max32655_files.mk
@@ -145,4 +145,3 @@ PERIPH_DRIVER_INCLUDE_DIR += $(SOURCE_DIR)/WUT
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/WUT/wut_me17.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/WUT/wut_reva.c
-
diff --git a/Libraries/PeriphDrivers/max32690_files.mk b/Libraries/PeriphDrivers/max32690_files.mk
index 1e3908079d9..67a944c4e09 100644
--- a/Libraries/PeriphDrivers/max32690_files.mk
+++ b/Libraries/PeriphDrivers/max32690_files.mk
@@ -53,6 +53,7 @@ PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/SYS/nvic_table.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/SYS/pins_me18.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/SYS/sys_me18.c
+
PERIPH_DRIVER_INCLUDE_DIR += $(SOURCE_DIR)/ADC
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/ADC/adc_me18.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/ADC/adc_revb.c
@@ -66,6 +67,8 @@ PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/CTB/ctb_me18.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/CTB/ctb_reva.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/CTB/ctb_common.c
+
+
PERIPH_DRIVER_INCLUDE_DIR += $(SOURCE_DIR)/DMA
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/DMA/dma_me18.c
PERIPH_DRIVER_C_FILES += $(SOURCE_DIR)/DMA/dma_reva.c
diff --git a/Libraries/SDHC/Include/sdhc_lib.h b/Libraries/SDHC/Include/sdhc_lib.h
index 5cd6d666844..95759f4df06 100644
--- a/Libraries/SDHC/Include/sdhc_lib.h
+++ b/Libraries/SDHC/Include/sdhc_lib.h
@@ -123,7 +123,10 @@ int MXC_SDHC_Lib_WriteAsync(unsigned int dst_addr, void *src_addr, unsigned int
/* ************************************************************************** */
int MXC_SDHC_Lib_ReadAsync(void *dst_addr, unsigned int src_addr, unsigned int cnt, mxc_sdhc_data_width width, mxc_sdhc_callback_fn callback);
-
+/* ************************************************************************** */
+void MXC_SDHC_Set_Default_DataWidth(mxc_sdhc_data_width width);
+/* ************************************************************************** */
+mxc_sdhc_data_width MXC_SDHC_Get_Default_DataWidth(void);
/**@} end of group sdhc */
diff --git a/Libraries/SDHC/Source/sdhc_lib.c b/Libraries/SDHC/Source/sdhc_lib.c
index 0831788f666..cefa46a1fdc 100644
--- a/Libraries/SDHC/Source/sdhc_lib.c
+++ b/Libraries/SDHC/Source/sdhc_lib.c
@@ -92,6 +92,7 @@ int card_rca;
mxc_sdhc_lib_card_type card_type = CARD_NONE;
mxc_sdhc_csd_regs_t g_csd;
bool g_csd_is_cached = false;
+static mxc_sdhc_data_width default_data_width = MXC_SDHC_LIB_SINGLE_DATA;
/* **** Functions **** */
@@ -236,6 +237,8 @@ int MXC_SDHC_Lib_SetBusWidth(mxc_sdhc_data_width bus_width)
uint32_t card_status;
int result;
+
+
cmd_cfg.direction = MXC_SDHC_DIRECTION_CFG;
cmd_cfg.callback = NULL;
@@ -445,6 +448,9 @@ int MXC_SDHC_Lib_Prepare_Trans(mxc_sdhc_data_width width)
mxc_sdhc_cmd_cfg_t cmd_cfg;
int result;
+
+
+
cmd_cfg.direction = MXC_SDHC_DIRECTION_CFG;
cmd_cfg.arg_1 = 0;
cmd_cfg.host_control_1 = MXC_SDHC_Get_Host_Cn_1();
@@ -499,6 +505,8 @@ int MXC_SDHC_Lib_Write(unsigned int dst_addr, void *src_addr, unsigned int cnt,
int result;
mxc_sdhc_cmd_cfg_t cmd_cfg;
+
+
result = MXC_SDHC_Lib_Prepare_Trans(width);
if (result != E_NO_ERROR) {
return result;
@@ -527,6 +535,9 @@ int MXC_SDHC_Lib_Read(void *dst_addr, unsigned int src_addr, unsigned int cnt, m
int result;
mxc_sdhc_cmd_cfg_t cmd_cfg;
+
+
+
result = MXC_SDHC_Lib_Prepare_Trans(width);
if (result != E_NO_ERROR) {
return result;
@@ -555,6 +566,7 @@ int MXC_SDHC_Lib_WriteAsync(unsigned int dst_addr, void *src_addr, unsigned int
int data;
mxc_sdhc_cmd_cfg_t cmd_cfg;
+
data = MXC_SDHC_Lib_Prepare_Trans(width);
if (data == E_BUSY) {
return E_BUSY;
@@ -586,6 +598,8 @@ int MXC_SDHC_Lib_ReadAsync(void *dst_addr, unsigned int src_addr, unsigned int c
int data;
mxc_sdhc_cmd_cfg_t cmd_cfg;
+
+
data = MXC_SDHC_Lib_Prepare_Trans(width);
if (data == E_BUSY) {
return E_BUSY;
@@ -610,4 +624,15 @@ int MXC_SDHC_Lib_ReadAsync(void *dst_addr, unsigned int src_addr, unsigned int c
return MXC_SDHC_SendCommandAsync(&cmd_cfg);
}
+void MXC_SDHC_Set_Default_DataWidth(mxc_sdhc_data_width width)
+{
+ MXC_ASSERT(width == MXC_SDHC_LIB_SINGLE_DATA || width == MXC_SDHC_LIB_QUAD_DATA);
+ default_data_width = width;
+}
+
+mxc_sdhc_data_width MXC_SDHC_Get_Default_DataWidth(void)
+{
+ return default_data_width;
+}
+
/**@} end of group sdhc */
diff --git a/Libraries/SDHC/ff13/Source/diskio.c b/Libraries/SDHC/ff13/Source/diskio.c
index a8bcae921ce..0351eb052cf 100644
--- a/Libraries/SDHC/ff13/Source/diskio.c
+++ b/Libraries/SDHC/ff13/Source/diskio.c
@@ -156,7 +156,7 @@ DRESULT disk_read (
switch(pdrv){
case DEV_SD:
- if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
@@ -196,7 +196,7 @@ DRESULT disk_write (
switch(pdrv){
case DEV_SD:
- if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
diff --git a/Libraries/SDHC/ff14/Source/diskio.c b/Libraries/SDHC/ff14/Source/diskio.c
index 62ccad4182c..0553b45af45 100644
--- a/Libraries/SDHC/ff14/Source/diskio.c
+++ b/Libraries/SDHC/ff14/Source/diskio.c
@@ -109,7 +109,7 @@ DRESULT disk_read (
{
DRESULT status;
- if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
@@ -135,7 +135,7 @@ DRESULT disk_write (
{
DRESULT status;
- if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
diff --git a/Libraries/SDHC/ff15/source/diskio.c b/Libraries/SDHC/ff15/source/diskio.c
index a2ff0582c9f..8ae3a8e18ad 100644
--- a/Libraries/SDHC/ff15/source/diskio.c
+++ b/Libraries/SDHC/ff15/source/diskio.c
@@ -156,7 +156,7 @@ DRESULT disk_read (
switch(pdrv){
case DEV_SD:
- if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Read(buff, sector, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
@@ -196,7 +196,7 @@ DRESULT disk_write (
switch(pdrv){
case DEV_SD:
- if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_LIB_SINGLE_DATA) != E_NO_ERROR) {
+ if (MXC_SDHC_Lib_Write(sector, (void *)buff, count, MXC_SDHC_Get_Default_DataWidth()) != E_NO_ERROR) {
status = RES_ERROR;
} else {
status = RES_OK;
diff --git a/Libraries/libs.mk b/Libraries/libs.mk
index bb2b0d70dbf..884925a849f 100644
--- a/Libraries/libs.mk
+++ b/Libraries/libs.mk
@@ -64,15 +64,46 @@ ifeq ($(LIB_CORDIO), 1)
CORDIO_DIR ?= $(LIBS_DIR)/Cordio
include $(CORDIO_DIR)/platform/targets/maxim/build/cordio_lib.mk
+CHIP_REVISION ?= b
+export CHIP_REVISION
+
+# for CHIP_REVISION a ***********************************************
+ifeq ($(CHIP_REVISION),a)
ifeq ($(RISCV_CORE),)
+
+ifeq ($(MFLOAT_ABI),hard)
+LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy_a1_hard.a
+else
+LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy_a1.a
+endif
+
+else
+LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy_a1_riscv.a
+endif
+
+#*********************************************************************
+
+# for CHIP_REVISION b ***************************************************
+else ifeq ($(CHIP_REVISION),b)
+
+
+ifeq ($(RISCV_CORE),)
+
ifeq ($(MFLOAT_ABI),hard)
LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy_hard.a
else
LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy.a
endif
+
else
LIBS += $(LIBS_DIR)/BlePhy/$(CHIP_UC)/libphy_riscv.a
endif
+#**************************************************************************
+endif
+
+
+#*********************************************************************
+
ifeq ($(CODED_PHY_DEMO),1)
PROJ_CFLAGS += -DAPP_CODED_PHY_DEMO=1
diff --git a/Libraries/zephyr/MAX/Include/wrap_max32_dma.h b/Libraries/zephyr/MAX/Include/wrap_max32_dma.h
index 23830507d31..fe228dc3d96 100644
--- a/Libraries/zephyr/MAX/Include/wrap_max32_dma.h
+++ b/Libraries/zephyr/MAX/Include/wrap_max32_dma.h
@@ -26,11 +26,7 @@
extern "C" {
#endif
-/*
- * MAX32665, MAX32666 related mapping
- */
#if defined(CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
-
#define ADI_MAX32_DMA_CTRL_DIS_IE MXC_F_DMA_CFG_CHDIEN
#define ADI_MAX32_DMA_CTRL_CTZIEN MXC_F_DMA_CFG_CTZIEN
@@ -40,52 +36,7 @@ extern "C" {
#define ADI_MAX32_DMA_STATUS_ST MXC_F_DMA_ST_CH_ST
#define ADI_MAX32_DMA_CFG_REQ_POS MXC_F_DMA_CFG_REQSEL_POS
-
-static inline int MXC_DMA_GetIntFlags(mxc_dma_regs_t *dma)
-{
- return dma->intr;
-}
-
-static inline int Wrap_MXC_DMA_Init(mxc_dma_regs_t *dma)
-{
- return MXC_DMA_Init(dma);
-}
-
-static inline void Wrap_MXC_DMA_DeInit(mxc_dma_regs_t *dma)
-{
- MXC_DMA_DeInit(dma);
-}
-
-static inline int Wrap_MXC_DMA_AcquireChannel(mxc_dma_regs_t *dma)
-{
- return MXC_DMA_AcquireChannel(dma);
-}
-
-static inline void Wrap_MXC_DMA_Handler(mxc_dma_regs_t *dma)
-{
- MXC_DMA_Handler(dma);
-}
-
-static inline int Wrap_MXC_DMA_MemCpy(mxc_dma_regs_t *dma, void *dest, void *src, int len,
- mxc_dma_complete_cb_t callback)
-{
- return MXC_DMA_MemCpy(dma, dest, src, len, callback);
-}
-
-static inline int Wrap_MXC_DMA_DoTransfer(mxc_dma_regs_t *dma, mxc_dma_config_t config,
- mxc_dma_srcdst_t firstSrcDst,
- mxc_dma_trans_chain_t callback)
-{
- return MXC_DMA_DoTransfer(dma, config, firstSrcDst, callback);
-}
-
-/*
- * MAX32690, MAX32655 related mapping
- */
-#elif defined(CONFIG_SOC_MAX32690) || (CONFIG_SOC_MAX32655) || (CONFIG_SOC_MAX32670) || \
- (CONFIG_SOC_MAX32672) || (CONFIG_SOC_MAX32662) || (CONFIG_SOC_MAX32675) || \
- (CONFIG_SOC_MAX32680) || (CONFIG_SOC_MAX32657)
-
+#else
#define ADI_MAX32_DMA_CTRL_DIS_IE MXC_F_DMA_CTRL_DIS_IE
#define ADI_MAX32_DMA_CTRL_CTZIEN MXC_F_DMA_CTRL_CTZ_IE
@@ -95,52 +46,89 @@ static inline int Wrap_MXC_DMA_DoTransfer(mxc_dma_regs_t *dma, mxc_dma_config_t
#define ADI_MAX32_DMA_STATUS_ST MXC_F_DMA_STATUS_STATUS
#define ADI_MAX32_DMA_CFG_REQ_POS MXC_F_DMA_CTRL_REQUEST_POS
+#endif
static inline int MXC_DMA_GetIntFlags(mxc_dma_regs_t *dma)
{
+#if defined(CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ return dma->intr;
+#else
return dma->intfl;
+#endif
}
static inline int Wrap_MXC_DMA_Init(mxc_dma_regs_t *dma)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ return MXC_DMA_Init(dma);
+#else
(void)dma;
return MXC_DMA_Init();
+#endif
}
static inline void Wrap_MXC_DMA_DeInit(mxc_dma_regs_t *dma)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ MXC_DMA_DeInit(dma);
+#else
(void)dma;
MXC_DMA_DeInit();
+#endif
}
static inline int Wrap_MXC_DMA_AcquireChannel(mxc_dma_regs_t *dma)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ return MXC_DMA_AcquireChannel(dma);
+#else
(void)dma;
return MXC_DMA_AcquireChannel();
+#endif
}
static inline void Wrap_MXC_DMA_Handler(mxc_dma_regs_t *dma)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ MXC_DMA_Handler(dma);
+#else
(void)dma;
MXC_DMA_Handler();
+#endif
}
static inline int Wrap_MXC_DMA_MemCpy(mxc_dma_regs_t *dma, void *dest, void *src, int len,
mxc_dma_complete_cb_t callback)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ return MXC_DMA_MemCpy(dma, dest, src, len, callback);
+#else
(void)dma;
return MXC_DMA_MemCpy(dest, src, len, callback);
+#endif
}
static inline int Wrap_MXC_DMA_DoTransfer(mxc_dma_regs_t *dma, mxc_dma_config_t config,
mxc_dma_srcdst_t firstSrcDst,
mxc_dma_trans_chain_t callback)
{
+#if defined(CONFIG_SOC_MAX32657) || (CONFIG_SOC_MAX32665) || (CONFIG_SOC_MAX32666)
+ return MXC_DMA_DoTransfer(dma, config, firstSrcDst, callback);
+#else
(void)dma;
return MXC_DMA_DoTransfer(config, firstSrcDst, callback);
+#endif
}
-#endif // part number
+static inline int Wrap_MXC_DMA_EnableInt(mxc_dma_regs_t *dma, int ch)
+{
+#if defined(CONFIG_SOC_MAX32657)
+ return MXC_DMA_EnableInt(dma, ch);
+#else
+ (void)dma;
+ return MXC_DMA_EnableInt(ch);
+#endif
+}
#ifdef __cplusplus
}
diff --git a/Libraries/zephyr/MAX/Include/wrap_max32_uart.h b/Libraries/zephyr/MAX/Include/wrap_max32_uart.h
index 9479e29dc57..dd6907566b3 100644
--- a/Libraries/zephyr/MAX/Include/wrap_max32_uart.h
+++ b/Libraries/zephyr/MAX/Include/wrap_max32_uart.h
@@ -213,6 +213,15 @@ static inline void Wrap_MXC_UART_DisableRxDMA(mxc_uart_regs_t *uart)
#endif // defined(CONFIG_SOC_MAX32690) || (CONFIG_SOC_MAX32655)
+static inline unsigned int Wrap_MXC_UART_GetRegINTEN(mxc_uart_regs_t *uart)
+{
+#if defined(CONFIG_SOC_MAX32662)
+ return uart->inten;
+#else
+ return uart->int_en;
+#endif
+}
+
#ifdef __cplusplus
}
#endif
diff --git a/Tools/SBT/SBT-config.mk b/Tools/SBT/SBT-config.mk
index ae22744bb45..605d73bbc0b 100644
--- a/Tools/SBT/SBT-config.mk
+++ b/Tools/SBT/SBT-config.mk
@@ -42,7 +42,7 @@ TEST_KEY="$(MAXIM_SBT_DIR)/devices/$(TARGET_SEC)/keys/maximtestcrk.key"
SCP_PACKETS?=$(BUILD_DIR)/scp_packets
# Add header file
-SRCS += $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source/header_$(TARGET_UC).c
+SRCS += $(CMSIS_ROOT)/Device/Maxim/$(TARGET_UC)/Source/sla_header_$(TARGET_UC).c
# Based on the Make goal the source code may need some specific compiler
# definitions and files. Additionally, the linkerfile may need to be changed.
diff --git a/Tools/SBT/devices/MAX32662/scp_packets/set_stim_pin/session.txt.log b/Tools/SBT/devices/MAX32662/scp_packets/set_stim_pin/session.txt.log
deleted file mode 100644
index 7cbb48d8d6e..00000000000
--- a/Tools/SBT/devices/MAX32662/scp_packets/set_stim_pin/session.txt.log
+++ /dev/null
@@ -1,29 +0,0 @@
-session generation v4.3.2 (May 10 2022 10:31:43) (c)Maxim Integrated
-Session mode : SCP_ECDSA
-
-.0000001.CON_REQ
-beefed01000090f3
-.0000002.CON_REP
-beefed0200009001
-.0000003.ACK
-beefed06000090c7
-.0000004.DATA_TRANSFER
-beefed05000e90c31000000a48454c4c4f20424c030236920731
-.0000005.ACK
-beefed06000090c7
-.0000006.DATA_TRANSFER
-beefed05003691622000003248454c4c4f20484f535401000000000000c0040043471fd203080c0700007f00000000000000000000000000000000000000a73ed287
-.0000007.ACK
-beefed06000091a3
-.0000008.DATA_TRANSFER
-beefed05004992605a0000054428550006c3a7c61440e3823f082d144523e562056a7dfcdbd0443e1af65f1a54c90c079ebe4d0d201b470f568cb219c1c79fbd2758d80b35e39f9d94224b17c647f06cfbe71b5892
-.0000009.ACK
-beefed0600009240
-.0000010.DATA_TRANSFER
-beefed05000893bd5a00000400000000fc664624
-.0000011.ACK
-beefed0600009302
-.0000012.DISC_REQ
-beefed0300009496
-.0000013.DISC_REP
-beefed0400009488
diff --git a/USERGUIDE.md b/USERGUIDE.md
index 7b7e40902e5..2e322be22d6 100644
--- a/USERGUIDE.md
+++ b/USERGUIDE.md
@@ -2212,6 +2212,12 @@ Once enabled, the following [build configuration variables](#build-configuration
FreeRTOS is supported by all parts in the MSDK. See the `FreeRTOSDemo` example application.
+#### FreeRTOS Build Variables
+
+| Configuration Variable | Description | Details |
+| ---------------------- | ---------------------------------------------------------- | ------------------------------------------------------------ |
+| `FREERTOS_HEAP_TYPE` | Specify the method of heap allocation to use for the FreeRTOS API | FreeRTOS provides options for the heap management alogirthms to optimize for memory size, speed, and risk of heap fragmentation. For more details, visit the [FreeRTOS MemMang Docs](https://www.freertos.org/a00111.html). Acceptable values are `1`, `2`, `3`, `4`, or `5`. The default value is `4` for heap_4. |
+
#### FreeRTOS-Plus
[FreeRTOS-Plus](https://www.freertos.org/FreeRTOS-Plus/index.html) is an additional library that implements addon functionality for the FreeRTOS kernel. The MSDK maintains support for some, but not all, available addons.