11CROSS_COMPILE: =arm-none-eabi-
22CC: =$(CROSS_COMPILE ) gcc
33LD: =$(CROSS_COMPILE ) gcc
4+ AS: =$(CROSS_COMPILE ) gcc
45
56
67OBJCOPY: =$(CROSS_COMPILE ) objcopy
78SIZE: =$(CROSS_COMPILE ) size
89BOOT_IMG? =test-app/image.bin
9- BOOT0_OFFSET? =0x20000
10+ BOOT0_OFFSET? =0x10000
1011SIGN? =ED25519
1112TARGET? =stm32f4
1213DEBUG? =0
@@ -19,7 +20,7 @@ LSCRIPT:=hal/$(TARGET).ld
1920OBJS: = \
2021./hal/$(TARGET ) .o \
2122./src/loader.o \
22- ./src/mem .o \
23+ ./src/string .o \
2324./src/crypto.o \
2425./src/wolfboot.o \
2526./src/image.o \
@@ -29,33 +30,63 @@ OBJS:= \
2930./lib/wolfssl/wolfcrypt/src/wolfmath.o \
3031./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
3132
33+
3234ifeq ($(TARGET ) ,samr21)
3335 CORTEX_M0 =1
3436endif
3537
38+ ifeq ($(SIGN ) ,ECC256)
39+ KEYGEN_TOOL =tools/ecc256/ecc256_keygen
40+ SIGN_TOOL =tools/ecc256/ecc256_sign
41+ PRIVATE_KEY =ecc256.der
42+ else
43+ KEYGEN_TOOL =tools/ed25519/ed25519_keygen
44+ SIGN_TOOL =tools/ed25519/ed25519_sign
45+ PRIVATE_KEY =ed25519.der
46+ endif
47+
48+ MATH_OBJS: =./lib/wolfssl/wolfcrypt/src/sp_int.o
49+
50+
51+
3652ifeq ($(CORTEX_M0 ) ,1)
3753 CFLAGS:=-mcpu =cortex-m0
54+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
3855else
3956 CFLAGS:=-mcpu =cortex-m3
57+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
58+ endif
59+
60+ ifeq ($(FASTMATH ) ,1)
61+ MATH_OBJS: =./lib/wolfssl/wolfcrypt/src/integer.o
62+ CFLAGS+ =-DUSE_FAST_MATH
4063endif
4164
4265CFLAGS+ =-mthumb -Wall -Wextra -Wno-main -Wstack-usage=1024 -ffreestanding -Wno-unused \
4366 -Ilib/bootutil/include -Iinclude/ -Ilib/wolfssl -nostartfiles \
44- -nostdlib \
4567 -DWOLFSSL_USER_SETTINGS \
68+ -mthumb -mlittle-endian -mthumb-interwork \
4669 -DPLATFORM_$(TARGET )
4770
4871ifeq ($(SIGN ) ,ED25519)
4972 OBJS+ = ./lib/wolfssl/wolfcrypt/src/sha512.o \
5073 ./lib/wolfssl/wolfcrypt/src/ed25519.o \
5174 ./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
5275 ./src/ed25519_pub_key.o
53- CFLAGS+ =-DWOLFBOOT_SIGN_ED25519
76+ CFLAGS+ =-DWOLFBOOT_SIGN_ED25519 -nostdlib -DWOLFSSL_STATIC_MEMORY
77+ LDFLAGS+ =-nostdlib
5478endif
5579
56- ifeq ($(SIGN ) ,EC256)
57- OBJS+ = ./ext/wolfssl/wolfcrypt/src/ecc.o
58- CFLAGS+ =-DWOLFBOOT_SIGN_EC256
80+ ifeq ($(SIGN ) ,ECC256)
81+ OBJS+ = \
82+ $(MATH_OBJS ) \
83+ ./lib/wolfssl/wolfcrypt/src/ecc.o \
84+ ./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
85+ ./lib/wolfssl/wolfcrypt/src/memory.o \
86+ ./lib/wolfssl/wolfcrypt/src/wc_port.o \
87+ ./src/ecc256_pub_key.o \
88+ ./src/xmalloc.o
89+ CFLAGS+ =-DWOLFBOOT_SIGN_ECC256 -DXMALLOC_USER
5990endif
6091
6192ifeq ($(DEBUG ) ,1)
@@ -68,7 +99,9 @@ ifeq ($(VTOR),0)
6899 CFLAGS+ =-DNO_VTOR
69100endif
70101
71- LDFLAGS: =-T $(LSCRIPT ) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles -mcpu=cortex-m3 -mthumb -nostdlib
102+ LDFLAGS: =-T $(LSCRIPT ) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles -mcpu=cortex-m3 -mthumb
103+
104+ ASFLAGS: =$(CFLAGS )
72105
73106all : factory.bin
74107
@@ -92,16 +125,22 @@ test-app/image.bin:
92125tools/ed25519/ed25519_sign :
93126 make -C tools/ed25519
94127
128+ tools/ecc256/ecc256_sign :
129+ make -C tools/ecc256
130+
95131ed25519.der : tools/ed25519/ed25519_sign
96132 tools/ed25519/ed25519_keygen src/ed25519_pub_key.c
97133
98- factory.bin : $(BOOT_IMG ) wolfboot-align.bin tools/ed25519/ed25519_sign ed25519.der
99- tools/ed25519/ed25519_sign $(BOOT_IMG ) ed25519.der 1
134+ ecc256.der : tools/ecc256/ecc256_sign
135+ tools/ecc256/ecc256_keygen src/ecc256_pub_key.c
136+
137+ factory.bin : $(BOOT_IMG ) wolfboot-align.bin $(SIGN_TOOL ) $(PRIVATE_KEY )
138+ $(SIGN_TOOL ) $(BOOT_IMG ) $(PRIVATE_KEY ) 1
100139 cat wolfboot-align.bin $(BOOT_IMG ) .v1.signed > $@
101140
102- second.img : $(BOOT_IMG ) wolfboot-align.bin tools/ed25519/ed25519_sign ed25519.der
103- tools/ed25519/ed25519_sign $(BOOT_IMG ) ed25519.der 1 65536
104- tools/ed25519/ed25519_sign $(BOOT_IMG ) ed25519.der 2
141+ second.img : $(BOOT_IMG ) wolfboot-align.bin $( SIGN_TOOL ) $( PRIVATE_KEY )
142+ $( SIGN_TOOL ) $(BOOT_IMG ) $( PRIVATE_KEY ) 1 65536
143+ $( SIGN_TOOL ) $(BOOT_IMG ) $( PRIVATE_KEY ) 2
105144 cat wolfboot-align.bin $(BOOT_IMG ) .v1.signed $(BOOT_IMG ) .v2.signed > $@
106145
107146wolfboot.elf : $(OBJS ) $(LSCRIPT )
@@ -110,14 +149,16 @@ wolfboot.elf: $(OBJS) $(LSCRIPT)
110149
111150src/ed25519_pub_key.c : ed25519.der
112151
113- keys : ed25519 .der
152+ src/ecc256_pub_key.c : ecc256 .der
114153
154+ keys : $(PRIVATE_KEY )
115155
116156clean :
117157 rm -f * .bin * .elf $(OBJS ) wolfboot.map * .bin * .hex
118158 make -C test-app clean
119159
120160distclean : clean
121161 make -C tools/ed25519 clean
122- rm -f * .pem * .der tags ./src/ed25519_pub_key.c
162+ make -C tools/ecc256 clean
163+ rm -f * .pem * .der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c
123164
0 commit comments