RSL10 HCI with FOTA

Hello!

I have a device with RSL10 SoC that I need to put through FCC tests. One requirement is continuous wave TX. I see from other topics on this forum, that the suggested approach is to use hci_app sample code and send HCI commands over UART to the device to put it into the required test mode.

Unfortunately our device does not have any free pins that we could use for UART.

We have made some experiments and we are able to compile a firmware image that runs a predefined list of HCI commands without UART. We would like to send this image over the air to the DUT. The DUT has FOTA capability. We would like to avoid soldering or attaching JTAG to the device, because the devices are in a test lab in another country.

Unfortunately when I tried compiling FOTA stack using Release_HCI libraries (adding required new function wrappers), BLE as well as kernel timers no longer appear to be working.

I also tried changing the linker command in some of the sample applications to link against libraries from Release_HCI instead of Release and the apps also do not work.

Couple of questions:

  1. Can Release_HCI library be used as a standard BLE stack? Or are some components missing and it is only suitable for HCI operation?
  2. Is it possible to build FOTA image that has HCI BLE stack as well as some custom firmware?

Hi @gotlaufs,

In order to make use of FOTA you will need to use the full release build of the BLE Stack and Kernel. This is not a problem though, because we can set the necessary hardware registers to configure the Continuous Wave without the need for the HCI commands (borrowed from this topic: KB: How to generate a CW (Continuous Wave) signal for a certification test?).

I have attached a sample project that demonstrates this implementation, as well as a screenshot of the current consumption showing the 5s of CW followed by switching to standard BLE Advertising with FOTA support.

This project will first set a timer when the hardware registers are configured to start the CW, and once the timer expires it will reset these hardware registers (stopping the CW), and begin advertising/accepting new FOTA updates like a standard sample code.

By setting your desired CW configuration and timer duration, you can use this sample project as a starting point. It should automatically generate a .fota image when built that you can download onto your device, and after the timer duration expires you can again update it with a new FOTA firmware as necessary.

Please let us know if you run into problems with the firmware, or if you have any other questions.

ble_peripheral_server_CW_fota.zip (211.1 KB)

Thank you for the information.

I somehow missed the forum post you mentioned. This is a good solution.

Just to clarify: The HCI version of the BLE stack is a stripped-down version fit features missing? I could not find anything in the docs that says so.

Firmware reference ver 3.6 p54:

In the meantime I came up with a more complicated solution:
I built the HCI app + HCI BLE stack as a bootable image. Then I generated the FOTA package. After modifying the linker (not enough RAM) and adding all references required by the bootlaoder I was able to send this image over the air. To go back to the bootloader I used a button that if pressed, calls Sys_BootROM_StartApp()