Fix PORTMUX influences other PORTMUX settings #22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: OLED Build Pipeline | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| build-firmware-m16a-tty-software-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega16a" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo/tty" | |
| FIRMWARE_NAME: "tty_sw_twi_m16a" | |
| PREPROCESSOR: "-DF_CPU=12000000UL" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr0/* | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m16a-tty-software-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m16a-tty-hardware-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega16a" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo/tty" | |
| FIRMWARE_NAME: "tty_hw_twi_m16a" | |
| PREPROCESSOR: "-DF_CPU=12000000UL" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr0/* | |
| sed -i '/^\s*#define OLED_USE_SOFT_TWI/s/^/\/\//' ${{ env.LIBRARY_PATH }}/oled/oled.h | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m16a-tty-hardware-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m16a-frame-software-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega16a" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo/frame" | |
| FIRMWARE_NAME: "frame_sw_twi_m16a" | |
| PREPROCESSOR: "-DF_CPU=12000000UL" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr0/* | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m16a-frame-software-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m16a-frame-hardware-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega16a" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo/frame" | |
| FIRMWARE_NAME: "frame_hw_twi_m16a" | |
| PREPROCESSOR: "-DF_CPU=12000000UL" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr0/* | |
| sed -i '/^\s*#define OLED_USE_SOFT_TWI/s/^/\/\//' ${{ env.LIBRARY_PATH }}/oled/oled.h | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m16a-frame-hardware-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m4808-tty-software-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega4808" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo-avr0/tty-avr0" | |
| FIRMWARE_NAME: "tty_sw_twi_m4808" | |
| PREPROCESSOR: "-DF_CPU=20000000UL -DOLED_HAL_PLATFORM=avr0" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr/* | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m4808-tty-software-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m4808-tty-hardware-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega4808" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo-avr0/tty-avr0" | |
| FIRMWARE_NAME: "tty_hw_twi_m4808" | |
| PREPROCESSOR: "-DF_CPU=20000000UL -DOLED_HAL_PLATFORM=avr0" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr/* | |
| sed -i '/^\s*#define OLED_USE_SOFT_TWI/s/^/\/\//' ${{ env.LIBRARY_PATH }}/oled/oled.h | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m4808-tty-hardware-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m4808-frame-software-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega4808" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo-avr0/frame-avr0" | |
| FIRMWARE_NAME: "frame_sw_twi_m4808" | |
| PREPROCESSOR: "-DF_CPU=20000000UL -DOLED_HAL_PLATFORM=avr0" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr/* | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m4808-frame-software-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 | |
| build-firmware-m4808-frame-hardware-twi: | |
| env: | |
| TOOLCHAIN: "3.7.0.1796" | |
| DFP: "ATmega_DFP.2.2.509" | |
| DEVICE: "atmega4808" | |
| OUTPUT_FOLDER: "./output" | |
| LIBRARY_PATH: "./lib" | |
| PROJECT_PATH: "./demo-avr0/frame-avr0" | |
| FIRMWARE_NAME: "frame_hw_twi_m4808" | |
| PREPROCESSOR: "-DF_CPU=20000000UL -DOLED_HAL_PLATFORM=avr0" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Fetch repository | |
| uses: actions/checkout@v5 | |
| - name: Copy License | |
| run: | | |
| mkdir -p ${{ env.OUTPUT_FOLDER }} | |
| cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }} | |
| - name: Install zip | |
| run: sudo apt-get install -y zip | |
| - name: install-build-tools | |
| run: | | |
| wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz | |
| tar -xf *.tar.gz | |
| - name: install-dfp-package | |
| run: | | |
| wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack | |
| unzip *.atpack -d ./DFP | |
| - name: build-firmware | |
| run: | | |
| mkdir -p temp | |
| rm -rf ./temp/* | |
| rm -rf ./lib/hal/avr/* | |
| sed -i '/^\s*#define OLED_USE_SOFT_TWI/s/^/\/\//' ${{ env.LIBRARY_PATH }}/oled/oled.h | |
| build_with_defines() { | |
| local defines="$1" | |
| local libraries="" | |
| while read -r file; do | |
| local filename=$(basename -- "$file") | |
| filename="${filename%.*}" | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| $defines \ | |
| -I ./DFP/include -c "${file}" -o "./temp/${filename}.o" | |
| libraries+="./temp/${filename}.o " | |
| done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c') | |
| echo "$libraries" | |
| } | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| ${{ env.PREPROCESSOR }} \ | |
| -c ${{ env.PROJECT_PATH }}/main.c -o ./temp/main.o | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \ | |
| -B ./DFP/gcc/dev/${{ env.DEVICE }} \ | |
| -I ./DFP/include \ | |
| -o ./temp/main.elf ./temp/main.o \ | |
| ${{ env.PREPROCESSOR }} \ | |
| $(build_with_defines "${{ env.PREPROCESSOR }}") | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex | |
| ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \ | |
| -O ihex ./temp/main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep | |
| tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }} | |
| zip -r build.zip ${{ env.OUTPUT_FOLDER }} | |
| - name: upload-firmware | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: firmware-m4808-frame-hardware-twi | |
| path: ${{ env.OUTPUT_FOLDER }} | |
| retention-days: 1 |