11CROSS_COMPILE: =arm-none-eabi-
22CC: =$(CROSS_COMPILE ) gcc
33LD: =$(CROSS_COMPILE ) gcc
4+ AS: =$(CROSS_COMPILE ) gcc
45
56
67OBJCOPY: =$(CROSS_COMPILE ) objcopy
@@ -13,13 +14,14 @@ DEBUG?=0
1314VTOR? =1
1415SWAP? =1
1516CORTEX_M0? =0
17+ NO_ASM =0
1618
1719LSCRIPT: =hal/$(TARGET ) .ld
1820
1921OBJS: = \
2022./hal/$(TARGET ) .o \
2123./src/loader.o \
22- ./src/mem .o \
24+ ./src/string .o \
2325./src/crypto.o \
2426./src/wolfboot.o \
2527./src/image.o \
@@ -29,33 +31,68 @@ OBJS:= \
2931./lib/wolfssl/wolfcrypt/src/wolfmath.o \
3032./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
3133
34+
3235ifeq ($(TARGET ) ,samr21)
3336 CORTEX_M0 =1
3437endif
3538
39+ ifeq ($(SIGN ) ,ECC256)
40+ KEYGEN_TOOL =tools/ecc256/ecc256_keygen
41+ SIGN_TOOL =tools/ecc256/ecc256_sign
42+ PRIVATE_KEY =ecc256.der
43+ else
44+ KEYGEN_TOOL =tools/ed25519/ed25519_keygen
45+ SIGN_TOOL =tools/ed25519/ed25519_sign
46+ PRIVATE_KEY =ed25519.der
47+ endif
48+
49+ MATH_OBJS: =./lib/wolfssl/wolfcrypt/src/sp_int.o
50+
51+
52+
3653ifeq ($(CORTEX_M0 ) ,1)
3754 CFLAGS:=-mcpu =cortex-m0
55+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
3856else
39- CFLAGS:=-mcpu =cortex-m3
57+ ifeq ($(NO_ASM),1)
58+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
59+ CFLAGS:=-mcpu =cortex-m3
60+ else
61+ CFLAGS:=-mcpu =cortex-m3 -DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -fomit-frame-pointer
62+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
63+ endif
64+ endif
65+
66+ ifeq ($(FASTMATH ) ,1)
67+ MATH_OBJS: =./lib/wolfssl/wolfcrypt/src/integer.o
68+ CFLAGS+ =-DUSE_FAST_MATH
4069endif
4170
4271CFLAGS+ =-mthumb -Wall -Wextra -Wno-main -Wstack-usage=1024 -ffreestanding -Wno-unused \
4372 -Ilib/bootutil/include -Iinclude/ -Ilib/wolfssl -nostartfiles \
44- -nostdlib \
4573 -DWOLFSSL_USER_SETTINGS \
74+ -mthumb -mlittle-endian -mthumb-interwork \
4675 -DPLATFORM_$(TARGET )
4776
4877ifeq ($(SIGN ) ,ED25519)
4978 OBJS+ = ./lib/wolfssl/wolfcrypt/src/sha512.o \
5079 ./lib/wolfssl/wolfcrypt/src/ed25519.o \
5180 ./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
5281 ./src/ed25519_pub_key.o
53- CFLAGS+ =-DWOLFBOOT_SIGN_ED25519
82+ CFLAGS+ =-DWOLFBOOT_SIGN_ED25519 -nostdlib -DWOLFSSL_STATIC_MEMORY
83+ LDFLAGS+ =-nostdlib
5484endif
5585
56- ifeq ($(SIGN ) ,EC256)
57- OBJS+ = ./ext/wolfssl/wolfcrypt/src/ecc.o
58- CFLAGS+ =-DWOLFBOOT_SIGN_EC256
86+ ifeq ($(SIGN ) ,ECC256)
87+ OBJS+ = \
88+ $(MATH_OBJS ) \
89+ ./lib/wolfssl/wolfcrypt/src/ecc.o \
90+ ./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
91+ ./lib/wolfssl/wolfcrypt/src/memory.o \
92+ ./lib/wolfssl/wolfcrypt/src/wc_port.o \
93+ ./src/ecc256_pub_key.o \
94+ ./src/xmalloc.o
95+ CFLAGS+ =-DWOLFBOOT_SIGN_ECC256 -DXMALLOC_USER
5996endif
6097
6198ifeq ($(DEBUG ) ,1)
@@ -68,7 +105,9 @@ ifeq ($(VTOR),0)
68105 CFLAGS+ =-DNO_VTOR
69106endif
70107
71- LDFLAGS: =-T $(LSCRIPT ) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles -mcpu=cortex-m3 -mthumb -nostdlib
108+ LDFLAGS: =-T $(LSCRIPT ) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles -mcpu=cortex-m3 -mthumb
109+
110+ ASFLAGS: =$(CFLAGS )
72111
73112all : factory.bin
74113
@@ -92,16 +131,22 @@ test-app/image.bin:
92131tools/ed25519/ed25519_sign :
93132 make -C tools/ed25519
94133
134+ tools/ecc256/ecc256_sign :
135+ make -C tools/ecc256
136+
95137ed25519.der : tools/ed25519/ed25519_sign
96138 tools/ed25519/ed25519_keygen src/ed25519_pub_key.c
97139
98- factory.bin : $(BOOT_IMG ) wolfboot-align.bin tools/ed25519/ed25519_sign ed25519.der
99- tools/ed25519/ed25519_sign $(BOOT_IMG ) ed25519.der 1
140+ ecc256.der : tools/ecc256/ecc256_sign
141+ tools/ecc256/ecc256_keygen src/ecc256_pub_key.c
142+
143+ factory.bin : $(BOOT_IMG ) wolfboot-align.bin $(SIGN_TOOL ) $(PRIVATE_KEY )
144+ $(SIGN_TOOL ) $(BOOT_IMG ) $(PRIVATE_KEY ) 1
100145 cat wolfboot-align.bin $(BOOT_IMG ) .v1.signed > $@
101146
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
147+ second.img : $(BOOT_IMG ) wolfboot-align.bin $( SIGN_TOOL ) $( PRIVATE_KEY )
148+ $( SIGN_TOOL ) $(BOOT_IMG ) $( PRIVATE_KEY ) 1 65536
149+ $( SIGN_TOOL ) $(BOOT_IMG ) $( PRIVATE_KEY ) 2
105150 cat wolfboot-align.bin $(BOOT_IMG ) .v1.signed $(BOOT_IMG ) .v2.signed > $@
106151
107152wolfboot.elf : $(OBJS ) $(LSCRIPT )
@@ -110,14 +155,16 @@ wolfboot.elf: $(OBJS) $(LSCRIPT)
110155
111156src/ed25519_pub_key.c : ed25519.der
112157
113- keys : ed25519 .der
158+ src/ecc256_pub_key.c : ecc256 .der
114159
160+ keys : $(PRIVATE_KEY )
115161
116162clean :
117163 rm -f * .bin * .elf $(OBJS ) wolfboot.map * .bin * .hex
118164 make -C test-app clean
119165
120166distclean : clean
121167 make -C tools/ed25519 clean
122- rm -f * .pem * .der tags ./src/ed25519_pub_key.c
168+ make -C tools/ecc256 clean
169+ rm -f * .pem * .der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c
123170
0 commit comments