cancel
Showing results for 
Search instead for 
Did you mean: 

STM32CubeProgrammer DFU instable

JBurg.5
Associate II

Hi,

our c

 

13:26:59 : STM32CubeProgrammer API v2.14.0 | Windows-64Bits
  13:27:37:380 : UR connection mode is defined with the HWrst reset mode
  13:27:38:416 : Device Descriptor:
  13:27:38:416 :                        |_bLength                : 0x12
  13:27:38:417 :                        |_bDescriptorType        : 0x01
  13:27:38:417 :                        |_bcdUSB                : 0x0100
  13:27:38:417 :                        |_bDeviceClass          : 0x00
  13:27:38:417 :                        |_bDeviceSubClass        : 0x00
  13:27:38:418 :                        |_bDeviceProtocol        : 0x00
  13:27:38:418 :                        |_bMaxPacketSize        : 0x40
  13:27:38:418 :                        |_idVendor              : 0x0483
  13:27:38:418 :                        |_idProduct              : 0xdf11
  13:27:38:419 :                        |_bcdDevice              : 0x2200
  13:27:38:419 :                        |_iManufacturer          : 0x01
  13:27:38:419 :                        |_iProduct              : 0x02
  13:27:38:419 :                        |_iSerialNumber          : 0x03
  13:27:38:420 :                        |_bNumConfigurations    : 0x01
  13:27:38:420 : Configuration Descriptor:
  13:27:38:420 :                        |_bLength                : 0x09
  13:27:38:421 :                        |_bDescriptorType        : 0x02
  13:27:38:421 :                        |_wTotalLength          : 0x36
  13:27:38:421 :                        |_bNumInterfaces        : 0x01
  13:27:38:421 :                        |_bConfigurationValue    : 0x01
  13:27:38:421 :                        |_iConfiguration        : 0x00
  13:27:38:422 :                        |_bmAttributes          : 0xc0
  13:27:38:422 :                        |_bMaxPower              : 0x32
  13:27:38:422 : Interface Descriptor Alternate Settings: 0x00
  13:27:38:423 :                        |_bLength                : 0x09
  13:27:38:423 :                        |_bDescriptorType        : 0x04
  13:27:38:423 :                        |_bInterfaceNumber      : 0x00
  13:27:38:423 :                        |_bAlternateSetting      : 0x00
  13:27:38:424 :                        |_bNumEndpoints          : 0x00
  13:27:38:424 :                        |_bInterfaceClass        : 0xfe
  13:27:38:424 :                        |_bInterfaceSubClass    : 0x01
  13:27:38:424 :                        |_bInterfaceProtocol    : 0x02
  13:27:38:425 :                        |_iInterface            : 0x04
  13:27:38:425 : Interface Descriptor Alternate Settings: 0x01
  13:27:38:425 :                        |_bLength                : 0x09
  13:27:38:426 :                        |_bDescriptorType        : 0x04
  13:27:38:426 :                        |_bInterfaceNumber      : 0x00
  13:27:38:426 :                        |_bAlternateSetting      : 0x01
  13:27:38:427 :                        |_bNumEndpoints          : 0x00
  13:27:38:428 :                        |_bInterfaceClass        : 0xfe
  13:27:38:428 :                        |_bInterfaceSubClass    : 0x01
  13:27:38:429 :                        |_bInterfaceProtocol    : 0x02
  13:27:38:429 :                        |_iInterface            : 0x05
  13:27:38:429 : Interface Descriptor Alternate Settings: 0x02
  13:27:38:430 :                        |_bLength                : 0x09
  13:27:38:430 :                        |_bDescriptorType        : 0x04
  13:27:38:430 :                        |_bInterfaceNumber      : 0x00
  13:27:38:430 :                        |_bAlternateSetting      : 0x02
  13:27:38:430 :                        |_bNumEndpoints          : 0x00
  13:27:38:431 :                        |_bInterfaceClass        : 0xfe
  13:27:38:431 :                        |_bInterfaceSubClass    : 0x01
  13:27:38:431 :                        |_bInterfaceProtocol    : 0x02
  13:27:38:431 :                        |_iInterface            : 0x06
  13:27:38:431 : Interface Descriptor Alternate Settings: 0x03
  13:27:38:432 :                        |_bLength                : 0x09
  13:27:38:432 :                        |_bDescriptorType        : 0x04
  13:27:38:432 :                        |_bInterfaceNumber      : 0x00
  13:27:38:432 :                        |_bAlternateSetting      : 0x03
  13:27:38:433 :                        |_bNumEndpoints          : 0x00
  13:27:38:433 :                        |_bInterfaceClass        : 0xfe
  13:27:38:433 :                        |_bInterfaceSubClass    : 0x01
  13:27:38:433 :                        |_bInterfaceProtocol    : 0x02
  13:27:38:433 :                        |_iInterface            : 0x07
  13:27:38:433 : Functional Descriptor :
  13:27:38:433 :                        |_bLength                : 0x09
  13:27:38:433 :                        |_bDescriptorType        : 0x21
  13:27:38:433 :                        |_bmAttributes          : 0x0b
  13:27:38:433 :                        |_wDetachTimeOut        : 0xff
  13:27:38:434 :                        |_wTransferSize          : 0x0800
  13:27:38:434 :                        |_bcdDFUVersion          : 0x011a
  13:27:38:434 : USB speed  : Full Speed (12MBit/s)
  13:27:38:434 : Manuf. ID  : STMicroelectronics
  13:27:38:434 : Product ID  : STM32  BOOTLOADER
  13:27:38:434 : SN          : 00000008FFFF
  13:27:38:434 : DFU protocol: 1.1
  13:27:38:434 : Board      : --
  13:27:38:434 : Device ID  : 0x0449
  13:27:38:434 : DFU status = 0
  13:27:38:435 : DFU State = 9
  13:27:38:435 : Status: 0, State: 9
  13:27:38:435 : sending an abort request
  13:27:38:435 : DFU status = 0
  13:27:38:435 : DFU State = 2
  13:27:38:435 : setting the address pointer to address: 0x08000000
  13:27:38:435 : DFU status = 0
  13:27:38:435 : DFU State = 4
  13:27:38:435 : DFU status = 0
  13:27:38:435 : DFU State = 5
  13:27:38:436 : DFU status = 0
  13:27:38:436 : DFU State = 9
  13:27:38:436 : Status: 0, State: 9
  13:27:38:436 : sending an abort request
  13:27:38:436 : DFU status = 0
  13:27:38:436 : DFU State = 2
  13:27:38:436 : setting the address pointer to address: 0x08000000
  13:27:38:436 : DFU status = 0
  13:27:38:436 : DFU State = 4
  13:27:38:437 : DFU status = 0
  13:27:38:437 : DFU State = 5
  13:27:38:437 : DFU status = 0
  13:27:38:437 : DFU State = 5
  13:27:38:437 : Status: 0, State: 5
  13:27:38:437 : setting the address pointer to address: 0x00000000
  13:27:38:437 : DFU status = 0
  13:27:38:437 : DFU State = 4
  13:27:38:437 : DFU status = 1
  13:27:38:437 : DFU State = 10
  13:27:38:437 : DFU status = 1
  13:27:38:438 : DFU State = 10
  13:27:38:438 : DFU status = 1
  13:27:38:438 : DFU State = 10
  13:27:38:438 : DFU status = 1
  13:27:38:438 : DFU State = 10
  13:27:38:438 : DFU status = 1
  13:27:38:438 : DFU State = 10
  13:27:38:439 : DFU status = 1
  13:27:38:439 : DFU State = 10
  13:27:38:439 : DFU status = 1
  13:27:38:439 : DFU State = 10
  13:27:38:439 : DFU status = 1
  13:27:38:439 : DFU State = 10
  13:27:38:440 : DFU status = 1
  13:27:38:440 : DFU State = 10
  13:27:38:440 : DFU status = 1
  13:27:38:440 : DFU State = 10
  13:27:38:440 : DFU status = 1
  13:27:38:440 : DFU State = 10
  13:27:38:440 : DFU status = 1
  13:27:38:440 : DFU State = 10
  13:27:38:441 : DFU status = 1
  13:27:38:441 : DFU State = 10
  13:27:38:442 : DFU status = 1
  13:27:38:442 : DFU State = 10
  13:27:38:442 : DFU status = 1
  13:27:38:443 : DFU State = 10
  13:27:38:443 : DFU status = 1
  13:27:38:443 : DFU State = 10
  13:27:38:443 : DFU status = 1
  13:27:38:443 : DFU State = 10
  13:27:38:444 : DFU status = 1
  13:27:38:444 : DFU State = 10
  13:27:38:444 : DFU status = 1
  13:27:38:444 : DFU State = 10
  13:27:38:445 : DFU status = 1
  13:27:38:445 : DFU State = 10
  13:27:38:445 : DFU status = 1
  13:27:38:445 : DFU State = 10
  13:27:38:445 : DFU status = 1
  13:27:38:446 : DFU State = 10
  13:27:38:446 : DFU status = 1
  13:27:38:446 : DFU State = 10
  13:27:38:446 : DFU status = 1
  13:27:38:446 : DFU State = 10
  13:27:38:446 : DFU status = 1
  13:27:38:447 : DFU State = 10
  13:27:38:447 : DFU status = 1
  13:27:38:447 : DFU State = 10
  13:27:38:447 : received memory address is wrong or unsupported
  13:27:38:447 : Status: errTARGET, State: dfuERROR
  13:27:38:447 : Database: Config 0 is active.
  13:27:38:448 : DFU status = 1
  13:27:38:448 : DFU State = 10
  13:27:38:448 : Status: 1, State: 10
  13:27:38:448 : sending a clear status request
  13:27:38:448 : DFU status = 0
  13:27:38:448 : DFU State = 2
  13:27:38:448 : setting the address pointer to address: 0x08000000
  13:27:38:448 : DFU status = 0
  13:27:38:448 : DFU State = 4
  13:27:38:449 : DFU status = 0
  13:27:38:449 : DFU State = 5
  13:27:39:010 : DFU status = 0
  13:27:39:010 : DFU State = 9
  13:27:39:010 : Status: 0, State: 9
  13:27:39:010 : sending an abort request
  13:27:39:010 : DFU status = 0
  13:27:39:011 : DFU State = 2
  13:27:39:011 : setting the address pointer to address: 0x08000000
  13:27:39:011 : DFU status = 0
  13:27:39:011 : DFU State = 4
  13:27:39:011 : DFU status = 0
  13:27:39:011 : DFU State = 5
  13:27:39:011 : UPLOADING OPTION BYTES DATA ...
  13:27:39:011 :  Bank          : 0x00
  13:27:39:011 :  Address      : 0x1fff0000
  13:27:39:011 :  Size          : 44 Bytes
  13:27:39:012 : DFU status = 0
  13:27:39:012 : DFU State = 5
  13:27:39:012 : Status: 0, State: 5
  13:27:39:012 : setting the address pointer to address: 0x1fff0000
  13:27:39:012 : DFU status = 0
  13:27:39:012 : DFU State = 4
  13:27:39:012 : DFU status = 0
  13:27:39:013 : DFU State = 5
  13:27:39:013 : receiving packet nbr: 0
  13:27:39:013 : DFU status = 0
  13:27:39:013 : DFU State = 5
  13:27:39:013 : sending an abort request
  13:27:39:013 : DFU status = 0
  13:27:39:013 : DFU State = 2
  13:27:39:013 : UpLoading data
  13:27:39:013 : libusb control transfer error [-9] : LIBUSB_ERROR_PIPE 
  13:27:39:013 : Error: Uploading Option Bytes bank: 0 failed
  13:27:39:035 : Error: Initializing the Option Bytes failed
  13:27:39:053 : Disconnected from device.

 

