Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get to katapult bootloader mode via serial UART1 #135

Open
jarretluft opened this issue Oct 25, 2024 · 1 comment
Open

Get to katapult bootloader mode via serial UART1 #135

jarretluft opened this issue Oct 25, 2024 · 1 comment

Comments

@jarretluft
Copy link

Hi,
I have modified a qidi x-plus 3 motherboard to run standard klipper.
Everything is working, there is a toolhead MCU - a rp2040 running over USB, and the main MCU running an STM32F401 designed to communicate directly with the SOC via uart over /dev/ttyS0

Both MCUs now have katapult bootloader loaded successfully, and I was able to load klipper binaries onto both initially, using the flashtool.py script.

With regard to future klipper updates, now that klipper has been loaded on both, I can confirm that the rp2040 is able to be put into bootloader mode using the flash_usb script's "enter_bootloader" function.

My problem now is trying to update the STM320F401 without having to physically open the back of the machine to get at boot-0 or reset pins.
I cannot figure out a method to enter bootloader mode over the /dev/ttyS0 serial port so that I can run the flash tool and update the firmware. I have only been able to get into bootloader by double pressing reset so far.

Does anyone have suggestions on how I can enter bootloader mode through the command line on a serial connection to the MCU?

Any ideas appreciated. Thx!

@Lebensgefahr
Copy link

I tried katapult on kingroon kp3s pro v2 printer. It has rp2040 and gd32f303 (stm32f103 clone).
I checked katapult only on gd32f303 it is connected as /dev/ttyS0 as in your case.
katapult deployer works as expected but I can do nothing with it after deploying. It starts something located in it's configured offset (8 kib) and became unavailable.
If katapult was deployed through stlink on previously erased flash - it works as it running on itself all the time.

But once I was successfully connected to bootloader. I reseted it through stlink and in the same time started flashtool.py. I tried to run flashtool.py -b 250000 -d /dev/ttyS0 and reset mcu through stlink during flashtool is trying to connect but nothing.
I guess you can try to reset mcu (if klipper is working) and run flashtool.py exactly after firmware_restart was sent.

My conclusions.

  1. In case you have klipper firmware installed and working you can try to restart mcu through the klipper command and trying to connect to it with flashtool.py. Or in klipper documentation described a command which can be used to force bootloader staying in itself on the next boot. But it doesn't work for me.
  2. katapult is useless in deployer mode because it starts something located in it's configured offset and mcu program didn't start but bootloader become anavailable.
  3. flashtool.py didn't waiting bootloader to appear and if this is true it completely useless in my case. I prefer to stay on default kingroon bootloader because it gives ability to reflash on mcu boot through sd card without printer disassembling.

On my printer i have about 15 sec of main board staying alive after power was turned off. mcu is turned off too. So i can restart it by powering off wait 2-4 sec and powering on. But flashtool.py in this case can't connect to bootloader too.
Maybe I am wrong but I spent a lot of time in experiments with katapult/stlink/klipper.

To @Arksine: is it possible to make something in bootloader to wait for flashtool.py command?
For example: bootloader starts, waiting something from flashtool.py for 5 sec, starts application. Flashtool continuously sending something to /dev/ttyS0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants