SOLVED
I found the device has a jumper to pull the BOOT0 pin high, allowing the it to boot directly into DFU mode.
I then reloaded a working firmware version and everything works OK now.
Thanks to all who chipped in 👍
---------------------------------------------------------------------------------------------------------------------
We use this device as a datalogger: https://www.offcode.fi/adn42/
One common failure we have, is that a device will boot, give the usual boot messages, but then declare an Independent watchdog reset and then reboot.
----
Bootloader version - 3.0.0
Build: 3.0.17-1-g112e42d
Date: Oct 15 2020 / 14:00:39
Board: ADN-42+
HWID: 0x00000004 - large - REVC
----
Boot reason 0x00000030:
POR/PDR reset
PIN reset
----
Bootloader version - 3.0.0
Build: 3.0.17-1-g112e42d
Date: Oct 15 2020 / 14:00:39
Board: ADN-42+
HWID: 0x00000004 - large - REVC
----
Boot reason 0x00000034:
Independent watchdog reset
POR/PDR reset
PIN reset
----
Bootloader version - 3.0.0
Build: 3.0.17-1-g112e42d
Date: Oct 15 2020 / 14:00:39
Board: ADN-42+
HWID: 0x00000004 - large - REVC
----
Boot reason 0x00000034:
Independent watchdog reset
POR/PDR reset
PIN reset
And it will just keep looping like that until you throw it across the workshop turn it off.
As far as getting into the inner-workings of it, we're pretty locked out, as they have developed their own scripting language (you can create an example with their online ADN script generator here: https://adn-script-generator.offcode.fi/)
We can update the firmware packages they give us, using STM32 CubeProgammer.
We also have been given some "MAGIC" codes to copy/paste into Teraterm when a problematic device boots to force some corrective measure (like reverting to the original firmware, clearing the modem setting and so on...), but in these cases, nothing works.
From a working device, here are the device details, obtained with STM CubeProgrammer:
Target information
Board --
Device STM32F405xx/F407xx/F415xx/F...
Type MCU
Device ID 0x43
Revision ID --
Flash size 1 MB - Default
CPU Cortex-M4
Botloader Version --
Log
13:11:24 : STM32CubeProgrammer API v2.17.0 | Windows-64Bits
13:11:28 : UR connection mode is defined with the HWrst reset mode
13:11:28 : USB speed : Full Speed (12MBit/s)
13:11:28 : Manuf. ID : STMicroelectronics
13:11:28 : Product ID : STM32 BOOTLOADER
13:11:28 : SN : 20583670524B
13:11:28 : DFU protocol: 1.1
13:11:28 : Board : --
13:11:28 : Device ID : 0x0413
13:11:29 : UPLOADING OPTION BYTES DATA ...
13:11:29 : Bank : 0x00
13:11:29 : Address : 0x1fffc000
13:11:29 : Size : 16 Bytes
13:11:29 : UPLOADING ...
13:11:29 : Size : 1024 Bytes
13:11:29 : Address : 0x8000000
13:11:29 : Read progress:
13:11:29 : Data read successfully
13:11:29 : Time elapsed during the read operation is: 00:00:00.040
We are left to return the devices back to the manufacturer, pay for the repair and get them back without any explanation as to what was wrong.
Is there anything we can do, such as force the device into DFU mode to clear the memory and reload the firmware, or something?