<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MCU firmware on Sovol on mainline Klipper</title><link>https://sovol.lexfrei.dev/zero/firmware/</link><description>Recent content in MCU firmware on Sovol on mainline Klipper</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://sovol.lexfrei.dev/zero/firmware/index.xml" rel="self" type="application/rss+xml"/><item><title>Building the firmware</title><link>https://sovol.lexfrei.dev/zero/firmware/build/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/firmware/build/</guid><description>&lt;h1 id="building-the-firmware"&gt;Building the firmware&lt;a class="anchor" href="#building-the-firmware"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The MCU firmware (Katapult + Klipper) can be built either &lt;strong&gt;on the printer&amp;rsquo;s own host&lt;/strong&gt; or &lt;strong&gt;on a Mac / Linux box&lt;/strong&gt;, then the &lt;code&gt;.bin&lt;/code&gt; copied over. Both produce identical images — pick whichever is handy.&lt;/p&gt;
&lt;h2 id="toolchain"&gt;Toolchain&lt;a class="anchor" href="#toolchain"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="on-the-printer-host-the-sovol-zero-boards-allwinner-h616-debian-aarch64"&gt;On the printer host (the Sovol Zero board&amp;rsquo;s Allwinner H616, Debian aarch64)&lt;a class="anchor" href="#on-the-printer-host-the-sovol-zero-boards-allwinner-h616-debian-aarch64"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;arm-none-eabi-gcc&lt;/code&gt; is already installed — it&amp;rsquo;s the vendor&amp;rsquo;s own build chain. Clone the sources and build in place; no extra setup, and none of the macOS quirk below:&lt;/p&gt;</description></item><item><title>Flashing over SWD</title><link>https://sovol.lexfrei.dev/zero/firmware/flashing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/firmware/flashing/</guid><description>&lt;h1 id="flashing-over-swd-with-a-flipper-zero-dap-link"&gt;Flashing over SWD with a Flipper Zero (DAP Link)&lt;a class="anchor" href="#flashing-over-swd-with-a-flipper-zero-dap-link"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The toolhead Katapult is request-only and can&amp;rsquo;t be recovered over CAN once an app is broken, so an SWD probe is the safety net. Any CMSIS-DAP probe works — an ST-Link V2 clone, or a Flipper Zero running the &lt;strong&gt;DAP Link&lt;/strong&gt; app.&lt;/p&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;&lt;strong&gt;Verified scope.&lt;/strong&gt; Everything here was tested only on the &lt;strong&gt;F103 toolhead&lt;/strong&gt;, and only with a &lt;strong&gt;Flipper Zero&lt;/strong&gt; (DAP Link app). An ST-Link should behave the same (it is standard SWD), and the H750 section below is reasoned, not tested. Corrections and additions are welcome — open a PR.&lt;/p&gt;</description></item><item><title>MCU migration</title><link>https://sovol.lexfrei.dev/zero/firmware/mcu-migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/firmware/mcu-migration/</guid><description>&lt;h1 id="mcu-migration--both-mcus-onto-mainline"&gt;MCU migration — both MCUs onto mainline&lt;a class="anchor" href="#mcu-migration--both-mcus-onto-mainline"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The clean way to put both MCUs fully on upstream Klipper — app &lt;em&gt;and&lt;/em&gt; bootloader, no vendor bytes in the firmware. Build everything from the &lt;strong&gt;same Klipper &lt;code&gt;master&lt;/code&gt; commit&lt;/strong&gt; (see &lt;a href="https://sovol.lexfrei.dev/concepts/"&gt;why master&lt;/a&gt;). The order is: build all four images, flash the toolhead once over SWD, then the mainboard over USB-Katapult.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="anchor" href="#prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;An SWD programmer&lt;/strong&gt; — ST-Link V2 (~$3 clone) or a Flipper Zero running the DAP Link app. Needed once, to bootstrap the toolhead: the vendor Katapult is request-only and can&amp;rsquo;t be recovered over CAN, so you flash a CAN-capable mainline Katapult onto the toolhead over SWD the first time, and never open the head again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ARM toolchain&lt;/strong&gt; — &lt;code&gt;arm-none-eabi-gcc&lt;/code&gt; (already on the printer host) or &lt;code&gt;brew install --cask gcc-arm-embedded&lt;/code&gt; on macOS. See &lt;a href="https://sovol.lexfrei.dev/zero/firmware/build/"&gt;Building the firmware&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openocd&lt;/code&gt; ≥ 0.11 for the SWD flash.&lt;/li&gt;
&lt;li&gt;SSH access to the printer.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="back-up-first"&gt;Back up first&lt;a class="anchor" href="#back-up-first"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before erasing anything, take your rollback — the SWD dump of the toolhead especially. The full backup checklist (vendor stack, SWD dump, eMMC image) is on &lt;a href="https://sovol.lexfrei.dev/zero/os/recovery/"&gt;the recovery page&lt;/a&gt;. The one that matters most here:&lt;/p&gt;</description></item></channel></rss>