@@ -84,16 +84,19 @@ jobs:
8484 TOOLCHAIN : " 3.7.0.1796"
8585 DFP : " ATtiny_DFP.2.0.368"
8686 DEVICE : " attiny1606"
87- OutputFolder : " ./output"
88- FirmwareName : " DIU_FW_1_0"
87+ OUTPUT_FOLDER : " ./output"
88+ LIBRARY_PATH : " ./firmware/lib"
89+ PROJECT_PATH : " ./firmware/DIU_FW_1_0"
90+ FIRMWARE_NAME : " DIU_FW_1_0_t1606"
91+ PREPROCESSOR : " -DF_CPU=12000000UL"
8992 runs-on : ubuntu-latest
9093 steps :
9194 - name : Fetch repository
92- uses : actions/checkout@v4
95+ uses : actions/checkout@v5
9396 - name : Copy License
9497 run : |
95- mkdir ${{ env.OutputFolder }}
96- cp ./LICENSE ${{ env.OutputFolder }}
98+ mkdir -p ${{ env.OUTPUT_FOLDER }}
99+ cp ./LICENSE ${{ env.OUTPUT_FOLDER }}
97100 - name : Install zip
98101 run : sudo apt-get install -y zip
99102 - name : install-build-tools
@@ -106,32 +109,47 @@ jobs:
106109 unzip *.atpack -d ./DFP
107110 - name : build-firmware
108111 run : |
109- mkdir temp
112+ mkdir -p temp
113+ rm -rf ./temp/*
110114
111- libraries=""
115+ build_with_defines() {
116+ local defines="$1"
117+ local libraries=""
112118
113- for dir in ./firmware/lib/*/
114- do
115- name=${dir%*/}
116- echo "Building ${name##*/}"
117-
118- first_file=$(ls ./firmware/lib/${name##*/}/*.c| head -1)
119- filename=$(basename -- "$first_file")
119+ while read -r file; do
120+ local filename=$(basename -- "$file")
120121 filename="${filename%.*}"
121122
122- ./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
123+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \
124+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
125+ $defines \
126+ -I ./DFP/include -c "${file}" -o "./temp/${filename}.o"
123127
124128 libraries+="./temp/${filename}.o "
125- done
129+ done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c')
126130
127- ./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
128- ./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}
131+ echo "$libraries"
132+ }
133+
134+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \
135+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
136+ -I ./DFP/include \
137+ ${{ env.PREPROCESSOR }} \
138+ -c ${{ env.PROJECT_PATH }}/main.c -o ./main.o
139+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \
140+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
141+ -I ./DFP/include \
142+ -o ./main.elf ./main.o \
143+ ${{ env.PREPROCESSOR }} \
144+ $(build_with_defines "${{ env.PREPROCESSOR }}")
129145
130- ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data -O ihex ./temp/main.elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_t1606.hex
131- ./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
146+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \
147+ -O ihex ./main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex
148+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \
149+ -O ihex ./main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep
132150
133- tar -czvf build.tar.gz ${{ env.OutputFolder }}
134- zip -r build.zip ${{ env.OutputFolder }}
151+ tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }}
152+ zip -r build.zip ${{ env.OUTPUT_FOLDER }}
135153
136154 - name : upload-firmware
137155 uses : actions/upload-artifact@v4
@@ -145,16 +163,19 @@ jobs:
145163 TOOLCHAIN : " 3.7.0.1796"
146164 DFP : " ATtiny_DFP.2.0.368"
147165 DEVICE : " attiny1606"
148- OutputFolder : " ./output"
149- FirmwareName : " DIU_TEST"
166+ OUTPUT_FOLDER : " ./output"
167+ LIBRARY_PATH : " ./firmware/lib"
168+ PROJECT_PATH : " ./firmware/DIU_TEST"
169+ FIRMWARE_NAME : " DIU_TEST_t1606"
170+ PREPROCESSOR : " -DF_CPU=12000000UL"
150171 runs-on : ubuntu-latest
151172 steps :
152173 - name : Fetch repository
153- uses : actions/checkout@v4
174+ uses : actions/checkout@v5
154175 - name : Copy License
155176 run : |
156- mkdir ${{ env.OutputFolder }}
157- cp ./LICENSE ${{ env.OutputFolder }}
177+ mkdir -p ${{ env.OUTPUT_FOLDER }}
178+ cp ./LICENSE ${{ env.OUTPUT_FOLDER }}
158179 - name : Install zip
159180 run : sudo apt-get install -y zip
160181 - name : install-build-tools
@@ -167,32 +188,47 @@ jobs:
167188 unzip *.atpack -d ./DFP
168189 - name : build-firmware
169190 run : |
170- mkdir temp
191+ mkdir -p temp
192+ rm -rf ./temp/*
171193
172- libraries=""
194+ build_with_defines() {
195+ local defines="$1"
196+ local libraries=""
173197
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")
198+ while read -r file; do
199+ local filename=$(basename -- "$file")
181200 filename="${filename%.*}"
182201
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
202+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \
203+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
204+ $defines \
205+ -I ./DFP/include -c "${file}" -o "./temp/${filename}.o"
184206
185207 libraries+="./temp/${filename}.o "
186- done
208+ done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c')
187209
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}
210+ echo "$libraries"
211+ }
212+
213+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -x c -O1 -mmcu=${{ env.DEVICE }} -std=gnu99 \
214+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
215+ -I ./DFP/include \
216+ ${{ env.PREPROCESSOR }} \
217+ -c ${{ env.PROJECT_PATH }}/main.c -o ./main.o
218+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -g -mmcu=${{ env.DEVICE }} \
219+ -B ./DFP/gcc/dev/${{ env.DEVICE }} \
220+ -I ./DFP/include \
221+ -o ./main.elf ./main.o \
222+ ${{ env.PREPROCESSOR }} \
223+ $(build_with_defines "${{ env.PREPROCESSOR }}")
190224
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
225+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data \
226+ -O ihex ./main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex
227+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --change-section-lma .eeprom=0 \
228+ -O ihex ./main.elf ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep
193229
194- tar -czvf build.tar.gz ${{ env.OutputFolder }}
195- zip -r build.zip ${{ env.OutputFolder }}
230+ tar -czvf test- build.tar.gz ${{ env.OUTPUT_FOLDER }}
231+ zip -r test- build.zip ${{ env.OUTPUT_FOLDER }}
196232
197233 - name : upload-test-firmware
198234 uses : actions/upload-artifact@v4
0 commit comments