Skip to content

Commit ca9ffba

Browse files
committed
Configuration (via .config), single entry point for options
1 parent 45064ce commit ca9ffba

24 files changed

Lines changed: 210 additions & 85 deletions

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,17 @@ tools/ecc256/ecc256_keygen
6767
cscope.out
6868
tags
6969

70-
# Generated files using target.h
70+
# Generated files
71+
.wolfboot-config
72+
include/target.h
7173
.wolfboot-arch-offset
7274
.wolfboot-offset
7375
.wolfboot-partition-size
76+
.bootloader-partition-size
7477

7578
# Test tools
7679
tools/test-expect-version/test-expect-version
7780
tools/test-update-server/server
81+
config/*.ld
82+
83+

Makefile

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,13 @@
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
3211
CFLAGS:=-D__WOLFBOOT -DWOLFBOOT_VERSION=$(WOLFBOOT_VERSION)UL
33-
LSCRIPT:=hal/$(TARGET).ld
12+
LSCRIPT:=config/target.ld
3413
LDFLAGS:=-T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles
3514
OBJS:= \
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
4727
include arch.mk
4828

@@ -136,26 +116,23 @@ wolfboot.hex: wolfboot.elf
136116
$(Q)$(OBJCOPY) -O ihex $^ $@
137117

138118
align: 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+
180162
src/ed25519_pub_key.c: ed25519.der
181163

182164
src/ecc256_pub_key.c: ecc256.der
@@ -185,12 +167,23 @@ keys: $(PRIVATE_KEY)
185167

186168
clean:
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

191173
distclean: 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

203196
FORCE:
204197

198+
.PHONY: FORCE clean

config/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-include ../.config
2+
include ../tools/config.mk
3+
config:
4+
rm -f ../config/target.ld
5+
rm -f ../.config
6+
rm -f ../include/target.h
7+
@$(foreach q, $(CONFIG_VARS), a=$($q); echo -n $q \? [$$a] :; a=$($q); read SH_$q; test -z $$SH_$q && SH_$q=$$a; echo "$q?=$$SH_$q" >> ../.config;)
8+

config/examples/hifive1.config

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
ARCH?=RISCV
2+
TARGET?=hifive1
3+
SIGN?=ECC256
4+
FREEDOM_E_SDK?=~/src/freedom-e-sdk
5+
DEBUG?=0
6+
VTOR?=1
7+
CORTEX_M0?=0
8+
NO_ASM?=1
9+
ALLOW_DOWNGRADE?=0
10+
NVM_FLASH_WRITEONCE?=0
11+
WOLFBOOT_VERSION?=1
12+
V?=0
13+
SPMATH?=1
14+
RAM_CODE?=1
15+
DUALBANK_SWAP?=0
16+
IMAGE_HEADER_SIZE?=256
17+
WOLFBOOT_PARTITION_SIZE?=0x80000
18+
WOLFBOOT_SECTOR_SIZE?=0x1000
19+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x20020000
20+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x20060000
21+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x200A0000
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
ARCH?=ARM
2+
TARGET?=stm32f7
3+
SIGN?=ECC256
4+
DEBUG?=0
5+
VTOR?=1
6+
CORTEX_M0?=0
7+
NO_ASM?=0
8+
EXT_FLASH?=0
9+
SPI_FLASH?=0
10+
ALLOW_DOWNGRADE?=0
11+
NVM_FLASH_WRITEONCE?=0
12+
WOLFBOOT_VERSION?=1
13+
V?=0
14+
SPMATH?=1
15+
RAM_CODE?=1
16+
DUALBANK_SWAP?=1
17+
IMAGE_HEADER_SIZE?=256
18+
WOLFBOOT_PARTITION_SIZE?=0x80000
19+
WOLFBOOT_SECTOR_SIZE?=0x20000
20+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x8020000
21+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x8120000
22+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x0
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
TARGET=stm32wb
2+
SIGN=ECC256
3+
WOLFBOOT_PARTITION_BOOT_ADDRESS=0xA000
4+
WOLFBOOT_PARTITION_SIZE=0x4000

hal/cc26x2.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MEMORY
22
{
3-
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x0010000
3+
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
44
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
55
}
66

hal/hifive1.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ENTRY( _reset )
44

55
MEMORY
66
{
7-
FLASH(rxai!w) : ORIGIN = 0x20010000, LENGTH = 64K
7+
FLASH(rxai!w) : ORIGIN = 0x20010000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
88
RAM(wxa!ri) : ORIGIN = 0x80000000, LENGTH = 16K
99
}
1010

hal/kinetis.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MEMORY
22
{
3-
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x000A000
3+
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
44
RAM (rwx) : ORIGIN = 0x1FFF0000, LENGTH = 64K
55
}
66

hal/nrf52.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MEMORY
22
{
3-
FLASH (rx) : ORIGIN = 0x0001f000, LENGTH = 0x0010000
3+
FLASH (rx) : ORIGIN = 0x0001f000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
44
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
55
}
66

0 commit comments

Comments
 (0)