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
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: true

View File

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

View File

@ -106,6 +106,13 @@ jobs:
config-file: ./config/examples/kinetis-k82f.config
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
with:
arch: host

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
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
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: true

View File

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

View File

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

View File

@ -126,7 +126,7 @@ endif
ifeq ($(TARGET),library)
CFLAGS+=-g
MAIN_TARGET:=test-lib
MAIN_TARGET:=libwolfboot.a
endif
ifeq ($(TARGET),raspi3)
@ -174,6 +174,9 @@ stage1/loader_stage1.bin: FORCE
test-lib: include/target.h $(OBJS)
$(Q)$(CC) $(CFLAGS) -o $@ $(OBJS)
libwolfboot.a: $(OBJS)
$(Q)$(AR) rcs $@ $(OBJS)
wolfboot.efi: wolfboot.elf
@echo "\t[BIN] $@"
$(Q)$(OBJCOPY) -j .rodata -j .text -j .sdata -j .data \
@ -193,7 +196,6 @@ wolfboot.bin: wolfboot.elf
$(Q)$(SIZE) wolfboot.elf
@echo
test-app/image.bin: wolfboot.elf
$(Q)$(MAKE) -C test-app WOLFBOOT_ROOT="$(WOLFBOOT_ROOT)"
$(Q)$(SIZE) test-app/image.elf
@ -454,7 +456,7 @@ secondary: $(SECONDARY_PRIVATE_KEY)
src/x86/fsp_s.o: $(FSP_S_BIN)
$(OBJCOPY) -I binary -O elf64-x86-64 -B i386 --rename-section .data=.fsp_s $^ $@
pico-sdk-info: FORCE
@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)
LD=$(CROSS_COMPILE)ld
AS=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
OBJCOPY?=$(CROSS_COMPILE)objcopy
SIZE=$(CROSS_COMPILE)size
@ -872,6 +873,7 @@ ifeq ($(TARGET),ti_hercules)
CC=$(CROSS_COMPILE)armcl
LD=$(CROSS_COMPILE)armcl
AS=$(CROSS_COMPILE)armasm
AR=$(CROSS_COMPILE)armcl -ar
OBJCOPY=$(CROSS_COMPILE)armobjcopy
SIZE=$(CROSS_COMPILE)armsize
OUTPUT_FLAG=--output_file
@ -972,6 +974,7 @@ ifeq ($(USE_GCC),1)
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)gcc
AS=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
OBJCOPY?=$(CROSS_COMPILE)objcopy
SIZE=$(CROSS_COMPILE)size
endif

View File

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