ustomers can update the software of our STM32F46 product using STM32CubeProgrammer in DFU mode. This worked so far without problems. Now we are facing errors. On some Win 10/11 PCs a stable USB DFU connection cannot be established, i.e. USB1 is found after activating BOOT0 but, after clicking "Connect", it disappears with the error "Initializing the Option Bytes failed".

Below is the error log.

Regards
Jan

 

4 REPLIES 4

Do older versions of STM32 Cube Programmer work?

Anything remarkable or common about the machines it fails on? DELLs?

Using Hubs or Docking Stations?

Your product has a HSE crystal?

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

Hello,

It fails on several Dell machines and works on other Dells. On other PC types the same. We tried hubs and PC ports without any difference. We use a 25 MHz crystal clock generator at OSC_IN.

We tried v2.5 and v2.14. Both failed. The error message of v2.5 was different (some read unprotect issue).

Further observations:

The USB port remains active after STM32 Cube Programmer fails. It is pemanently shown in the Device Manager until I unplug my device. If I click "Connect" a second time the programmer shows an empty message box and hangs.

We have PCs which ALWAYS work with ALL boards.

We have PCs which ALWAYS work with SOME boards and NEVER with OTHER boards.
These other boards are a modification of the ones which always work. The modification concerns a simplified analog signal path. The layout is the same, only less components. As mentioned above these boards can be updated on some PCs without any problem, i.e. they work in principle. So the behaivour is perfectly reproducible.

The USB clock shape looks okay.

The 3.3V digital power is stable and always on.

Any glitches or crosstalk or a critical timing? I don't know how to debug the communication.

Is there a document about the minimum hardware requirements for updates in DFU mode? As far as I see only D+, D-, BOOT0 and the clock are involved.

Regards
Jan

 

 

In AN2606 I found this note:

"When a bootloader firmware supports DFU, it is mandatory that no USB Host is connected
to the USB peripheral during the selection phase of the other interfaces. After selection
phase, the user can plug a USB cable without impacting the selected bootloader execution
except for commands generating a system reset"

Does it mean that there must be no PC connection while activating the DFU bootloader? This would not be the case in my application. My device enters the bootloader start menu by applying VUSB to the FS USB interface. I use this interface only for updates.

Jan

The bootloader with STM32 Cube Programmer is the firmware update method for our customers. It needs to be reliable.

It is very important, any help or advice is appreciated.