Skip to content

Commit 69b89da

Browse files
committed
Fix firmware copy bug
1 parent b2d5f4c commit 69b89da

File tree

1 file changed

+82
-46
lines changed

1 file changed

+82
-46
lines changed

.github/workflows/build.yml

Lines changed: 82 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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,55 +109,73 @@ jobs:
106109
unzip *.atpack -d ./DFP
107110
- name: build-firmware
108111
run: |
109-
mkdir temp
110-
111-
libraries=""
112+
mkdir -p temp
113+
rm -rf ./temp/*
112114
113-
for dir in ./firmware/lib/*/
114-
do
115-
name=${dir%*/}
116-
echo "Building ${name##*/}"
115+
build_with_defines() {
116+
local defines="$1"
117+
local libraries=""
117118
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+
}
129133
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
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
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
138156
with:
139157
name: firmware-build
140-
path: ${{ env.OutputFolder }}
158+
path: ${{ env.OUTPUT_FOLDER }}
141159
retention-days: 1
142160

143161
build-test-firmware:
144162
env:
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,36 +188,51 @@ jobs:
167188
unzip *.atpack -d ./DFP
168189
- name: build-firmware
169190
run: |
170-
mkdir temp
171-
172-
libraries=""
191+
mkdir -p temp
192+
rm -rf ./temp/*
173193
174-
for dir in ./firmware/lib/*/
175-
do
176-
name=${dir%*/}
177-
echo "Building ${name##*/}"
194+
build_with_defines() {
195+
local defines="$1"
196+
local libraries=""
178197
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+
}
190212
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
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
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
199235
with:
200236
name: firmware-test-build
201-
path: ${{ env.OutputFolder }}
237+
path: ${{ env.OUTPUT_FOLDER }}
202238
retention-days: 1

0 commit comments

Comments
 (0)