mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-29 01:20:19 +00:00
Merge branch 'master' into renesas_ra_hs_rebased
This commit is contained in:
commit
04b1a67898
94
.github/workflows/build_arm.yml
vendored
94
.github/workflows/build_arm.yml
vendored
@ -34,20 +34,18 @@ jobs:
|
|||||||
family:
|
family:
|
||||||
# Alphabetical order
|
# Alphabetical order
|
||||||
- 'broadcom_32bit'
|
- 'broadcom_32bit'
|
||||||
- 'kinetis_k32l kinetis_kl'
|
- 'kinetis_k32l2'
|
||||||
- 'lpc11 lpc13 lpc15 lpc17'
|
- 'lpc11 lpc13 lpc15 lpc17'
|
||||||
- 'lpc51 lpc54 lpc55'
|
- 'lpc51 lpc54'
|
||||||
- 'mm32 msp432e4'
|
- 'mm32 msp432e4'
|
||||||
- 'nrf'
|
- 'nrf'
|
||||||
- 'ra'
|
- 'ra'
|
||||||
- 'samd11 samd21'
|
- 'samd11 samd21'
|
||||||
- 'samd51 same5x'
|
- 'samd51 same5x'
|
||||||
- 'saml2x'
|
- 'saml2x'
|
||||||
- 'stm32f0 stm32f1 stm32f2 stm32f3'
|
- 'stm32f2 stm32f3'
|
||||||
- 'stm32f4'
|
- 'stm32f4'
|
||||||
- 'stm32f7'
|
- 'stm32l0 stm32u5 stm32wb'
|
||||||
- 'stm32h7'
|
|
||||||
- 'stm32l0 stm32l4 stm32u5 stm32wb'
|
|
||||||
- 'tm4c123 xmc4000'
|
- 'tm4c123 xmc4000'
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@ -69,12 +67,6 @@ jobs:
|
|||||||
repository: hathach/linkermap
|
repository: hathach/linkermap
|
||||||
path: linkermap
|
path: linkermap
|
||||||
|
|
||||||
- name: Checkout pico-sdk for rp2040
|
|
||||||
if: matrix.family == 'rp2040'
|
|
||||||
run: |
|
|
||||||
git clone --depth 1 -b develop https://github.com/raspberrypi/pico-sdk ~/pico-sdk
|
|
||||||
echo >> $GITHUB_ENV PICO_SDK_PATH=~/pico-sdk
|
|
||||||
|
|
||||||
- name: Get Dependencies
|
- name: Get Dependencies
|
||||||
run: python3 tools/get_deps.py ${{ matrix.family }}
|
run: python3 tools/get_deps.py ${{ matrix.family }}
|
||||||
|
|
||||||
@ -89,81 +81,3 @@ jobs:
|
|||||||
do
|
do
|
||||||
find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'
|
find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'
|
||||||
done
|
done
|
||||||
|
|
||||||
# Upload binaries for hardware test with self-hosted
|
|
||||||
- name: Prepare stm32l412nucleo Artifacts
|
|
||||||
if: contains(matrix.family, 'stm32l4')
|
|
||||||
run: find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} . \;
|
|
||||||
|
|
||||||
- name: Upload Artifacts for stm32l412nucleo
|
|
||||||
if: contains(matrix.family, 'stm32l4') && github.repository_owner == 'hathach'
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: stm32l4
|
|
||||||
path: |
|
|
||||||
*.elf
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Hardware in the loop (HIL)
|
|
||||||
# Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user
|
|
||||||
# - STM32L412 Nucleo with on-board jlink as ttyACM0
|
|
||||||
# ---------------------------------------
|
|
||||||
hw-stm32l412nucleo-test:
|
|
||||||
needs: build-arm
|
|
||||||
runs-on: [self-hosted, Linux, X64, hifiphile]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Clean workspace
|
|
||||||
run: |
|
|
||||||
echo "Cleaning up previous run"
|
|
||||||
rm -rf "${{ github.workspace }}"
|
|
||||||
mkdir -p "${{ github.workspace }}"
|
|
||||||
|
|
||||||
- name: Download stm32l4 Artifacts
|
|
||||||
uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: stm32l4
|
|
||||||
|
|
||||||
- name: Create flash.sh
|
|
||||||
run: |
|
|
||||||
echo > flash.sh 'echo halt > flash.jlink'
|
|
||||||
echo >> flash.sh 'echo r >> flash.jlink'
|
|
||||||
echo >> flash.sh 'echo loadfile $1 >> flash.jlink'
|
|
||||||
echo >> flash.sh 'echo r >> flash.jlink'
|
|
||||||
echo >> flash.sh 'echo go >> flash.jlink'
|
|
||||||
echo >> flash.sh 'echo exit >> flash.jlink'
|
|
||||||
echo >> flash.sh 'cmdout=$(JLinkExe -device stm32l412kb -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink)'
|
|
||||||
echo >> flash.sh 'if (( $? )) ; then echo $cmdout ; fi'
|
|
||||||
chmod +x flash.sh
|
|
||||||
|
|
||||||
- name: Test cdc_dual_ports
|
|
||||||
run: |
|
|
||||||
./flash.sh cdc_dual_ports.elf
|
|
||||||
while (! ([ -e /dev/ttyACM1 ] && [ -e /dev/ttyACM2 ])) && [ $SECONDS -le 10 ]; do :; done
|
|
||||||
test -e /dev/ttyACM1 && echo "ttyACM1 exists"
|
|
||||||
test -e /dev/ttyACM2 && echo "ttyACM2 exists"
|
|
||||||
|
|
||||||
# Debian does not auto mount usb drive. skip this test for now
|
|
||||||
- name: Test cdc_msc
|
|
||||||
if: false
|
|
||||||
run: |
|
|
||||||
./flash.sh cdc_msc.elf
|
|
||||||
readme='/media/pi/TinyUSB MSC/README.TXT'
|
|
||||||
while (! ([ -e /dev/ttyACM1 ] && [ -f "$readme" ])) && [ $SECONDS -le 10 ]; do :; done
|
|
||||||
test -e /dev/ttyACM1 && echo "ttyACM1 exists"
|
|
||||||
test -f "$readme" && echo "$readme exists"
|
|
||||||
cat "$readme"
|
|
||||||
|
|
||||||
- name: Test dfu
|
|
||||||
run: |
|
|
||||||
./flash.sh dfu.elf
|
|
||||||
while (! (dfu-util -l | grep "Found DFU")) && [ $SECONDS -le 10 ]; do :; done
|
|
||||||
dfu-util -d cafe -a 0 -U dfu0
|
|
||||||
dfu-util -d cafe -a 1 -U dfu1
|
|
||||||
grep "TinyUSB DFU! - Partition 0" dfu0
|
|
||||||
grep "TinyUSB DFU! - Partition 1" dfu1
|
|
||||||
|
|
||||||
- name: Test dfu_runtime
|
|
||||||
run: |
|
|
||||||
./flash.sh dfu_runtime.elf
|
|
||||||
while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 10 ]; do :; done
|
|
||||||
|
110
.github/workflows/build_iar.yml
vendored
110
.github/workflows/build_iar.yml
vendored
@ -23,32 +23,6 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
makefile:
|
|
||||||
runs-on: [self-hosted, Linux, X64, hifiphile]
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
family:
|
|
||||||
# Alphabetical order
|
|
||||||
# Note: bundle multiple families into a matrix since there is only one self-hosted instance can
|
|
||||||
# run IAR build. Too many matrix can hurt due to setup/teardown overhead.
|
|
||||||
- 'stm32f0 stm32f1 stm32f4 stm32f7 stm32g4 stm32h7 stm32l4'
|
|
||||||
steps:
|
|
||||||
- name: Clean workspace
|
|
||||||
run: |
|
|
||||||
echo "Cleaning up previous run"
|
|
||||||
rm -rf "${{ github.workspace }}"
|
|
||||||
mkdir -p "${{ github.workspace }}"
|
|
||||||
|
|
||||||
- name: Checkout TinyUSB
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Get Dependencies
|
|
||||||
run: python3 tools/get_deps.py ${{ matrix.family }}
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: python3 tools/build_family.py ${{ matrix.family }} CC=iccarm
|
|
||||||
|
|
||||||
cmake:
|
cmake:
|
||||||
runs-on: [self-hosted, Linux, X64, hifiphile]
|
runs-on: [self-hosted, Linux, X64, hifiphile]
|
||||||
strategy:
|
strategy:
|
||||||
@ -58,7 +32,7 @@ jobs:
|
|||||||
# Alphabetical order
|
# Alphabetical order
|
||||||
# Note: bundle multiple families into a matrix since there is only one self-hosted instance can
|
# Note: bundle multiple families into a matrix since there is only one self-hosted instance can
|
||||||
# run IAR build. Too many matrix can hurt due to setup/teardown overhead.
|
# run IAR build. Too many matrix can hurt due to setup/teardown overhead.
|
||||||
- 'stm32g0 stm32g4'
|
- 'stm32f0 stm32f1 stm32f7 stm32g0 stm32g4 stm32h7 stm32l4'
|
||||||
steps:
|
steps:
|
||||||
- name: Clean workspace
|
- name: Clean workspace
|
||||||
run: |
|
run: |
|
||||||
@ -73,4 +47,84 @@ jobs:
|
|||||||
run: python3 tools/get_deps.py ${{ matrix.family }}
|
run: python3 tools/get_deps.py ${{ matrix.family }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: python3 tools/build_cmake.py ${{ matrix.family }} -DTOOLCHAIN=iccarm
|
run: python3 tools/build_cmake.py ${{ matrix.family }} -DTOOLCHAIN=iar -DCMAKE_BUILD_TYPE=MinSizeRel
|
||||||
|
|
||||||
|
# Upload binaries for hardware test with self-hosted
|
||||||
|
- name: Prepare stm32l412nucleo Artifacts
|
||||||
|
if: contains(matrix.family, 'stm32l4')
|
||||||
|
working-directory: ${{github.workspace}}/cmake-build/cmake-build-stm32l412nucleo
|
||||||
|
run: |
|
||||||
|
find device/ -name "*.elf" -exec mv {} ../../ \;
|
||||||
|
|
||||||
|
- name: Upload Artifacts for stm32l412nucleo
|
||||||
|
if: contains(matrix.family, 'stm32l4') && github.repository_owner == 'hathach'
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: stm32l4
|
||||||
|
path: |
|
||||||
|
*.elf
|
||||||
|
|
||||||
|
# ---------------------------------------
|
||||||
|
# Hardware in the loop (HIL)
|
||||||
|
# Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user
|
||||||
|
# - STM32L412 Nucleo with on-board jlink as ttyACM0
|
||||||
|
# ---------------------------------------
|
||||||
|
hw-stm32l412nucleo-test:
|
||||||
|
needs: cmake
|
||||||
|
runs-on: [self-hosted, Linux, X64, hifiphile]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clean workspace
|
||||||
|
run: |
|
||||||
|
echo "Cleaning up previous run"
|
||||||
|
rm -rf "${{ github.workspace }}"
|
||||||
|
mkdir -p "${{ github.workspace }}"
|
||||||
|
|
||||||
|
- name: Download stm32l4 Artifacts
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: stm32l4
|
||||||
|
|
||||||
|
- name: Create flash.sh
|
||||||
|
run: |
|
||||||
|
echo > flash.sh 'echo halt > flash.jlink'
|
||||||
|
echo >> flash.sh 'echo r >> flash.jlink'
|
||||||
|
echo >> flash.sh 'echo loadfile $1 >> flash.jlink'
|
||||||
|
echo >> flash.sh 'echo r >> flash.jlink'
|
||||||
|
echo >> flash.sh 'echo go >> flash.jlink'
|
||||||
|
echo >> flash.sh 'echo exit >> flash.jlink'
|
||||||
|
echo >> flash.sh 'cmdout=$(JLinkExe -device stm32l412kb -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink)'
|
||||||
|
echo >> flash.sh 'if (( $? )) ; then echo $cmdout ; fi'
|
||||||
|
chmod +x flash.sh
|
||||||
|
|
||||||
|
- name: Test cdc_dual_ports
|
||||||
|
run: |
|
||||||
|
./flash.sh cdc_dual_ports.elf
|
||||||
|
while (! ([ -e /dev/ttyACM1 ] && [ -e /dev/ttyACM2 ])) && [ $SECONDS -le 10 ]; do :; done
|
||||||
|
test -e /dev/ttyACM1 && echo "ttyACM1 exists"
|
||||||
|
test -e /dev/ttyACM2 && echo "ttyACM2 exists"
|
||||||
|
|
||||||
|
# Debian does not auto mount usb drive. skip this test for now
|
||||||
|
- name: Test cdc_msc
|
||||||
|
if: false
|
||||||
|
run: |
|
||||||
|
./flash.sh cdc_msc.elf
|
||||||
|
readme='/media/pi/TinyUSB MSC/README.TXT'
|
||||||
|
while (! ([ -e /dev/ttyACM1 ] && [ -f "$readme" ])) && [ $SECONDS -le 10 ]; do :; done
|
||||||
|
test -e /dev/ttyACM1 && echo "ttyACM1 exists"
|
||||||
|
test -f "$readme" && echo "$readme exists"
|
||||||
|
cat "$readme"
|
||||||
|
|
||||||
|
- name: Test dfu
|
||||||
|
run: |
|
||||||
|
./flash.sh dfu.elf
|
||||||
|
while (! (dfu-util -l | grep "Found DFU")) && [ $SECONDS -le 10 ]; do :; done
|
||||||
|
dfu-util -d cafe -a 0 -U dfu0
|
||||||
|
dfu-util -d cafe -a 1 -U dfu1
|
||||||
|
grep "TinyUSB DFU! - Partition 0" dfu0
|
||||||
|
grep "TinyUSB DFU! - Partition 1" dfu1
|
||||||
|
|
||||||
|
- name: Test dfu_runtime
|
||||||
|
run: |
|
||||||
|
./flash.sh dfu_runtime.elf
|
||||||
|
while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 10 ]; do :; done
|
||||||
|
2
.github/workflows/build_win_mac.yml
vendored
2
.github/workflows/build_win_mac.yml
vendored
@ -48,7 +48,7 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Get Dependencies
|
- name: Get Dependencies
|
||||||
run: python3 tools/get_family_deps.py stm32f4
|
run: python3 tools/get_deps.py stm32f4
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: python3 tools/build_family.py stm32f4 stm32f411disco
|
run: python3 tools/build_family.py stm32f4 stm32f411disco
|
||||||
|
14
.github/workflows/cmake_arm.yml
vendored
14
.github/workflows/cmake_arm.yml
vendored
@ -33,12 +33,20 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
family:
|
family:
|
||||||
# Alphabetical order
|
# Alphabetical order
|
||||||
- 'lpc18'
|
|
||||||
- 'mcx'
|
|
||||||
- 'imxrt'
|
- 'imxrt'
|
||||||
|
- 'kinetis_kl'
|
||||||
|
- 'lpc18'
|
||||||
|
- 'lpc55'
|
||||||
|
- 'mcx'
|
||||||
|
- 'ra'
|
||||||
- 'rp2040'
|
- 'rp2040'
|
||||||
|
- 'stm32f0'
|
||||||
|
- 'stm32f1'
|
||||||
|
- 'stm32f7'
|
||||||
- 'stm32g0'
|
- 'stm32g0'
|
||||||
- 'stm32g4'
|
- 'stm32g4'
|
||||||
|
- 'stm32h7'
|
||||||
|
- 'stm32l4'
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
@ -68,7 +76,7 @@ jobs:
|
|||||||
run: python3 tools/get_deps.py ${{ matrix.family }}
|
run: python3 tools/get_deps.py ${{ matrix.family }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: python tools/build_cmake.py ${{ matrix.family }}
|
run: python tools/build_cmake.py ${{ matrix.family }} -DCMAKE_BUILD_TYPE=MinSizeRel
|
||||||
env:
|
env:
|
||||||
# for rp2040, there is no harm if defined for other families
|
# for rp2040, there is no harm if defined for other families
|
||||||
PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk
|
PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -21,6 +21,8 @@ _build
|
|||||||
/examples/*/*/ses
|
/examples/*/*/ses
|
||||||
/examples/*/*/ozone
|
/examples/*/*/ozone
|
||||||
/examples/obsolete
|
/examples/obsolete
|
||||||
|
hw/bsp/**/cubemx/*/
|
||||||
|
.mxproject
|
||||||
# coverity intermediate files
|
# coverity intermediate files
|
||||||
cov-int
|
cov-int
|
||||||
# cppcheck build directories
|
# cppcheck build directories
|
||||||
|
0
.gitmodules
vendored
0
.gitmodules
vendored
41
.idea/cmake.xml
generated
41
.idea/cmake.xml
generated
@ -2,12 +2,10 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CMakeSharedSettings">
|
<component name="CMakeSharedSettings">
|
||||||
<configurations>
|
<configurations>
|
||||||
<configuration PROFILE_NAME="mcxn947" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=mcx -DBOARD=mcxn947brk" />
|
<configuration PROFILE_NAME="mcxn947" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mcxn947brk -DLOG=3 -DLOGGER=RTT" />
|
||||||
<configuration PROFILE_NAME="rt1060 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=imxrt -DBOARD=mimxrt1060_evk" />
|
<configuration PROFILE_NAME="pca10056" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10056 -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="pca10095" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=nrf -DBOARD=pca10095" />
|
<configuration PROFILE_NAME="pca10095" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10095 -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="pca10056" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=nrf -DBOARD=pca10056" BUILD_OPTIONS="-v" />
|
<configuration PROFILE_NAME="esp32s2" ENABLED="false" GENERATION_OPTIONS="-DBOARD=espressif_saola_1 -DIDF_TARGET=esp32s2">
|
||||||
<configuration PROFILE_NAME="lpc55s69" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=lpc55 -DBOARD=lpcxpresso55s69" />
|
|
||||||
<configuration PROFILE_NAME="esp32s3" ENABLED="false" GENERATION_OPTIONS="-DFAMILY=espressif -DBOARD=espressif_s3_devkitm -DIDF_TARGET=esp32s3">
|
|
||||||
<ADDITIONAL_GENERATION_ENVIRONMENT>
|
<ADDITIONAL_GENERATION_ENVIRONMENT>
|
||||||
<envs>
|
<envs>
|
||||||
<env name="ESPBAUD" value="1500000" />
|
<env name="ESPBAUD" value="1500000" />
|
||||||
@ -17,7 +15,7 @@
|
|||||||
</envs>
|
</envs>
|
||||||
</ADDITIONAL_GENERATION_ENVIRONMENT>
|
</ADDITIONAL_GENERATION_ENVIRONMENT>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration PROFILE_NAME="esp32s2" ENABLED="false" GENERATION_OPTIONS="-DFAMILY=espressif -DBOARD=espressif_saola_1 -DIDF_TARGET=esp32s2">
|
<configuration PROFILE_NAME="esp32s3" ENABLED="false" GENERATION_OPTIONS="-DBOARD=espressif_s3_devkitm -DIDF_TARGET=esp32s3">
|
||||||
<ADDITIONAL_GENERATION_ENVIRONMENT>
|
<ADDITIONAL_GENERATION_ENVIRONMENT>
|
||||||
<envs>
|
<envs>
|
||||||
<env name="ESPBAUD" value="1500000" />
|
<env name="ESPBAUD" value="1500000" />
|
||||||
@ -27,14 +25,27 @@
|
|||||||
</envs>
|
</envs>
|
||||||
</ADDITIONAL_GENERATION_ENVIRONMENT>
|
</ADDITIONAL_GENERATION_ENVIRONMENT>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration PROFILE_NAME="rp2040" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=rp2040 -DBOARD=raspberry_pi_pico" />
|
<configuration PROFILE_NAME="rp2040" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberry_pi_pico -DLOG=2" />
|
||||||
<configuration PROFILE_NAME="rt1010 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=imxrt -DBOARD=mimxrt1010_evk" />
|
<configuration PROFILE_NAME="rt1010 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1010_evk" />
|
||||||
<configuration PROFILE_NAME="rt1064 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=imxrt -DBOARD=mimxrt1064_evk" />
|
<configuration PROFILE_NAME="rt1060 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1060_evk" />
|
||||||
<configuration PROFILE_NAME="mcb1800" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=lpc18 -DBOARD=mcb1800" />
|
<configuration PROFILE_NAME="rt1064 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1064_evk" />
|
||||||
<configuration PROFILE_NAME="lpcxpresso18s37" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=lpc18 -DBOARD=lpcxpresso18s37" />
|
<configuration PROFILE_NAME="mcb1800" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mcb1800 -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="stm32g0b1nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=stm32g0 -DBOARD=stm32g0b1nucleo" />
|
<configuration PROFILE_NAME="lpcxpresso18s37" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso18s37" />
|
||||||
<configuration PROFILE_NAME="stm32g474nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=stm32g4 -DBOARD=stm32g474nucleo" />
|
<configuration PROFILE_NAME="lpc55s69" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso55s69" />
|
||||||
<configuration PROFILE_NAME="b_g474e_dpow1" ENABLED="true" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFAMILY=stm32g4 -DBOARD=b_g474e_dpow1" />
|
<configuration PROFILE_NAME="stm32g0b1nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32g0b1nucleo" />
|
||||||
|
<configuration PROFILE_NAME="stm32g474nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32g474nucleo" />
|
||||||
|
<configuration PROFILE_NAME="b_g474e_dpow1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="b_g474e_dpow1 iar" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DTOOLCHAIN=iar" />
|
||||||
|
<configuration PROFILE_NAME="frdm_kl25z" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_kl25z -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="stm32h743eval" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
|
<configuration PROFILE_NAME="metro m7" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011 -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
|
<configuration PROFILE_NAME="stm32f072disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f072disco" />
|
||||||
|
<configuration PROFILE_NAME="stm32f103_mini_2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f103_mini_2" />
|
||||||
|
<configuration PROFILE_NAME="stm32f769disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f769disco -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="stm32l476disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32l476disco" />
|
||||||
|
<configuration PROFILE_NAME="ra4m1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra4m1_ek -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="ra6m1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra6m1_ek -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="ra6m5" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra6m5_ek -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
</configurations>
|
</configurations>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
10
.idea/runConfigurations/kl25.xml
generated
Normal file
10
.idea/runConfigurations/kl25.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="kl25" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MKL25Z128xxx4" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/lpc1857.xml
generated
Normal file
10
.idea/runConfigurations/lpc1857.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="lpc1857" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "lpc1857" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="pca10056" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/mcx947.xml
generated
Normal file
10
.idea/runConfigurations/mcx947.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="mcx947" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MCXN947_M33_0" -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $ProjectFileDir$/hw/bsp/mcx/mcx.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="pca10056" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/nrf52840.xml
generated
Normal file
10
.idea/runConfigurations/nrf52840.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="nrf52840" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "nrf52840_xxaa" -if swd -speed 8000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="pca10056" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/nrf5340.xml
generated
Normal file
10
.idea/runConfigurations/nrf5340.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="nrf5340" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "nrf5340_xxaa_app" -if swd -speed 16000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
2
.idea/runConfigurations/rp2040.xml
generated
2
.idea/runConfigurations/rp2040.xml
generated
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="rp2040" type="com.jetbrains.cidr.embedded.openocd.conf.type" factoryName="com.jetbrains.cidr.embedded.openocd.conf.factory" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_device_examples" TARGET_NAME="cdc_msc" CONFIG_NAME="b_g474e_dpow1" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_device_examples" RUN_TARGET_NAME="cdc_msc">
|
<configuration default="false" name="rp2040" type="com.jetbrains.cidr.embedded.openocd.conf.type" factoryName="com.jetbrains.cidr.embedded.openocd.conf.factory" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_device_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_device_examples" RUN_TARGET_NAME="cdc_msc">
|
||||||
<openocd version="1" gdb-port="3333" telnet-port="4444" board-config="$PROJECT_DIR$/hw/bsp/rp2040/rp2040-openocd.cfg" reset-type="INIT" download-type="UPDATED_ONLY">
|
<openocd version="1" gdb-port="3333" telnet-port="4444" board-config="$PROJECT_DIR$/hw/bsp/rp2040/rp2040-openocd.cfg" reset-type="INIT" download-type="UPDATED_ONLY">
|
||||||
<debugger kind="GDB" isBundled="true" />
|
<debugger kind="GDB" isBundled="true" />
|
||||||
</openocd>
|
</openocd>
|
||||||
|
10
.idea/runConfigurations/rt1010.xml
generated
Normal file
10
.idea/runConfigurations/rt1010.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="rt1010" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MIMXRT1011xxx5A" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="pca10056" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/rt1010_jlink.xml
generated
10
.idea/runConfigurations/rt1010_jlink.xml
generated
@ -1,10 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="rt1010 jlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MIMXRT1011xxx5A" -if swd -speed 8000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="mcxn947" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
|
||||||
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
|
||||||
<debugger kind="GDB" isBundled="true" />
|
|
||||||
</custom-gdb-server>
|
|
||||||
<method v="2">
|
|
||||||
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
10
.idea/runConfigurations/rt1060.xml
generated
Normal file
10
.idea/runConfigurations/rt1060.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="rt1060" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MIMXRT1062xxx5A" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" CONFIG_NAME="pca10056" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/rt1060_jlink.xml
generated
10
.idea/runConfigurations/rt1060_jlink.xml
generated
@ -1,10 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="rt1060 jlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "MIMXRT1062xxx5A" -if swd -speed 8000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="host_hid_to_device_cdc" TARGET_NAME="host_hid_to_device_cdc" CONFIG_NAME="rt1060 evk" version="1" RUN_TARGET_PROJECT_NAME="host_hid_to_device_cdc" RUN_TARGET_NAME="host_hid_to_device_cdc">
|
|
||||||
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
|
||||||
<debugger kind="GDB" isBundled="true" />
|
|
||||||
</custom-gdb-server>
|
|
||||||
<method v="2">
|
|
||||||
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
10
.idea/runConfigurations/stlink.xml
generated
Normal file
10
.idea/runConfigurations/stlink.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="stlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-p 62847 -cp "/opt/st/stm32cubeide_1.12.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.0.600.202301161003/tools/bin" --frequency 24000 --swd" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::62847" executable="/opt/st/stm32cubeide_1.12.1/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.500.202301161003/tools/bin/ST-LINK_gdbserver" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/stm32g474.xml
generated
Normal file
10
.idea/runConfigurations/stm32g474.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="stm32g474" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "stm32g474re" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
10
.idea/runConfigurations/stm32h743.xml
generated
Normal file
10
.idea/runConfigurations/stm32h743.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="stm32h743" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-device "stm32h743xi" -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cdc_msc" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="cdc_msc" RUN_TARGET_NAME="cdc_msc">
|
||||||
|
<custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="UPDATED_ONLY" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
|
||||||
|
<debugger kind="GDB" isBundled="true" />
|
||||||
|
</custom-gdb-server>
|
||||||
|
<method v="2">
|
||||||
|
<option name="CLION.COMPOUND.BUILD" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
13
README.rst
13
README.rst
@ -20,8 +20,8 @@ Please take a look at the online `documentation <https://docs.tinyusb.org/>`__.
|
|||||||
├── docs # Documentation
|
├── docs # Documentation
|
||||||
├── examples # Sample with Makefile build support
|
├── examples # Sample with Makefile build support
|
||||||
├── hw
|
├── hw
|
||||||
│ ├── bsp # Supported boards source files
|
│ ├── bsp # Supported boards source files
|
||||||
│ └── mcu # Low level mcu core & peripheral drivers
|
│ └── mcu # Low level mcu core & peripheral drivers
|
||||||
├── lib # Sources from 3rd party such as freeRTOS, fatfs ...
|
├── lib # Sources from 3rd party such as freeRTOS, fatfs ...
|
||||||
├── src # All sources files for TinyUSB stack itself.
|
├── src # All sources files for TinyUSB stack itself.
|
||||||
├── test # Unit tests for the stack
|
├── test # Unit tests for the stack
|
||||||
@ -89,6 +89,13 @@ Host Stack
|
|||||||
- Mass Storage Class (MSC)
|
- Mass Storage Class (MSC)
|
||||||
- Hub with multiple-level support
|
- Hub with multiple-level support
|
||||||
|
|
||||||
|
TypeC PD Stack
|
||||||
|
==============
|
||||||
|
|
||||||
|
- Power Delivery 3.0 (PD3.0) with USB Type-C support (WIP)
|
||||||
|
- Super early stage, only for testing purpose
|
||||||
|
- Only support STM32 G4
|
||||||
|
|
||||||
OS Abstraction layer
|
OS Abstraction layer
|
||||||
====================
|
====================
|
||||||
|
|
||||||
@ -131,7 +138,7 @@ Please make sure you understand all the license term for files you use
|
|||||||
in your project.
|
in your project.
|
||||||
|
|
||||||
|
|
||||||
.. |Build Status| image:: https://github.com/hathach/tinyusb/workflows/Build/badge.svg
|
.. |Build Status| image:: https://github.com/hathach/tinyusb/actions/workflows/cmake_arm.yml/badge.svg
|
||||||
:target: https://github.com/hathach/tinyusb/actions
|
:target: https://github.com/hathach/tinyusb/actions
|
||||||
.. |Documentation Status| image:: https://readthedocs.org/projects/tinyusb/badge/?version=latest
|
.. |Documentation Status| image:: https://readthedocs.org/projects/tinyusb/badge/?version=latest
|
||||||
:target: https://docs.tinyusb.org/en/latest/?badge=latest
|
:target: https://docs.tinyusb.org/en/latest/?badge=latest
|
||||||
|
@ -8,3 +8,4 @@ project(tinyusb_examples C CXX ASM)
|
|||||||
add_subdirectory(device)
|
add_subdirectory(device)
|
||||||
add_subdirectory(dual)
|
add_subdirectory(dual)
|
||||||
add_subdirectory(host)
|
add_subdirectory(host)
|
||||||
|
add_subdirectory(typec)
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -268,7 +268,7 @@ bool tud_audio_set_req_entity_cb(uint8_t rhport, tusb_control_request_t const *
|
|||||||
|
|
||||||
sampFreq = (uint32_t)((audio_control_cur_4_t *)pBuff)->bCur;
|
sampFreq = (uint32_t)((audio_control_cur_4_t *)pBuff)->bCur;
|
||||||
|
|
||||||
TU_LOG2("Clock set current freq: %d\r\n", sampFreq);
|
TU_LOG2("Clock set current freq: %lu\r\n", sampFreq);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
#define TUD_AUDIO_MIC_ONE_CH_2_FORMAT_DESCRIPTOR(_itfnum, _stridx, _epin) \
|
#define TUD_AUDIO_MIC_ONE_CH_2_FORMAT_DESCRIPTOR(_itfnum, _stridx, _epin) \
|
||||||
/* Standard Interface Association Descriptor (IAD) */\
|
/* Standard Interface Association Descriptor (IAD) */\
|
||||||
TUD_AUDIO_DESC_IAD(/*_firstitfs*/ _itfnum, /*_nitfs*/ 0x02, /*_stridx*/ 0x00),\
|
TUD_AUDIO_DESC_IAD(/*_firstitf*/ _itfnum, /*_nitfs*/ 0x02, /*_stridx*/ 0x00),\
|
||||||
/* Standard AC Interface Descriptor(4.7.1) */\
|
/* Standard AC Interface Descriptor(4.7.1) */\
|
||||||
TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ _itfnum, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\
|
TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ _itfnum, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\
|
||||||
/* Class-Specific AC Interface Header Descriptor(4.7.2) */\
|
/* Class-Specific AC Interface Header Descriptor(4.7.2) */\
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -32,4 +32,4 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example... see the corresponding function
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -5,7 +5,11 @@ INC += \
|
|||||||
$(TOP)/hw \
|
$(TOP)/hw \
|
||||||
|
|
||||||
# Example source
|
# Example source
|
||||||
EXAMPLE_SOURCE += $(wildcard src/*.c)
|
EXAMPLE_SOURCE += \
|
||||||
|
src/main.c \
|
||||||
|
src/msc_disk.c \
|
||||||
|
src/usb_descriptors.c \
|
||||||
|
|
||||||
SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
|
SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
|
||||||
|
|
||||||
include ../../rules.mk
|
include ../../rules.mk
|
||||||
|
@ -30,9 +30,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example with FreeRTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} freertos)
|
||||||
|
|
||||||
# Add FreeRTOS for this example
|
|
||||||
family_add_freertos(${PROJECT})
|
|
||||||
|
@ -37,12 +37,12 @@ SRC_S += \
|
|||||||
# CFLAGS += -Wno-error=sign-compare
|
# CFLAGS += -Wno-error=sign-compare
|
||||||
|
|
||||||
# Suppress FreeRTOSConfig.h warnings
|
# Suppress FreeRTOSConfig.h warnings
|
||||||
GCC_CFLAGS += -Wno-error=redundant-decls
|
CFLAGS_GCC += -Wno-error=redundant-decls
|
||||||
|
|
||||||
# Suppress FreeRTOS source warnings
|
# Suppress FreeRTOS source warnings
|
||||||
GCC_CFLAGS += -Wno-error=cast-qual
|
CFLAGS_GCC += -Wno-error=cast-qual
|
||||||
|
|
||||||
# FreeRTOS (lto + Os) linker issue
|
# FreeRTOS (lto + Os) linker issue
|
||||||
LDFLAGS += -Wl,--undefined=vTaskSwitchContext
|
LDFLAGS_GCC += -Wl,--undefined=vTaskSwitchContext
|
||||||
|
|
||||||
include ../../rules.mk
|
include ../../rules.mk
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -29,9 +29,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example with FreeRTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} freertos)
|
||||||
|
|
||||||
# Add FreeRTOS for this example
|
|
||||||
family_add_freertos(${PROJECT})
|
|
||||||
|
@ -36,12 +36,12 @@ SRC_S += \
|
|||||||
# CFLAGS += -Wno-error=sign-compare
|
# CFLAGS += -Wno-error=sign-compare
|
||||||
|
|
||||||
# Suppress FreeRTOSConfig.h warnings
|
# Suppress FreeRTOSConfig.h warnings
|
||||||
GCC_CFLAGS += -Wno-error=redundant-decls
|
CFLAGS_GCC += -Wno-error=redundant-decls
|
||||||
|
|
||||||
# Suppress FreeRTOS source warnings
|
# Suppress FreeRTOS source warnings
|
||||||
GCC_CFLAGS += -Wno-error=cast-qual
|
CFLAGS_GCC += -Wno-error=cast-qual
|
||||||
|
|
||||||
# FreeRTOS (lto + Os) linker issue
|
# FreeRTOS (lto + Os) linker issue
|
||||||
LDFLAGS += -Wl,--undefined=vTaskSwitchContext
|
LDFLAGS_GCC += -Wl,--undefined=vTaskSwitchContext
|
||||||
|
|
||||||
include ../../rules.mk
|
include ../../rules.mk
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -27,6 +27,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -26,6 +26,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -29,6 +29,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -88,6 +88,6 @@ elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
|||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -3,7 +3,7 @@ DEPS_SUBMODULES += lib/lwip
|
|||||||
include ../../make.mk
|
include ../../make.mk
|
||||||
|
|
||||||
# suppress warning caused by lwip
|
# suppress warning caused by lwip
|
||||||
GCC_CFLAGS += \
|
CFLAGS_GCC += \
|
||||||
-Wno-error=null-dereference \
|
-Wno-error=null-dereference \
|
||||||
-Wno-error=unused-parameter \
|
-Wno-error=unused-parameter \
|
||||||
-Wno-error=unused-variable
|
-Wno-error=unused-variable
|
||||||
|
@ -4,7 +4,7 @@ mcu:MSP430x5xx
|
|||||||
mcu:NUC121
|
mcu:NUC121
|
||||||
mcu:SAMD11
|
mcu:SAMD11
|
||||||
mcu:STM32L0
|
mcu:STM32L0
|
||||||
mcu:MKL25ZXX
|
mcu:KINETIS_KL
|
||||||
family:broadcom_64bit
|
family:broadcom_64bit
|
||||||
family:broadcom_32bit
|
family:broadcom_32bit
|
||||||
board:curiosity_nano
|
board:curiosity_nano
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -57,7 +57,7 @@ enum
|
|||||||
+ TUD_AUDIO_DESC_OUTPUT_TERM_LEN\
|
+ TUD_AUDIO_DESC_OUTPUT_TERM_LEN\
|
||||||
/* Interface 1, Alternate 0 */\
|
/* Interface 1, Alternate 0 */\
|
||||||
+ TUD_AUDIO_DESC_STD_AS_INT_LEN\
|
+ TUD_AUDIO_DESC_STD_AS_INT_LEN\
|
||||||
/* Interface 1, Alternate 0 */\
|
/* Interface 1, Alternate 1 */\
|
||||||
+ TUD_AUDIO_DESC_STD_AS_INT_LEN\
|
+ TUD_AUDIO_DESC_STD_AS_INT_LEN\
|
||||||
+ TUD_AUDIO_DESC_CS_AS_INT_LEN\
|
+ TUD_AUDIO_DESC_CS_AS_INT_LEN\
|
||||||
+ TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN\
|
+ TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN\
|
||||||
@ -86,7 +86,7 @@ enum
|
|||||||
|
|
||||||
#define TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR(_stridx, _epout, _epin) \
|
#define TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR(_stridx, _epout, _epin) \
|
||||||
/* Standard Interface Association Descriptor (IAD) */\
|
/* Standard Interface Association Descriptor (IAD) */\
|
||||||
TUD_AUDIO_DESC_IAD(/*_firstitfs*/ ITF_NUM_AUDIO_CONTROL, /*_nitfs*/ 3, /*_stridx*/ 0x00),\
|
TUD_AUDIO_DESC_IAD(/*_firstitf*/ ITF_NUM_AUDIO_CONTROL, /*_nitfs*/ ITF_NUM_TOTAL, /*_stridx*/ 0x00),\
|
||||||
/* Standard AC Interface Descriptor(4.7.1) */\
|
/* Standard AC Interface Descriptor(4.7.1) */\
|
||||||
TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ ITF_NUM_AUDIO_CONTROL, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\
|
TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ ITF_NUM_AUDIO_CONTROL, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\
|
||||||
/* Class-Specific AC Interface Header Descriptor(4.7.2) */\
|
/* Class-Specific AC Interface Header Descriptor(4.7.2) */\
|
||||||
|
@ -29,6 +29,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -34,6 +34,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -100,6 +100,9 @@
|
|||||||
// video streaming endpoint size
|
// video streaming endpoint size
|
||||||
#define CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE 256
|
#define CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE 256
|
||||||
|
|
||||||
|
// use bulk endpoint for streaming interface
|
||||||
|
#define CFG_TUD_VIDEO_STREAMING_BULK 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -76,15 +76,27 @@ uint8_t const * tud_descriptor_device_cb(void)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
#if defined(CFG_EXAMPLE_VIDEO_READONLY) && !defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPEG)
|
#if defined(CFG_EXAMPLE_VIDEO_READONLY) && !defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPEG)
|
||||||
#define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_MJPEG_LEN)
|
# if 1 == CFG_TUD_VIDEO_STREAMING_BULK
|
||||||
|
# define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_MJPEG_BULK_LEN)
|
||||||
|
# else
|
||||||
|
# define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_MJPEG_LEN)
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
#define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_UNCOMPR_LEN)
|
# if 1 == CFG_TUD_VIDEO_STREAMING_BULK
|
||||||
|
# define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_UNCOMPR_BULK_LEN)
|
||||||
|
# else
|
||||||
|
# define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_VIDEO_CAPTURE_DESC_UNCOMPR_LEN)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TU_CHECK_MCU(OPT_MCU_LPC175X_6X, OPT_MCU_LPC177X_8X, OPT_MCU_LPC40XX)
|
#if TU_CHECK_MCU(OPT_MCU_LPC175X_6X, OPT_MCU_LPC177X_8X, OPT_MCU_LPC40XX)
|
||||||
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
|
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
|
||||||
// 0 control, 1 In, 2 Bulk, 3 Iso, 4 In, 5 Bulk etc ...
|
// 0 control, 1 In, 2 Bulk, 3 Iso, 4 In, 5 Bulk etc ...
|
||||||
|
#if 1 == CFG_TUD_VIDEO_STREAMING_BULK
|
||||||
|
#define EPNUM_VIDEO_IN 0x82
|
||||||
|
#else
|
||||||
#define EPNUM_VIDEO_IN 0x83
|
#define EPNUM_VIDEO_IN 0x83
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_NRF5X)
|
#elif TU_CHECK_MCU(OPT_MCU_NRF5X)
|
||||||
// nRF5x ISO can only be endpoint 8
|
// nRF5x ISO can only be endpoint 8
|
||||||
@ -102,13 +114,25 @@ uint8_t const desc_fs_configuration[] =
|
|||||||
|
|
||||||
// IAD for Video Control
|
// IAD for Video Control
|
||||||
#if defined(CFG_EXAMPLE_VIDEO_READONLY) && !defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPEG)
|
#if defined(CFG_EXAMPLE_VIDEO_READONLY) && !defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPEG)
|
||||||
|
# if 1 == CFG_TUD_VIDEO_STREAMING_BULK
|
||||||
|
TUD_VIDEO_CAPTURE_DESCRIPTOR_MJPEG_BULK(4, EPNUM_VIDEO_IN,
|
||||||
|
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
||||||
|
64)
|
||||||
|
# else
|
||||||
TUD_VIDEO_CAPTURE_DESCRIPTOR_MJPEG(4, EPNUM_VIDEO_IN,
|
TUD_VIDEO_CAPTURE_DESCRIPTOR_MJPEG(4, EPNUM_VIDEO_IN,
|
||||||
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
||||||
CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE)
|
CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE)
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
|
# if 1 == CFG_TUD_VIDEO_STREAMING_BULK
|
||||||
|
TUD_VIDEO_CAPTURE_DESCRIPTOR_UNCOMPR_BULK(4, EPNUM_VIDEO_IN,
|
||||||
|
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
||||||
|
64)
|
||||||
|
# else
|
||||||
TUD_VIDEO_CAPTURE_DESCRIPTOR_UNCOMPR(4, EPNUM_VIDEO_IN,
|
TUD_VIDEO_CAPTURE_DESCRIPTOR_UNCOMPR(4, EPNUM_VIDEO_IN,
|
||||||
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE,
|
||||||
CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE)
|
CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,6 +79,38 @@ enum {
|
|||||||
+ 7/* Endpoint */\
|
+ 7/* Endpoint */\
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#define TUD_VIDEO_CAPTURE_DESC_UNCOMPR_BULK_LEN (\
|
||||||
|
TUD_VIDEO_DESC_IAD_LEN\
|
||||||
|
/* control */\
|
||||||
|
+ TUD_VIDEO_DESC_STD_VC_LEN\
|
||||||
|
+ (TUD_VIDEO_DESC_CS_VC_LEN + 1/*bInCollection*/)\
|
||||||
|
+ TUD_VIDEO_DESC_CAMERA_TERM_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_OUTPUT_TERM_LEN\
|
||||||
|
/* Interface 1, Alternate 0 */\
|
||||||
|
+ TUD_VIDEO_DESC_STD_VS_LEN\
|
||||||
|
+ (TUD_VIDEO_DESC_CS_VS_IN_LEN + 1/*bNumFormats x bControlSize*/)\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN\
|
||||||
|
+ 7/* Endpoint */\
|
||||||
|
)
|
||||||
|
|
||||||
|
#define TUD_VIDEO_CAPTURE_DESC_MJPEG_BULK_LEN (\
|
||||||
|
TUD_VIDEO_DESC_IAD_LEN\
|
||||||
|
/* control */\
|
||||||
|
+ TUD_VIDEO_DESC_STD_VC_LEN\
|
||||||
|
+ (TUD_VIDEO_DESC_CS_VC_LEN + 1/*bInCollection*/)\
|
||||||
|
+ TUD_VIDEO_DESC_CAMERA_TERM_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_OUTPUT_TERM_LEN\
|
||||||
|
/* Interface 1, Alternate 0 */\
|
||||||
|
+ TUD_VIDEO_DESC_STD_VS_LEN\
|
||||||
|
+ (TUD_VIDEO_DESC_CS_VS_IN_LEN + 1/*bNumFormats x bControlSize*/)\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN\
|
||||||
|
+ 7/* Endpoint */\
|
||||||
|
)
|
||||||
|
|
||||||
/* Windows support YUY2 and NV12
|
/* Windows support YUY2 and NV12
|
||||||
* https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/usb-video-class-driver-overview */
|
* https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/usb-video-class-driver-overview */
|
||||||
|
|
||||||
@ -165,4 +197,75 @@ enum {
|
|||||||
/* EP */ \
|
/* EP */ \
|
||||||
TUD_VIDEO_DESC_EP_ISO(_epin, _epsize, 1)
|
TUD_VIDEO_DESC_EP_ISO(_epin, _epsize, 1)
|
||||||
|
|
||||||
|
|
||||||
|
#define TUD_VIDEO_CAPTURE_DESCRIPTOR_UNCOMPR_BULK(_stridx, _epin, _width, _height, _fps, _epsize) \
|
||||||
|
TUD_VIDEO_DESC_IAD(ITF_NUM_VIDEO_CONTROL, /* 2 Interfaces */ 0x02, _stridx), \
|
||||||
|
/* Video control 0 */ \
|
||||||
|
TUD_VIDEO_DESC_STD_VC(ITF_NUM_VIDEO_CONTROL, 0, _stridx), \
|
||||||
|
TUD_VIDEO_DESC_CS_VC( /* UVC 1.5*/ 0x0150, \
|
||||||
|
/* wTotalLength - bLength */ \
|
||||||
|
TUD_VIDEO_DESC_CAMERA_TERM_LEN + TUD_VIDEO_DESC_OUTPUT_TERM_LEN, \
|
||||||
|
UVC_CLOCK_FREQUENCY, ITF_NUM_VIDEO_STREAMING), \
|
||||||
|
TUD_VIDEO_DESC_CAMERA_TERM(UVC_ENTITY_CAP_INPUT_TERMINAL, 0, 0,\
|
||||||
|
/*wObjectiveFocalLengthMin*/0, /*wObjectiveFocalLengthMax*/0,\
|
||||||
|
/*wObjectiveFocalLength*/0, /*bmControls*/0), \
|
||||||
|
TUD_VIDEO_DESC_OUTPUT_TERM(UVC_ENTITY_CAP_OUTPUT_TERMINAL, VIDEO_TT_STREAMING, 0, 1, 0), \
|
||||||
|
/* Video stream alt. 0 */ \
|
||||||
|
TUD_VIDEO_DESC_STD_VS(ITF_NUM_VIDEO_STREAMING, 0, 1, _stridx), \
|
||||||
|
/* Video stream header for without still image capture */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_INPUT( /*bNumFormats*/1, \
|
||||||
|
/*wTotalLength - bLength */\
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN,\
|
||||||
|
_epin, /*bmInfo*/0, /*bTerminalLink*/UVC_ENTITY_CAP_OUTPUT_TERMINAL, \
|
||||||
|
/*bStillCaptureMethod*/0, /*bTriggerSupport*/0, /*bTriggerUsage*/0, \
|
||||||
|
/*bmaControls(1)*/0), \
|
||||||
|
/* Video stream format */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FMT_YUY2(/*bFormatIndex*/1, /*bNumFrameDescriptors*/1, \
|
||||||
|
/*bDefaultFrameIndex*/1, 0, 0, 0, /*bCopyProtect*/0), \
|
||||||
|
/* Video stream frame format */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT(/*bFrameIndex */1, 0, _width, _height, \
|
||||||
|
_width * _height * 16, _width * _height * 16 * _fps, \
|
||||||
|
_width * _height * 16, \
|
||||||
|
(10000000/_fps), (10000000/_fps), (10000000/_fps)*_fps, (10000000/_fps)), \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING(VIDEO_COLOR_PRIMARIES_BT709, VIDEO_COLOR_XFER_CH_BT709, VIDEO_COLOR_COEF_SMPTE170M), \
|
||||||
|
TUD_VIDEO_DESC_EP_BULK(_epin, _epsize, 1)
|
||||||
|
|
||||||
|
#define TUD_VIDEO_CAPTURE_DESCRIPTOR_MJPEG_BULK(_stridx, _epin, _width, _height, _fps, _epsize) \
|
||||||
|
TUD_VIDEO_DESC_IAD(ITF_NUM_VIDEO_CONTROL, /* 2 Interfaces */ 0x02, _stridx), \
|
||||||
|
/* Video control 0 */ \
|
||||||
|
TUD_VIDEO_DESC_STD_VC(ITF_NUM_VIDEO_CONTROL, 0, _stridx), \
|
||||||
|
TUD_VIDEO_DESC_CS_VC( /* UVC 1.5*/ 0x0150, \
|
||||||
|
/* wTotalLength - bLength */ \
|
||||||
|
TUD_VIDEO_DESC_CAMERA_TERM_LEN + TUD_VIDEO_DESC_OUTPUT_TERM_LEN, \
|
||||||
|
UVC_CLOCK_FREQUENCY, ITF_NUM_VIDEO_STREAMING), \
|
||||||
|
TUD_VIDEO_DESC_CAMERA_TERM(UVC_ENTITY_CAP_INPUT_TERMINAL, 0, 0,\
|
||||||
|
/*wObjectiveFocalLengthMin*/0, /*wObjectiveFocalLengthMax*/0,\
|
||||||
|
/*wObjectiveFocalLength*/0, /*bmControls*/0), \
|
||||||
|
TUD_VIDEO_DESC_OUTPUT_TERM(UVC_ENTITY_CAP_OUTPUT_TERMINAL, VIDEO_TT_STREAMING, 0, 1, 0), \
|
||||||
|
/* Video stream alt. 0 */ \
|
||||||
|
TUD_VIDEO_DESC_STD_VS(ITF_NUM_VIDEO_STREAMING, 0, 1, _stridx), \
|
||||||
|
/* Video stream header for without still image capture */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_INPUT( /*bNumFormats*/1, \
|
||||||
|
/*wTotalLength - bLength */\
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN\
|
||||||
|
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN,\
|
||||||
|
_epin, /*bmInfo*/0, /*bTerminalLink*/UVC_ENTITY_CAP_OUTPUT_TERMINAL, \
|
||||||
|
/*bStillCaptureMethod*/0, /*bTriggerSupport*/0, /*bTriggerUsage*/0, \
|
||||||
|
/*bmaControls(1)*/0), \
|
||||||
|
/* Video stream format */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FMT_MJPEG(/*bFormatIndex*/1, /*bNumFrameDescriptors*/1, \
|
||||||
|
/*bmFlags*/0, /*bDefaultFrameIndex*/1, 0, 0, 0, /*bCopyProtect*/0), \
|
||||||
|
/* Video stream frame format */ \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT(/*bFrameIndex */1, 0, _width, _height, \
|
||||||
|
_width * _height * 16, _width * _height * 16 * _fps, \
|
||||||
|
_width * _height * 16 / 8, \
|
||||||
|
(10000000/_fps), (10000000/_fps), (10000000/_fps)*_fps, (10000000/_fps)), \
|
||||||
|
TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING(VIDEO_COLOR_PRIMARIES_BT709, VIDEO_COLOR_XFER_CH_BT709, VIDEO_COLOR_COEF_SMPTE170M), \
|
||||||
|
/* EP */ \
|
||||||
|
TUD_VIDEO_DESC_EP_BULK(_epin, _epsize, 1)
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,6 +28,6 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_device_example(${PROJECT})
|
family_configure_device_example(${PROJECT} noos)
|
||||||
|
@ -23,9 +23,9 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_dual_usb_example(${PROJECT})
|
family_configure_dual_usb_example(${PROJECT} noos)
|
||||||
|
|
||||||
# due to warnings from Pico-PIO-USB
|
# due to warnings from Pico-PIO-USB
|
||||||
target_compile_options(${PROJECT} PUBLIC
|
target_compile_options(${PROJECT} PUBLIC
|
||||||
|
@ -22,9 +22,9 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_host_example(${PROJECT})
|
family_configure_host_example(${PROJECT} noos)
|
||||||
|
|
||||||
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
||||||
if(FAMILY STREQUAL "rp2040")
|
if(FAMILY STREQUAL "rp2040")
|
||||||
|
@ -3,7 +3,7 @@ mcu:LPC177X_8X
|
|||||||
mcu:LPC18XX
|
mcu:LPC18XX
|
||||||
mcu:LPC40XX
|
mcu:LPC40XX
|
||||||
mcu:LPC43XX
|
mcu:LPC43XX
|
||||||
mcu:MIMXRT
|
mcu:MIMXRT1XXX
|
||||||
mcu:MIMXRT10XX
|
mcu:MIMXRT10XX
|
||||||
mcu:MIMXRT11XX
|
mcu:MIMXRT11XX
|
||||||
mcu:RP2040
|
mcu:RP2040
|
||||||
|
@ -25,9 +25,9 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_host_example(${PROJECT})
|
family_configure_host_example(${PROJECT} noos)
|
||||||
|
|
||||||
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
||||||
if(FAMILY STREQUAL "rp2040")
|
if(FAMILY STREQUAL "rp2040")
|
||||||
|
@ -3,7 +3,7 @@ mcu:LPC177X_8X
|
|||||||
mcu:LPC18XX
|
mcu:LPC18XX
|
||||||
mcu:LPC40XX
|
mcu:LPC40XX
|
||||||
mcu:LPC43XX
|
mcu:LPC43XX
|
||||||
mcu:MIMXRT
|
mcu:MIMXRT1XXX
|
||||||
mcu:MIMXRT10XX
|
mcu:MIMXRT10XX
|
||||||
mcu:MIMXRT11XX
|
mcu:MIMXRT11XX
|
||||||
mcu:RP2040
|
mcu:RP2040
|
||||||
|
@ -23,9 +23,9 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_host_example(${PROJECT})
|
family_configure_host_example(${PROJECT} noos)
|
||||||
|
|
||||||
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
||||||
if(FAMILY STREQUAL "rp2040")
|
if(FAMILY STREQUAL "rp2040")
|
||||||
|
@ -3,7 +3,7 @@ mcu:LPC177X_8X
|
|||||||
mcu:LPC18XX
|
mcu:LPC18XX
|
||||||
mcu:LPC40XX
|
mcu:LPC40XX
|
||||||
mcu:LPC43XX
|
mcu:LPC43XX
|
||||||
mcu:MIMXRT
|
mcu:MIMXRT1XXX
|
||||||
mcu:MIMXRT10XX
|
mcu:MIMXRT10XX
|
||||||
mcu:MIMXRT11XX
|
mcu:MIMXRT11XX
|
||||||
mcu:RP2040
|
mcu:RP2040
|
||||||
|
@ -21,6 +21,13 @@ target_sources(${PROJECT} PUBLIC
|
|||||||
${TOP}/lib/fatfs/source/ffunicode.c
|
${TOP}/lib/fatfs/source/ffunicode.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Suppress warnings on fatfs
|
||||||
|
set_source_files_properties(
|
||||||
|
${TOP}/lib/fatfs/source/ff.c
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS "-Wno-conversion -Wno-cast-qual"
|
||||||
|
)
|
||||||
|
|
||||||
# Example include
|
# Example include
|
||||||
target_include_directories(${PROJECT} PUBLIC
|
target_include_directories(${PROJECT} PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
@ -28,9 +35,9 @@ target_include_directories(${PROJECT} PUBLIC
|
|||||||
${TOP}/lib/embedded-cli
|
${TOP}/lib/embedded-cli
|
||||||
)
|
)
|
||||||
|
|
||||||
# Configure compilation flags and libraries for the example... see the corresponding function
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
# in hw/bsp/FAMILY/family.cmake for details.
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
family_configure_host_example(${PROJECT})
|
family_configure_host_example(${PROJECT} noos)
|
||||||
|
|
||||||
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
# Add pico-pio-usb for rp2040 since user can choose to run on bit-banging host
|
||||||
if(FAMILY STREQUAL "rp2040")
|
if(FAMILY STREQUAL "rp2040")
|
||||||
|
@ -3,7 +3,7 @@ mcu:LPC177X_8X
|
|||||||
mcu:LPC18XX
|
mcu:LPC18XX
|
||||||
mcu:LPC40XX
|
mcu:LPC40XX
|
||||||
mcu:LPC43XX
|
mcu:LPC43XX
|
||||||
mcu:MIMXRT
|
mcu:MIMXRT1XXX
|
||||||
mcu:MIMXRT10XX
|
mcu:MIMXRT10XX
|
||||||
mcu:MIMXRT11XX
|
mcu:MIMXRT11XX
|
||||||
mcu:RP2040
|
mcu:RP2040
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
# Common make definition for all examples
|
# Common make definition for all examples
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
|
|
||||||
|
# Supported toolchain: gcc, iar
|
||||||
TOOLCHAIN ?= gcc
|
TOOLCHAIN ?= gcc
|
||||||
|
|
||||||
#-------------- TOP and CURRENT_PATH ------------
|
#-------------- TOP and CURRENT_PATH ------------
|
||||||
@ -32,13 +33,6 @@ CMDEXE := 1
|
|||||||
SHELL := cmd.exe
|
SHELL := cmd.exe
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# Build directory
|
|
||||||
BUILD := _build/$(BOARD)
|
|
||||||
|
|
||||||
PROJECT := $(notdir $(CURDIR))
|
|
||||||
BIN := $(TOP)/_bin/$(BOARD)/$(notdir $(CURDIR))
|
|
||||||
|
|
||||||
# Handy check parameter function
|
# Handy check parameter function
|
||||||
check_defined = \
|
check_defined = \
|
||||||
$(strip $(foreach 1,$1, \
|
$(strip $(foreach 1,$1, \
|
||||||
@ -47,6 +41,13 @@ __check_defined = \
|
|||||||
$(if $(value $1),, \
|
$(if $(value $1),, \
|
||||||
$(error Undefined make flag: $1$(if $2, ($2))))
|
$(error Undefined make flag: $1$(if $2, ($2))))
|
||||||
|
|
||||||
|
|
||||||
|
# Build directory
|
||||||
|
BUILD := _build/$(BOARD)
|
||||||
|
|
||||||
|
PROJECT := $(notdir $(CURDIR))
|
||||||
|
BIN := $(TOP)/_bin/$(BOARD)/$(notdir $(CURDIR))
|
||||||
|
|
||||||
#-------------- Select the board to build for. ------------
|
#-------------- Select the board to build for. ------------
|
||||||
|
|
||||||
# Board without family
|
# Board without family
|
||||||
@ -81,25 +82,12 @@ endif
|
|||||||
# Can be set by board, default to ARM GCC
|
# Can be set by board, default to ARM GCC
|
||||||
CROSS_COMPILE ?= arm-none-eabi-
|
CROSS_COMPILE ?= arm-none-eabi-
|
||||||
|
|
||||||
ifeq ($(CC),iccarm)
|
ifeq ($(TOOLCHAIN),iar)
|
||||||
USE_IAR = 1
|
CC := iccarm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef USE_IAR
|
ifeq ($(CC),iccarm)
|
||||||
AS = iasmarm
|
USE_IAR = 1
|
||||||
LD = ilinkarm
|
|
||||||
OBJCOPY = ielftool
|
|
||||||
SIZE = size
|
|
||||||
|
|
||||||
else
|
|
||||||
CC = $(CROSS_COMPILE)gcc
|
|
||||||
CXX = $(CROSS_COMPILE)g++
|
|
||||||
AS = $(CC) -x assembler-with-cpp
|
|
||||||
LD = $(CC)
|
|
||||||
|
|
||||||
GDB = $(CROSS_COMPILE)gdb
|
|
||||||
OBJCOPY = $(CROSS_COMPILE)objcopy
|
|
||||||
SIZE = $(CROSS_COMPILE)size
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CMDEXE),1)
|
ifeq ($(CMDEXE),1)
|
||||||
@ -115,57 +103,19 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
#-------------- Source files and compiler flags --------------
|
#-------------- Source files and compiler flags --------------
|
||||||
|
# tinyusb makefile
|
||||||
|
include $(TOP)/src/tinyusb.mk
|
||||||
|
|
||||||
# Include all source C in family & board folder
|
# Include all source C in family & board folder
|
||||||
SRC_C += hw/bsp/board.c
|
SRC_C += hw/bsp/board.c
|
||||||
SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/$(BOARD_PATH)/*.c))
|
SRC_C += $(subst $(TOP)/,,$(wildcard $(TOP)/$(BOARD_PATH)/*.c))
|
||||||
|
|
||||||
INC += $(TOP)/$(FAMILY_PATH)
|
SRC_C += $(TINYUSB_SRC_C)
|
||||||
|
|
||||||
# Allow for -Os to be changed by board makefiles in case -Os is not allowed
|
INC += \
|
||||||
CFLAGS_OPTIMIZED ?= -Os
|
$(TOP)/$(FAMILY_PATH) \
|
||||||
|
$(TOP)/src \
|
||||||
|
|
||||||
# GCC Compiler Flags
|
|
||||||
GCC_CFLAGS += \
|
|
||||||
-ggdb \
|
|
||||||
-fdata-sections \
|
|
||||||
-ffunction-sections \
|
|
||||||
-fsingle-precision-constant \
|
|
||||||
-fno-strict-aliasing \
|
|
||||||
-Wall \
|
|
||||||
-Wextra \
|
|
||||||
-Werror \
|
|
||||||
-Wfatal-errors \
|
|
||||||
-Wdouble-promotion \
|
|
||||||
-Wstrict-prototypes \
|
|
||||||
-Wstrict-overflow \
|
|
||||||
-Werror-implicit-function-declaration \
|
|
||||||
-Wfloat-equal \
|
|
||||||
-Wundef \
|
|
||||||
-Wshadow \
|
|
||||||
-Wwrite-strings \
|
|
||||||
-Wsign-compare \
|
|
||||||
-Wmissing-format-attribute \
|
|
||||||
-Wunreachable-code \
|
|
||||||
-Wcast-align \
|
|
||||||
-Wcast-function-type \
|
|
||||||
-Wcast-qual \
|
|
||||||
-Wnull-dereference \
|
|
||||||
-Wuninitialized \
|
|
||||||
-Wunused \
|
|
||||||
-Wreturn-type \
|
|
||||||
-Wredundant-decls
|
|
||||||
|
|
||||||
# conversion is too strict for most mcu driver, may be disable sign/int/arith-conversion
|
|
||||||
# -Wconversion
|
|
||||||
|
|
||||||
# Debugging/Optimization
|
|
||||||
ifeq ($(DEBUG), 1)
|
|
||||||
GCC_CFLAGS += -O0
|
|
||||||
NO_LTO = 1
|
|
||||||
else
|
|
||||||
GCC_CFLAGS += $(CFLAGS_OPTIMIZED)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Log level is mapped to TUSB DEBUG option
|
# Log level is mapped to TUSB DEBUG option
|
||||||
ifneq ($(LOG),)
|
ifneq ($(LOG),)
|
||||||
@ -186,3 +136,11 @@ ifeq ($(LOGGER),rtt)
|
|||||||
else ifeq ($(LOGGER),swo)
|
else ifeq ($(LOGGER),swo)
|
||||||
CFLAGS += -DLOGGER_SWO
|
CFLAGS += -DLOGGER_SWO
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# CPU specific flags
|
||||||
|
ifdef CPU_CORE
|
||||||
|
include $(TOP)/tools/make/cpu/$(CPU_CORE).mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
# toolchain specific
|
||||||
|
include $(TOP)/tools/make/toolchain/arm_$(TOOLCHAIN).mk
|
||||||
|
@ -13,86 +13,8 @@ ifeq (,$(findstring $(FAMILY),espressif rp2040))
|
|||||||
# Compiler Flags
|
# Compiler Flags
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
|
|
||||||
LIBS_GCC ?= -lgcc -lm -lnosys
|
|
||||||
|
|
||||||
# libc
|
|
||||||
LIBS += $(LIBS_GCC)
|
|
||||||
|
|
||||||
ifneq ($(BOARD), spresense)
|
|
||||||
LIBS += -lc
|
|
||||||
endif
|
|
||||||
|
|
||||||
# TinyUSB Stack source
|
|
||||||
SRC_C += \
|
|
||||||
src/tusb.c \
|
|
||||||
src/common/tusb_fifo.c \
|
|
||||||
src/device/usbd.c \
|
|
||||||
src/device/usbd_control.c \
|
|
||||||
src/class/audio/audio_device.c \
|
|
||||||
src/class/cdc/cdc_device.c \
|
|
||||||
src/class/dfu/dfu_device.c \
|
|
||||||
src/class/dfu/dfu_rt_device.c \
|
|
||||||
src/class/hid/hid_device.c \
|
|
||||||
src/class/midi/midi_device.c \
|
|
||||||
src/class/msc/msc_device.c \
|
|
||||||
src/class/net/ecm_rndis_device.c \
|
|
||||||
src/class/net/ncm_device.c \
|
|
||||||
src/class/usbtmc/usbtmc_device.c \
|
|
||||||
src/class/video/video_device.c \
|
|
||||||
src/class/vendor/vendor_device.c
|
|
||||||
|
|
||||||
# TinyUSB stack include
|
|
||||||
INC += $(TOP)/src
|
|
||||||
|
|
||||||
CFLAGS += $(addprefix -I,$(INC))
|
CFLAGS += $(addprefix -I,$(INC))
|
||||||
|
|
||||||
ifdef USE_IAR
|
|
||||||
|
|
||||||
SRC_S += $(IAR_SRC_S)
|
|
||||||
|
|
||||||
ASFLAGS := $(CFLAGS) $(IAR_ASFLAGS) $(ASFLAGS) -S
|
|
||||||
IAR_LDFLAGS += --config $(TOP)/$(IAR_LD_FILE)
|
|
||||||
CFLAGS += $(IAR_CFLAGS) -e --debug --silent
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
SRC_S += $(GCC_SRC_S)
|
|
||||||
|
|
||||||
CFLAGS += $(GCC_CFLAGS) -MD
|
|
||||||
|
|
||||||
# LTO makes it difficult to analyze map file for optimizing size purpose
|
|
||||||
# We will run this option in ci
|
|
||||||
ifeq ($(NO_LTO),1)
|
|
||||||
CFLAGS := $(filter-out -flto,$(CFLAGS))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(CFLAGS_SKIP),)
|
|
||||||
CFLAGS := $(filter-out $(CFLAGS_SKIP),$(CFLAGS))
|
|
||||||
endif
|
|
||||||
|
|
||||||
LDFLAGS += $(CFLAGS) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections
|
|
||||||
|
|
||||||
# Some toolchain such as renesas rx does not support --print-memory-usage flags
|
|
||||||
ifneq ($(FAMILY),rx)
|
|
||||||
LDFLAGS += -Wl,--print-memory-usage
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef LD_FILE
|
|
||||||
LDFLAGS += -Wl,-T,$(TOP)/$(LD_FILE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef GCC_LD_FILE
|
|
||||||
LDFLAGS += -Wl,-T,$(TOP)/$(GCC_LD_FILE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(SKIP_NANOLIB), 1)
|
|
||||||
LDFLAGS += --specs=nosys.specs --specs=nano.specs
|
|
||||||
endif
|
|
||||||
|
|
||||||
ASFLAGS += $(CFLAGS)
|
|
||||||
|
|
||||||
endif # USE_IAR
|
|
||||||
|
|
||||||
# Verbose mode
|
# Verbose mode
|
||||||
ifeq ("$(V)","1")
|
ifeq ("$(V)","1")
|
||||||
$(info CFLAGS $(CFLAGS) ) $(info )
|
$(info CFLAGS $(CFLAGS) ) $(info )
|
||||||
@ -100,15 +22,6 @@ $(info LDFLAGS $(LDFLAGS)) $(info )
|
|||||||
$(info ASFLAGS $(ASFLAGS)) $(info )
|
$(info ASFLAGS $(ASFLAGS)) $(info )
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Assembly files can be name with upper case .S, convert it to .s
|
|
||||||
SRC_S := $(SRC_S:.S=.s)
|
|
||||||
|
|
||||||
# Due to GCC LTO bug https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966
|
|
||||||
# assembly file should be placed first in linking order
|
|
||||||
# '_asm' suffix is added to object of assembly file
|
|
||||||
OBJ += $(addprefix $(BUILD)/obj/, $(SRC_S:.s=_asm.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/obj/, $(SRC_C:.c=.o))
|
|
||||||
|
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
# Rules
|
# Rules
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
@ -117,15 +30,6 @@ all: $(BUILD)/$(PROJECT).bin $(BUILD)/$(PROJECT).hex size
|
|||||||
|
|
||||||
uf2: $(BUILD)/$(PROJECT).uf2
|
uf2: $(BUILD)/$(PROJECT).uf2
|
||||||
|
|
||||||
OBJ_DIRS = $(sort $(dir $(OBJ)))
|
|
||||||
$(OBJ): | $(OBJ_DIRS)
|
|
||||||
$(OBJ_DIRS):
|
|
||||||
ifeq ($(CMDEXE),1)
|
|
||||||
-@$(MKDIR) $(subst /,\,$@)
|
|
||||||
else
|
|
||||||
@$(MKDIR) -p $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
# We set vpath to point to the top of the tree so that the source files
|
# We set vpath to point to the top of the tree so that the source files
|
||||||
# can be located. By following this scheme, it allows a single build rule
|
# can be located. By following this scheme, it allows a single build rule
|
||||||
# to be used to compile all .c files.
|
# to be used to compile all .c files.
|
||||||
@ -133,49 +37,16 @@ vpath %.c . $(TOP)
|
|||||||
vpath %.s . $(TOP)
|
vpath %.s . $(TOP)
|
||||||
vpath %.S . $(TOP)
|
vpath %.S . $(TOP)
|
||||||
|
|
||||||
# Compile .c file
|
include $(TOP)/tools/make/toolchain/arm_$(TOOLCHAIN)_rules.mk
|
||||||
$(BUILD)/obj/%.o: %.c
|
|
||||||
@echo CC $(notdir $@)
|
|
||||||
@$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
# ASM sources lower case .s
|
|
||||||
$(BUILD)/obj/%_asm.o: %.s
|
|
||||||
@echo AS $(notdir $@)
|
|
||||||
@$(AS) $(ASFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
# ASM sources upper case .S
|
|
||||||
$(BUILD)/obj/%_asm.o: %.S
|
|
||||||
@echo AS $(notdir $@)
|
|
||||||
@$(AS) $(ASFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
ifdef USE_IAR
|
|
||||||
# IAR Compiler
|
|
||||||
$(BUILD)/$(PROJECT).bin: $(BUILD)/$(PROJECT).elf
|
|
||||||
@echo CREATE $@
|
|
||||||
@$(OBJCOPY) --silent --bin $^ $@
|
|
||||||
|
|
||||||
$(BUILD)/$(PROJECT).hex: $(BUILD)/$(PROJECT).elf
|
|
||||||
@echo CREATE $@
|
|
||||||
@$(OBJCOPY) --silent --ihex $^ $@
|
|
||||||
|
|
||||||
$(BUILD)/$(PROJECT).elf: $(OBJ)
|
|
||||||
@echo LINK $@
|
|
||||||
@$(LD) -o $@ $(IAR_LDFLAGS) $^
|
|
||||||
|
|
||||||
|
OBJ_DIRS = $(sort $(dir $(OBJ)))
|
||||||
|
$(OBJ): | $(OBJ_DIRS)
|
||||||
|
$(OBJ_DIRS):
|
||||||
|
ifeq ($(CMDEXE),1)
|
||||||
|
-@$(MKDIR) $(subst /,\,$@)
|
||||||
else
|
else
|
||||||
# GCC based compiler
|
@$(MKDIR) -p $@
|
||||||
$(BUILD)/$(PROJECT).bin: $(BUILD)/$(PROJECT).elf
|
|
||||||
@echo CREATE $@
|
|
||||||
@$(OBJCOPY) -O binary $^ $@
|
|
||||||
|
|
||||||
$(BUILD)/$(PROJECT).hex: $(BUILD)/$(PROJECT).elf
|
|
||||||
@echo CREATE $@
|
|
||||||
@$(OBJCOPY) -O ihex $^ $@
|
|
||||||
|
|
||||||
$(BUILD)/$(PROJECT).elf: $(OBJ)
|
|
||||||
@echo LINK $@
|
|
||||||
@$(LD) -o $@ $(LDFLAGS) $^ -Wl,--start-group $(LIBS) -Wl,--end-group
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# UF2 generation, iMXRT need to strip to text only before conversion
|
# UF2 generation, iMXRT need to strip to text only before conversion
|
||||||
|
9
examples/typec/CMakeLists.txt
Normal file
9
examples/typec/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.17)
|
||||||
|
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)
|
||||||
|
|
||||||
|
project(tinyusb_host_examples C CXX ASM)
|
||||||
|
family_initialize_project(tinyusb_host_examples ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
# family_add_subdirectory will filter what to actually add based on selected FAMILY
|
||||||
|
family_add_subdirectory(power_delivery)
|
32
examples/typec/power_delivery/CMakeLists.txt
Normal file
32
examples/typec/power_delivery/CMakeLists.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.17)
|
||||||
|
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
|
||||||
|
|
||||||
|
# gets PROJECT name for the example (e.g. <BOARD>-<DIR_NAME>)
|
||||||
|
family_get_project_name(PROJECT ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
project(${PROJECT} C CXX ASM)
|
||||||
|
|
||||||
|
# Checks this example is valid for the family and initializes the project
|
||||||
|
family_initialize_project(${PROJECT} ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
# Espressif has its own cmake build system
|
||||||
|
if(FAMILY STREQUAL "espressif")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(${PROJECT})
|
||||||
|
|
||||||
|
# Example source
|
||||||
|
target_sources(${PROJECT} PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
|
||||||
|
)
|
||||||
|
|
||||||
|
# Example include
|
||||||
|
target_include_directories(${PROJECT} PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
|
)
|
||||||
|
|
||||||
|
# Configure compilation flags and libraries for the example without RTOS.
|
||||||
|
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
|
||||||
|
family_configure_device_example(${PROJECT} noos)
|
11
examples/typec/power_delivery/Makefile
Normal file
11
examples/typec/power_delivery/Makefile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
include ../../make.mk
|
||||||
|
|
||||||
|
INC += \
|
||||||
|
src \
|
||||||
|
$(TOP)/hw \
|
||||||
|
|
||||||
|
# Example source
|
||||||
|
EXAMPLE_SOURCE += $(wildcard src/*.c)
|
||||||
|
SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
|
||||||
|
|
||||||
|
include ../../rules.mk
|
1
examples/typec/power_delivery/only.txt
Normal file
1
examples/typec/power_delivery/only.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
mcu:STM32G4
|
193
examples/typec/power_delivery/src/main.c
Normal file
193
examples/typec/power_delivery/src/main.c
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019 Ha Thach (tinyusb.org)
|
||||||
|
*
|
||||||
|
* 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:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* 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 THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "bsp/board.h"
|
||||||
|
#include "tusb.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO CONSTANT TYPEDEF PROTOTYPES
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
// Voltage and current for selecting PDO
|
||||||
|
// DANGEROUS: Please make sure your board can withstand the voltage and current
|
||||||
|
// defined here. Otherwise, you may damage your board, smoke can come out
|
||||||
|
#define VOLTAGE_MAX_MV 5000 // maximum voltage in mV
|
||||||
|
#define CURRENT_MAX_MA 500 // maximum current in mA
|
||||||
|
#define CURRENT_OPERATING_MA 100 // operating current in mA
|
||||||
|
|
||||||
|
/* Blink pattern
|
||||||
|
* - 250 ms : button is not pressed
|
||||||
|
* - 1000 ms : button is pressed (and hold)
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
BLINK_PRESSED = 250,
|
||||||
|
BLINK_UNPRESSED = 1000
|
||||||
|
};
|
||||||
|
|
||||||
|
static uint32_t blink_interval_ms = BLINK_UNPRESSED;
|
||||||
|
|
||||||
|
void led_blinking_task(void);
|
||||||
|
|
||||||
|
#define HELLO_STR "Hello from TinyUSB\r\n"
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
board_init();
|
||||||
|
board_led_write(true);
|
||||||
|
|
||||||
|
tuc_init(0, TUSB_TYPEC_PORT_SNK);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
led_blinking_task();
|
||||||
|
|
||||||
|
// tinyusb typec task
|
||||||
|
tuc_task();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3
|
||||||
|
void app_main(void)
|
||||||
|
{
|
||||||
|
main();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// TypeC PD callbacks
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
bool tuc_pd_data_received_cb(uint8_t rhport, pd_header_t const* header, uint8_t const* dobj, uint8_t const* p_end) {
|
||||||
|
switch (header->msg_type) {
|
||||||
|
case PD_DATA_SOURCE_CAP: {
|
||||||
|
printf("PD Source Capabilities\r\n");
|
||||||
|
// Examine source capability and select a suitable PDO (starting from 1 with safe5v)
|
||||||
|
uint8_t selected_pos = 1;
|
||||||
|
|
||||||
|
for(size_t i=0; i<header->n_data_obj; i++) {
|
||||||
|
TU_VERIFY(dobj < p_end);
|
||||||
|
uint32_t const pdo = tu_le32toh(tu_unaligned_read32(dobj));
|
||||||
|
|
||||||
|
switch ((pdo >> 30) & 0x03ul) {
|
||||||
|
case PD_PDO_TYPE_FIXED: {
|
||||||
|
pd_pdo_fixed_t const* fixed = (pd_pdo_fixed_t const*) &pdo;
|
||||||
|
uint32_t const voltage_mv = fixed->voltage_50mv*50;
|
||||||
|
uint32_t const current_ma = fixed->current_max_10ma*10;
|
||||||
|
printf("[Fixed] %lu mV %lu mA\r\n", voltage_mv, current_ma);
|
||||||
|
|
||||||
|
if (voltage_mv <= VOLTAGE_MAX_MV && current_ma >= CURRENT_MAX_MA) {
|
||||||
|
// Found a suitable PDO
|
||||||
|
selected_pos = i+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case PD_PDO_TYPE_BATTERY:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PD_PDO_TYPE_VARIABLE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PD_PDO_TYPE_APDO:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dobj += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
//------------- Response with selected PDO -------------//
|
||||||
|
// Be careful and make sure your board can withstand the selected PDO
|
||||||
|
// voltage other than safe5v e.g 12v or 20v
|
||||||
|
|
||||||
|
printf("Selected PDO %u\r\n", selected_pos);
|
||||||
|
|
||||||
|
// Send request with selected PDO position as response to Source Cap
|
||||||
|
pd_rdo_fixed_variable_t rdo = {
|
||||||
|
.current_extremum_10ma = 50, // max 500mA
|
||||||
|
.current_operate_10ma = 30, // 300mA
|
||||||
|
.reserved = 0,
|
||||||
|
.epr_mode_capable = 0,
|
||||||
|
.unchunked_ext_msg_support = 0,
|
||||||
|
.no_usb_suspend = 0,
|
||||||
|
.usb_comm_capable = 1,
|
||||||
|
.capability_mismatch = 0,
|
||||||
|
.give_back_flag = 0, // exteremum is max
|
||||||
|
.object_position = selected_pos,
|
||||||
|
};
|
||||||
|
tuc_msg_request(rhport, &rdo);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool tuc_pd_control_received_cb(uint8_t rhport, pd_header_t const* header) {
|
||||||
|
(void) rhport;
|
||||||
|
switch (header->msg_type) {
|
||||||
|
case PD_CTRL_ACCEPT:
|
||||||
|
printf("PD Request Accepted\r\n");
|
||||||
|
// preparing for power transition
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PD_CTRL_REJECT:
|
||||||
|
printf("PD Request Rejected\r\n");
|
||||||
|
// try to negotiate further power
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PD_CTRL_PS_READY:
|
||||||
|
printf("PD Power Ready\r\n");
|
||||||
|
// Source is ready to supply power
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// BLINKING TASK
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void led_blinking_task(void)
|
||||||
|
{
|
||||||
|
static uint32_t start_ms = 0;
|
||||||
|
static bool led_state = false;
|
||||||
|
|
||||||
|
// Blink every interval ms
|
||||||
|
if ( board_millis() - start_ms < blink_interval_ms) return; // not enough time
|
||||||
|
start_ms += blink_interval_ms;
|
||||||
|
|
||||||
|
board_led_write(led_state);
|
||||||
|
led_state = 1 - led_state; // toggle
|
||||||
|
}
|
83
examples/typec/power_delivery/src/tusb_config.h
Normal file
83
examples/typec/power_delivery/src/tusb_config.h
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019 Ha Thach (tinyusb.org)
|
||||||
|
*
|
||||||
|
* 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:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* 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 THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TUSB_CONFIG_H_
|
||||||
|
#define _TUSB_CONFIG_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// COMMON CONFIGURATION
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
// defined by compiler flags for flexibility
|
||||||
|
#ifndef CFG_TUSB_MCU
|
||||||
|
#error CFG_TUSB_MCU must be defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CFG_TUSB_OS
|
||||||
|
#define CFG_TUSB_OS OPT_OS_NONE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CFG_TUD_ENABLED 0
|
||||||
|
#define CFG_TUH_ENABLED 0
|
||||||
|
|
||||||
|
// Enable TYPEC stack
|
||||||
|
#define CFG_TUC_ENABLED 1
|
||||||
|
|
||||||
|
|
||||||
|
// special example that doesn't enable device or host stack
|
||||||
|
// This can cause some TinyUSB API missing, this define hack to allow us to fill those API
|
||||||
|
// to pass the compilation process
|
||||||
|
#if CFG_TUD_ENABLED == 0
|
||||||
|
#define tud_int_handler(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CFG_TUSB_DEBUG is defined by compiler in DEBUG build
|
||||||
|
// #define CFG_TUSB_DEBUG 0
|
||||||
|
|
||||||
|
/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
|
||||||
|
* Tinyusb use follows macros to declare transferring memory so that they can be put
|
||||||
|
* into those specific section.
|
||||||
|
* e.g
|
||||||
|
* - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") ))
|
||||||
|
* - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))
|
||||||
|
*/
|
||||||
|
#ifndef CFG_TUSB_MEM_SECTION
|
||||||
|
#define CFG_TUSB_MEM_SECTION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CFG_TUSB_MEM_ALIGN
|
||||||
|
#define CFG_TUSB_MEM_ALIGN __attribute__ ((aligned(4)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _TUSB_CONFIG_H_ */
|
@ -71,11 +71,12 @@ TU_ATTR_USED int sys_write (int fhdl, const void *buf, size_t count)
|
|||||||
{
|
{
|
||||||
(void) fhdl;
|
(void) fhdl;
|
||||||
uint8_t const* buf8 = (uint8_t const*) buf;
|
uint8_t const* buf8 = (uint8_t const*) buf;
|
||||||
for(size_t i=0; i<count; i++)
|
|
||||||
{
|
for(size_t i=0; i<count; i++) {
|
||||||
ITM_SendChar(buf8[i]);
|
ITM_SendChar(buf8[i]);
|
||||||
}
|
}
|
||||||
return count;
|
|
||||||
|
return (int) count;
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_USED int sys_read (int fhdl, char *buf, size_t count)
|
TU_ATTR_USED int sys_read (int fhdl, char *buf, size_t count)
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#elif TU_CHECK_MCU(OPT_MCU_LPC51UXX, OPT_MCU_LPC54XXX, OPT_MCU_LPC55XX, OPT_MCU_MCXN9)
|
#elif TU_CHECK_MCU(OPT_MCU_LPC51UXX, OPT_MCU_LPC54XXX, OPT_MCU_LPC55XX, OPT_MCU_MCXN9)
|
||||||
#include "fsl_device_registers.h"
|
#include "fsl_device_registers.h"
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_KINETIS_KL, OPT_MCU_KINETIS_K32)
|
#elif TU_CHECK_MCU(OPT_MCU_KINETIS_KL, OPT_MCU_KINETIS_K32L)
|
||||||
#include "fsl_device_registers.h"
|
#include "fsl_device_registers.h"
|
||||||
|
|
||||||
#elif CFG_TUSB_MCU == OPT_MCU_NRF5X
|
#elif CFG_TUSB_MCU == OPT_MCU_NRF5X
|
||||||
@ -116,7 +116,7 @@
|
|||||||
#elif CFG_TUSB_MCU == OPT_MCU_VALENTYUSB_EPTRI
|
#elif CFG_TUSB_MCU == OPT_MCU_VALENTYUSB_EPTRI
|
||||||
// no header needed
|
// no header needed
|
||||||
|
|
||||||
#elif CFG_TUSB_MCU == OPT_MCU_MIMXRT
|
#elif CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX
|
||||||
#include "fsl_device_registers.h"
|
#include "fsl_device_registers.h"
|
||||||
|
|
||||||
#elif CFG_TUSB_MCU == OPT_MCU_NUC120
|
#elif CFG_TUSB_MCU == OPT_MCU_NUC120
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
CFLAGS += -mcpu=arm1176jzf-s \
|
CPU_CORE = arm1176
|
||||||
-DBCM_VERSION=2835 \
|
CFLAGS += -DBCM_VERSION=2835 \
|
||||||
-DCFG_TUSB_MCU=OPT_MCU_BCM2835
|
-DCFG_TUSB_MCU=OPT_MCU_BCM2835
|
||||||
|
|
||||||
SUFFIX =
|
SUFFIX =
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
CFLAGS += -mcpu=cortex-a72 \
|
CPU_CORE = cortex-a72
|
||||||
-DBCM_VERSION=2711 \
|
CFLAGS += -DBCM_VERSION=2711 \
|
||||||
-DCFG_TUSB_MCU=OPT_MCU_BCM2711
|
-DCFG_TUSB_MCU=OPT_MCU_BCM2711
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
CFLAGS += -mcpu=cortex-a53 \
|
CPU_CORE = cortex-a53
|
||||||
-DBCM_VERSION=2837 \
|
CFLAGS += -DBCM_VERSION=2837 \
|
||||||
-DCFG_TUSB_MCU=OPT_MCU_BCM2837
|
-DCFG_TUSB_MCU=OPT_MCU_BCM2837
|
||||||
|
@ -17,4 +17,4 @@ Flash: `make BOARD=f1c100s flash` will write the image to SPI flash, and then re
|
|||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
* Add F1C100s to `#if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT` high speed MCU check in examples (maybe we should extract the logic?)
|
* Add F1C100s to `#if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX` high speed MCU check in examples (maybe we should extract the logic?)
|
||||||
|
@ -4,21 +4,75 @@ include(CMakePrintHelpers)
|
|||||||
|
|
||||||
# TOP is path to root directory
|
# TOP is path to root directory
|
||||||
set(TOP "${CMAKE_CURRENT_LIST_DIR}/../..")
|
set(TOP "${CMAKE_CURRENT_LIST_DIR}/../..")
|
||||||
|
get_filename_component(TOP ${TOP} ABSOLUTE)
|
||||||
|
|
||||||
# Default to gcc
|
# Default to gcc
|
||||||
if (NOT DEFINED TOOLCHAIN)
|
if (NOT DEFINED TOOLCHAIN)
|
||||||
set(TOOLCHAIN gcc)
|
set(TOOLCHAIN gcc)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT FAMILY)
|
# FAMILY not defined, try to detect it from BOARD
|
||||||
message(FATAL_ERROR "You must set a FAMILY variable for the build (e.g. rp2040, eps32s2, esp32s3). You can do this via -DFAMILY=xxx on the cmake command line")
|
if (NOT DEFINED FAMILY)
|
||||||
|
if (NOT DEFINED BOARD)
|
||||||
|
message(FATAL_ERROR "You must set a FAMILY variable for the build (e.g. rp2040, espressif).
|
||||||
|
You can do this via -DFAMILY=xxx on the cmake command line")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Find path contains BOARD
|
||||||
|
file(GLOB BOARD_PATH LIST_DIRECTORIES true
|
||||||
|
RELATIVE ${TOP}/hw/bsp
|
||||||
|
${TOP}/hw/bsp/*/boards/${BOARD}
|
||||||
|
)
|
||||||
|
if (NOT BOARD_PATH)
|
||||||
|
message(FATAL_ERROR "Could not detect FAMILY from BOARD=${BOARD}")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# replace / with ; so that we can get the first element as FAMILY
|
||||||
|
string(REPLACE "/" ";" BOARD_PATH ${BOARD_PATH})
|
||||||
|
list(GET BOARD_PATH 0 FAMILY)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${FAMILY}/family.cmake)
|
if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${FAMILY}/family.cmake)
|
||||||
message(FATAL_ERROR "Family '${FAMILY}' is not known/supported")
|
message(FATAL_ERROR "Family '${FAMILY}' is not known/supported")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# enable LTO if supported
|
||||||
|
include(CheckIPOSupported)
|
||||||
|
check_ipo_supported(RESULT IPO_SUPPORTED)
|
||||||
|
if (IPO_SUPPORTED)
|
||||||
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(WARNING_FLAGS_GNU
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Werror
|
||||||
|
-Wfatal-errors
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wstrict-prototypes
|
||||||
|
-Wstrict-overflow
|
||||||
|
-Werror-implicit-function-declaration
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wundef
|
||||||
|
-Wshadow
|
||||||
|
-Wwrite-strings
|
||||||
|
-Wsign-compare
|
||||||
|
-Wmissing-format-attribute
|
||||||
|
-Wunreachable-code
|
||||||
|
-Wcast-align
|
||||||
|
-Wcast-function-type
|
||||||
|
-Wcast-qual
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wuninitialized
|
||||||
|
-Wunused
|
||||||
|
-Wreturn-type
|
||||||
|
-Wredundant-decls
|
||||||
|
)
|
||||||
|
|
||||||
|
set(WARNINGS_FLAGS_IAR "")
|
||||||
|
|
||||||
|
|
||||||
|
# Filter example based on only.txt and skip.txt
|
||||||
function(family_filter RESULT DIR)
|
function(family_filter RESULT DIR)
|
||||||
get_filename_component(DIR ${DIR} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
get_filename_component(DIR ${DIR} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
@ -97,87 +151,136 @@ function(family_initialize_project PROJECT DIR)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------
|
#-------------------------------------------------------------
|
||||||
# Main target configure
|
# Common Target Configure
|
||||||
#------------------------------------
|
# Most families use these settings except rp2040 and espressif
|
||||||
|
#-------------------------------------------------------------
|
||||||
|
|
||||||
|
# Add RTOS to example
|
||||||
|
function(family_add_rtos TARGET RTOS)
|
||||||
|
if (RTOS STREQUAL "freertos")
|
||||||
|
# freertos config
|
||||||
|
if (NOT TARGET freertos_config)
|
||||||
|
add_library(freertos_config INTERFACE)
|
||||||
|
target_include_directories(freertos_config INTERFACE ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig)
|
||||||
|
# add board definition to freertos_config mostly for SystemCoreClock
|
||||||
|
target_link_libraries(freertos_config INTERFACE board_${BOARD})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# freertos kernel
|
||||||
|
if (NOT TARGET freertos_kernel)
|
||||||
|
add_subdirectory(${TOP}/lib/FreeRTOS-Kernel ${CMAKE_BINARY_DIR}/lib/freertos_kernel)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
target_link_libraries(${TARGET} PUBLIC freertos_kernel)
|
||||||
|
endif ()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# Add common configuration to example
|
# Add common configuration to example
|
||||||
function(family_configure_common TARGET)
|
function(family_configure_common TARGET RTOS)
|
||||||
|
family_add_rtos(${TARGET} ${RTOS})
|
||||||
|
|
||||||
# run size after build
|
# run size after build
|
||||||
add_custom_command(TARGET ${TARGET} POST_BUILD
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${TARGET}>
|
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${TARGET}>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Add warnings flags
|
||||||
|
target_compile_options(${TARGET} PUBLIC ${WARNING_FLAGS_${CMAKE_C_COMPILER_ID}})
|
||||||
|
|
||||||
|
# Generate linker map file
|
||||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
# Generate map file
|
target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
|
||||||
target_link_options(${TARGET} PUBLIC
|
|
||||||
# link map
|
|
||||||
"LINKER:-Map=$<TARGET_FILE:${TARGET}>.map"
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
# ETM Trace option
|
||||||
|
if (TRACE_ETM STREQUAL "1")
|
||||||
|
target_compile_definitions(${TARGET} PUBLIC TRACE_ETM)
|
||||||
|
endif ()
|
||||||
|
|
||||||
# configure an executable target to link to tinyusb in device mode, and add the board implementation
|
# LOGGER option
|
||||||
function(family_configure_device_example TARGET)
|
if (DEFINED LOGGER)
|
||||||
# default implementation is empty, the function should be redefined in the FAMILY/family.cmake
|
target_compile_definitions(${TARGET} PUBLIC LOGGER_${LOGGER})
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
# Add segger rtt to example
|
||||||
# configure an executable target to link to tinyusb in host mode, and add the board implementation
|
if(LOGGER STREQUAL "RTT" OR LOGGER STREQUAL "rtt")
|
||||||
function(family_configure_host_example TARGET)
|
if (NOT TARGET segger_rtt)
|
||||||
# default implementation is empty, the function should be redefined in the FAMILY/family.cmake
|
add_library(segger_rtt STATIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
|
||||||
|
target_include_directories(segger_rtt PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(${TARGET} PUBLIC segger_rtt)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# Add tinyusb to example
|
# Add tinyusb to example
|
||||||
function(family_add_tinyusb TARGET OPT_MCU)
|
function(family_add_tinyusb TARGET OPT_MCU RTOS)
|
||||||
# tinyusb target is built for each example since it depends on example's tusb_config.h
|
# tinyusb target is built for each example since it depends on example's tusb_config.h
|
||||||
set(TINYUSB_TARGET_PREFIX ${TARGET}-)
|
set(TINYUSB_TARGET_PREFIX ${TARGET}-)
|
||||||
add_library(${TARGET}-tinyusb_config INTERFACE)
|
add_library(${TARGET}-tinyusb_config INTERFACE)
|
||||||
|
|
||||||
target_include_directories(${TARGET}-tinyusb_config INTERFACE
|
# path to tusb_config.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
target_include_directories(${TARGET}-tinyusb_config INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
)
|
target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_MCU=${OPT_MCU})
|
||||||
target_compile_definitions(${TARGET}-tinyusb_config INTERFACE
|
|
||||||
CFG_TUSB_MCU=${OPT_MCU}
|
if (DEFINED LOG)
|
||||||
)
|
target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_DEBUG=${LOG})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (RTOS STREQUAL "freertos")
|
||||||
|
target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_OS=OPT_OS_FREERTOS)
|
||||||
|
endif ()
|
||||||
|
|
||||||
# tinyusb's CMakeList.txt
|
# tinyusb's CMakeList.txt
|
||||||
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
|
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
if (RTOS STREQUAL "freertos")
|
||||||
# Add freeRTOS support to example
|
# link tinyusb with freeRTOS kernel
|
||||||
function(family_add_freertos TARGET)
|
target_link_libraries(${TARGET}-tinyusb PUBLIC freertos_kernel)
|
||||||
# freeros config
|
|
||||||
if (NOT TARGET freertos_config)
|
|
||||||
add_library(freertos_config INTERFACE)
|
|
||||||
target_include_directories(freertos_config INTERFACE
|
|
||||||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# freertos kernel should be generic as freertos_config however, CMAKE complains with missing variable
|
|
||||||
# such as CMAKE_C_COMPILE_OBJECT
|
|
||||||
if (NOT TARGET freertos_kernel)
|
|
||||||
add_subdirectory(${TOP}/lib/FreeRTOS-Kernel ${CMAKE_BINARY_DIR}/lib/freertos_kernel)
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Add FreeRTOS option to tinyusb_config
|
|
||||||
target_compile_definitions(${TARGET}-tinyusb_config INTERFACE
|
|
||||||
CFG_TUSB_OS=OPT_OS_FREERTOS
|
|
||||||
)
|
|
||||||
# link tinyusb with freeRTOS kernel
|
|
||||||
target_link_libraries(${TARGET}-tinyusb PUBLIC
|
|
||||||
freertos_kernel
|
|
||||||
)
|
|
||||||
target_link_libraries(${TARGET} PUBLIC
|
|
||||||
freertos_kernel
|
|
||||||
)
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
# Add bin/hex output
|
||||||
|
function(family_add_bin_hex TARGET)
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${TARGET}> $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.bin
|
||||||
|
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${TARGET}> $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.hex
|
||||||
|
VERBATIM)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------
|
||||||
|
# Example Target Configure (Default rule)
|
||||||
|
# These function can be redefined in FAMILY/family.cmake
|
||||||
|
#----------------------------------
|
||||||
|
|
||||||
|
function(family_configure_example TARGET RTOS)
|
||||||
|
# empty function, should be redefined in FAMILY/family.cmake
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Configure device example with RTOS
|
||||||
|
function(family_configure_device_example TARGET RTOS)
|
||||||
|
family_configure_example(${TARGET} ${RTOS})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
# Configure host example with RTOS
|
||||||
|
function(family_configure_host_example TARGET RTOS)
|
||||||
|
family_configure_example(${TARGET} ${RTOS})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
# Configure host + device example with RTOS
|
||||||
|
function(family_configure_dual_usb_example TARGET RTOS)
|
||||||
|
family_configure_example(${TARGET} ${RTOS})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
#----------------------------------
|
||||||
|
# RPI specific: refactor later
|
||||||
|
#----------------------------------
|
||||||
function(family_add_default_example_warnings TARGET)
|
function(family_add_default_example_warnings TARGET)
|
||||||
target_compile_options(${TARGET} PUBLIC
|
target_compile_options(${TARGET} PUBLIC
|
||||||
-Wall
|
-Wall
|
||||||
@ -224,16 +327,6 @@ function(family_add_default_example_warnings TARGET)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# Add bin/hex output
|
|
||||||
function(family_add_bin_hex TARGET)
|
|
||||||
add_custom_command(TARGET ${TARGET} POST_BUILD
|
|
||||||
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${TARGET}> $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.bin
|
|
||||||
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${TARGET}> $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.hex
|
|
||||||
VERBATIM)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
# Flashing target
|
# Flashing target
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
@ -304,6 +397,10 @@ function(family_flash_nxplink TARGET)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------
|
||||||
|
# Family specific
|
||||||
|
#----------------------------------
|
||||||
|
|
||||||
# family specific: can override above functions
|
# family specific: can override above functions
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/${FAMILY}/family.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/${FAMILY}/family.cmake)
|
||||||
|
|
||||||
|
@ -44,15 +44,14 @@
|
|||||||
|
|
||||||
// skip if included from IAR assembler
|
// skip if included from IAR assembler
|
||||||
#ifndef __IASMARM__
|
#ifndef __IASMARM__
|
||||||
// FIXME cause redundant-decls warnings
|
#include "fsl_device_registers.h"
|
||||||
extern uint32_t SystemCoreClock;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Cortex M23/M33 port configuration. */
|
/* Cortex M23/M33 port configuration. */
|
||||||
#define configENABLE_MPU 0
|
#define configENABLE_MPU 0
|
||||||
#define configENABLE_FPU 1
|
#define configENABLE_FPU 1
|
||||||
#define configENABLE_TRUSTZONE 0
|
#define configENABLE_TRUSTZONE 0
|
||||||
#define configMINIMAL_SECURE_STACK_SIZE (1024)
|
#define configMINIMAL_SECURE_STACK_SIZE (1024)
|
||||||
|
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
|
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
|
||||||
|
@ -26,12 +26,23 @@
|
|||||||
|
|
||||||
#include "bsp/board.h"
|
#include "bsp/board.h"
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|
||||||
|
// Suppress warning caused by mcu driver
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "fsl_device_registers.h"
|
#include "fsl_device_registers.h"
|
||||||
#include "fsl_gpio.h"
|
#include "fsl_gpio.h"
|
||||||
#include "fsl_iomuxc.h"
|
#include "fsl_iomuxc.h"
|
||||||
#include "fsl_clock.h"
|
#include "fsl_clock.h"
|
||||||
#include "fsl_lpuart.h"
|
#include "fsl_lpuart.h"
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "clock_config.h"
|
#include "clock_config.h"
|
||||||
|
|
||||||
#if defined(BOARD_TUD_RHPORT) && CFG_TUD_ENABLED
|
#if defined(BOARD_TUD_RHPORT) && CFG_TUD_ENABLED
|
||||||
|
@ -14,14 +14,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
|
|||||||
set(CMAKE_SYSTEM_PROCESSOR cortex-m7 CACHE INTERNAL "System Processor")
|
set(CMAKE_SYSTEM_PROCESSOR cortex-m7 CACHE INTERNAL "System Processor")
|
||||||
set(CMAKE_TOOLCHAIN_FILE ${TOP}/tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
|
set(CMAKE_TOOLCHAIN_FILE ${TOP}/tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
|
||||||
|
|
||||||
set(FAMILY_MCUS MIMXRT CACHE INTERNAL "")
|
set(FAMILY_MCUS MIMXRT1XXX CACHE INTERNAL "")
|
||||||
|
|
||||||
# enable LTO if supported
|
|
||||||
include(CheckIPOSupported)
|
|
||||||
check_ipo_supported(RESULT IPO_SUPPORTED)
|
|
||||||
if (IPO_SUPPORTED)
|
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------
|
#------------------------------------
|
||||||
@ -94,8 +87,8 @@ endfunction()
|
|||||||
#------------------------------------
|
#------------------------------------
|
||||||
# Functions
|
# Functions
|
||||||
#------------------------------------
|
#------------------------------------
|
||||||
function(family_configure_example TARGET)
|
function(family_configure_example TARGET RTOS)
|
||||||
family_configure_common(${TARGET})
|
family_configure_common(${TARGET} ${RTOS})
|
||||||
|
|
||||||
# Board target
|
# Board target
|
||||||
add_board_target(board_${BOARD})
|
add_board_target(board_${BOARD})
|
||||||
@ -103,10 +96,6 @@ function(family_configure_example TARGET)
|
|||||||
#---------- Port Specific ----------
|
#---------- Port Specific ----------
|
||||||
# These files are built for each example since it depends on example's tusb_config.h
|
# These files are built for each example since it depends on example's tusb_config.h
|
||||||
target_sources(${TARGET} PUBLIC
|
target_sources(${TARGET} PUBLIC
|
||||||
# TinyUSB Port
|
|
||||||
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
|
|
||||||
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
|
|
||||||
${TOP}/src/portable/ehci/ehci.c
|
|
||||||
# BSP
|
# BSP
|
||||||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
|
||||||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
|
||||||
@ -118,8 +107,14 @@ function(family_configure_example TARGET)
|
|||||||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add TinyUSB
|
# Add TinyUSB target and port source
|
||||||
family_add_tinyusb(${TARGET} OPT_MCU_MIMXRT)
|
family_add_tinyusb(${TARGET} OPT_MCU_MIMXRT1XXX ${RTOS})
|
||||||
|
target_sources(${TARGET}-tinyusb PUBLIC
|
||||||
|
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
|
||||||
|
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
|
||||||
|
${TOP}/src/portable/ehci/ehci.c
|
||||||
|
)
|
||||||
|
target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
|
||||||
|
|
||||||
# Link dependencies
|
# Link dependencies
|
||||||
target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
|
target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
|
||||||
@ -128,16 +123,3 @@ function(family_configure_example TARGET)
|
|||||||
family_flash_jlink(${TARGET})
|
family_flash_jlink(${TARGET})
|
||||||
#family_flash_nxplink(${TARGET})
|
#family_flash_nxplink(${TARGET})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
function(family_configure_device_example TARGET)
|
|
||||||
family_configure_example(${TARGET})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(family_configure_host_example TARGET)
|
|
||||||
family_configure_example(${TARGET})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(family_configure_dual_usb_example TARGET)
|
|
||||||
family_configure_example(${TARGET})
|
|
||||||
endfunction()
|
|
||||||
|
@ -4,20 +4,19 @@ DEPS_SUBMODULES += $(SDK_DIR) lib/CMSIS_5
|
|||||||
|
|
||||||
include $(TOP)/$(BOARD_PATH)/board.mk
|
include $(TOP)/$(BOARD_PATH)/board.mk
|
||||||
|
|
||||||
|
CPU_CORE ?= cortex-m7
|
||||||
|
|
||||||
CFLAGS += \
|
CFLAGS += \
|
||||||
-mthumb \
|
-D__ARMVFP__=0 \
|
||||||
-mabi=aapcs \
|
-D__ARMFPV5__=0 \
|
||||||
-mcpu=cortex-m7 \
|
|
||||||
-mfloat-abi=hard \
|
|
||||||
-mfpu=fpv5-d16 \
|
|
||||||
-D__ARMVFP__=0 -D__ARMFPV5__=0\
|
|
||||||
-DXIP_EXTERNAL_FLASH=1 \
|
-DXIP_EXTERNAL_FLASH=1 \
|
||||||
-DXIP_BOOT_HEADER_ENABLE=1 \
|
-DXIP_BOOT_HEADER_ENABLE=1 \
|
||||||
-DCFG_TUSB_MCU=OPT_MCU_MIMXRT
|
-DCFG_TUSB_MCU=OPT_MCU_MIMXRT1XXX
|
||||||
|
|
||||||
ifdef BOARD_TUD_RHPORT
|
ifdef BOARD_TUD_RHPORT
|
||||||
CFLAGS += -DBOARD_TUD_RHPORT=$(BOARD_TUD_RHPORT)
|
CFLAGS += -DBOARD_TUD_RHPORT=$(BOARD_TUD_RHPORT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef BOARD_TUH_RHPORT
|
ifdef BOARD_TUH_RHPORT
|
||||||
CFLAGS += -DBOARD_TUH_RHPORT=$(BOARD_TUH_RHPORT)
|
CFLAGS += -DBOARD_TUH_RHPORT=$(BOARD_TUH_RHPORT)
|
||||||
endif
|
endif
|
||||||
@ -58,9 +57,6 @@ INC += \
|
|||||||
|
|
||||||
SRC_S += $(MCU_DIR)/gcc/startup_$(MCU_VARIANT).S
|
SRC_S += $(MCU_DIR)/gcc/startup_$(MCU_VARIANT).S
|
||||||
|
|
||||||
# For freeRTOS port source
|
|
||||||
FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM7/r0p1
|
|
||||||
|
|
||||||
# UF2 generation, iMXRT need to strip to text only before conversion
|
# UF2 generation, iMXRT need to strip to text only before conversion
|
||||||
APPLICATION_ADDR = 0x6000C000
|
APPLICATION_ADDR = 0x6000C000
|
||||||
$(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).elf
|
$(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).elf
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
MCU = K32L2A41A
|
MCU = K32L2A41A
|
||||||
|
|
||||||
CFLAGS += \
|
CFLAGS += -DCPU_K32L2A41VLH1A
|
||||||
-mcpu=cortex-m0plus \
|
|
||||||
-DCPU_K32L2A41VLH1A \
|
|
||||||
|
|
||||||
# mcu driver cause following warnings
|
# mcu driver cause following warnings
|
||||||
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls -Wno-error=cast-qual
|
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls -Wno-error=cast-qual
|
||||||
@ -13,9 +11,6 @@ LD_FILE = $(MCU_DIR)/gcc/K32L2A41xxxxA_flash.ld
|
|||||||
SRC_C += \
|
SRC_C += \
|
||||||
$(MCU_DIR)/project_template/clock_config.c \
|
$(MCU_DIR)/project_template/clock_config.c \
|
||||||
|
|
||||||
# For freeRTOS port source
|
|
||||||
FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM0
|
|
||||||
|
|
||||||
# For flash-jlink target
|
# For flash-jlink target
|
||||||
JLINK_DEVICE = K32L2A41xxxxA
|
JLINK_DEVICE = K32L2A41xxxxA
|
||||||
|
|
@ -1,8 +1,6 @@
|
|||||||
MCU = K32L2B31A
|
MCU = K32L2B31A
|
||||||
|
|
||||||
CFLAGS += \
|
CFLAGS += -DCPU_K32L2B31VLH0A
|
||||||
-mcpu=cortex-m0plus \
|
|
||||||
-DCPU_K32L2B31VLH0A \
|
|
||||||
|
|
||||||
# mcu driver cause following warnings
|
# mcu driver cause following warnings
|
||||||
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
|
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
|
||||||
@ -13,9 +11,6 @@ LD_FILE = $(MCU_DIR)/gcc/K32L2B31xxxxA_flash.ld
|
|||||||
SRC_C += \
|
SRC_C += \
|
||||||
$(MCU_DIR)/project_template/clock_config.c \
|
$(MCU_DIR)/project_template/clock_config.c \
|
||||||
|
|
||||||
# For freeRTOS port source
|
|
||||||
FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM0
|
|
||||||
|
|
||||||
# For flash-jlink target
|
# For flash-jlink target
|
||||||
JLINK_DEVICE = K32L2B31xxxxA
|
JLINK_DEVICE = K32L2B31xxxxA
|
||||||
|
|
@ -1,11 +1,6 @@
|
|||||||
MCU = K32L2B31A
|
MCU = K32L2B31A
|
||||||
|
|
||||||
# This board uses TinyUF2 for updates
|
CFLAGS += -DCPU_K32L2B31VLH0A
|
||||||
UF2_FAMILY_ID = 0x7f83e793
|
|
||||||
|
|
||||||
CFLAGS += \
|
|
||||||
-mcpu=cortex-m0plus \
|
|
||||||
-DCPU_K32L2B31VLH0A \
|
|
||||||
|
|
||||||
# mcu driver cause following warnings
|
# mcu driver cause following warnings
|
||||||
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
|
CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
|
||||||
@ -13,9 +8,6 @@ CFLAGS += -Wno-error=unused-parameter -Wno-error=redundant-decls
|
|||||||
# All source paths should be relative to the top level.
|
# All source paths should be relative to the top level.
|
||||||
LD_FILE = $(BOARD_PATH)/K32L2B31xxxxA_flash.ld
|
LD_FILE = $(BOARD_PATH)/K32L2B31xxxxA_flash.ld
|
||||||
|
|
||||||
# For freeRTOS port source
|
|
||||||
FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM0
|
|
||||||
|
|
||||||
# For flash-jlink target
|
# For flash-jlink target
|
||||||
JLINK_DEVICE = K32L2B31xxxxA
|
JLINK_DEVICE = K32L2B31xxxxA
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
|
UF2_FAMILY_ID = 0x7f83e793
|
||||||
SDK_DIR = hw/mcu/nxp/mcux-sdk
|
SDK_DIR = hw/mcu/nxp/mcux-sdk
|
||||||
DEPS_SUBMODULES += $(SDK_DIR) lib/CMSIS_5
|
DEPS_SUBMODULES += $(SDK_DIR) lib/CMSIS_5
|
||||||
|
|
||||||
MCU_DIR = $(SDK_DIR)/devices/$(MCU)
|
MCU_DIR = $(SDK_DIR)/devices/$(MCU)
|
||||||
|
|
||||||
include $(TOP)/$(BOARD_PATH)/board.mk
|
include $(TOP)/$(BOARD_PATH)/board.mk
|
||||||
|
CPU_CORE ?= cortex-m0plus
|
||||||
|
|
||||||
CFLAGS += \
|
CFLAGS += \
|
||||||
-mthumb \
|
-DCFG_TUSB_MCU=OPT_MCU_KINETIS_K32L
|
||||||
-mabi=aapcs \
|
|
||||||
-DCFG_TUSB_MCU=OPT_MCU_KINETIS_K32
|
|
||||||
|
|
||||||
SRC_C += \
|
SRC_C += \
|
||||||
src/portable/nxp/khci/dcd_khci.c \
|
src/portable/nxp/khci/dcd_khci.c \
|
165
hw/bsp/kinetis_kl/FreeRTOSConfig/FreeRTOSConfig.h
Normal file
165
hw/bsp/kinetis_kl/FreeRTOSConfig/FreeRTOSConfig.h
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* FreeRTOS Kernel V10.0.0
|
||||||
|
* Copyright (C) 2017 Amazon.com, Inc. or its affiliates. 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:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software. If you wish to use our Amazon
|
||||||
|
* FreeRTOS name, please do so in a fair use way that does not cause confusion.
|
||||||
|
*
|
||||||
|
* 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 THE AUTHORS OR
|
||||||
|
* COPYRIGHT HOLDERS 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.FreeRTOS.org
|
||||||
|
* http://aws.amazon.com/freertos
|
||||||
|
*
|
||||||
|
* 1 tab == 4 spaces!
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
#define FREERTOS_CONFIG_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.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
// skip if included from IAR assembler
|
||||||
|
#ifndef __IASMARM__
|
||||||
|
#include "fsl_device_registers.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Cortex M23/M33 port configuration. */
|
||||||
|
#define configENABLE_MPU 0
|
||||||
|
#define configENABLE_FPU 1
|
||||||
|
#define configENABLE_TRUSTZONE 0
|
||||||
|
#define configMINIMAL_SECURE_STACK_SIZE (1024)
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
|
||||||
|
#define configCPU_CLOCK_HZ SystemCoreClock
|
||||||
|
#define configTICK_RATE_HZ ( 1000 )
|
||||||
|
#define configMAX_PRIORITIES ( 5 )
|
||||||
|
#define configMINIMAL_STACK_SIZE ( 128 )
|
||||||
|
#define configTOTAL_HEAP_SIZE ( configSUPPORT_DYNAMIC_ALLOCATION*4*1024 )
|
||||||
|
#define configMAX_TASK_NAME_LEN 16
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configUSE_COUNTING_SEMAPHORES 1
|
||||||
|
#define configQUEUE_REGISTRY_SIZE 2
|
||||||
|
#define configUSE_QUEUE_SETS 0
|
||||||
|
#define configUSE_TIME_SLICING 0
|
||||||
|
#define configUSE_NEWLIB_REENTRANT 0
|
||||||
|
#define configENABLE_BACKWARD_COMPATIBILITY 1
|
||||||
|
#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0
|
||||||
|
|
||||||
|
#define configSUPPORT_STATIC_ALLOCATION 0
|
||||||
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
|
|
||||||
|
/* Hook function related definitions. */
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 0
|
||||||
|
#define configUSE_MALLOC_FAILED_HOOK 0 // cause nested extern warning
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||||
|
|
||||||
|
/* Run time and task stats gathering related definitions. */
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
#define configRECORD_STACK_HIGH_ADDRESS 1
|
||||||
|
#define configUSE_TRACE_FACILITY 1 // legacy trace
|
||||||
|
#define configUSE_STATS_FORMATTING_FUNCTIONS 0
|
||||||
|
|
||||||
|
/* Co-routine definitions. */
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES 2
|
||||||
|
|
||||||
|
/* Software timer related definitions. */
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES-2)
|
||||||
|
#define configTIMER_QUEUE_LENGTH 32
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE
|
||||||
|
|
||||||
|
/* Optional functions - most linkers will remove unused functions anyway. */
|
||||||
|
#define INCLUDE_vTaskPrioritySet 0
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 0
|
||||||
|
#define INCLUDE_vTaskDelete 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1 // required for queue, semaphore, mutex to be blocked indefinitely with portMAX_DELAY
|
||||||
|
#define INCLUDE_xResumeFromISR 0
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_xTaskGetSchedulerState 0
|
||||||
|
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 0
|
||||||
|
#define INCLUDE_xTaskGetIdleTaskHandle 0
|
||||||
|
#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
|
||||||
|
#define INCLUDE_pcTaskGetTaskName 0
|
||||||
|
#define INCLUDE_eTaskGetState 0
|
||||||
|
#define INCLUDE_xEventGroupSetBitFromISR 0
|
||||||
|
#define INCLUDE_xTimerPendFunctionCall 0
|
||||||
|
|
||||||
|
/* Define to trap errors during development. */
|
||||||
|
// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7
|
||||||
|
#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
|
||||||
|
#define configASSERT(_exp) \
|
||||||
|
do {\
|
||||||
|
if ( !(_exp) ) { \
|
||||||
|
volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */ \
|
||||||
|
if ( (*ARM_CM_DHCSR) & 1UL ) { /* Only halt mcu if debugger is attached */ \
|
||||||
|
taskDISABLE_INTERRUPTS(); \
|
||||||
|
__asm("BKPT #0\n"); \
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
} while(0)
|
||||||
|
#else
|
||||||
|
#define configASSERT( x )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* FreeRTOS hooks to NVIC vectors */
|
||||||
|
#define xPortPendSVHandler PendSV_Handler
|
||||||
|
#define xPortSysTickHandler SysTick_Handler
|
||||||
|
#define vPortSVCHandler SVC_Handler
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Interrupt nesting behavior configuration.
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
// For Cortex-M specific: __NVIC_PRIO_BITS is defined in mcu header
|
||||||
|
#define configPRIO_BITS 2
|
||||||
|
|
||||||
|
/* The lowest interrupt priority that can be used in a call to a "set priority" function. */
|
||||||
|
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY ((1<<configPRIO_BITS) - 1)
|
||||||
|
|
||||||
|
/* The highest interrupt priority that can be used by any interrupt service
|
||||||
|
routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
|
||||||
|
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
|
||||||
|
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
|
||||||
|
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2
|
||||||
|
|
||||||
|
/* Interrupt priorities used by the kernel port layer itself. These are generic
|
||||||
|
to all Cortex-M ports, and do not rely on any particular library functions. */
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
|
||||||
|
|
||||||
|
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
|
||||||
|
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
|
||||||
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
|
||||||
|
|
||||||
|
#endif /* __FREERTOS_CONFIG__H */
|
18
hw/bsp/kinetis_kl/boards/frdm_kl25z/board.cmake
Normal file
18
hw/bsp/kinetis_kl/boards/frdm_kl25z/board.cmake
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
set(MCU_VARIANT MKL25Z4)
|
||||||
|
|
||||||
|
set(JLINK_DEVICE MKL25Z128xxx4)
|
||||||
|
set(PYOCD_TARGET mkl25zl128)
|
||||||
|
|
||||||
|
set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/../../gcc/MKL25Z128xxx4_flash.ld)
|
||||||
|
set(STARTUP_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/../../gcc/startup_MKL25Z4.S)
|
||||||
|
|
||||||
|
function(update_board TARGET)
|
||||||
|
target_sources(${TARGET} PUBLIC
|
||||||
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/clock_config.c
|
||||||
|
)
|
||||||
|
target_compile_definitions(${TARGET} PUBLIC
|
||||||
|
CPU_MKL25Z128VLK4
|
||||||
|
CFG_EXAMPLE_MSC_READONLY
|
||||||
|
CFG_EXAMPLE_VIDEO_READONLY
|
||||||
|
)
|
||||||
|
endfunction()
|
58
hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h
Normal file
58
hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Ha Thach (tinyusb.org)
|
||||||
|
*
|
||||||
|
* 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:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* 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 THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOARD_H
|
||||||
|
#define BOARD_H
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// LED
|
||||||
|
#define LED_PINMUX IOMUXC_GPIO_AD_B0_09_GPIO1_IO09
|
||||||
|
#define LED_PORT GPIOB
|
||||||
|
#define LED_PIN_CLOCK kCLOCK_PortB
|
||||||
|
#define LED_PIN_PORT PORTB
|
||||||
|
#define LED_PIN 19U
|
||||||
|
#define LED_PIN_FUNCTION kPORT_MuxAsGpio
|
||||||
|
#define LED_STATE_ON 0
|
||||||
|
|
||||||
|
// Button
|
||||||
|
#define BUTTON_PORT GPIOC
|
||||||
|
#define BUTTON_PIN_CLOCK kCLOCK_PortC
|
||||||
|
#define BUTTON_PIN_PORT PORTC
|
||||||
|
#define BUTTON_PIN 9U
|
||||||
|
#define BUTTON_PIN_FUNCTION kPORT_MuxAsGpio
|
||||||
|
#define BUTTON_STATE_ACTIVE 0
|
||||||
|
|
||||||
|
// UART
|
||||||
|
#define UART_PORT UART0
|
||||||
|
#define UART_PIN_CLOCK kCLOCK_PortA
|
||||||
|
#define UART_PIN_PORT PORTA
|
||||||
|
#define UART_PIN_RX 1u
|
||||||
|
#define UART_PIN_TX 2u
|
||||||
|
#define UART_PIN_FUNCTION kPORT_MuxAlt2
|
||||||
|
#define SOPT5_UART0RXSRC_UART_RX 0x00u /*!< UART0 receive data source select: UART0_RX pin */
|
||||||
|
#define SOPT5_UART0TXSRC_UART_TX 0x00u /*!< UART0 transmit data source select: UART0_TX pin */
|
||||||
|
|
||||||
|
#endif
|
@ -8,8 +8,13 @@ CFLAGS += \
|
|||||||
# mcu driver cause following warnings
|
# mcu driver cause following warnings
|
||||||
CFLAGS += -Wno-error=unused-parameter -Wno-error=format -Wno-error=redundant-decls
|
CFLAGS += -Wno-error=unused-parameter -Wno-error=format -Wno-error=redundant-decls
|
||||||
|
|
||||||
|
SRC_C += \
|
||||||
|
$(BOARD_PATH)/clock_config.c \
|
||||||
|
|
||||||
# All source paths should be relative to the top level.
|
# All source paths should be relative to the top level.
|
||||||
LD_FILE = $(MCU_DIR)/gcc/MKL25Z128xxx4_flash.ld
|
LD_FILE = $(FAMILY_PATH)/gcc/MKL25Z128xxx4_flash.ld
|
||||||
|
|
||||||
|
SRC_S += $(FAMILY_PATH)/gcc/startup_$(MCU).S
|
||||||
|
|
||||||
# For flash-jlink target
|
# For flash-jlink target
|
||||||
JLINK_DEVICE = MKL25Z128xxx4
|
JLINK_DEVICE = MKL25Z128xxx4
|
||||||
|
307
hw/bsp/kinetis_kl/boards/frdm_kl25z/clock_config.c
Normal file
307
hw/bsp/kinetis_kl/boards/frdm_kl25z/clock_config.c
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||||
|
* Copyright 2016-2017 NXP
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
* other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* o Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How to setup clock using clock driver functions:
|
||||||
|
*
|
||||||
|
* 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
|
||||||
|
* and flash clock are in allowed range during clock mode switch.
|
||||||
|
*
|
||||||
|
* 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
|
||||||
|
*
|
||||||
|
* 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
|
||||||
|
* internal reference clock(MCGIRCLK). Follow the steps to setup:
|
||||||
|
*
|
||||||
|
* 1). Call CLOCK_BootToXxxMode to set MCG to target mode.
|
||||||
|
*
|
||||||
|
* 2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
|
||||||
|
* correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
|
||||||
|
* explicitly to setup MCGIRCLK.
|
||||||
|
*
|
||||||
|
* 3). Don't need to configure FLL explicitly, because if target mode is FLL
|
||||||
|
* mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
|
||||||
|
* if the target mode is not FLL mode, the FLL is disabled.
|
||||||
|
*
|
||||||
|
* 4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
|
||||||
|
* setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
|
||||||
|
* be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
|
||||||
|
*
|
||||||
|
* 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* TEXT BELOW IS USED AS SETTING FOR THE CLOCKS TOOL *****************************
|
||||||
|
!!ClocksProfile
|
||||||
|
product: Clocks v1.0
|
||||||
|
processor: MKL25Z128xxx4
|
||||||
|
package_id: MKL25Z128VLK4
|
||||||
|
mcu_data: ksdk2_0
|
||||||
|
processor_version: 1.1.0
|
||||||
|
board: FRDM-KL25Z
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR THE CLOCKS TOOL **/
|
||||||
|
|
||||||
|
#include "fsl_smc.h"
|
||||||
|
#include "clock_config.h"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
#define MCG_PLL_DISABLE 0U /*!< MCGPLLCLK disabled */
|
||||||
|
#define OSC_CAP0P 0U /*!< Oscillator 0pF capacitor load */
|
||||||
|
#define OSC_ER_CLK_DISABLE 0U /*!< Disable external reference clock */
|
||||||
|
#define SIM_OSC32KSEL_LPO_CLK 3U /*!< OSC32KSEL select: LPO clock */
|
||||||
|
#define SIM_PLLFLLSEL_MCGFLLCLK_CLK 0U /*!< PLLFLL select: MCGFLLCLK clock */
|
||||||
|
#define SIM_PLLFLLSEL_MCGPLLCLK_CLK 1U /*!< PLLFLL select: MCGPLLCLK clock */
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables
|
||||||
|
******************************************************************************/
|
||||||
|
/* System clock frequency. */
|
||||||
|
//extern uint32_t SystemCoreClock;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
************************ BOARD_InitBootClocks function ************************
|
||||||
|
******************************************************************************/
|
||||||
|
void BOARD_InitBootClocks(void)
|
||||||
|
{
|
||||||
|
BOARD_BootClockRUN();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*FUNCTION**********************************************************************
|
||||||
|
*
|
||||||
|
* Function Name : CLOCK_CONFIG_SetFllExtRefDiv
|
||||||
|
* Description : Configure FLL external reference divider (FRDIV).
|
||||||
|
* Param frdiv : The value to set FRDIV.
|
||||||
|
*
|
||||||
|
*END**************************************************************************/
|
||||||
|
static void CLOCK_CONFIG_SetFllExtRefDiv(uint8_t frdiv)
|
||||||
|
{
|
||||||
|
MCG->C1 = ((MCG->C1 & ~MCG_C1_FRDIV_MASK) | MCG_C1_FRDIV(frdiv));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************** Configuration BOARD_BootClockRUN ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/* TEXT BELOW IS USED AS SETTING FOR THE CLOCKS TOOL *****************************
|
||||||
|
!!Configuration
|
||||||
|
name: BOARD_BootClockRUN
|
||||||
|
outputs:
|
||||||
|
- {id: Bus_clock.outFreq, value: 24 MHz}
|
||||||
|
- {id: Core_clock.outFreq, value: 48 MHz, locked: true, accuracy: '0.001'}
|
||||||
|
- {id: ERCLK32K.outFreq, value: 1 kHz}
|
||||||
|
- {id: Flash_clock.outFreq, value: 24 MHz}
|
||||||
|
- {id: LPO_clock.outFreq, value: 1 kHz}
|
||||||
|
- {id: MCGIRCLK.outFreq, value: 32.768 kHz}
|
||||||
|
- {id: OSCERCLK.outFreq, value: 8 MHz}
|
||||||
|
- {id: PLLFLLCLK.outFreq, value: 48 MHz}
|
||||||
|
- {id: System_clock.outFreq, value: 48 MHz}
|
||||||
|
settings:
|
||||||
|
- {id: MCGMode, value: PEE}
|
||||||
|
- {id: MCG.FCRDIV.scale, value: '1', locked: true}
|
||||||
|
- {id: MCG.FRDIV.scale, value: '32'}
|
||||||
|
- {id: MCG.IREFS.sel, value: MCG.FRDIV}
|
||||||
|
- {id: MCG.PLLS.sel, value: MCG.PLL}
|
||||||
|
- {id: MCG.PRDIV.scale, value: '2', locked: true}
|
||||||
|
- {id: MCG.VDIV.scale, value: '24', locked: true}
|
||||||
|
- {id: MCG_C1_IRCLKEN_CFG, value: Enabled}
|
||||||
|
- {id: MCG_C2_OSC_MODE_CFG, value: ModeOscLowPower}
|
||||||
|
- {id: MCG_C2_RANGE0_CFG, value: High}
|
||||||
|
- {id: MCG_C2_RANGE0_FRDIV_CFG, value: High}
|
||||||
|
- {id: OSC0_CR_ERCLKEN_CFG, value: Enabled}
|
||||||
|
- {id: OSC_CR_ERCLKEN_CFG, value: Enabled}
|
||||||
|
- {id: SIM.CLKOUTSEL.sel, value: SIM.OUTDIV4}
|
||||||
|
- {id: SIM.OSC32KSEL.sel, value: PMC.LPOCLK}
|
||||||
|
- {id: SIM.OUTDIV1.scale, value: '2'}
|
||||||
|
- {id: SIM.PLLFLLSEL.sel, value: SIM.MCGPLLCLK_DIV2}
|
||||||
|
- {id: SIM.TPMSRCSEL.sel, value: SIM.PLLFLLSEL}
|
||||||
|
- {id: SIM.UART0SRCSEL.sel, value: SIM.PLLFLLSEL}
|
||||||
|
- {id: SIM.USBSRCSEL.sel, value: SIM.PLLFLLSEL}
|
||||||
|
sources:
|
||||||
|
- {id: OSC.OSC.outFreq, value: 8 MHz, enabled: true}
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR THE CLOCKS TOOL **/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
const mcg_config_t mcgConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.mcgMode = kMCG_ModePEE, /* PEE - PLL Engaged External */
|
||||||
|
.irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enabled, MCGIRCLK disabled in STOP mode */
|
||||||
|
.ircs = kMCG_IrcSlow, /* Slow internal reference clock selected */
|
||||||
|
.fcrdiv = 0x0U, /* Fast IRC divider: divided by 1 */
|
||||||
|
.frdiv = 0x0U, /* FLL reference clock divider: divided by 32 */
|
||||||
|
.drs = kMCG_DrsLow, /* Low frequency range */
|
||||||
|
.dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25% */
|
||||||
|
.pll0Config =
|
||||||
|
{
|
||||||
|
.enableMode = MCG_PLL_DISABLE, /* MCGPLLCLK disabled */
|
||||||
|
.prdiv = 0x1U, /* PLL Reference divider: divided by 2 */
|
||||||
|
.vdiv = 0x0U, /* VCO divider: multiplied by 24 */
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const sim_clock_config_t simConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.pllFllSel = SIM_PLLFLLSEL_MCGPLLCLK_CLK, /* PLLFLL select: MCGPLLCLK clock */
|
||||||
|
.er32kSrc = SIM_OSC32KSEL_LPO_CLK, /* OSC32KSEL select: LPO clock */
|
||||||
|
.clkdiv1 = 0x10010000U, /* SIM_CLKDIV1 - OUTDIV1: /2, OUTDIV4: /2 */
|
||||||
|
};
|
||||||
|
const osc_config_t oscConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.freq = 8000000U, /* Oscillator frequency: 8000000Hz */
|
||||||
|
.capLoad = (OSC_CAP0P), /* Oscillator capacity load: 0pF */
|
||||||
|
.workMode = kOSC_ModeOscLowPower, /* Oscillator low power */
|
||||||
|
.oscerConfig =
|
||||||
|
{
|
||||||
|
.enableMode = kOSC_ErClkEnable, /* Enable external reference clock, disable external reference clock in STOP mode */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
void BOARD_BootClockRUN(void)
|
||||||
|
{
|
||||||
|
/* Set the system clock dividers in SIM to safe value. */
|
||||||
|
CLOCK_SetSimSafeDivs();
|
||||||
|
/* Initializes OSC0 according to board configuration. */
|
||||||
|
CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN);
|
||||||
|
CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq);
|
||||||
|
/* Configure FLL external reference divider (FRDIV). */
|
||||||
|
CLOCK_CONFIG_SetFllExtRefDiv(mcgConfig_BOARD_BootClockRUN.frdiv);
|
||||||
|
/* Set MCG to PEE mode. */
|
||||||
|
CLOCK_BootToPeeMode(kMCG_OscselOsc,
|
||||||
|
kMCG_PllClkSelPll0,
|
||||||
|
&mcgConfig_BOARD_BootClockRUN.pll0Config);
|
||||||
|
/* Configure the Internal Reference clock (MCGIRCLK). */
|
||||||
|
CLOCK_SetInternalRefClkConfig(mcgConfig_BOARD_BootClockRUN.irclkEnableMode,
|
||||||
|
mcgConfig_BOARD_BootClockRUN.ircs,
|
||||||
|
mcgConfig_BOARD_BootClockRUN.fcrdiv);
|
||||||
|
/* Set the clock configuration in SIM module. */
|
||||||
|
CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
|
||||||
|
/* Set SystemCoreClock variable. */
|
||||||
|
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************* Configuration BOARD_BootClockVLPR ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/* TEXT BELOW IS USED AS SETTING FOR THE CLOCKS TOOL *****************************
|
||||||
|
!!Configuration
|
||||||
|
name: BOARD_BootClockVLPR
|
||||||
|
outputs:
|
||||||
|
- {id: Bus_clock.outFreq, value: 800 kHz}
|
||||||
|
- {id: Core_clock.outFreq, value: 4 MHz}
|
||||||
|
- {id: ERCLK32K.outFreq, value: 1 kHz}
|
||||||
|
- {id: Flash_clock.outFreq, value: 800 kHz}
|
||||||
|
- {id: LPO_clock.outFreq, value: 1 kHz}
|
||||||
|
- {id: MCGIRCLK.outFreq, value: 4 MHz}
|
||||||
|
- {id: System_clock.outFreq, value: 4 MHz}
|
||||||
|
settings:
|
||||||
|
- {id: MCGMode, value: BLPI}
|
||||||
|
- {id: powerMode, value: VLPR}
|
||||||
|
- {id: MCG.CLKS.sel, value: MCG.IRCS}
|
||||||
|
- {id: MCG.FCRDIV.scale, value: '1', locked: true}
|
||||||
|
- {id: MCG.FRDIV.scale, value: '32'}
|
||||||
|
- {id: MCG.IRCS.sel, value: MCG.FCRDIV}
|
||||||
|
- {id: MCG_C1_IRCLKEN_CFG, value: Enabled}
|
||||||
|
- {id: MCG_C2_OSC_MODE_CFG, value: ModeOscLowPower}
|
||||||
|
- {id: MCG_C2_RANGE0_CFG, value: High}
|
||||||
|
- {id: MCG_C2_RANGE0_FRDIV_CFG, value: High}
|
||||||
|
- {id: SIM.OSC32KSEL.sel, value: PMC.LPOCLK}
|
||||||
|
- {id: SIM.OUTDIV4.scale, value: '5'}
|
||||||
|
sources:
|
||||||
|
- {id: OSC.OSC.outFreq, value: 8 MHz}
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR THE CLOCKS TOOL **/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables for BOARD_BootClockVLPR configuration
|
||||||
|
******************************************************************************/
|
||||||
|
const mcg_config_t mcgConfig_BOARD_BootClockVLPR =
|
||||||
|
{
|
||||||
|
.mcgMode = kMCG_ModeBLPI, /* BLPI - Bypassed Low Power Internal */
|
||||||
|
.irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enabled, MCGIRCLK disabled in STOP mode */
|
||||||
|
.ircs = kMCG_IrcFast, /* Fast internal reference clock selected */
|
||||||
|
.fcrdiv = 0x0U, /* Fast IRC divider: divided by 1 */
|
||||||
|
.frdiv = 0x0U, /* FLL reference clock divider: divided by 32 */
|
||||||
|
.drs = kMCG_DrsLow, /* Low frequency range */
|
||||||
|
.dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25% */
|
||||||
|
.pll0Config =
|
||||||
|
{
|
||||||
|
.enableMode = MCG_PLL_DISABLE, /* MCGPLLCLK disabled */
|
||||||
|
.prdiv = 0x0U, /* PLL Reference divider: divided by 1 */
|
||||||
|
.vdiv = 0x0U, /* VCO divider: multiplied by 24 */
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const sim_clock_config_t simConfig_BOARD_BootClockVLPR =
|
||||||
|
{
|
||||||
|
.pllFllSel = SIM_PLLFLLSEL_MCGFLLCLK_CLK, /* PLLFLL select: MCGFLLCLK clock */
|
||||||
|
.er32kSrc = SIM_OSC32KSEL_LPO_CLK, /* OSC32KSEL select: LPO clock */
|
||||||
|
.clkdiv1 = 0x40000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV4: /5 */
|
||||||
|
};
|
||||||
|
const osc_config_t oscConfig_BOARD_BootClockVLPR =
|
||||||
|
{
|
||||||
|
.freq = 0U, /* Oscillator frequency: 0Hz */
|
||||||
|
.capLoad = (OSC_CAP0P), /* Oscillator capacity load: 0pF */
|
||||||
|
.workMode = kOSC_ModeOscLowPower, /* Oscillator low power */
|
||||||
|
.oscerConfig =
|
||||||
|
{
|
||||||
|
.enableMode = OSC_ER_CLK_DISABLE, /* Disable external reference clock */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code for BOARD_BootClockVLPR configuration
|
||||||
|
******************************************************************************/
|
||||||
|
void BOARD_BootClockVLPR(void)
|
||||||
|
{
|
||||||
|
/* Set the system clock dividers in SIM to safe value. */
|
||||||
|
CLOCK_SetSimSafeDivs();
|
||||||
|
/* Set MCG to BLPI mode. */
|
||||||
|
CLOCK_BootToBlpiMode(mcgConfig_BOARD_BootClockVLPR.fcrdiv,
|
||||||
|
mcgConfig_BOARD_BootClockVLPR.ircs,
|
||||||
|
mcgConfig_BOARD_BootClockVLPR.irclkEnableMode);
|
||||||
|
/* Set the clock configuration in SIM module. */
|
||||||
|
CLOCK_SetSimConfig(&simConfig_BOARD_BootClockVLPR);
|
||||||
|
/* Set VLPR power mode. */
|
||||||
|
SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
|
||||||
|
#if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
|
||||||
|
SMC_SetPowerModeVlpr(SMC, false);
|
||||||
|
#else
|
||||||
|
SMC_SetPowerModeVlpr(SMC);
|
||||||
|
#endif
|
||||||
|
while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
/* Set SystemCoreClock variable. */
|
||||||
|
SystemCoreClock = BOARD_BOOTCLOCKVLPR_CORE_CLOCK;
|
||||||
|
}
|
130
hw/bsp/kinetis_kl/boards/frdm_kl25z/clock_config.h
Normal file
130
hw/bsp/kinetis_kl/boards/frdm_kl25z/clock_config.h
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||||
|
* Copyright 2016-2017 NXP
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
* other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* o Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CLOCK_CONFIG_H_
|
||||||
|
#define _CLOCK_CONFIG_H_
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
************************ BOARD_InitBootClocks function ************************
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief This function executes default configuration of clocks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_InitBootClocks(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
#define BOARD_XTAL0_CLK_HZ 8000000U /*!< Board xtal0 frequency in Hz */
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************** Configuration BOARD_BootClockRUN ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#define BOARD_BOOTCLOCKRUN_CORE_CLOCK 48000000U /*!< Core clock frequency: 48000000Hz */
|
||||||
|
|
||||||
|
/*! @brief MCG set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const mcg_config_t mcgConfig_BOARD_BootClockRUN;
|
||||||
|
/*! @brief SIM module set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const sim_clock_config_t simConfig_BOARD_BootClockRUN;
|
||||||
|
/*! @brief OSC set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const osc_config_t oscConfig_BOARD_BootClockRUN;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief This function executes configuration of clocks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_BootClockRUN(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************* Configuration BOARD_BootClockVLPR ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions for BOARD_BootClockVLPR configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#define BOARD_BOOTCLOCKVLPR_CORE_CLOCK 4000000U /*!< Core clock frequency: 4000000Hz */
|
||||||
|
|
||||||
|
/*! @brief MCG set for BOARD_BootClockVLPR configuration.
|
||||||
|
*/
|
||||||
|
extern const mcg_config_t mcgConfig_BOARD_BootClockVLPR;
|
||||||
|
/*! @brief SIM module set for BOARD_BootClockVLPR configuration.
|
||||||
|
*/
|
||||||
|
extern const sim_clock_config_t simConfig_BOARD_BootClockVLPR;
|
||||||
|
/*! @brief OSC set for BOARD_BootClockVLPR configuration.
|
||||||
|
*/
|
||||||
|
extern const osc_config_t oscConfig_BOARD_BootClockVLPR;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API for BOARD_BootClockVLPR configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief This function executes configuration of clocks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_BootClockVLPR(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
#endif /* _CLOCK_CONFIG_H_ */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user