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.