Firmware¶
Este documento describe la compilación y el flasheo del bootloader Katapult para el microcontrolador iHeater. Katapult permite actualizar el firmware de Klipper por USB y también se utiliza al instalar el firmware Klipper en el controlador iHeater.
Requisitos¶
- STM32F042F6P6
- Placa iHeater
- Programador ST-Link V2 para el flasheo inicial o cable USB
- Sistema Linux, por ejemplo Raspberry Pi o una impresora
Si no es posible compilar y flashear el firmware directamente en la impresora
Compilación de Katapult¶
- Clone el repositorio de Katapult:
-
En
menuconfig, seleccione: -
MCU Architecture: STM32
- Processor model: STM32F042
- Clock Reference: Internal
- Communication interface: USB (on PA9/PA10)
- Application start offset: 8KiB offset
- Support bootloader entry on rapid double click of reset button
- Enable bootloader entry on button (or gpio) state
- (!PA4) Button GPIO Pin
- Enable Status LED
- (PA5) Status LED GPIO Pin
- Compile el firmware:
El archivo de firmware se creará en la ruta out/katapult.bin.
Flasheo de Katapult mediante DFU¶
Este paso solo es necesario una vez para grabar el bootloader Katapult.
Preparación¶
Instale dfu-util si aún no está instalado:
Instale el jumper BOOT0 y reinicie la placa desconectando y conectando la alimentación, o pulse RESET. El microcontrolador entrará en modo DFU.
Compruebe la conexión:
Debe aparecer el dispositivo:
Flasheo de Katapult¶
Ejecute:
Ejemplo de salida correcta:
Downloading to address = 0x08000000, size = 4968
Download [=========================] 100% 4968 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state
Retire el jumper, mantenga pulsado el botón MODE, pulse y suelte RESET, o vuelva a conectar el USB.
Después del reinicio, ejecute:
Debe aparecer el dispositivo:
Si se producen errores de permisos:
Notas¶
- Katapult ocupa los primeros 8 KB de Flash, por lo tanto en Klipper es obligatorio indicar el desplazamiento 8KiB.
- Es posible entrar en DFU con una doble pulsación de RESET o mediante el botón GPIO (PA4).
- PA13/PA14 se utilizan para SWD.
- Después de flashear Katapult, el programador ST-Link ya no es necesario; las actualizaciones posteriores se pueden realizar por USB.
Instalación del firmware en iHeater¶
Compilación del firmware¶
En el menú de configuración, seleccione:¶
Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32)
Processor model (STM32F042)
Bootloader offset (8KiB bootloader)
Clock Reference (Internal clock)
Communication interface (USB (on PA9/PA10))
Desactive todas las opciones no utilizadas:¶
[*] Support micro-controller based ADC (analog to digital)
[ ] Support communicating with external chips via SPI bus
[ ] Support communicating with external chips via I2C bus
[*] Support GPIO based button reading
[ ] Support Trinamic stepper motor driver UART communication
[ ] Support 'neopixel' type LED control
[ ] Support measuring fan tachometer GPIO pins
*** LCD chips ***
[ ] Support ST7920 LCD display
[ ] Support HD44780 LCD display
*** External ADC type chips ***
[ ] Support HX711 and HX717 ADC chips
Guarde la configuración y salga del menú.¶
Compile el firmware¶
Como resultado, debe aparecer el archivo:
Instalación del firmware en la placa iHeater¶
Si es necesario, instale python3-serial
Los siguientes pasos suponen que el bootloader Katapult ya está instalado.
-
Conecte iHeater al host en modo de flasheo: mantenga pulsado MODE al conectar el USB o pulse RESET dos veces.
-
Busque el dispositivo:
Debe aparecer algo similar a:
- Si es necesario, instale
flashtool:
- Sustituya el ID del dispositivo por el suyo y ejecute:
python3 ~/katapult/scripts/flashtool.py -d /dev/serial/by-id/usb-katapult_stm32f042x6_XXXXXXXXXXXXXXXXXXXXXXXX-XXXX -f ~/klipper/out/klipper.bin
Salida esperada:
Flashing '/home/pi/klipper/out/klipper.bin'...
[##################################################]
Write complete: 20 pages
Verifying (block count = 319)...
[##################################################]
Verification Complete: SHA = 8A3DDF39A0E70B684DC6BAF74EF8F089EBDD6C18
Flash Success
- Compruebe:
La salida debe ser aproximadamente así:
iHeater está listo para funcionar con Klipper
