cancel
Showing results for 
Search instead for 
Did you mean: 

How does USB FS DFU work to make firmware updates?

Hani
Associate II

Hello

I have two cards, the first is a STM32F746 Discovery and the second is a STM32L475 Discovery.

I have to use USB FS to do the firmware updates using the DFU class in USB_Device in CubeMx.

I have all tried to update the cards with the DfuSe Demo software but nothing works. I told myself that I did not use this method well and so I looked on google how this DFU class works but I did not find anything.

But on the other hand when I put the pin BOOT0 on level high, I manage to make an update with DfuSe Demo but the project requires that the user does not have to handle this pin and thus it must remain hidden to the user.

Can someone tell me how to do a firmware update of these cards using the DFU class provided in CubeMx and at the same time the user must not touch the BOOT0 pin and must not do a reset of the card manually (Hardware) but it must be in the code (software)?

Thank you

5 REPLIES 5
Hani
Associate II

Any suggestion ?

thx.

I think you're wading into a space where the professionals here aren't using CubeMX, and the others that expect to get paid for their time to stand things up and work through the issues. This stuff is a huge time-sink. There should be some workable DFU code within the HAL trees.

You could try submitting an Online Support request and see if that pulls anything useful from the internal FAQ's or working directly with the FAE supporting your account.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Hani
Associate II

Thank you for your answer.

I used Dfu-util and DfuSe demo and I manage to make firmware updates perfectly but I have to use the BOOT0 pin.

Then, I used the cubeMx DFU class with the FSB FS.

When I use DfuSe Demo, I get the following message: "Matching not good, First difference at address 0x0800 ........".

And when I use Dfu-util, I do not have an error message, it does update, but on the STM32 card, nothing is done, and debugging, I see that it makes a erase flash memory and enter the download function.

My question is whether it is necessary to use the BOOT0 pin to update the firmware?

If yes, then what is the DFU class in cubeMX for since I can update without using this class?

If it's not, then I think I have to make my own code or are there things to change in the code in the DFU class or something that has already been done to make updates without touching the BOOT0 pin?

Thank you

Hani
Associate II

Thank you for your answer.

I used Dfu-util and DfuSe demo and I manage to make firmware updates perfectly but I have to use the BOOT0 pin.

Then, I used the cubeMx DFU class with the FSB FS.

When I use DfuSe Demo, I get the following message: "Matching not good, First difference at address 0x0800 ........".

And when I use Dfu-util, I do not have an error message, it does update, but on the STM32 card, nothing is done, and debugging, I see that it makes a erase flash memory and enter the download function.

My question is whether it is necessary to use the BOOT0 pin to update the firmware?

If yes, then what is the DFU class in cubeMX for since I can update without using this class?

If it's not, then I think I have to make my own code or are there things to change in the code in the DFU class or something that has already been done to make updates without touching the BOOT0 pin?

Thank you

Hani
Associate II

Thank you for your answer.

I used Dfu-util and DfuSe demo and I manage to make firmware updates perfectly but I have to use the BOOT0 pin.

Then, I used the cubeMx DFU class with the FSB FS.

When I use DfuSe Demo, I get the following message: "Matching not good, First difference at address 0x0800 ........".

And when I use Dfu-util, I do not have an error message, it does update, but on the STM32 card, nothing is done, and debugging, I see that it makes a erase flash memory and enter the download function.

My question is whether it is necessary to use the BOOT0 pin to update the firmware?

If yes, then what is the DFU class in cubeMX for since I can update without using this class?

If it's not, then I think I have to make my own code or are there things to change in the code in the DFU class or something that has already been done to make updates without touching the BOOT0 pin?

Thank you