Creality v4.2.2 bricked after SD card firmware update with more files than the firmware
Hi, I have flashed successfully new firmware to my 3D printer Creality Ender-3 MAX with v4.2.2 mianboard for three times. When I tried to flash flash new firmware for the fourth time I have forgot to remove remaining files on the SD card and after power cycle the printer could not load the firmware correctly.
So now, I have bricked the main board. After closer look at the mainboard I have found 4 pins next to LCD connector and figured out that these are ST-link pins.
So I have connected these 4 pins to ST-link programmer and loaded STM32CubeProgrammer software.
I have compiled the printer Marlin bugfix-2.1.x firmware in Visual Studio code succesfully and located the .bin file.
In the STM32CubeProgrammer I have connected the st-link and selected the .bin file.
I have read the documentation for STM32F103RET6 and figured out that program address starts on 0x08000000.
So I have flashed the .bin file to the flash memory of the processor succesfully, but the printer does not work.
It still has lit display and never boots up.
Is there something I am missing or doing incorrectly?
The SD card methond of updating firmware does not work anymore, so I had to go through this "ST-link" procedure.
Can anyone help please?
I have found a solution.
The address that the firmware should be writen is not 0x08000000, but it has offset specified in Marlin firmware,
so every address has the offset.
You can find the offset in Marlin firmware folder ini/stm32f1.ini and there under the specified controller is directive called
board_build.offset = 0x7000
So if you upload the compiled firmware by st-link device and stm32CubeProgrammer software, you should specify the starting address with added offset.
In my case it is 0x08000000 + 0x7000 = 0x08007000
So only that solved my problem.
However I previously said, that I have erased the whole memory of the conroller so there is no bootloader.
This means that I cannot update the firmware via SD card anymore.
The bootloader has been written on the 0x08000000 address and there is just nothing.
The solution for this problem was found here.
PS: I am writing this, so if anyone comes across this problem, they can learn from my troubles and solutions.