From 2d3caa6a67750034e871a60ce1ee78abfc6a7a54 Mon Sep 17 00:00:00 2001 From: Bob Long Date: Tue, 21 May 2024 23:24:26 -0500 Subject: [PATCH] Add CarbonixF405-no-crystal SW-159 --- .github/workflows/carbonix_build.yml | 6 +- .github/workflows/cx_build_compare.yml | 2 +- Tools/Carbonix_scripts/carbonix_waf_build.sh | 2 +- .../CarbonixF405-no-crystal_bl.bin | Bin 0 -> 28608 bytes .../CarbonixF405-no-crystal_bl.hex | 1790 +++++++++++++++++ .../CarbonixF405-no-crystal/hwdef-bl.dat | 7 + .../hwdef/CarbonixF405-no-crystal/hwdef.dat | 7 + 7 files changed, 1809 insertions(+), 5 deletions(-) create mode 100755 Tools/bootloaders/CarbonixF405-no-crystal_bl.bin create mode 100644 Tools/bootloaders/CarbonixF405-no-crystal_bl.hex create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/CarbonixF405-no-crystal/hwdef-bl.dat create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/CarbonixF405-no-crystal/hwdef.dat diff --git a/.github/workflows/carbonix_build.yml b/.github/workflows/carbonix_build.yml index 155c8eb64f..57ae46f6bb 100644 --- a/.github/workflows/carbonix_build.yml +++ b/.github/workflows/carbonix_build.yml @@ -182,7 +182,7 @@ jobs: - name: build Carbonix Periph boards shell: bash run: | - boards=("CarbonixF405" "CarbonixL496") + boards=("CarbonixF405" "CarbonixF405-no-crystal" "CarbonixL496") for board in "${boards[@]}"; do echo "Compiling AP_Periph for $board..." ./Tools/scripts/build_bootloaders.py "$board" @@ -194,7 +194,7 @@ jobs: id: check_files uses: andstor/file-existence-action@v2 with: - files: "build/CubeOrange/*, build/CarbonixCubeOrange/*, build/sitl/*, build/CarbonixF405/*, build/CarbonixL496/*" + files: "build/CubeOrange/*, build/CarbonixCubeOrange/*, build/sitl/*, build/CarbonixF405/*, build/CarbonixF405-no-crystal/*, build/CarbonixL496/*" fail: true - name: Extract firmware version and commit id id: extract_info @@ -207,7 +207,7 @@ jobs: - name: Gather build output run: | mkdir -p temp - for dir in CubeOrange CarbonixCubeOrange sitl CarbonixF405 CarbonixL496; do + for dir in CubeOrange CarbonixCubeOrange sitl CarbonixF405 CarbonixF405-no-crystal CarbonixL496; do mkdir -p temp/$dir/bin cp -v build/$dir/bin/* temp/$dir/bin/ done diff --git a/.github/workflows/cx_build_compare.yml b/.github/workflows/cx_build_compare.yml index 12fd2912e5..7362d55dbe 100644 --- a/.github/workflows/cx_build_compare.yml +++ b/.github/workflows/cx_build_compare.yml @@ -24,7 +24,7 @@ jobs: exclude: - gcc: 10 toolchain: chibios-clang - board: ["CarbonixCubeOrange", "CarbonixF405", "CarbonixL496"] + board: ["CarbonixCubeOrange", "CarbonixF405", "CarbonixF405-no-crystal", "CarbonixL496"] steps: # git checkout the PR - uses: actions/checkout@v3 diff --git a/Tools/Carbonix_scripts/carbonix_waf_build.sh b/Tools/Carbonix_scripts/carbonix_waf_build.sh index 9110b1d31c..d89e686bee 100755 --- a/Tools/Carbonix_scripts/carbonix_waf_build.sh +++ b/Tools/Carbonix_scripts/carbonix_waf_build.sh @@ -30,7 +30,7 @@ for board in "${main_boards[@]}"; do ./waf plane done -periph_boards=("CarbonixF405" "CarbonixL496") +periph_boards=("CarbonixF405" "CarbonixF405"-no-crystal" "CarbonixL496") for board in "${periph_boards[@]}"; do echo "Compiling AP_Periph for $board..." diff --git a/Tools/bootloaders/CarbonixF405-no-crystal_bl.bin b/Tools/bootloaders/CarbonixF405-no-crystal_bl.bin new file mode 100755 index 0000000000000000000000000000000000000000..0293a6bcdbf38c7a178b63090c8fab3a8483318b GIT binary patch literal 28608 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 h%Q