mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
Merge branch 'master' into fork/HiFiPhile/rt1170
This commit is contained in:
commit
29fa07d2ad
@ -20,6 +20,7 @@ jobs:
|
||||
|
||||
BUILDSYSTEM_TOOLCHAIN=(
|
||||
"cmake arm-clang"
|
||||
"cmake arm-iar"
|
||||
"make aarch64-gcc"
|
||||
"make arm-gcc"
|
||||
"make msp430-gcc"
|
||||
@ -28,7 +29,27 @@ jobs:
|
||||
"cmake esp-idf"
|
||||
)
|
||||
|
||||
RESOURCE_LARGE='["nrf", "imxrt"]'
|
||||
RESOURCE_LARGE='["nrf", "imxrt", "stm32f4", "stm32h7"]'
|
||||
|
||||
gen_build_entry() {
|
||||
local build_system="$1"
|
||||
local toolchain="$2"
|
||||
local family="$3"
|
||||
local resource_class="$4"
|
||||
|
||||
if [[ "$toolchain" == "esp-idf" ]]; then
|
||||
echo " - build-vm:" >> .circleci/config2.yml
|
||||
else
|
||||
echo " - build:" >> .circleci/config2.yml
|
||||
fi
|
||||
|
||||
echo " matrix:" >> .circleci/config2.yml
|
||||
echo " parameters:" >> .circleci/config2.yml
|
||||
echo " build-system: ['$build_system']" >> .circleci/config2.yml
|
||||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml
|
||||
echo " family: $family" >> .circleci/config2.yml
|
||||
echo " resource_class: ['$resource_class']" >> .circleci/config2.yml
|
||||
}
|
||||
|
||||
for e in "${BUILDSYSTEM_TOOLCHAIN[@]}"; do
|
||||
e_arr=($e)
|
||||
@ -43,26 +64,14 @@ jobs:
|
||||
FAMILY=$(jq -n --argjson family "$FAMILY" --argjson resource "$RESOURCE_LARGE" '$family | map(select(IN($resource[]) | not))')
|
||||
|
||||
if [[ $toolchain == esp-idf ]]; then
|
||||
echo " - build-vm:" >> .circleci/config2.yml
|
||||
gen_build_entry "$build_system" "$toolchain" "$FAMILY" "large"
|
||||
else
|
||||
echo " - build:" >> .circleci/config2.yml
|
||||
fi
|
||||
echo " matrix:" >> .circleci/config2.yml
|
||||
echo " parameters:" >> .circleci/config2.yml
|
||||
echo " build-system: ['$build_system']" >> .circleci/config2.yml
|
||||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml
|
||||
echo " family: $FAMILY" >> .circleci/config2.yml
|
||||
#echo " resource_class: ['medium+']" >> .circleci/config2.yml
|
||||
gen_build_entry "$build_system" "$toolchain" "$FAMILY" "medium+"
|
||||
|
||||
# add large resources
|
||||
if [ "$(echo $FAMILY_LARGE | jq 'length')" -gt 0 ]; then
|
||||
echo " - build:" >> .circleci/config2.yml
|
||||
echo " matrix:" >> .circleci/config2.yml
|
||||
echo " parameters:" >> .circleci/config2.yml
|
||||
echo " build-system: ['$build_system']" >> .circleci/config2.yml
|
||||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml
|
||||
echo " family: $FAMILY_LARGE" >> .circleci/config2.yml
|
||||
echo " resource_class: ['large']" >> .circleci/config2.yml
|
||||
# add large resources if available
|
||||
if [ "$(echo $FAMILY_LARGE | jq 'length')" -gt 0 ]; then
|
||||
gen_build_entry "$build_system" "$toolchain" "$FAMILY_LARGE" "large"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -16,7 +16,8 @@ commands:
|
||||
"arm-gcc": "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v13.2.1-1.1/xpack-arm-none-eabi-gcc-13.2.1-1.1-linux-x64.tar.gz",
|
||||
"msp430-gcc": "http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2",
|
||||
"riscv-gcc": "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-2/xpack-riscv-none-elf-gcc-13.2.0-2-linux-x64.tar.gz",
|
||||
"rx-gcc": "https://llvm-gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run"
|
||||
"rx-gcc": "https://llvm-gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run",
|
||||
"arm-iar": "https://updates.iar.com/FileStore/STANDARD/001/003/322/cxarm-9.60.3.deb"
|
||||
}'
|
||||
toolchain_url=$(echo $TOOLCHAIN_JSON | jq -r '.["<< parameters.toolchain >>"]')
|
||||
|
||||
@ -38,18 +39,26 @@ commands:
|
||||
# download if folder does not exist (not cached)
|
||||
if [ ! -d ~/cache/<< parameters.toolchain >> ]; then
|
||||
mkdir -p ~/cache/<< parameters.toolchain >>
|
||||
wget --progress=dot:giga $toolchain_url -O toolchain.tar.gz
|
||||
if [[ << parameters.toolchain >> == rx-gcc ]]; then
|
||||
mv toolchain.tar.gz toolchain.run
|
||||
wget --progress=dot:giga $toolchain_url -O toolchain.run
|
||||
chmod +x toolchain.run
|
||||
./toolchain.run -p ~/cache/<< parameters.toolchain >>/gnurx -y
|
||||
elif [[ << parameters.toolchain >> == arm-iar ]]; then
|
||||
wget --progress=dot:giga $toolchain_url -O ~/cache/<< parameters.toolchain >>/toolchain.deb
|
||||
else
|
||||
wget --progress=dot:giga $toolchain_url -O toolchain.tar.gz
|
||||
tar -C ~/cache/<< parameters.toolchain >> -xaf toolchain.tar.gz
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add toolchain to PATH
|
||||
echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV
|
||||
if [[ << parameters.toolchain >> == arm-iar ]]; then
|
||||
# Install IAR since we only cache deb file
|
||||
sudo dpkg --ignore-depends=libusb-1.0-0 -i ~/cache/<< parameters.toolchain >>/toolchain.deb
|
||||
echo "export PATH=$PATH:/opt/iar/cxarm/arm/bin" >> $BASH_ENV
|
||||
else
|
||||
echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV
|
||||
fi
|
||||
|
||||
- save_cache:
|
||||
name: Save Toolchain Cache
|
||||
@ -110,6 +119,9 @@ commands:
|
||||
# Toolchain option default is gcc
|
||||
if [ << parameters.toolchain >> == arm-clang ]; then
|
||||
TOOLCHAIN_OPTION="--toolchain clang"
|
||||
elif [ << parameters.toolchain >> == arm-iar ]; then
|
||||
TOOLCHAIN_OPTION="--toolchain iar"
|
||||
iccarm --version
|
||||
elif [ << parameters.toolchain >> == arm-gcc ]; then
|
||||
TOOLCHAIN_OPTION="--toolchain gcc"
|
||||
fi
|
||||
|
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@ -113,13 +113,12 @@ jobs:
|
||||
# Build IAR on HFP self-hosted
|
||||
# ---------------------------------------
|
||||
arm-iar:
|
||||
if: github.repository_owner == 'hathach'
|
||||
if: github.repository_owner == 'hathach' && github.event_name == 'push'
|
||||
needs: set-matrix
|
||||
runs-on: [self-hosted, Linux, X64, hifiphile]
|
||||
env:
|
||||
BUILD_ARGS: ${{ join(fromJSON(needs.set-matrix.outputs.json)['arm-iar'], ' ') }}
|
||||
IAR_LMS_CLOUD_URL: https://license.cloud.iar.com
|
||||
IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
|
||||
# IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
|
||||
steps:
|
||||
- name: Clean workspace
|
||||
run: |
|
||||
@ -138,8 +137,3 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: python3 tools/build.py --one-per-family --toolchain iar $BUILD_ARGS
|
||||
|
||||
- name: Test on actual hardware (hardware in the loop)
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
python3 test/hil/hil_test.py hfp.json
|
||||
|
8
.github/workflows/ci_set_matrix.py
vendored
8
.github/workflows/ci_set_matrix.py
vendored
@ -55,14 +55,6 @@ def set_matrix_json():
|
||||
for toolchain in toolchain_list:
|
||||
filtered_families = [family for family, supported_toolchain in family_list.items() if
|
||||
toolchain in supported_toolchain]
|
||||
|
||||
# always add board in hfp.json for arm-iar
|
||||
if toolchain == 'arm-iar':
|
||||
with open('test/hil/hfp.json') as f:
|
||||
hfp_data = json.load(f)
|
||||
hfp_boards = [f"-b{board['name']}" for board in hfp_data['boards']]
|
||||
filtered_families = filtered_families + hfp_boards
|
||||
|
||||
matrix[toolchain] = filtered_families
|
||||
|
||||
print(json.dumps(matrix))
|
||||
|
40
.github/workflows/hil_test.yml
vendored
40
.github/workflows/hil_test.yml
vendored
@ -58,7 +58,7 @@ jobs:
|
||||
|
||||
# ---------------------------------------
|
||||
# Hardware in the loop (HIL)
|
||||
# self-hosted running on an VM. For attached hardware checkout HIL_JSON
|
||||
# self-hosted on local VM, for attached hardware checkout HIL_JSON
|
||||
# ---------------------------------------
|
||||
hil-tinyusb:
|
||||
if: github.repository_owner == 'hathach'
|
||||
@ -86,3 +86,41 @@ jobs:
|
||||
run: |
|
||||
ls cmake-build/
|
||||
python3 test/hil/hil_test.py ${{ env.HIL_JSON }}
|
||||
|
||||
# ---------------------------------------
|
||||
# Hardware in the loop (HIL)
|
||||
# self-hosted by HFP, build with IAR toolchain, for attached hardware checkout test/hil/hfp.json
|
||||
# ---------------------------------------
|
||||
hil-hfp:
|
||||
if: github.repository_owner == 'hathach'
|
||||
runs-on: [self-hosted, Linux, X64, hifiphile]
|
||||
#env:
|
||||
# IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
|
||||
steps:
|
||||
- name: Clean workspace
|
||||
run: |
|
||||
echo "Cleaning up previous run"
|
||||
rm -rf "${{ github.workspace }}"
|
||||
mkdir -p "${{ github.workspace }}"
|
||||
|
||||
- name: Toolchain version
|
||||
run: iccarm --version
|
||||
|
||||
- name: Checkout TinyUSB
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Get build boards
|
||||
run: |
|
||||
MATRIX_JSON=$(python test/hil/hil_ci_set_matrix.py test/hil/hfp.json)
|
||||
BUILD_ARGS=$(echo $MATRIX_JSON | jq -r '.["arm-gcc"] | join(" ")')
|
||||
echo "BUILD_ARGS=$BUILD_ARGS"
|
||||
echo "BUILD_ARGS=$BUILD_ARGS" >> $GITHUB_ENV
|
||||
|
||||
- name: Get Dependencies
|
||||
run: python3 tools/get_deps.py $BUILD_ARGS
|
||||
|
||||
- name: Build
|
||||
run: python3 tools/build.py --toolchain iar $BUILD_ARGS
|
||||
|
||||
- name: Test on actual hardware (hardware in the loop)
|
||||
run: python3 test/hil/hil_test.py hfp.json
|
||||
|
2
.idea/cmake.xml
generated
2
.idea/cmake.xml
generated
@ -83,7 +83,7 @@
|
||||
<configuration PROFILE_NAME="metro_m4_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m4_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
|
||||
<configuration PROFILE_NAME="itsybitsy_m4" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=itsybitsy_m4" />
|
||||
<configuration PROFILE_NAME="same54_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=same54_xplained -DLOG=1 -DLOGGER=RTT" />
|
||||
<configuration PROFILE_NAME="samg55_xplained" ENABLED="true" GENERATION_OPTIONS="-DBOARD=samg55_xplained" />
|
||||
<configuration PROFILE_NAME="samg55_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=samg55_xplained" />
|
||||
<configuration PROFILE_NAME="feather_nrf52840_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_nrf52840_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
|
||||
<configuration PROFILE_NAME="pca10056" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10056 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||
<configuration PROFILE_NAME="pca10095" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10095 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||
|
4
.idea/runConfigurations/stlink.xml
generated
4
.idea/runConfigurations/stlink.xml
generated
@ -1,6 +1,6 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="stlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="stm32" PROGRAM_PARAMS="-p 10458 -cp "/opt/st/stm32cubeide_1.14.0/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.1.100.202311100844/tools/bin" --frequency 8000 --swd" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
|
||||
<custom-gdb-server version="1" gdb-connect="tcp::10458" executable="/opt/st/stm32cubeide_1.14.0/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.1.100.202310302101/tools/bin/ST-LINK_gdbserver" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
|
||||
<configuration default="false" name="stlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-p 49578 -cp "$USER_HOME$/st/stm32cubeide_1.16.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.1.400.202404281720/tools/bin" --frequency 8000 --swd" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" CONFIG_NAME="raspberry_pi_pico" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
|
||||
<custom-gdb-server version="1" gdb-connect="tcp::49578" executable="$USER_HOME$/st/stm32cubeide_1.16.1/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.1.400.202404281720/tools/bin/ST-LINK_gdbserver" 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">
|
||||
|
@ -4,5 +4,6 @@ set(JLINK_DEVICE stm32h503rb)
|
||||
function(update_board TARGET)
|
||||
target_compile_definitions(${TARGET} PUBLIC
|
||||
STM32H503xx
|
||||
HSE_VALUE=24000000
|
||||
)
|
||||
endfunction()
|
||||
|
@ -1,7 +1,8 @@
|
||||
MCU_VARIANT = stm32h503xx
|
||||
|
||||
CFLAGS += \
|
||||
-DSTM32H503xx
|
||||
-DSTM32H503xx \
|
||||
-DHSE_VALUE=24000000 \
|
||||
|
||||
# For flash-jlink target
|
||||
JLINK_DEVICE = stm32h503rb
|
||||
|
@ -4,5 +4,6 @@ set(JLINK_DEVICE stm32h563zi)
|
||||
function(update_board TARGET)
|
||||
target_compile_definitions(${TARGET} PUBLIC
|
||||
STM32H563xx
|
||||
HSE_VALUE=8000000
|
||||
)
|
||||
endfunction()
|
||||
|
@ -67,9 +67,8 @@ static inline void SystemClock_Config(void) {
|
||||
/** Initializes the RCC Oscillators according to the specified parameters
|
||||
* in the RCC_OscInitTypeDef structure.
|
||||
*/
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIGITAL;
|
||||
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
|
||||
RCC_OscInitStruct.PLL.PLLM = 4;
|
||||
@ -88,8 +87,8 @@ static inline void SystemClock_Config(void) {
|
||||
/** Initializes the CPU, AHB and APB buses clocks
|
||||
*/
|
||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
|
||||
|RCC_CLOCKTYPE_PCLK3;
|
||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
|
||||
|RCC_CLOCKTYPE_PCLK3;
|
||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
||||
@ -101,25 +100,27 @@ static inline void SystemClock_Config(void) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
// Configure CRS clock source
|
||||
__HAL_RCC_CRS_CLK_ENABLE();
|
||||
RCC_CRSInitTypeDef RCC_CRSInitStruct = {0};
|
||||
RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
|
||||
RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
|
||||
RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
|
||||
RCC_CRSInitStruct.ReloadValue = __HAL_RCC_CRS_RELOADVALUE_CALCULATE(48000000, 1000);
|
||||
RCC_CRSInitStruct.ErrorLimitValue = 34;
|
||||
RCC_CRSInitStruct.HSI48CalibrationValue = 32;
|
||||
HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct);
|
||||
/** Configure the programming delay
|
||||
*/
|
||||
__HAL_FLASH_SET_PROGRAM_DELAY(FLASH_PROGRAMMING_DELAY_2);
|
||||
|
||||
/* Select HSI48 as USB clock source */
|
||||
RCC_PeriphCLKInitTypeDef usb_clk = {0 };
|
||||
usb_clk.PeriphClockSelection = RCC_PERIPHCLK_USB;
|
||||
usb_clk.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
|
||||
HAL_RCCEx_PeriphCLKConfig(&usb_clk);
|
||||
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_USB_CLK_ENABLE();
|
||||
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
||||
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
|
||||
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_HSE;
|
||||
PeriphClkInitStruct.PLL3.PLL3M = 1;
|
||||
PeriphClkInitStruct.PLL3.PLL3N = 18;
|
||||
PeriphClkInitStruct.PLL3.PLL3P = 2;
|
||||
PeriphClkInitStruct.PLL3.PLL3Q = 3;
|
||||
PeriphClkInitStruct.PLL3.PLL3R = 2;
|
||||
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_1;
|
||||
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_WIDE;
|
||||
PeriphClkInitStruct.PLL3.PLL3FRACN = 0.0;
|
||||
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
|
||||
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -1,7 +1,8 @@
|
||||
MCU_VARIANT = stm32h563xx
|
||||
|
||||
CFLAGS += \
|
||||
-DSTM32H563xx
|
||||
-DSTM32H563xx \
|
||||
-DHSE_VALUE=8000000 \
|
||||
|
||||
# For flash-jlink target
|
||||
JLINK_DEVICE = stm32h563zi
|
||||
|
@ -2,6 +2,7 @@
|
||||
BOOTPATH.BootPathName=LEGACY
|
||||
BOOTPATH.IPParameters=BootPathName
|
||||
BOOTPATH.UserSelectedBootPath=LEGACY
|
||||
BSP_IP_NAME=NUCLEO-H563ZI
|
||||
CAD.formats=
|
||||
CAD.pinconfig=
|
||||
CAD.provider=
|
||||
@ -16,6 +17,7 @@ Mcu.ContextProject=TrustZoneDisabled
|
||||
Mcu.Family=STM32H5
|
||||
Mcu.IP0=BOOTPATH
|
||||
Mcu.IP1=CORTEX_M33_NS
|
||||
Mcu.IP10=NUCLEO-H563ZI
|
||||
Mcu.IP2=DEBUG
|
||||
Mcu.IP3=ICACHE
|
||||
Mcu.IP4=MEMORYMAP
|
||||
@ -24,7 +26,7 @@ Mcu.IP6=PWR
|
||||
Mcu.IP7=RCC
|
||||
Mcu.IP8=SYS
|
||||
Mcu.IP9=USB
|
||||
Mcu.IPNb=10
|
||||
Mcu.IPNb=11
|
||||
Mcu.Name=STM32H563ZITx
|
||||
Mcu.Package=LQFP144
|
||||
Mcu.Pin0=PE2
|
||||
@ -74,8 +76,8 @@ Mcu.PinsNb=43
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32H563ZITx
|
||||
MxCube.Version=6.10.0
|
||||
MxDb.Version=DB.6.0.100
|
||||
MxCube.Version=6.12.1
|
||||
MxDb.Version=DB.6.0.121
|
||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.EXTI13_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
|
||||
@ -267,7 +269,7 @@ ProjectManager.CustomerFirmwarePackage=
|
||||
ProjectManager.DefaultFWLocation=true
|
||||
ProjectManager.DeletePrevious=true
|
||||
ProjectManager.DeviceId=STM32H563ZITx
|
||||
ProjectManager.FirmwarePackage=STM32Cube FW_H5 V1.1.1
|
||||
ProjectManager.FirmwarePackage=STM32Cube FW_H5 V1.3.0
|
||||
ProjectManager.FreePins=false
|
||||
ProjectManager.HalAssertFull=false
|
||||
ProjectManager.HeapSize=0x200
|
||||
@ -317,7 +319,7 @@ RCC.I2C2Freq_Value=250000000
|
||||
RCC.I2C3Freq_Value=250000000
|
||||
RCC.I2C4Freq_Value=250000000
|
||||
RCC.I3C1Freq_Value=250000000
|
||||
RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CECFreq_Value,CKPERFreq_Value,CRSFreq_Value,CSI_VALUE,CortexFreq_Value,DACFreq_Value,EPOD_VALUE,ETHFreq_Value,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSIDiv,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I3C1Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM3Freq_Value,LPTIM4Freq_Value,LPTIM5Freq_Value,LPTIM6Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSIRC_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,OCTOSPIMFreq_Value,PLL2PoutputFreq_Value,PLL2QoutputFreq_Value,PLL2RoutputFreq_Value,PLL3PoutputFreq_Value,PLL3QoutputFreq_Value,PLL3RoutputFreq_Value,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMC1Freq_Value,SDMMC2Freq_Value,SPI1Freq_Value,SPI2Freq_Value,SPI3Freq_Value,SPI4Freq_Value,SPI5Freq_Value,SPI6Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART12Freq_Value,UART4Freq_Value,UART5Freq_Value,UART7Freq_Value,UART8Freq_Value,UART9Freq_Value,UCPD1outputFreq_Value,USART10Freq_Value,USART11Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBFreq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOPLL2OutputFreq_Value,VCOPLL3OutputFreq_Value
|
||||
RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CECFreq_Value,CKPERFreq_Value,CRSFreq_Value,CSI_VALUE,CortexFreq_Value,DACFreq_Value,EPOD_VALUE,ETHFreq_Value,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSIDiv,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I3C1Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM3Freq_Value,LPTIM4Freq_Value,LPTIM5Freq_Value,LPTIM6Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSIRC_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,OCTOSPIMFreq_Value,PLL2PoutputFreq_Value,PLL2QoutputFreq_Value,PLL2RoutputFreq_Value,PLL2Source,PLL3FRACN,PLL3N,PLL3PoutputFreq_Value,PLL3Q,PLL3QoutputFreq_Value,PLL3RoutputFreq_Value,PLL3Source,PLLFRACN,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMC1Freq_Value,SDMMC2Freq_Value,SPI1Freq_Value,SPI2Freq_Value,SPI3Freq_Value,SPI4Freq_Value,SPI5Freq_Value,SPI6Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART12Freq_Value,UART4Freq_Value,UART5Freq_Value,UART7Freq_Value,UART8Freq_Value,UART9Freq_Value,UCPD1outputFreq_Value,USART10Freq_Value,USART11Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBCLockSelection,USBFreq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOPLL2OutputFreq_Value,VCOPLL3OutputFreq_Value
|
||||
RCC.LPTIM1Freq_Value=250000000
|
||||
RCC.LPTIM2Freq_Value=250000000
|
||||
RCC.LPTIM3Freq_Value=250000000
|
||||
@ -330,12 +332,18 @@ RCC.LSIRC_VALUE=32000
|
||||
RCC.MCO1PinFreq_Value=64000000
|
||||
RCC.MCO2PinFreq_Value=250000000
|
||||
RCC.OCTOSPIMFreq_Value=250000000
|
||||
RCC.PLL2PoutputFreq_Value=258000000
|
||||
RCC.PLL2QoutputFreq_Value=258000000
|
||||
RCC.PLL2RoutputFreq_Value=258000000
|
||||
RCC.PLL3PoutputFreq_Value=258000000
|
||||
RCC.PLL3QoutputFreq_Value=258000000
|
||||
RCC.PLL3RoutputFreq_Value=258000000
|
||||
RCC.PLL2PoutputFreq_Value=516000000
|
||||
RCC.PLL2QoutputFreq_Value=516000000
|
||||
RCC.PLL2RoutputFreq_Value=516000000
|
||||
RCC.PLL2Source=RCC_PLL2_SOURCE_HSE
|
||||
RCC.PLL3FRACN=0
|
||||
RCC.PLL3N=18
|
||||
RCC.PLL3PoutputFreq_Value=72000000
|
||||
RCC.PLL3Q=3
|
||||
RCC.PLL3QoutputFreq_Value=48000000
|
||||
RCC.PLL3RoutputFreq_Value=72000000
|
||||
RCC.PLL3Source=RCC_PLL3_SOURCE_HSE
|
||||
RCC.PLLFRACN=0
|
||||
RCC.PLLM=4
|
||||
RCC.PLLN=250
|
||||
RCC.PLLPoutputFreq_Value=250000000
|
||||
@ -343,8 +351,8 @@ RCC.PLLQoutputFreq_Value=250000000
|
||||
RCC.PLLSourceVirtual=RCC_PLL1_SOURCE_HSE
|
||||
RCC.PWRFreq_Value=250000000
|
||||
RCC.RNGFreq_Value=48000000
|
||||
RCC.SAI1Freq_Value=258000000
|
||||
RCC.SAI2Freq_Value=258000000
|
||||
RCC.SAI1Freq_Value=516000000
|
||||
RCC.SAI2Freq_Value=516000000
|
||||
RCC.SDMMC1Freq_Value=250000000
|
||||
RCC.SDMMC2Freq_Value=250000000
|
||||
RCC.SPI1Freq_Value=250000000
|
||||
@ -368,13 +376,14 @@ RCC.USART1Freq_Value=250000000
|
||||
RCC.USART2Freq_Value=250000000
|
||||
RCC.USART3Freq_Value=250000000
|
||||
RCC.USART6Freq_Value=250000000
|
||||
RCC.USBCLockSelection=RCC_USBCLKSOURCE_PLL3Q
|
||||
RCC.USBFreq_Value=48000000
|
||||
RCC.VCOInput2Freq_Value=4000000
|
||||
RCC.VCOInput3Freq_Value=4000000
|
||||
RCC.VCOInput2Freq_Value=8000000
|
||||
RCC.VCOInput3Freq_Value=8000000
|
||||
RCC.VCOInputFreq_Value=2000000
|
||||
RCC.VCOOutputFreq_Value=500000000
|
||||
RCC.VCOPLL2OutputFreq_Value=516000000
|
||||
RCC.VCOPLL3OutputFreq_Value=516000000
|
||||
RCC.VCOPLL2OutputFreq_Value=1032000000
|
||||
RCC.VCOPLL3OutputFreq_Value=144000000
|
||||
SH.ADCx_INP18.0=ADC1_INP18
|
||||
SH.ADCx_INP18.ConfNb=1
|
||||
SH.GPXTI13.0=GPIO_EXTI13
|
||||
|
@ -540,28 +540,32 @@ typedef struct TU_ATTR_PACKED {
|
||||
|
||||
TU_VERIFY_STATIC( sizeof(video_probe_and_commit_control_t) == 48, "size is not correct");
|
||||
|
||||
#define TUD_VIDEO_DESC_IAD_LEN 8
|
||||
#define TUD_VIDEO_DESC_STD_VC_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VC_LEN 12
|
||||
#define TUD_VIDEO_DESC_INPUT_TERM_LEN 8
|
||||
#define TUD_VIDEO_DESC_OUTPUT_TERM_LEN 9
|
||||
#define TUD_VIDEO_DESC_CAMERA_TERM_LEN 18
|
||||
#define TUD_VIDEO_DESC_STD_VS_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VS_IN_LEN 13
|
||||
#define TUD_VIDEO_DESC_CS_VS_OUT_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN 27
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN 11
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN 38
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_DISC_LEN 26
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN 38
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_DISC_LEN 26
|
||||
#define TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN 6
|
||||
#define TUD_VIDEO_DESC_IAD_LEN 8
|
||||
#define TUD_VIDEO_DESC_STD_VC_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VC_LEN 12
|
||||
#define TUD_VIDEO_DESC_INPUT_TERM_LEN 8
|
||||
#define TUD_VIDEO_DESC_OUTPUT_TERM_LEN 9
|
||||
#define TUD_VIDEO_DESC_CAMERA_TERM_LEN 18
|
||||
#define TUD_VIDEO_DESC_STD_VS_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VS_IN_LEN 13
|
||||
#define TUD_VIDEO_DESC_CS_VS_OUT_LEN 9
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN 27
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN 11
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_FRAME_BASED_LEN 28
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN 38
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_DISC_LEN 26
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN 38
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_DISC_LEN 26
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_CONT_LEN 38
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_DISC_LEN 26
|
||||
#define TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN 6
|
||||
|
||||
/* 2.2 compression formats */
|
||||
#define TUD_VIDEO_GUID_YUY2 0x59,0x55,0x59,0x32,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
|
||||
#define TUD_VIDEO_GUID_NV12 0x4E,0x56,0x31,0x32,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
|
||||
#define TUD_VIDEO_GUID_M420 0x4D,0x34,0x32,0x30,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
|
||||
#define TUD_VIDEO_GUID_I420 0x49,0x34,0x32,0x30,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
|
||||
#define TUD_VIDEO_GUID_H264 0x48,0x32,0x36,0x34,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
|
||||
|
||||
#define TUD_VIDEO_DESC_IAD(_firstitf, _nitfs, _stridx) \
|
||||
TUD_VIDEO_DESC_IAD_LEN, TUSB_DESC_INTERFACE_ASSOCIATION, \
|
||||
@ -656,6 +660,25 @@ TU_VERIFY_STATIC( sizeof(video_probe_and_commit_control_t) == 48, "size is not c
|
||||
_frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
|
||||
U32_TO_U8S_LE(_maxfrmbufsz), U32_TO_U8S_LE(_frminterval), (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
|
||||
|
||||
/* Motion-Frame-Based 3.1.1 Table 3-1 */
|
||||
#define TUD_VIDEO_DESC_CS_VS_FMT_FRAME_BASED(_fmtidx, _numfrmdesc, _guid, _bitsperpix, _frmidx, _asrx, _asry, _interlace, _cp, _variablesize) \
|
||||
TUD_VIDEO_DESC_CS_VS_FMT_FRAME_BASED_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED, \
|
||||
_fmtidx, _numfrmdesc, TUD_VIDEO_GUID(_guid), _bitsperpix, _frmidx, _asrx, _asry, _interlace, _cp, _variablesize
|
||||
|
||||
/* Motion-Frame-Based 3.1.1 Table 3-2 and 3-3 */
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_CONT(_frmidx, _cap, _width, _height, _minbr, _maxbr, _frminterval, _bytesperline, _minfrminterval, _maxfrminterval, _frmintervalstep) \
|
||||
TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_CONT_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_FRAME_BASED, \
|
||||
_frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
|
||||
U32_TO_U8S_LE(_frminterval), 0, U32_TO_U8S_LE(_bytesperline), \
|
||||
U32_TO_U8S_LE(_minfrminterval), U32_TO_U8S_LE(_maxfrminterval), U32_TO_U8S_LE(_frmintervalstep)
|
||||
|
||||
/* Motion-Frame-Based 3.1.1 Table 3-2 and 3-4 */
|
||||
#define TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_DISC(_frmidx, _cap, _width, _height, _minbr, _maxbr, _frminterval, _bytesperline, ...) \
|
||||
TUD_VIDEO_DESC_CS_VS_FRM_FRAME_BASED_DISC_LEN + (TU_ARGS_NUM(__VA_ARGS__)) * 4, \
|
||||
TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_FRAME_BASED, \
|
||||
_frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
|
||||
U32_TO_U8S_LE(_frminterval), U32_TO_U8S_LE(_bytesperline), (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
|
||||
|
||||
/* 3.9.2.6 */
|
||||
#define TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING(_color, _trns, _mat) \
|
||||
TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN, \
|
||||
|
@ -462,6 +462,9 @@ static bool _update_streaming_parameters(videod_streaming_interface_t const *stm
|
||||
case VIDEO_CS_ITF_VS_FORMAT_MJPEG:
|
||||
break;
|
||||
|
||||
case VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED:
|
||||
break;
|
||||
|
||||
default: return false;
|
||||
}
|
||||
|
||||
@ -487,6 +490,10 @@ static bool _update_streaming_parameters(videod_streaming_interface_t const *stm
|
||||
frame_size = (uint_fast32_t)frm->wWidth * frm->wHeight * 16 / 8; /* YUV422 */
|
||||
break;
|
||||
|
||||
case VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED:
|
||||
frame_size = (uint_fast32_t)frm->wWidth * frm->wHeight * 16 / 8; /* YUV422 */
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
param->dwMaxVideoFrameSize = frame_size;
|
||||
@ -576,6 +583,10 @@ static bool _negotiate_streaming_parameters(videod_streaming_interface_t const *
|
||||
frmnum = fmt->mjpeg.bDefaultFrameIndex;
|
||||
break;
|
||||
|
||||
case VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED:
|
||||
frmnum = fmt->frame_based.bDefaultFrameIndex;
|
||||
break;
|
||||
|
||||
default: return false;
|
||||
}
|
||||
break;
|
||||
@ -594,6 +605,10 @@ static bool _negotiate_streaming_parameters(videod_streaming_interface_t const *
|
||||
frame_size = (uint_fast32_t)frm->wWidth * frm->wHeight * 16 / 8; /* YUV422 */
|
||||
break;
|
||||
|
||||
case VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED:
|
||||
frame_size = (uint_fast32_t)frm->wWidth * frm->wHeight * 16 / 8; /* YUV422 */
|
||||
break;
|
||||
|
||||
default: return false;
|
||||
}
|
||||
param->dwMaxVideoFrameSize = frame_size;
|
||||
|
@ -73,7 +73,7 @@ static void dwc2_int_handler_wrap(void* arg) {
|
||||
dcd_int_handler(rhport);
|
||||
}
|
||||
#endif
|
||||
#if CFG_TUH_ENABLED
|
||||
#if CFG_TUH_ENABLED && !CFG_TUH_MAX3421
|
||||
if (role == TUSB_ROLE_HOST) {
|
||||
hcd_int_handler(rhport, true);
|
||||
}
|
||||
|
@ -109,7 +109,14 @@ def cmake_board(board, toolchain, build_flags_on):
|
||||
rcmd = run_cmd(f'cmake examples -B {build_dir} -G "Ninja" -DBOARD={board} -DCMAKE_BUILD_TYPE=MinSizeRel '
|
||||
f'-DTOOLCHAIN={toolchain} {build_flags}')
|
||||
if rcmd.returncode == 0:
|
||||
rcmd = run_cmd(f"cmake --build {build_dir}")
|
||||
cmd = f"cmake --build {build_dir}"
|
||||
# Due to IAR capability, limit parallel build to 4 (medium+) or 6 (large) docker
|
||||
if toolchain == 'iar' and os.getenv('CIRCLECI'):
|
||||
if 'large' in os.getenv('CIRCLE_JOB'):
|
||||
cmd += ' --parallel 6'
|
||||
else:
|
||||
cmd += ' --parallel 4'
|
||||
rcmd = run_cmd(cmd)
|
||||
ret[0 if rcmd.returncode == 0 else 1] += 1
|
||||
|
||||
example = 'all'
|
||||
|
Loading…
x
Reference in New Issue
Block a user