Support for building libwolfboot.a. Library target used to just build a test-lib, but that's not very portable. Added test cases.

pull/569/head
David Garske 2025-04-08 18:59:16 -07:00 committed by Daniele Lacamera
parent b86d7fc308
commit adc003351b
11 changed files with 64 additions and 11 deletions

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: true submodules: true

View File

@ -7,7 +7,7 @@ jobs:
fsp_qemu_test: fsp_qemu_test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: true submodules: true
- name: install req - name: install req

View File

@ -106,6 +106,13 @@ jobs:
config-file: ./config/examples/kinetis-k82f.config config-file: ./config/examples/kinetis-k82f.config
library_test: library_test:
uses: ./.github/workflows/test-build.yml
with:
arch: host
config-file: ./config/examples/library.config
make-args: test-lib
libwolfboot_test:
uses: ./.github/workflows/test-build.yml uses: ./.github/workflows/test-build.yml
with: with:
arch: host arch: host

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: false submodules: false

View File

@ -0,0 +1,38 @@
name: wolfBoot as Library test
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
test-lib:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: make clean
run: |
make keysclean && make -C tools/keytools clean && rm -f include/target.h
- name: Build test-lib
run: |
cp config/examples/library.config .config
make keytools
./tools/keytools/keygen --ed25519 -g wolfboot_signing_private_key.der
echo "Test" > test.bin
./tools/keytools/sign --ed25519 --sha256 test.bin wolfboot_signing_private_key.der 1
make test-lib
- name: Run test-lib
run: |
./test-lib test_v1_signed.bin 2>&1 | grep "Firmware Valid"
- name: Run test-lib (expect failure)
run: |
echo "A" >> test_v1_signed.bin
./test-lib test_v1_signed.bin 2>&1 | grep "Failure"

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: true submodules: true

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: true submodules: true

View File

@ -7,7 +7,7 @@ jobs:
fsp_qemu_test: fsp_qemu_test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
submodules: true submodules: true
- name: install req - name: install req

View File

@ -126,7 +126,7 @@ endif
ifeq ($(TARGET),library) ifeq ($(TARGET),library)
CFLAGS+=-g CFLAGS+=-g
MAIN_TARGET:=test-lib MAIN_TARGET:=libwolfboot.a
endif endif
ifeq ($(TARGET),raspi3) ifeq ($(TARGET),raspi3)
@ -174,6 +174,9 @@ stage1/loader_stage1.bin: FORCE
test-lib: include/target.h $(OBJS) test-lib: include/target.h $(OBJS)
$(Q)$(CC) $(CFLAGS) -o $@ $(OBJS) $(Q)$(CC) $(CFLAGS) -o $@ $(OBJS)
libwolfboot.a: $(OBJS)
$(Q)$(AR) rcs $@ $(OBJS)
wolfboot.efi: wolfboot.elf wolfboot.efi: wolfboot.elf
@echo "\t[BIN] $@" @echo "\t[BIN] $@"
$(Q)$(OBJCOPY) -j .rodata -j .text -j .sdata -j .data \ $(Q)$(OBJCOPY) -j .rodata -j .text -j .sdata -j .data \
@ -193,7 +196,6 @@ wolfboot.bin: wolfboot.elf
$(Q)$(SIZE) wolfboot.elf $(Q)$(SIZE) wolfboot.elf
@echo @echo
test-app/image.bin: wolfboot.elf test-app/image.bin: wolfboot.elf
$(Q)$(MAKE) -C test-app WOLFBOOT_ROOT="$(WOLFBOOT_ROOT)" $(Q)$(MAKE) -C test-app WOLFBOOT_ROOT="$(WOLFBOOT_ROOT)"
$(Q)$(SIZE) test-app/image.elf $(Q)$(SIZE) test-app/image.elf
@ -454,7 +456,7 @@ secondary: $(SECONDARY_PRIVATE_KEY)
src/x86/fsp_s.o: $(FSP_S_BIN) src/x86/fsp_s.o: $(FSP_S_BIN)
$(OBJCOPY) -I binary -O elf64-x86-64 -B i386 --rename-section .data=.fsp_s $^ $@ $(OBJCOPY) -I binary -O elf64-x86-64 -B i386 --rename-section .data=.fsp_s $^ $@
pico-sdk-info: FORCE pico-sdk-info: FORCE
@echo "To complete the build, check IDE/pico-sdk/rp2350" @echo "To complete the build, check IDE/pico-sdk/rp2350"

