Skip to content

Conversation

@AlexLanzano
Copy link
Member

I hacked together this quick wolfHAL integration using the current implementation of wolfHAL that I already worked on.

This PR is more-so meant for discussion/buy-in on how wolfHAL should be used within wolfBoot rather than getting this PR merged in.

Here's an overview of what I did:

  • Modify Makefiles to support new wolfhal TARGET
  • Add example config stm32wb-wolfhal.config
  • Add new wolfHAL config directory ./config/wolfHAL/
    • Contains board config .c file
    • Contains wolfHAL build config .mk file
  • Add generic wolfhal.c that provides the wolfBoot hal_* api functions using wolfHAL
  • Add generic uart_drv_wolfhal.c that provides the wolfBoot uart_* api functions using wolfHAL
  • Add generic app_wolfhal.c that provides a test app using wolfHAL

I've tested this on the stm32wb nucleo board and I'm able to boot fully into the target app

Here is the wolfHAL repo I used to build this https://github.com/AlexLanzano/wolfHAL/tree/wolfboot-integration
As you can see the design is unchanged from what I presented in the meeting. SInce I had the stm32wb drivers already done in this design I figured it would be best to just give the integration a shot and have you guys point out the specific parts you dont like

Copy link
Member

@danielinux danielinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • some errors must be propagated better
  • UART drivers inclusion in bootloader should depend on whether UART is enabled in the config (default: off)
  • No tests: at least one build test is needed, but at this stage it would also be useful to have a comparison of the footprint for the extra added layer. Please check footprint test, build on the same target/compiler with wolfHAL and compare footprints
  • wrong submodule URL: it should be https://github.com/wolfssl/wolfhal, not git@github.com ...

@@ -0,0 +1,101 @@
#include <wolfHAL/platform/st/stm32wb55xx.h>

whal_StRcc_PeriphClk periphClkEn[] =
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static

WHAL_ST_RCC_PERIPH_FLASH,
};

whal_Clock wbClock = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static

},
};

whal_Gpio wbGpio = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static

.pinCount = 3,
};

whal_Uart wbUart = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static

},
};

whal_Flash wbFlash = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inclusion of st_uart.o should be conditional to config (default is no uart enabled in bootloader)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inclusion of this in the build should be conditional (default = off)

int uart_rx(uint8_t *c)
{
whal_Uart_Recv(&wbUart, c, 1);
/* ALEX NOTE: this function also returns zero if no data is available... */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a better handling of whal_ return values is required

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All return values from the underlying whal_ interfaces are discarded. Please propagate failures/errors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants