Firmware¶
Este documento descreve a compilação e gravação do bootloader Katapult para o microcontrolador iHeater. O Katapult permite atualizar o firmware Klipper via USB e também é usado ao instalar o firmware Klipper no controlador iHeater.
Requisitos¶
- STM32F042F6P6
- Placa iHeater
- Programador ST-Link V2 para a gravação inicial ou cabo USB
- Sistema Linux, por exemplo Raspberry Pi ou impressora
Se não for possível compilar e gravar o firmware diretamente na impressora
Compilação do Katapult¶
- Clone o repositório Katapult:
-
No
menuconfig, selecione: -
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 o firmware:
O arquivo de firmware será criado no caminho out/katapult.bin.
Gravação do Katapult via DFU¶
Esta etapa é necessária apenas uma vez, para gravar o bootloader Katapult.
Preparação¶
Instale o dfu-util, caso ainda não esteja instalado:
Instale o jumper BOOT0 e reinicie a placa pela alimentação ou pressione RESET. O microcontrolador entrará no modo DFU.
Verifique a conexão:
Deve aparecer o dispositivo:
Gravação do Katapult¶
Execute:
Exemplo de saída bem-sucedida:
Downloading to address = 0x08000000, size = 4968
Download [=========================] 100% 4968 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state
Remova o jumper, mantenha pressionado o botão MODE, pressione e solte RESET ou reconecte o USB.
Após reiniciar, execute:
Deve aparecer o dispositivo:
Se ocorrerem erros de permissão:
Observações¶
- O Katapult ocupa os primeiros 8 KB da Flash, portanto no Klipper é obrigatório definir o offset de 8KiB.
- É possível entrar no DFU com um duplo clique em RESET ou pelo botão GPIO (PA4).
- PA13/PA14 são usados para SWD.
- Após gravar o Katapult, o programador ST-Link não é mais necessário; as atualizações seguintes podem ser feitas via USB.
Instalação do firmware no iHeater¶
Compilação do firmware¶
No menu de configuração, selecione:¶
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))
Desative todas as opções não 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
Salve as configurações e saia do menu.¶
Compile o firmware¶
Como resultado, deve aparecer o arquivo:
Instalação do firmware na placa iHeater¶
Se necessário, instale python3-serial
As etapas a seguir pressupõem que o bootloader Katapult já está instalado.
-
Conecte o iHeater ao host no modo de gravação: mantenha MODE pressionado ao conectar o USB ou pressione RESET duas vezes.
-
Encontre o dispositivo:
Deve aparecer algo como:
- Se necessário, instale o
flashtool:
- Substitua o ID do dispositivo pelo seu e execute:
python3 ~/katapult/scripts/flashtool.py -d /dev/serial/by-id/usb-katapult_stm32f042x6_XXXXXXXXXXXXXXXXXXXXXXXX-XXXX -f ~/klipper/out/klipper.bin
Saída esperada:
Flashing '/home/pi/klipper/out/klipper.bin'...
[##################################################]
Write complete: 20 pages
Verifying (block count = 319)...
[##################################################]
Verification Complete: SHA = 8A3DDF39A0E70B684DC6BAF74EF8F089EBDD6C18
Flash Success
- Verifique:
A saída deve ser aproximadamente assim:
iHeater está pronto para trabalhar com Klipper
