33# Configure by passing alternate values
44# via environment variables.
55#
6- # Default values:
7- ARCH? =ARM
8- TARGET? =stm32f4
9- SIGN? =ED25519
10- KINETIS? =$(HOME ) /src/FRDM-K64F
11- KINETIS_CPU =MK64FN1M0VLL12
12- KINETIS_DRIVERS? =$(KINETIS ) /devices/MK64F12
13- KINETIS_CMSIS? =$(KINETIS ) /CMSIS
14- FREEDOM_E_SDK? =$(HOME ) /src/freedom-e-sdk
15- DEBUG? =0
16- VTOR? =1
17- CORTEX_M0? =0
18- NO_ASM? =0
19- EXT_FLASH? =0
20- SPI_FLASH? =0
21- ALLOW_DOWNGRADE? =0
22- NVM_FLASH_WRITEONCE? =0
23- WOLFBOOT_VERSION? =0
24- V? =0
25- SPMATH? =1
26- RAM_CODE? =0
27- DUALBANK_SWAP =0
28-
29-
6+ # Configuration values: see tools/config.mk
7+ -include .config
8+ include tools/config.mk
309
3110# # Initializers
3211CFLAGS: =-D__WOLFBOOT -DWOLFBOOT_VERSION=$(WOLFBOOT_VERSION ) UL
33- LSCRIPT: =hal/ $( TARGET ) .ld
12+ LSCRIPT: =config/target .ld
3413LDFLAGS: =-T $(LSCRIPT ) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles
3514OBJS: = \
3615./hal/$(TARGET ) .o \
@@ -43,6 +22,7 @@ OBJS:= \
4322./lib/wolfssl/wolfcrypt/src/wolfmath.o \
4423./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
4524
25+
4626# # Architecture/CPU configuration
4727include arch.mk
4828
@@ -136,26 +116,23 @@ wolfboot.hex: wolfboot.elf
136116 $(Q )$(OBJCOPY ) -O ihex $^ $@
137117
138118align : wolfboot-align.bin
139-
140- wolfboot-align.bin : wolfboot.bin
141- @cat include/target.h | grep WOLFBOOT_PARTITION_BOOT_ADDRESS | tr -d " \n\r" | sed -e " s/.*[ ]//g" > .wolfboot-offset
142- @printf " %d" ` cat .wolfboot-offset` > .wolfboot-offset
119+
120+ .bootloader-partition-size :
121+ @printf " %d" $(WOLFBOOT_PARTITION_BOOT_ADDRESS ) > .wolfboot-offset
143122 @printf " %d" $(ARCH_FLASH_OFFSET ) > .wolfboot-arch-offset
144- @expr ` cat .wolfboot-offset` - ` cat .wolfboot-arch-offset` > .wolfboot-partition-size
145- @dd if=/dev/zero bs=` cat .wolfboot-partition-size` count=1 2> /dev/null | tr " \000" " \377" > $(@ )
146- @# rm -f .wolfboot-partition-size .wolfboot-offset .wolfboot-arch-offset
147- @dd if=$^ of=$(@ ) conv=notrunc 2> /dev/null
123+ @expr ` cat .wolfboot-offset` - ` cat .wolfboot-arch-offset` > .bootloader-partition-size
124+ @rm -f .wolfboot-offset .wolfboot-arch-offset
125+
126+ wolfboot-align.bin : .bootloader-partition-size wolfboot.bin
127+ @dd if=/dev/zero bs=` cat .bootloader-partition-size` count=1 2> /dev/null | tr " \000" " \377" > $(@ )
128+ @dd if=wolfboot.bin of=$(@ ) conv=notrunc 2> /dev/null
148129 @echo
149130 @echo " \t[SIZE]"
150131 @$(SIZE ) wolfboot.elf
151132 @echo
152133
153- test-app/image.bin :
154- @make -C test-app TARGET=$(TARGET ) EXT_FLASH=$(EXT_FLASH ) SPI_FLASH=$(SPI_FLASH ) ARCH=$(ARCH ) \
155- V =$(V ) RAM_CODE=$(RAM_CODE ) WOLFBOOT_VERSION=$(WOLFBOOT_VERSION ) \
156- KINETIS=$(KINETIS ) KINETIS_CPU=$(KINETIS_CPU ) KINETIS_DRIVERS=$(KINETIS_DRIVERS ) \
157- KINETIS_CMSIS=$(KINETIS_CMSIS ) NVM_FLASH_WRITEONCE=$(NVM_FLASH_WRITEONCE ) \
158- FREEDOM_E_SDK=$(FREEDOM_E_SDK )
134+ test-app/image.bin : wolfboot-align.bin
135+ @make -C test-app
159136 @rm -f src/* .o hal/* .o
160137 @$(SIZE ) test-app/image.elf
161138
@@ -173,10 +150,15 @@ factory.bin: $(BOOT_IMG) wolfboot-align.bin $(PRIVATE_KEY)
173150 @echo " \t[MERGE] $@ "
174151 @cat wolfboot-align.bin test-app/image_v1_signed.bin > $@
175152
176- wolfboot.elf : $(OBJS ) $(LSCRIPT )
153+ wolfboot.elf : include/target.h $(OBJS ) $(LSCRIPT )
177154 @echo " \t[LD] $@ "
178155 $(Q )$(LD ) $(LDFLAGS ) -Wl,--start-group $(OBJS ) -Wl,--end-group -o $@
179156
157+ $(LSCRIPT ) : hal/$(TARGET ) .ld .bootloader-partition-size FORCE
158+ @cat hal/$(TARGET ) .ld | \
159+ sed -e " s/##WOLFBOOT_PARTITION_BOOT_ADDRESS##/` cat .bootloader-partition-size` /g" \
160+ > $@
161+
180162src/ed25519_pub_key.c : ed25519.der
181163
182164src/ecc256_pub_key.c : ecc256.der
@@ -185,12 +167,23 @@ keys: $(PRIVATE_KEY)
185167
186168clean :
187169 @find . -type f -name " *.o" | xargs rm -f
188- @rm -f * .bin * .elf wolfboot.map * .bin * .hex
170+ @rm -f * .bin * .elf wolfboot.map * .bin * .hex config/target.ld
189171 @make -C test-app clean
190172
191173distclean : clean
192- @rm -f * .pem * .der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c
174+ @rm -f * .pem * .der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c include/target.h
175+
176+ include/target.h : include/target.h.in FORCE
177+ @cat include/target.h.in | \
178+ sed -e " s/##WOLFBOOT_PARTITION_SIZE##/$( WOLFBOOT_PARTITION_SIZE) /g" | \
179+ sed -e " s/##WOLFBOOT_SECTOR_SIZE##/$( WOLFBOOT_SECTOR_SIZE) /g" | \
180+ sed -e " s/##WOLFBOOT_PARTITION_BOOT_ADDRESS##/$( WOLFBOOT_PARTITION_BOOT_ADDRESS) /g" | \
181+ sed -e " s/##WOLFBOOT_PARTITION_UPDATE_ADDRESS##/$( WOLFBOOT_PARTITION_UPDATE_ADDRESS) /g" | \
182+ sed -e " s/##WOLFBOOT_PARTITION_SWAP_ADDRESS##/$( WOLFBOOT_PARTITION_SWAP_ADDRESS) /g" \
183+ > $@
193184
185+ config : FORCE
186+ make -C config
194187
195188% .o :% .c
196189 @echo " \t[CC-$( ARCH) ] $@ "
@@ -202,3 +195,4 @@ distclean: clean
202195
203196FORCE :
204197
198+ .PHONY : FORCE clean
0 commit comments