diff --git a/.github/workflows/test-build-psoc6.yml b/.github/workflows/test-build-psoc6.yml new file mode 100644 index 0000000000..f647bec04c --- /dev/null +++ b/.github/workflows/test-build-psoc6.yml @@ -0,0 +1,119 @@ +name: Wolfboot Reusable Build Workflow for Cypress PSoC6 + +on: + + workflow_call: + inputs: + arch: + required: true + type: string + config-file: + required: true + type: string + make-args: + required: false + type: string + +jobs: + + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: actions/checkout@v4 + with: + repository: Infineon/psoc6pdl + path: lib/psoc6pdl + + - uses: actions/checkout@v4 + with: + repository: Infineon/TARGET_CY8CKIT-062S2-43012 + path: lib/TARGET_CY8CKIT-062S2-43012 + + - uses: actions/checkout@v4 + with: + repository: Infineon/core-lib + path: lib/core-lib + + - name: Patch cy_syslib.c to declare cy_delay32kMs + run: | + # Add extern declaration for cy_delay32kMs directly in cy_syslib.c + # Find the line with the include and add the extern declaration after it + awk '/#include "cy_syslib.h"/ {print; print ""; print "/* Extern declaration for delay variable */"; print "extern uint32_t cy_delay32kMs;"; next} 1' \ + lib/psoc6pdl/drivers/source/cy_syslib.c > /tmp/cy_syslib_patched.c + mv /tmp/cy_syslib_patched.c lib/psoc6pdl/drivers/source/cy_syslib.c + + - name: Workaround for sources.list + run: | + # Replace sources + + set -euxo pipefail + + # Peek (what repos are active now) + apt-cache policy + grep -RInE '^(deb|Types|URIs)' /etc/apt || true + + # Enable nullglob so *.list/*.sources that don't exist don't break sed + shopt -s nullglob + + echo "Replace sources.list (legacy)" + sudo sed -i \ + -e "s|https\?://azure\.archive\.ubuntu\.com/ubuntu/?|http://mirror.arizona.edu/ubuntu/|g" \ + /etc/apt/sources.list || true + + echo "Replace sources.list.d/*.list (legacy)" + for f in /etc/apt/sources.list.d/*.list; do + sudo sed -i \ + -e "s|https\?://azure\.archive\.ubuntu\.com/ubuntu/?|http://mirror.arizona.edu/ubuntu/|g" \ + "$f" + done + + echo "Replace sources.list.d/*.sources (deb822)" + for f in /etc/apt/sources.list.d/*.sources; do + sudo sed -i \ + -e "s|https\?://azure\.archive\.ubuntu\.com/ubuntu/?|http://mirror.arizona.edu/ubuntu/|g" \ + -e "s|https\?://azure\.archive\.ubuntu\.com|http://mirror.arizona.edu|g" \ + "$f" + done + + echo "Fix /etc/apt/apt-mirrors.txt (used by URIs: mirror+file:...)" + if grep -qE '^[[:space:]]*https?://azure\.archive\.ubuntu\.com/ubuntu/?' /etc/apt/apt-mirrors.txt; then + # Replace azure with our mirror (idempotent) + sudo sed -i 's|https\?://azure\.archive\.ubuntu\.com/ubuntu/|http://mirror.arizona.edu/ubuntu/|g' /etc/apt/apt-mirrors.txt + fi + + # Peek (verify changes) + grep -RIn "azure.archive.ubuntu.com" /etc/apt || true + grep -RInE '^(deb|Types|URIs)' /etc/apt || true + echo "--- apt-mirrors.txt ---" + cat /etc/apt/apt-mirrors.txt || true + + - name: Update repository + run: sudo apt-get update + + - name: Install cross compilers + run: | + sudo apt-get install -y gcc-arm-none-eabi + + - name: make distclean + run: | + make distclean + + - name: Select config + run: | + cp ${{inputs.config-file}} .config && make include/target.h + + - name: Build tools + run: | + make -C tools/keytools && make -C tools/bin-assemble + + - name: Build wolfboot + run: | + make ${{inputs.make-args}} V=1 + + diff --git a/.github/workflows/test-configs.yml b/.github/workflows/test-configs.yml index a6a51bc8de..5d7495f6b9 100644 --- a/.github/workflows/test-configs.yml +++ b/.github/workflows/test-configs.yml @@ -8,12 +8,11 @@ on: jobs: - # TODO: cypsoc6.config requires cy_device_headers.h and component defines - # cypsoc6_test: - # uses: ./.github/workflows/test-build-psoc6.yml - # with: - # arch: arm - # config-file: ./config/examples/cypsoc6.config + cypsoc6_test: + uses: ./.github/workflows/test-build-psoc6.yml + with: + arch: arm + config-file: ./config/examples/cypsoc6.config hifive1_test: uses: ./.github/workflows/test-build-riscv.yml diff --git a/arch.mk b/arch.mk index cde222483c..8c470fdb11 100644 --- a/arch.mk +++ b/arch.mk @@ -960,8 +960,8 @@ ifeq ($(TARGET),psoc6) $(CYPRESS_PDL)/drivers/source/cy_crypto.o CFLAGS+=\ - -I$(CYPRESS_PDL)/drivers/include \ -I$(CYPRESS_PDL)/devices/include \ + -I$(CYPRESS_PDL)/drivers/include \ -I$(CYPRESS_PDL)/cmsis/include \ -I$(CYPRESS_TARGET_LIB) \ -I$(CYPRESS_CORE_LIB)/include \ diff --git a/config/examples/cypsoc6.config b/config/examples/cypsoc6.config index 457ba5ff2b..fb5afae099 100644 --- a/config/examples/cypsoc6.config +++ b/config/examples/cypsoc6.config @@ -22,6 +22,7 @@ RAM_CODE?=0 DUALBANK_SWAP?=0 PKA?=0 WOLFTPM?=0 +PSOC6_CRYPTO?=0 WOLFBOOT_PARTITION_SIZE?=0x80000 WOLFBOOT_SECTOR_SIZE?=512 WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x10080000