cancel
Showing results for 
Search instead for 
Did you mean: 

Device Information Table is validity

HRadt.1
Senior

AN5185 lists the contents of the device information table in Table 5

What information in this table is valid at which state (wireless stack running or FUS running) of CPU2?

My initial guess was that it should be valid during FUS execution as well as Wireless Stack execution. (Chapter 6.1.1: "This table may be updated either by FUS code or wireless stack code at startup or before a programmed system reset.")

My findings (deviations from the documentation / unexpected behaviour) are:

Device info table state is only at the specified value when FUS is running, 0 when Wireless Stack is running (only tested with BLE_full stack)

Current wireless stack type is always 0 (NONE) when FUS is running. It is 1 (BLE stack) when the wireless stack is running (but might be a coincidence since Device info table state is not valid)

All other fields look invalid when Wireless Stack is executed.

Setup:

STM32WB55CEU on custom board

FUS Version 1.1.0 installed

BLE Stack full Version 1.6.0

3 REPLIES 3
Christophe Arnal
ST Employee

​Hello,

Please refer to the answer provided in

https://community.st.com/s/question/0D53W00000DIEgjSAH/how-to-reliably-determine-installed-fus-version-from-application-code

Basically, the FUS and Wireless Stack has different mapping.

SHCI_GetWirelessFwInfo () can only be used when the Wireless Stack runs on CPU2.

regards.

Remi QUINTIN
ST Employee

Note also that the location of this device info table (DIT) depends on the port used for programming?

When the USB or UART peripheral is used, the DIT is located at address 0x20030024 in SRAM, starting with the 0xA94656B9 value showing that the Device info table is valid.

When the SWD port is used, the DIT is in another area of the SRAM pointed by the IPCCDBA option byte.

When FUS is active, FUS is updating the DIT accordingly.

When the RF stack is active (once the code execution is running on the CM0+ core), the fields related to the RF stack in the DIT are updated.

As most of the projects are using the SWD port to interact with their device, it is normal to get 0 as FUS version at address 0x20030030. This information is in fact further in the SRAM.

Remi QUINTIN
ST Employee

​I would like to clarify a very important point.

The DIT structure used by the FUS is not exactly the same as the one used by the BLE stack.

This is why you may see some discrepancies using the DIT structure described in AN5289 "building an RF application" (which is fact the structure used in the CubeWB FW package) for the DIT used by the FUS as described in AN5185 "How to flash WB device".