Skip to content

Commit 2697cd1

Browse files
committed
Add build of test-firmware
1 parent 9c41113 commit 2697cd1

File tree

2 files changed

+151
-5
lines changed

2 files changed

+151
-5
lines changed

.github/workflows/build.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,65 @@ jobs:
138138
with:
139139
name: firmware-build
140140
path: ${{ env.OutputFolder }}
141+
retention-days: 1
142+
143+
build-test-firmware:
144+
env:
145+
TOOLCHAIN: "3.7.0.1796"
146+
DFP: "ATtiny_DFP.2.0.368"
147+
DEVICE: "attiny1606"
148+
OutputFolder: "./output"
149+
FirmwareName: "DIU_TEST"
150+
runs-on: ubuntu-latest
151+
steps:
152+
- name: Fetch repository
153+
uses: actions/checkout@v4
154+
- name: Copy License
155+
run: |
156+
mkdir ${{ env.OutputFolder }}
157+
cp ./LICENSE ${{ env.OutputFolder }}
158+
- name: Install zip
159+
run: sudo apt-get install -y zip
160+
- name: install-build-tools
161+
run: |
162+
wget https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-${{ env.TOOLCHAIN }}-linux.any.x86_64.tar.gz
163+
tar -xf *.tar.gz
164+
- name: install-dfp-package
165+
run: |
166+
wget http://packs.download.atmel.com/Atmel.${{ env.DFP }}.atpack
167+
unzip *.atpack -d ./DFP
168+
- name: build-firmware
169+
run: |
170+
mkdir temp
171+
172+
libraries=""
173+
174+
for dir in ./firmware/lib/*/
175+
do
176+
name=${dir%*/}
177+
echo "Building ${name##*/}"
178+
179+
first_file=$(ls ./firmware/lib/${name##*/}/*.c| head -1)
180+
filename=$(basename -- "$first_file")
181+
filename="${filename%.*}"
182+
183+
./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
184+
185+
libraries+="./temp/${filename}.o "
186+
done
187+
188+
./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
189+
./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}
190+
191+
./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data -O ihex ./temp/main.elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_t1606.hex
192+
./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
193+
194+
tar -czvf build.tar.gz ${{ env.OutputFolder }}
195+
zip -r build.zip ${{ env.OutputFolder }}
196+
197+
- name: upload-test-firmware
198+
uses: actions/upload-artifact@v4
199+
with:
200+
name: firmware-test-build
201+
path: ${{ env.OutputFolder }}
141202
retention-days: 1

.github/workflows/release.yml

Lines changed: 90 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)