@@ -84,16 +84,19 @@ jobs:
8484 TOOLCHAIN : " 3.7.0.1796"
8585 DFP : " ATtiny_DFP.2.0.368"
8686 DEVICE : " attiny406"
87- OutputFolder : " ./output"
88- FirmwareName : " MAD_FW_1_0"
87+ OUTPUT_FOLDER : " ./output"
88+ LIBRARY_PATH : " ./firmware/lib"
89+ PROJECT_PATH : " ./firmware/MAD_FW_1_0"
90+ FIRMWARE_NAME : " MAD_FW_1_0_t406"
91+ PREPROCESSOR : " -DF_CPU=20000000UL"
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.md ${{ env.OUTPUT_FOLDER }}
97100 - name : Install zip
98101 run : sudo apt-get install -y zip
99102 - name : install-build-tools
@@ -106,32 +109,36 @@ jobs:
106109 unzip *.atpack -d ./DFP
107110 - name : build-firmware
108111 run : |
109- mkdir temp
112+ mkdir -p temp
113+ rm -rf ./temp/*
114+
115+ libraries=""
116+
117+ while read -r file; do
118+ filename=$(basename -- "$file")
119+ filename="${filename%.*}"
110120
111- libraries=" "
121+ echo "Compiling: ${filename}.c from ${file} "
112122
113- for dir in ./firmware/${{ env.FirmwareName }}/*/
114- do
115- name=${dir%*/}
116- echo "Building ${name##*/}"
123+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/${filename}.d" -MT"./temp/${filename}.d" -MT"./temp/${filename}.o" -o "./temp/${filename}.o" "${file}" ${{ env.PREPROCESSOR }}
117124
118- first_file=$(ls ./firmware/${{ env.FirmwareName }}/${name##*/}/*.c| head -1)
119- filename=$(basename -- "$first_file")
120- filename="${filename%.*}"
125+ libraries+="./temp/${filename}.o "
126+ done < <(find "${LIBRARY_PATH}" -type f -name '*.c')
121127
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/${{ env.FirmwareName }}/${name##*/}/${filename}.c -o ./temp/${filename}.o
128+ echo "Libraries: $libraries"
123129
124- libraries+="./temp/${filename}.o "
125- done
130+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/main.d" -MT"./temp/main.d" -MT"./temp/main.o" -o "./temp/main.o" "./${{ env.PROJECT_PATH }}/main.c" ${{ env.PREPROCESSOR }}
126131
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}
129-
130- ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data -O ihex ./temp/main.elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_t406.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 }}_t406.eep
132+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -o "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" ${libraries} ./temp/main.o -Wl,-Map="${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}"
132133
133- tar -czvf build.tar.gz ${{ env.OutputFolder }}
134- zip -r build.zip ${{ env.OutputFolder }}
134+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex"
135+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep" || exit 0
136+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objdump -h -S "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" > "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.lss"
137+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.srec"
138+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-size "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf"
139+
140+ tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }}
141+ zip -r build.zip ${{ env.OUTPUT_FOLDER }}
135142
136143 - name : upload-firmware
137144 uses : actions/upload-artifact@v4
@@ -145,16 +152,19 @@ jobs:
145152 TOOLCHAIN : " 3.7.0.1796"
146153 DFP : " ATtiny_DFP.2.0.368"
147154 DEVICE : " attiny1606"
148- OutputFolder : " ./output"
149- FirmwareName : " MAD_FW_1_0"
155+ OUTPUT_FOLDER : " ./output"
156+ LIBRARY_PATH : " ./firmware/lib"
157+ PROJECT_PATH : " ./firmware/MAD_FW_1_0"
158+ FIRMWARE_NAME : " MAD_FW_1_0_t1606"
159+ PREPROCESSOR : " -DF_CPU=20000000UL"
150160 runs-on : ubuntu-latest
151161 steps :
152162 - name : Fetch repository
153- uses : actions/checkout@v4
163+ uses : actions/checkout@v5
154164 - name : Copy License
155165 run : |
156- mkdir ${{ env.OutputFolder }}
157- cp ./LICENSE ${{ env.OutputFolder }}
166+ mkdir -p ${{ env.OUTPUT_FOLDER }}
167+ cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }}
158168 - name : Install zip
159169 run : sudo apt-get install -y zip
160170 - name : install-build-tools
@@ -167,32 +177,36 @@ jobs:
167177 unzip *.atpack -d ./DFP
168178 - name : build-firmware
169179 run : |
170- mkdir temp
180+ mkdir -p temp
181+ rm -rf ./temp/*
182+
183+ libraries=""
171184
172- libraries=""
185+ while read -r file; do
186+ filename=$(basename -- "$file")
187+ filename="${filename%.*}"
173188
174- for dir in ./firmware/${{ env.FirmwareName }}/*/
175- do
176- name=${dir%*/}
177- echo "Building ${name##*/}"
189+ echo "Compiling: ${filename}.c from ${file}"
178190
179- first_file=$(ls ./firmware/${{ env.FirmwareName }}/${name##*/}/*.c| head -1)
180- filename=$(basename -- "$first_file")
181- filename="${filename%.*}"
191+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/${filename}.d" -MT"./temp/${filename}.d" -MT"./temp/${filename}.o" -o "./temp/${filename}.o" "${file}" ${{ env.PREPROCESSOR }}
182192
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/${{ env.FirmwareName }}/${name##*/}/${filename}.c -o ./temp/${filename}.o
193+ libraries+="./temp/${filename}.o "
194+ done < <(find "${LIBRARY_PATH}" -type f -name '*.c')
184195
185- libraries+="./temp/${filename}.o "
186- done
196+ echo "Libraries: $libraries"
187197
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
198+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/main.d" -MT"./temp/main.d" -MT"./temp/main.o" -o "./temp/main.o" "./${{ env.PROJECT_PATH }}/main.c" ${{ env.PREPROCESSOR }}
193199
194- tar -czvf build.tar.gz ${{ env.OutputFolder }}
195- zip -r build.zip ${{ env.OutputFolder }}
200+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -o "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" ${libraries} ./temp/main.o -Wl,-Map="${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}"
201+
202+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.hex"
203+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep" || exit 0
204+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objdump -h -S "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" > "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.lss"
205+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.srec"
206+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-size "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf"
207+
208+ tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }}
209+ zip -r build.zip ${{ env.OUTPUT_FOLDER }}
196210
197211 - name : upload-firmware
198212 uses : actions/upload-artifact@v4
@@ -206,16 +220,19 @@ jobs:
206220 TOOLCHAIN : " 3.7.0.1796"
207221 DFP : " ATmega_DFP.2.2.509"
208222 DEVICE : " atmega16a"
209- OutputFolder : " ./output"
210- FirmwareName : " MAD_LIB"
223+ OUTPUT_FOLDER : " ./output"
224+ LIBRARY_PATH : " ./firmware/lib"
225+ PROJECT_PATH : " ./firmware/MAD_LIB"
226+ FIRMWARE_NAME : " MAD_LIB_m16a"
227+ PREPROCESSOR : " -DF_CPU=12000000UL"
211228 runs-on : ubuntu-latest
212229 steps :
213230 - name : Fetch repository
214- uses : actions/checkout@v4
231+ uses : actions/checkout@v5
215232 - name : Copy License
216233 run : |
217- mkdir ${{ env.OutputFolder }}
218- cp ./LICENSE ${{ env.OutputFolder }}
234+ mkdir -p ${{ env.OUTPUT_FOLDER }}
235+ cp ./LICENSE.md ${{ env.OUTPUT_FOLDER }}
219236 - name : Install zip
220237 run : sudo apt-get install -y zip
221238 - name : install-build-tools
@@ -228,32 +245,36 @@ jobs:
228245 unzip *.atpack -d ./DFP
229246 - name : build-firmware
230247 run : |
231- mkdir temp
248+ mkdir -p temp
249+ rm -rf ./temp/*
250+
251+ libraries=""
252+
253+ while read -r file; do
254+ filename=$(basename -- "$file")
255+ filename="${filename%.*}"
256+
257+ echo "Compiling: ${filename}.c from ${file}"
232258
233- libraries=""
259+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/${filename}.d" -MT"./temp/${filename}.d" -MT"./temp/${filename}.o" -o "./temp/${filename}.o" "${file}" ${{ env.PREPROCESSOR }}
234260
235- for dir in ./firmware/lib/*/
236- do
237- name=${dir%*/}
238- echo "Building ${name##*/}"
261+ libraries+="./temp/${filename}.o "
262+ done < <(find "${LIBRARY_PATH}" -type f -name '*.c')
239263
240- first_file=$(ls ./firmware/lib/${name##*/}/*.c| head -1)
241- filename=$(basename -- "$first_file")
242- filename="${filename%.*}"
264+ echo "Libraries: $libraries"
243265
244- ./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
266+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"./DFP/include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall - mmcu=${{ env.DEVICE }} -B " ./DFP/gcc/dev/${{ env.DEVICE }}" -c -std=gnu99 -MD -MP -MF "./temp/main.d" -MT"./temp/main.d" -MT"./temp/main.o" -o " ./temp/main.o" "./${{ env.PROJECT_PATH }}/main.c" ${{ env.PREPROCESSOR }}
245267
246- libraries+="./temp/${filename}.o "
247- done
268+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-gcc -o "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" ${libraries} ./temp/main.o -Wl,-Map="${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=${{ env.DEVICE }} -B "./DFP/gcc/dev/${{ env.DEVICE }}"
248269
249- ./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
250- ./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}
251-
252- ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .text -j .data -O ihex ./temp/main. elf ${{ env.OutputFolder }}/${{ env.FirmwareName }}_m16a.hex
253- ./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 }}_m16a.eep
270+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures " ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/ ${{ env.FIRMWARE_NAME }}.hex"
271+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex " ${{ env.OUTPUT_FOLDER }}/ ${{ env.FIRMWARE_NAME }}.elf" "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.eep" || exit 0
272+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objdump -h -S "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf" > "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.lss"
273+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-objcopy -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}. elf" " ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.srec"
274+ ./avr8-gnu-toolchain-linux_x86_64/bin/avr-size " ${{ env.OUTPUT_FOLDER }}/${{ env.FIRMWARE_NAME }}.elf"
254275
255- tar -czvf build.tar.gz ${{ env.OutputFolder }}
256- zip -r build.zip ${{ env.OutputFolder }}
276+ tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }}
277+ zip -r build.zip ${{ env.OUTPUT_FOLDER }}
257278
258279 - name : upload-firmware-demo
259280 uses : actions/upload-artifact@v4
0 commit comments