2023-10-17 05:55 AM
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
2023-10-17 12:41 PM
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?
2023-10-18 06:17 AM
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
2023-10-18 06:52 AM
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
2023-10-24 08:22 AM
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.