View File

@ -410,6 +410,7 @@ ifeq ($(ARCH),RENESAS_RX)
# Must use LD directly (gcc link calls LD with sysroot and is not supported) # Must use LD directly (gcc link calls LD with sysroot and is not supported)
LD=$(CROSS_COMPILE)ld LD=$(CROSS_COMPILE)ld
AS=$(CROSS_COMPILE)gcc AS=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
OBJCOPY?=$(CROSS_COMPILE)objcopy OBJCOPY?=$(CROSS_COMPILE)objcopy
SIZE=$(CROSS_COMPILE)size SIZE=$(CROSS_COMPILE)size
@ -872,6 +873,7 @@ ifeq ($(TARGET),ti_hercules)
CC=$(CROSS_COMPILE)armcl CC=$(CROSS_COMPILE)armcl
LD=$(CROSS_COMPILE)armcl LD=$(CROSS_COMPILE)armcl
AS=$(CROSS_COMPILE)armasm AS=$(CROSS_COMPILE)armasm
AR=$(CROSS_COMPILE)armcl -ar
OBJCOPY=$(CROSS_COMPILE)armobjcopy OBJCOPY=$(CROSS_COMPILE)armobjcopy
SIZE=$(CROSS_COMPILE)armsize SIZE=$(CROSS_COMPILE)armsize
OUTPUT_FLAG=--output_file OUTPUT_FLAG=--output_file
@ -972,6 +974,7 @@ ifeq ($(USE_GCC),1)
CC=$(CROSS_COMPILE)gcc CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)gcc
AS=$(CROSS_COMPILE)gcc AS=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
OBJCOPY?=$(CROSS_COMPILE)objcopy OBJCOPY?=$(CROSS_COMPILE)objcopy
SIZE=$(CROSS_COMPILE)size SIZE=$(CROSS_COMPILE)size
endif endif

View File

@ -81,13 +81,14 @@ void hal_led_on(void)
PORT_PODR(4) &= ~(1 << 0); /* low */ PORT_PODR(4) &= ~(1 << 0); /* low */
#endif #endif
} }
void hal_led_off(void) void hal_led_off(void)
{ {
#ifdef TARGET_rx65n #if defined(TARGET_rx65n)
/* RX65N RSK+ LED0 P73 */ /* RX65N RSK+ LED0 P73 */
PORT_PDR(7) |= (1 << 3); /* output */ PORT_PDR(7) |= (1 << 3); /* output */
PORT_PODR(7) |= (1 << 3); /* high */ PORT_PODR(7) |= (1 << 3); /* high */
#else #elif defined(TARGET_rx72n)
/* RX72N Envision USR LED P40 */ /* RX72N Envision USR LED P40 */
PORT_PDR(4) |= (1 << 0); /* output */ PORT_PDR(4) |= (1 << 0); /* output */
PORT_PODR(4) |= (1 << 0); /* high */ PORT_PODR(4) |= (1 << 0); /* high */
@ -620,6 +621,7 @@ void RAMFUNCTION hal_flash_lock(void)
return; return;
} }
#ifndef TARGET_library
void* hal_get_primary_address(void) void* hal_get_primary_address(void)
{ {
return (void*)WOLFBOOT_PARTITION_BOOT_ADDRESS; return (void*)WOLFBOOT_PARTITION_BOOT_ADDRESS;
@ -629,3 +631,4 @@ void* hal_get_update_address(void)
{ {
return (void*)WOLFBOOT_PARTITION_UPDATE_ADDRESS; return (void*)WOLFBOOT_PARTITION_UPDATE_ADDRESS;
} }
#endif