mirror of https://github.com/wolfSSL/wolfBoot.git
Configuration (via .config), single entry point for options
parent
45064ced50
commit
ca9ffbab7c
|
@ -67,11 +67,17 @@ tools/ecc256/ecc256_keygen
|
||||||
cscope.out
|
cscope.out
|
||||||
tags
|
tags
|
||||||
|
|
||||||
# Generated files using target.h
|
# Generated files
|
||||||
|
.wolfboot-config
|
||||||
|
include/target.h
|
||||||
.wolfboot-arch-offset
|
.wolfboot-arch-offset
|
||||||
.wolfboot-offset
|
.wolfboot-offset
|
||||||
.wolfboot-partition-size
|
.wolfboot-partition-size
|
||||||
|
.bootloader-partition-size
|
||||||
|
|
||||||
# Test tools
|
# Test tools
|
||||||
tools/test-expect-version/test-expect-version
|
tools/test-expect-version/test-expect-version
|
||||||
tools/test-update-server/server
|
tools/test-update-server/server
|
||||||
|
config/*.ld
|
||||||
|
|
||||||
|
|
||||||
|
|
78
Makefile
78
Makefile
|
@ -3,34 +3,13 @@
|
||||||
# Configure by passing alternate values
|
# Configure by passing alternate values
|
||||||
# via environment variables.
|
# via environment variables.
|
||||||
#
|
#
|
||||||
# Default values:
|
# Configuration values: see tools/config.mk
|
||||||
ARCH?=ARM
|
-include .config
|
||||||
TARGET?=stm32f4
|
include tools/config.mk
|
||||||
SIGN?=ED25519
|
|
||||||
KINETIS?=$(HOME)/src/FRDM-K64F
|
|
||||||
KINETIS_CPU=MK64FN1M0VLL12
|
|
||||||
KINETIS_DRIVERS?=$(KINETIS)/devices/MK64F12
|
|
||||||
KINETIS_CMSIS?=$(KINETIS)/CMSIS
|
|
||||||
FREEDOM_E_SDK?=$(HOME)/src/freedom-e-sdk
|
|
||||||
DEBUG?=0
|
|
||||||
VTOR?=1
|
|
||||||
CORTEX_M0?=0
|
|
||||||
NO_ASM?=0
|
|
||||||
EXT_FLASH?=0
|
|
||||||
SPI_FLASH?=0
|
|
||||||
ALLOW_DOWNGRADE?=0
|
|
||||||
NVM_FLASH_WRITEONCE?=0
|
|
||||||
WOLFBOOT_VERSION?=0
|
|
||||||
V?=0
|
|
||||||
SPMATH?=1
|
|
||||||
RAM_CODE?=0
|
|
||||||
DUALBANK_SWAP=0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Initializers
|
## Initializers
|
||||||
CFLAGS:=-D__WOLFBOOT -DWOLFBOOT_VERSION=$(WOLFBOOT_VERSION)UL
|
CFLAGS:=-D__WOLFBOOT -DWOLFBOOT_VERSION=$(WOLFBOOT_VERSION)UL
|
||||||
LSCRIPT:=hal/$(TARGET).ld
|
LSCRIPT:=config/target.ld
|
||||||
LDFLAGS:=-T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles
|
LDFLAGS:=-T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles
|
||||||
OBJS:= \
|
OBJS:= \
|
||||||
./hal/$(TARGET).o \
|
./hal/$(TARGET).o \
|
||||||
|
@ -43,6 +22,7 @@ OBJS:= \
|
||||||
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
|
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
|
||||||
./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
|
./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
|
||||||
|
|
||||||
|
|
||||||
## Architecture/CPU configuration
|
## Architecture/CPU configuration
|
||||||
include arch.mk
|
include arch.mk
|
||||||
|
|
||||||
|
@ -136,26 +116,23 @@ wolfboot.hex: wolfboot.elf
|
||||||
$(Q)$(OBJCOPY) -O ihex $^ $@
|
$(Q)$(OBJCOPY) -O ihex $^ $@
|
||||||
|
|
||||||
align: wolfboot-align.bin
|
align: wolfboot-align.bin
|
||||||
|
|
||||||
wolfboot-align.bin: wolfboot.bin
|
.bootloader-partition-size:
|
||||||
@cat include/target.h | grep WOLFBOOT_PARTITION_BOOT_ADDRESS | tr -d "\n\r" | sed -e "s/.*[ ]//g" > .wolfboot-offset
|
@printf "%d" $(WOLFBOOT_PARTITION_BOOT_ADDRESS) > .wolfboot-offset
|
||||||
@printf "%d" `cat .wolfboot-offset` > .wolfboot-offset
|
|
||||||
@printf "%d" $(ARCH_FLASH_OFFSET) > .wolfboot-arch-offset
|
@printf "%d" $(ARCH_FLASH_OFFSET) > .wolfboot-arch-offset
|
||||||
@expr `cat .wolfboot-offset` - `cat .wolfboot-arch-offset` > .wolfboot-partition-size
|
@expr `cat .wolfboot-offset` - `cat .wolfboot-arch-offset` > .bootloader-partition-size
|
||||||
@dd if=/dev/zero bs=`cat .wolfboot-partition-size` count=1 2>/dev/null | tr "\000" "\377" > $(@)
|
@rm -f .wolfboot-offset .wolfboot-arch-offset
|
||||||
@#rm -f .wolfboot-partition-size .wolfboot-offset .wolfboot-arch-offset
|
|
||||||
@dd if=$^ of=$(@) conv=notrunc 2>/dev/null
|
wolfboot-align.bin: .bootloader-partition-size wolfboot.bin
|
||||||
|
@dd if=/dev/zero bs=`cat .bootloader-partition-size` count=1 2>/dev/null | tr "\000" "\377" > $(@)
|
||||||
|
@dd if=wolfboot.bin of=$(@) conv=notrunc 2>/dev/null
|
||||||
@echo
|
@echo
|
||||||
@echo "\t[SIZE]"
|
@echo "\t[SIZE]"
|
||||||
@$(SIZE) wolfboot.elf
|
@$(SIZE) wolfboot.elf
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
test-app/image.bin:
|
test-app/image.bin: wolfboot-align.bin
|
||||||
@make -C test-app TARGET=$(TARGET) EXT_FLASH=$(EXT_FLASH) SPI_FLASH=$(SPI_FLASH) ARCH=$(ARCH) \
|
@make -C test-app
|
||||||
V=$(V) RAM_CODE=$(RAM_CODE) WOLFBOOT_VERSION=$(WOLFBOOT_VERSION)\
|
|
||||||
KINETIS=$(KINETIS) KINETIS_CPU=$(KINETIS_CPU) KINETIS_DRIVERS=$(KINETIS_DRIVERS) \
|
|
||||||
KINETIS_CMSIS=$(KINETIS_CMSIS) NVM_FLASH_WRITEONCE=$(NVM_FLASH_WRITEONCE) \
|
|
||||||
FREEDOM_E_SDK=$(FREEDOM_E_SDK)
|
|
||||||
@rm -f src/*.o hal/*.o
|
@rm -f src/*.o hal/*.o
|
||||||
@$(SIZE) test-app/image.elf
|
@$(SIZE) test-app/image.elf
|
||||||
|
|
||||||
|
@ -173,10 +150,15 @@ factory.bin: $(BOOT_IMG) wolfboot-align.bin $(PRIVATE_KEY)
|
||||||
@echo "\t[MERGE] $@"
|
@echo "\t[MERGE] $@"
|
||||||
@cat wolfboot-align.bin test-app/image_v1_signed.bin > $@
|
@cat wolfboot-align.bin test-app/image_v1_signed.bin > $@
|
||||||
|
|
||||||
wolfboot.elf: $(OBJS) $(LSCRIPT)
|
wolfboot.elf: include/target.h $(OBJS) $(LSCRIPT)
|
||||||
@echo "\t[LD] $@"
|
@echo "\t[LD] $@"
|
||||||
$(Q)$(LD) $(LDFLAGS) -Wl,--start-group $(OBJS) -Wl,--end-group -o $@
|
$(Q)$(LD) $(LDFLAGS) -Wl,--start-group $(OBJS) -Wl,--end-group -o $@
|
||||||
|
|
||||||
|
$(LSCRIPT): hal/$(TARGET).ld .bootloader-partition-size FORCE
|
||||||
|
@cat hal/$(TARGET).ld | \
|
||||||
|
sed -e "s/##WOLFBOOT_PARTITION_BOOT_ADDRESS##/`cat .bootloader-partition-size`/g" \
|
||||||
|
> $@
|
||||||
|
|
||||||
src/ed25519_pub_key.c: ed25519.der
|
src/ed25519_pub_key.c: ed25519.der
|
||||||
|
|
||||||
src/ecc256_pub_key.c: ecc256.der
|
src/ecc256_pub_key.c: ecc256.der
|
||||||
|
@ -185,12 +167,23 @@ keys: $(PRIVATE_KEY)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@find . -type f -name "*.o" | xargs rm -f
|
@find . -type f -name "*.o" | xargs rm -f
|
||||||
@rm -f *.bin *.elf wolfboot.map *.bin *.hex
|
@rm -f *.bin *.elf wolfboot.map *.bin *.hex config/target.ld
|
||||||
@make -C test-app clean
|
@make -C test-app clean
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
@rm -f *.pem *.der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c
|
@rm -f *.pem *.der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c include/target.h
|
||||||
|
|
||||||
|
include/target.h: include/target.h.in FORCE
|
||||||
|
@cat include/target.h.in | \
|
||||||
|
sed -e "s/##WOLFBOOT_PARTITION_SIZE##/$(WOLFBOOT_PARTITION_SIZE)/g" | \
|
||||||
|
sed -e "s/##WOLFBOOT_SECTOR_SIZE##/$(WOLFBOOT_SECTOR_SIZE)/g" | \
|
||||||
|
sed -e "s/##WOLFBOOT_PARTITION_BOOT_ADDRESS##/$(WOLFBOOT_PARTITION_BOOT_ADDRESS)/g" | \
|
||||||
|
sed -e "s/##WOLFBOOT_PARTITION_UPDATE_ADDRESS##/$(WOLFBOOT_PARTITION_UPDATE_ADDRESS)/g" | \
|
||||||
|
sed -e "s/##WOLFBOOT_PARTITION_SWAP_ADDRESS##/$(WOLFBOOT_PARTITION_SWAP_ADDRESS)/g" \
|
||||||
|
> $@
|
||||||
|
|
||||||
|
config: FORCE
|
||||||
|
make -C config
|
||||||
|
|
||||||
%.o:%.c
|
%.o:%.c
|
||||||
@echo "\t[CC-$(ARCH)] $@"
|
@echo "\t[CC-$(ARCH)] $@"
|
||||||
|
@ -202,3 +195,4 @@ distclean: clean
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
||||||
|
.PHONY: FORCE clean
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
-include ../.config
|
||||||
|
include ../tools/config.mk
|
||||||
|
config:
|
||||||
|
rm -f ../config/target.ld
|
||||||
|
rm -f ../.config
|
||||||
|
rm -f ../include/target.h
|
||||||
|
@$(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;)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
ARCH?=RISCV
|
||||||
|
TARGET?=hifive1
|
||||||
|
SIGN?=ECC256
|
||||||
|
FREEDOM_E_SDK?=~/src/freedom-e-sdk
|
||||||
|
DEBUG?=0
|
||||||
|
VTOR?=1
|
||||||
|
CORTEX_M0?=0
|
||||||
|
NO_ASM?=1
|
||||||
|
ALLOW_DOWNGRADE?=0
|
||||||
|
NVM_FLASH_WRITEONCE?=0
|
||||||
|
WOLFBOOT_VERSION?=1
|
||||||
|
V?=0
|
||||||
|
SPMATH?=1
|
||||||
|
RAM_CODE?=1
|
||||||
|
DUALBANK_SWAP?=0
|
||||||
|
IMAGE_HEADER_SIZE?=256
|
||||||
|
WOLFBOOT_PARTITION_SIZE?=0x80000
|
||||||
|
WOLFBOOT_SECTOR_SIZE?=0x1000
|
||||||
|
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x20020000
|
||||||
|
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x20060000
|
||||||
|
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x200A0000
|
|
@ -0,0 +1,22 @@
|
||||||
|
ARCH?=ARM
|
||||||
|
TARGET?=stm32f7
|
||||||
|
SIGN?=ECC256
|
||||||
|
DEBUG?=0
|
||||||
|
VTOR?=1
|
||||||
|
CORTEX_M0?=0
|
||||||
|
NO_ASM?=0
|
||||||
|
EXT_FLASH?=0
|
||||||
|
SPI_FLASH?=0
|
||||||
|
ALLOW_DOWNGRADE?=0
|
||||||
|
NVM_FLASH_WRITEONCE?=0
|
||||||
|
WOLFBOOT_VERSION?=1
|
||||||
|
V?=0
|
||||||
|
SPMATH?=1
|
||||||
|
RAM_CODE?=1
|
||||||
|
DUALBANK_SWAP?=1
|
||||||
|
IMAGE_HEADER_SIZE?=256
|
||||||
|
WOLFBOOT_PARTITION_SIZE?=0x80000
|
||||||
|
WOLFBOOT_SECTOR_SIZE?=0x20000
|
||||||
|
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x8020000
|
||||||
|
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x8120000
|
||||||
|
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x0
|
|
@ -0,0 +1,4 @@
|
||||||
|
TARGET=stm32wb
|
||||||
|
SIGN=ECC256
|
||||||
|
WOLFBOOT_PARTITION_BOOT_ADDRESS=0xA000
|
||||||
|
WOLFBOOT_PARTITION_SIZE=0x4000
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x0010000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
|
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ ENTRY( _reset )
|
||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH(rxai!w) : ORIGIN = 0x20010000, LENGTH = 64K
|
FLASH(rxai!w) : ORIGIN = 0x20010000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM(wxa!ri) : ORIGIN = 0x80000000, LENGTH = 16K
|
RAM(wxa!ri) : ORIGIN = 0x80000000, LENGTH = 16K
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x000A000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x1FFF0000, LENGTH = 64K
|
RAM (rwx) : ORIGIN = 0x1FFF0000, LENGTH = 64K
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x0001f000, LENGTH = 0x0010000
|
FLASH (rx) : ORIGIN = 0x0001f000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
|
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0xD800
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x0010000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x4000
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x4000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x001FFE0
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,13 @@ SECTIONS
|
||||||
_end_text = .;
|
_end_text = .;
|
||||||
} > FLASH
|
} > FLASH
|
||||||
|
|
||||||
|
.edidx :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
} > FLASH
|
||||||
|
|
||||||
|
|
||||||
_stored_data = .;
|
_stored_data = .;
|
||||||
.data : AT (_stored_data)
|
.data : AT (_stored_data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -489,7 +489,9 @@ void RAMFUNCTION fork_bootloader(void)
|
||||||
flash_erase_sector(i);
|
flash_erase_sector(i);
|
||||||
hal_flash_write(WOLFBOOT_ORIG_BOOTLOADER, bootloader_copy_mem, BOOTLOADER_SIZE);
|
hal_flash_write(WOLFBOOT_ORIG_BOOTLOADER, bootloader_copy_mem, BOOTLOADER_SIZE);
|
||||||
hal_flash_lock();
|
hal_flash_lock();
|
||||||
arch_reboot();
|
#ifdef __WOLFBOOT
|
||||||
|
//arch_reboot();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x001FFE0
|
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 /* mapping TCM only */
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 /* mapping TCM only */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,12 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_end_text = .;
|
_end_text = .;
|
||||||
} > FLASH
|
} > FLASH
|
||||||
|
|
||||||
|
.edidx :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
} > FLASH
|
||||||
|
|
||||||
_stored_data = .;
|
_stored_data = .;
|
||||||
.data : AT (_stored_data)
|
.data : AT (_stored_data)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x8000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008FFF
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008FFF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x8000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x8000
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,12 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_end_text = .;
|
_end_text = .;
|
||||||
} > FLASH
|
} > FLASH
|
||||||
|
|
||||||
|
.edidx :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
} > FLASH
|
||||||
|
|
||||||
_stored_data = .;
|
_stored_data = .;
|
||||||
.data : AT (_stored_data)
|
.data : AT (_stored_data)
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
*
|
*
|
||||||
* User configurable build-time options for bootloader and application offsets
|
* User configurable build-time options for bootloader and application offsets
|
||||||
*
|
*
|
||||||
|
* target.h is automatically generated using the template in target.h.in by running
|
||||||
|
* "make config".
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 wolfSSL Inc.
|
* Copyright (C) 2019 wolfSSL Inc.
|
||||||
*
|
*
|
||||||
|
@ -25,30 +27,11 @@
|
||||||
#ifndef H_TARGETS_TARGET_
|
#ifndef H_TARGETS_TARGET_
|
||||||
#define H_TARGETS_TARGET_
|
#define H_TARGETS_TARGET_
|
||||||
|
|
||||||
/* Example flash partitioning.
|
#define WOLFBOOT_SECTOR_SIZE ##WOLFBOOT_SECTOR_SIZE##
|
||||||
* Ensure that your firmware entry point is
|
#define WOLFBOOT_PARTITION_BOOT_ADDRESS ##WOLFBOOT_PARTITION_BOOT_ADDRESS##
|
||||||
* at FLASH_AREA_IMAGE_0_OFFSET + 0x100
|
#define WOLFBOOT_PARTITION_SIZE ##WOLFBOOT_PARTITION_SIZE##
|
||||||
*/
|
#define WOLFBOOT_PARTITION_UPDATE_ADDRESS ##WOLFBOOT_PARTITION_UPDATE_ADDRESS##
|
||||||
|
#define WOLFBOOT_PARTITION_SWAP_ADDRESS ##WOLFBOOT_PARTITION_SWAP_ADDRESS##
|
||||||
|
|
||||||
#define WOLFBOOT_SECTOR_SIZE 0x20000
|
|
||||||
#define WOLFBOOT_PARTITION_BOOT_ADDRESS 0x20000
|
|
||||||
|
|
||||||
#ifdef EXT_FLASH
|
|
||||||
|
|
||||||
/* Test configuration with 1MB external memory */
|
|
||||||
/* (Addresses are relative to the beginning of the ext)*/
|
|
||||||
|
|
||||||
#define WOLFBOOT_PARTITION_SIZE 0x80000
|
|
||||||
#define WOLFBOOT_PARTITION_UPDATE_ADDRESS 0x00000
|
|
||||||
#define WOLFBOOT_PARTITION_SWAP_ADDRESS 0x80000
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Test configuration with internal memory */
|
|
||||||
#define WOLFBOOT_PARTITION_SIZE 0x20000
|
|
||||||
#define WOLFBOOT_PARTITION_UPDATE_ADDRESS 0x40000
|
|
||||||
#define WOLFBOOT_PARTITION_SWAP_ADDRESS 0x60000
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !H_TARGETS_TARGET_ */
|
#endif /* !H_TARGETS_TARGET_ */
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x08020100, LENGTH = 0x001FF00
|
FLASH (rx) : ORIGIN = ##WOLFBOOT_TEST_APP_ADDRESS##, LENGTH = ##WOLFBOOT_TEST_APP_SIZE##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ SECTIONS
|
||||||
_start_data = .;
|
_start_data = .;
|
||||||
KEEP(*(.data*))
|
KEEP(*(.data*))
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
KEEP(*(.ramcode))
|
||||||
|
. = ALIGN(4);
|
||||||
_end_data = .;
|
_end_data = .;
|
||||||
} > RAM
|
} > RAM
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (rx) : ORIGIN = 0x0020100, LENGTH = 0x005FFF
|
FLASH (rx) : ORIGIN = ##WOLFBOOT_TEST_APP_ADDRESS##, LENGTH = ##WOLFBOOT_TEST_APP_SIZE##
|
||||||
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 16K /* Run in lowmem */
|
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 16K /* Run in lowmem */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ SECTIONS
|
||||||
_start_data = .;
|
_start_data = .;
|
||||||
KEEP(*(.data*))
|
KEEP(*(.data*))
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
KEEP(*(.ramcode))
|
||||||
|
. = ALIGN(4);
|
||||||
_end_data = .;
|
_end_data = .;
|
||||||
} > RAM
|
} > RAM
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
-include ../.config
|
||||||
|
-include ../tools/config.mk
|
||||||
TARGET?=none
|
TARGET?=none
|
||||||
ARCH?=ARM
|
ARCH?=ARM
|
||||||
KINETIS_CMSIS?=$(KINETIS)/CMSIS
|
KINETIS_CMSIS?=$(KINETIS)/CMSIS
|
||||||
|
@ -19,9 +21,11 @@ ifeq ($(V),0)
|
||||||
Q=@
|
Q=@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LSCRIPT:=$(ARCH).ld
|
ENTRY_POINT=`cat .entry-point-address`
|
||||||
|
LSCRIPT:=../config/target-app.ld
|
||||||
|
LSCRIPT_TEMPLATE:=$(ARCH).ld
|
||||||
ifeq ($(TARGET),stm32f7)
|
ifeq ($(TARGET),stm32f7)
|
||||||
LSCRIPT=ARM-stm32f7.ld
|
LSCRIPT_TEMPLATE=ARM-stm32f7.ld
|
||||||
CFLAGS+=-DDUALBANK_SWAP
|
CFLAGS+=-DDUALBANK_SWAP
|
||||||
endif
|
endif
|
||||||
LDFLAGS:=$(CFLAGS) -T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=image.map
|
LDFLAGS:=$(CFLAGS) -T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=image.map
|
||||||
|
@ -38,7 +42,7 @@ endif
|
||||||
ifeq ($(TARGET),kinetis)
|
ifeq ($(TARGET),kinetis)
|
||||||
CFLAGS+= -I$(KINETIS_DRIVERS)/drivers -I$(KINETIS_DRIVERS) -DCPU_$(KINETIS_CPU) -I$(KINETIS_CMSIS)/Include -DDEBUG_CONSOLE_ASSERT_DISABLE=1 -DNVM_FLASH_WRITEONCE=1
|
CFLAGS+= -I$(KINETIS_DRIVERS)/drivers -I$(KINETIS_DRIVERS) -DCPU_$(KINETIS_CPU) -I$(KINETIS_CMSIS)/Include -DDEBUG_CONSOLE_ASSERT_DISABLE=1 -DNVM_FLASH_WRITEONCE=1
|
||||||
APP_OBJS+= $(KINETIS_DRIVERS)/drivers/fsl_clock.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_flash.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_cache.o \
|
APP_OBJS+= $(KINETIS_DRIVERS)/drivers/fsl_clock.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_flash.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_cache.o \
|
||||||
$(KINETIS_DRIVERS)/drivers/fsl_ftfx_controller.o $(KINETIS_DRIVERS)/drivers/fsl_gpio.o
|
$(KINETIS_DRIVERS)/drivers/fsl_ftfx_controller.o $(KINETIS_DRIVERS)/drivers/fsl_gpio.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET),stm32g0)
|
ifeq ($(TARGET),stm32g0)
|
||||||
|
@ -102,4 +106,20 @@ standalone: image.bin
|
||||||
$(Q)$(CC) $(CFLAGS) -c -o $@ $^
|
$(Q)$(CC) $(CFLAGS) -c -o $@ $^
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -f *.bin *.elf tags *.o
|
@rm -f *.bin *.elf tags *.o $(LSCRIPT)
|
||||||
|
|
||||||
|
$(LSCRIPT): $(LSCRIPT_TEMPLATE) FORCE
|
||||||
|
@printf "%d" $(WOLFBOOT_PARTITION_BOOT_ADDRESS) > .wolfboot-offset
|
||||||
|
@printf "%d" $(WOLFBOOT_PARTITION_SIZE) > .partition-size
|
||||||
|
@printf "%d" $(IMAGE_HEADER_SIZE) > .header-size
|
||||||
|
@expr `cat .wolfboot-offset` + `cat .header-size` > .entry-point
|
||||||
|
@printf "0x%X" `cat .entry-point` > .entry-point
|
||||||
|
@expr `cat .partition-size` - `cat .header-size` > .app-size
|
||||||
|
@printf "0x%X" `cat .app-size` > .app-size
|
||||||
|
@ cat $(LSCRIPT_TEMPLATE) | \
|
||||||
|
sed -e "s/##WOLFBOOT_TEST_APP_SIZE##/`cat .app-size`/g" | \
|
||||||
|
sed -e "s/##WOLFBOOT_TEST_APP_ADDRESS##/`cat .entry-point`/g" \
|
||||||
|
> $(@)
|
||||||
|
@rm -f .app-size .entry-point .wolfboot-offset .partition-size .header-size
|
||||||
|
|
||||||
|
.PHONY: FORCE clean
|
||||||
|
|
|
@ -4,7 +4,7 @@ ENTRY( _reset )
|
||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH(rxai!w) : ORIGIN = 0x20020100, LENGTH = 256K - 0x100
|
FLASH(rxai!w) : ORIGIN = ##WOLFBOOT_TEST_APP_ADDRESS##, LENGTH = ##WOLFBOOT_TEST_APP_SIZE##
|
||||||
RAM(wxa!ri) : ORIGIN = 0x80001000, LENGTH = 12K
|
RAM(wxa!ri) : ORIGIN = 0x80001000, LENGTH = 12K
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ SECTIONS
|
||||||
_start_data = .;
|
_start_data = .;
|
||||||
KEEP(*(.data*))
|
KEEP(*(.data*))
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
KEEP(*(.ramcode))
|
||||||
|
. = ALIGN(4);
|
||||||
_end_data = .;
|
_end_data = .;
|
||||||
} > RAM
|
} > RAM
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#Defaults, used by CI
|
||||||
|
ifeq ($(ARCH),)
|
||||||
|
ARCH?=ARM
|
||||||
|
TARGET?=stm32f4
|
||||||
|
SIGN?=ED25519
|
||||||
|
KINETIS?=$(HOME)/src/FRDM-K64F
|
||||||
|
KINETIS_CPU=MK64FN1M0VLL12
|
||||||
|
KINETIS_DRIVERS?=$(KINETIS)/devices/MK64F12
|
||||||
|
KINETIS_CMSIS?=$(KINETIS)/CMSIS
|
||||||
|
FREEDOM_E_SDK?=$(HOME)/src/freedom-e-sdk
|
||||||
|
DEBUG?=0
|
||||||
|
VTOR?=1
|
||||||
|
CORTEX_M0?=0
|
||||||
|
NO_ASM?=0
|
||||||
|
EXT_FLASH?=0
|
||||||
|
SPI_FLASH?=0
|
||||||
|
ALLOW_DOWNGRADE?=0
|
||||||
|
NVM_FLASH_WRITEONCE?=0
|
||||||
|
WOLFBOOT_VERSION?=0
|
||||||
|
V?=0
|
||||||
|
SPMATH?=1
|
||||||
|
RAM_CODE?=0
|
||||||
|
DUALBANK_SWAP=0
|
||||||
|
IMAGE_HEADER_SIZE?=256
|
||||||
|
WOLFBOOT_PARTITION_SIZE?=0x20000
|
||||||
|
WOLFBOOT_SECTOR_SIZE?=0x20000
|
||||||
|
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x20000
|
||||||
|
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x40000
|
||||||
|
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x60000
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
CONFIG_VARS:= ARCH TARGET SIGN KINETIS KINETIS_CPU KINETIS_DRIVERS \
|
||||||
|
KINETIS_CMSIS FREEDOM_E_SDK DEBUG VTOR CORTEX_M0 NO_ASM EXT_FLASH \
|
||||||
|
SPI_FLASH ALLOW_DOWNGRADE NVM_FLASH_WRITEONCE WOLFBOOT_VERSION V \
|
||||||
|
SPMATH RAM_CODE DUALBANK_SWAP IMAGE_HEADER_SIZE \
|
||||||
|
WOLFBOOT_PARTITION_SIZE WOLFBOOT_SECTOR_SIZE \
|
||||||
|
WOLFBOOT_PARTITION_BOOT_ADDRESS WOLFBOOT_PARTITION_UPDATE_ADDRESS \
|
||||||
|
WOLFBOOT_PARTITION_SWAP_ADDRESS
|
||||||
|
|
Loading…
Reference in New Issue