Skip to content

Commit 2d8ed3a

Browse files
committed
examples/firmware_swapping: add second fw slot
1 parent db93108 commit 2d8ed3a

1 file changed

Lines changed: 39 additions & 26 deletions

File tree

examples/firmware_swapping/Makefile

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,57 @@ RIOTBASE ?= $(CURDIR)/../..
77
# Activate FW slots
88
FW_SLOTS = 1
99

10-
# Select slot 1
11-
FW_SLOT = 1
10+
# Define the parameters for the FW slot 1
11+
FW_IMAGE1_OFFSET = 0x08004000 # Start at page 8
12+
FW_IMAGE1_LENGTH = 0x3C000 # Reserve 120 pages
13+
FW_METADATA_SPACE = 0x100 # 76 bytes meta-data, 256 byte aligned
14+
FW_IMAGE1_END = 0x08040000 # FW_IMAGE_OFFSET + FW_IMAGE_LENGTH
15+
VERSION_IMG1 = 0x0
16+
UUID_IMG1 = 0xabcd1234
17+
18+
# Define the parameters for the FW slot 1
19+
FW_IMAGE2_OFFSET = 0x08040000 # Start at page 128
20+
FW_IMAGE2_LENGTH = 0x3C000 # Reserve 120 pages
21+
FW_METADATA_SPACE = 0x100 # 76 bytes meta-data, 256 byte aligned
22+
FW_IMAGE1_END = 0x0807C000 # FW_IMAGE_OFFSET + FW_IMAGE_LENGTH
23+
VERSION_IMG2 = 0x0
24+
UUID_IMG2 = 0xefab5678
1225

13-
# Give a version to this build
14-
VERSION = 0x0
15-
16-
# Give an UUID
17-
UUID = 0xabcd1234
18-
19-
# Define the parameters for the FW Update
20-
FW_IMAGE_OFFSET = 0x08004000 # Start at page 8
21-
FW_IMAGE_LENGTH = 0x3C000 # Reserve 120 pages
22-
FW_METADATA_SPACE = 0x100 # 108 bytes meta-data, 256 byte aligned
23-
FW_IMAGE_END = 0x08040000 # FW_IMAGE_OFFSET + FW_IMAGE_LENGTH
24-
2526
bootloader:
2627
@cd ../bootloader; \
2728
CFLAGS+=-DFW_METADATA_SPACE=$(FW_METADATA_SPACE) make clean all; \
2829
cp bin/$(BOARD)/bootloader.hex ../firmware_swapping
2930

3031
gcoap-slot1:
3132
@cd ../gcoap; \
32-
CFLAGS="-DFW_SLOT=$(FW_SLOT) -DVERSION=$(VERSION) -DUUID=$(UUID) \
33+
CFLAGS="-DFW_SLOT=1 -DVERSION=$(VERSION_IMG1) -DUUID=$(UUID_IMG1) \
3334
-DFW_SLOTS=$(FW_SLOTS)" FW_SLOTS=$(FW_SLOTS) \
34-
FW_METADATA_SPACE=$(FW_METADATA_SPACE) FW_SLOT=$(FW_SLOT) \
35-
FW_IMAGE_OFFSET=$(FW_IMAGE_OFFSET) FW_IMAGE_LENGTH=$(FW_IMAGE_LENGTH) \
36-
FW_IMAGE_END=$(FW_IMAGE_END) VERSION=$(VERSION) UUID=$(UUID) \
35+
FW_METADATA_SPACE=$(FW_METADATA_SPACE) FW_SLOT=1 \
36+
FW_IMAGE_OFFSET=$(FW_IMAGE1_OFFSET) FW_IMAGE_LENGTH=$(FW_IMAGE1_LENGTH) \
37+
FW_IMAGE_END=$(FW_IMAGE1_END) VERSION=$(VERSION_IMG1) UUID=$(UUID_IMG1) \
3738
make clean all; \
38-
cp bin/$(BOARD)/slot-image-$(UUID)-$(VERSION).bin ../firmware_swapping
39+
cp bin/$(BOARD)/slot-image-$(UUID_IMG1)-$(VERSION_IMG1).bin ../firmware_swapping
40+
41+
default-slot2:
42+
@cd ../default; \
43+
CFLAGS="-DFW_SLOT=2 -DVERSION=$(VERSION_IMG2) -DUUID=$(UUID_IMG2) \
44+
-DFW_SLOTS=$(FW_SLOTS)" FW_SLOTS=$(FW_SLOTS) \
45+
FW_METADATA_SPACE=$(FW_METADATA_SPACE) FW_SLOT=2 \
46+
FW_IMAGE_OFFSET=$(FW_IMAGE2_OFFSET) FW_IMAGE_LENGTH=$(FW_IMAGE2_LENGTH) \
47+
FW_IMAGE_END=$(FW_IMAGE2_END) VERSION=$(VERSION_IMG2) UUID=$(UUID_IMG2) \
48+
make clean all; \
49+
cp bin/$(BOARD)/slot-image-$(UUID_IMG2)-$(VERSION_IMG2).bin ../firmware_swapping
3950

4051
merge-binary:
41-
srec_cat bootloader.hex -intel -crop 0x08000000 $(FW_IMAGE_OFFSET) \
42-
slot-image-$(UUID)-$(VERSION).bin -binary -offset $(FW_IMAGE_OFFSET) \
43-
-crop $(FW_IMAGE_OFFSET) $(FW_IMAGE_END) \
44-
-o firmware-slot-$(FW_SLOT).hex -intel
45-
46-
master-hex: bootloader gcoap-slot1 merge-binary
52+
srec_cat bootloader.hex -intel -crop 0x08000000 $(FW_IMAGE1_OFFSET) \
53+
slot-image-$(UUID_IMG1)-$(VERSION_IMG1).bin -binary -offset $(FW_IMAGE1_OFFSET) \
54+
-crop $(FW_IMAGE1_OFFSET) $(FW_IMAGE1_END) \
55+
slot-image-$(UUID_IMG2)-$(VERSION_IMG2).bin -binary -offset $(FW_IMAGE2_OFFSET) \
56+
-crop $(FW_IMAGE2_OFFSET) $(FW_IMAGE2_END) \
57+
-o firmware-slots.hex -intel
58+
59+
master-hex: bootloader gcoap-slot1 default-slot2 merge-binary
4760
@true
4861

4962
clean:
50-
@rm *.hex firmware* *.bin
63+
@rm *.hex *.bin

0 commit comments

Comments
 (0)