@@ -136,7 +136,68 @@ jobs:
136136 name : firmware-build
137137 path : ${{ env.OutputFolder }}
138138 retention-days : 1
139-
139+
140+ build-test-firmware :
141+ env :
142+ TOOLCHAIN : " 3.7.0.1796"
143+ DFP : " ATtiny_DFP.2.0.368"
144+ DEVICE : " attiny1606"
145+ OutputFolder : " ./output"
146+ FirmwareName : " DIU_TEST"
147+ runs-on : ubuntu-latest
148+ steps :
149+ - name : Fetch repository
150+ uses : actions/checkout@v4
151+ - name : Copy License
152+ run : |
153+ mkdir ${{ env.OutputFolder }}
154+ cp ./LICENSE ${{ env.OutputFolder }}
155+ - name : Install zip
156+ run : sudo apt-get install -y zip
157+ - name : install-build-tools
158+ run : |
159+ wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz
160+ tar -xf *.tar.gz
161+ - name : install-dfp-package
162+ run : |
163+ wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack
164+ unzip *.atpack -d ./DFP
165+ - name : build-firmware
166+ run : |
167+ mkdir temp
168+
169+ libraries=""
170+
171+ for dir in ./firmware/lib/*/
172+ do
173+ name=${dir%*/}
174+ echo "Building ${name##*/}"
175+
176+ first_file=$(ls ./firmware/lib/${name##*/}/*.c| head -1)
177+ filename=$(basename -- "$first_file")
178+ filename="${filename%.*}"
179+
180+ ./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 -c ./firmware/lib/${name##*/}/${filename}.c -o ./temp/${filename}.o
181+
182+ libraries+="./temp/${filename}.o "
183+ done
184+
185+ ./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 -c ./firmware/${{ env.FirmwareName }}/main.c -o ./temp/main.o
186+ ./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 ${libraries}
187+
188+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data -O ihex ./temp/main.elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_t1606.hex
189+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex ./temp/main.elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_t1606.eep
190+
191+ tar -czvf test-build.tar.gz ${{ env.OutputFolder }}
192+ zip -r test-build.zip ${{ env.OutputFolder }}
193+
194+ - name : upload-test-firmware
195+ uses : actions/upload-artifact@v4
196+ with :
197+ name : firmware-test-build
198+ path : ${{ env.OutputFolder }}
199+ retention-days : 1
200+
140201 create-release :
141202 needs : [export-kicad, export-freecad, build-firmware]
142203 runs-on : ubuntu-latest
@@ -296,13 +357,37 @@ jobs:
296357 asset_path : ./artifact/build.tar.gz
297358 asset_name : firmware.tar.gz
298359 asset_content_type : application/gzip
299-
300- - name : Upload Build Asset
360+
361+ - name : Download Test Build Artifacts
362+ uses : actions/download-artifact@v4
363+ with :
364+ name : firmware-test-build
365+ path : ./artifact/test-build
366+ - name : Display structure
367+ run : ls -R ./artifact/test-build
368+ - name : Create Compressed File
369+ run : |
370+ cd ./artifact
371+ tar -czvf ./test-build.tar.gz ./test-build
372+ zip -r ./test-build.zip ./test-build
373+ cd ..
374+
375+ - name : Upload Test Build Asset
376+ uses : actions/upload-release-asset@v1
377+ env :
378+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
379+ with :
380+ upload_url : ${{ steps.create_release.outputs.upload_url }}
381+ asset_path : ./artifact/test-build.tar.gz
382+ asset_name : test-firmware.tar.gz
383+ asset_content_type : application/gzip
384+
385+ - name : Upload Test Build Asset
301386 uses : actions/upload-release-asset@v1
302387 env :
303388 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
304389 with :
305390 upload_url : ${{ steps.create_release.outputs.upload_url }}
306- asset_path : ./artifact/build.zip
307- asset_name : firmware.zip
391+ asset_path : ./artifact/test- build.zip
392+ asset_name : test- firmware.zip
308393 asset_content_type : application/zip
0 commit comments