Skip to content

Commit 8571c3a

Browse files
committed
Change firmware build workflow
1 parent 4d7bc93 commit 8571c3a

File tree

1 file changed

+41
-63
lines changed

1 file changed

+41
-63
lines changed

.github/workflows/build.yml

Lines changed: 41 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -112,41 +112,30 @@ jobs:
112112
mkdir -p temp
113113
rm -rf ./temp/*
114114
115-
build_with_defines() {
116-
local defines="$1"
117-
local libraries=""
115+
libraries=""
118116
119-
while read -r file; do
120-
local filename=$(basename -- "$file")
117+
while read -r file; do
118+
filename=$(basename -- "$file")
121119
filename="${filename%.*}"
122120
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"
121+
echo "Compiling: ${filename}.c from ${file}"
122+
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 }}
127124
128125
libraries+="./temp/${filename}.o "
129-
done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c')
130-
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 }}")
145-
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
126+
done < <(find "${LIBRARY_PATH}" -type f -name '*.c')
127+
128+
echo "Libraries: $libraries"
129+
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 }}
131+
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 }}"
133+
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"
150139
151140
tar -czvf build.tar.gz ${{ env.OUTPUT_FOLDER }}
152141
zip -r build.zip ${{ env.OUTPUT_FOLDER }}
@@ -191,44 +180,33 @@ jobs:
191180
mkdir -p temp
192181
rm -rf ./temp/*
193182
194-
build_with_defines() {
195-
local defines="$1"
196-
local libraries=""
183+
libraries=""
197184
198-
while read -r file; do
199-
local filename=$(basename -- "$file")
185+
while read -r file; do
186+
filename=$(basename -- "$file")
200187
filename="${filename%.*}"
201188
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"
189+
echo "Compiling: ${filename}.c from ${file}"
190+
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 }}
206192
207193
libraries+="./temp/${filename}.o "
208-
done < <(find "${{ env.LIBRARY_PATH }}" -type f -name '*.c')
209-
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 }}")
224-
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
229-
230-
tar -czvf test-build.tar.gz ${{ env.OUTPUT_FOLDER }}
231-
zip -r test-build.zip ${{ env.OUTPUT_FOLDER }}
194+
done < <(find "${LIBRARY_PATH}" -type f -name '*.c')
195+
196+
echo "Libraries: $libraries"
197+
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 }}
199+
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 }}
232210
233211
- name: upload-test-firmware
234212
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)