cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB firmware update services question

KSwee
Associate

Stumbling through the procedure described in app note AN5185 - ST firmware upgrade services for STM32WB Series using eval board MB1355C (STM32WB55). On page 3 of AN5185 it says:

In order to check if FUS is running or not, the following options are available:

• Send a single FUS_GET_STATE command and check the return status. If it is

FUS_STATE_NOT_RUNNING then FUS is not running.

• Check the SBRV option byte value:

– If it is 0x3D800 then FUS must be running

– If it is different from 0x3D800 then FUS is not running

• Send a wireless stack command:

– If it is acknowledged, then FUS is not running

– If it is not acknowledged, then FUS is running

• Read the shared table information:

– Read IPCCDBA (in option bytes) to get the shared tables start address in SRAM2a

– Get the device information table address

My question is just trying to get me oriented. The command line program STM32_Programmer_CLI.exe has an option -fusgetstate, whereas the app note says to issue command FUS_GET_STATE and mentions a return value like FUS_STATE_NOT_RUNNING. Is the capital letter nomenclature a different concept than the STM32_Programmer_CLI.exe nomenclature? How would one "Check the SBRV option byte value"? How about "Send a wireless stack command" and most importantly, "Read the shared table information"?

Sorry probably dumb questions but I don't understand the context of these terms, trying to sort out basic things like what is referring to the Cortex M0, what is in the Cortex M4, what is in the module, what is in APIs, and what is in the CLI utility app...

5 REPLIES 5
Kolab
Senior

It is very sad that you buy a module so as to do a project with a certain deadline and you come to the support page look for help but no answer. It has passed already 3 months and no answer. Very bad experience ... employees don't answer on time or even don't answer the questions.

AValt.1
Associate II

Hi,

you can read the option byte IPCCDBA with st Cube Programmer, probably its 0x00 (offset), so you can read with stCubeProgrammer_CLi.exe the memory from the start of SRAM2a (0x20030000+IPCCDBA value(0x00), the first 42 bytes are device info table, located in SRAM2a start address , so execute:

STM32_Programmer_CLI.exe -c port=usb1 -r32 0x20030000 42, the you have te result.

Hope it helps

Regards

AValt.1
Associate II

0693W000000UMywQAG.pngSorry, i guess its like so, but i dont understand why FUS version seem to be 0x00000000, Ble Stack is working, and i didnt remove it.Wireless Stack version its in memory address 0x20030034

AValt.1
Associate II

Finally solved it, i use St cube programmer to read Fus version, at first it returned FUS_ERROR, then i try again, and it returned the correct installed version, so i read device info table again via cli commands and everything seem to be ok, check it:

0693W000000UN1CQAW.png

AValt.1
Associate II

Hi again, i finally solved it, the reason why i read FUS version 0000 its beacause you have to send 2 fusGetSate commands, to activate it, then you can read the info, as described in https://www.st.com/resource/en/application_note/dm00513965-st-firmware-upgrade-services-for-stm32wb-series-stmicroelectronics.pdf PAGE 11.

I also did it via cli commands:

0693W000000UN5YQAW.png