Greenonline和我在今晚对 Ender3 进行了黑客攻击/逆向工程来解决这个问题。Greenonline 在他的博客中也写到了这一点。
步骤 1 - 获取固件
要做到这一点,基本上有两种方法:
- 找到一个随时可用的固件
- 自己做
变体 1 将使用来自 Creality 或其他一些制造商的预先提供的 .hex 文件。变体 2 意味着您自己编写设置或使用Repetier 固件为您编写文件。在 Ender 3 的情况下,芯片使用了不合格的 Repetier 固件,所以自己编写是唯一的选择。
要自己编写固件或使用 Repetier 固件,您需要旧设置。要获得这些,请通过 USB 连接打印机,将其与Repetier 主机等软件连接并发送M503
以获取所有设置。
现在,要么将它们破解为 Repetier 固件,要么使用空白Marlin.ino
和 Arduino IDE 对其进行自定义。在后一种情况下,您需要将文件夹Marlin-?.?.X.ZIP/Marlin-?.?.X/Marlin
放入Arduino
Documents (Windows) 或 Home (Mac) 中的文件夹中。现在Marlin.ino
在Arduino IDE 中打开。使用这些基本设置设置新固件或根据需要进行调整。
第 2 步 - 调整
现在我们有了我们的配置文件(最后我们几乎跳过了第 1 步,从Christian那里拿了一个合适的(德语!)一个,德国制造商也被称为“Chaos-Drucker”),我们需要首先根据需要调整它们以满足我们的需要,然后正确编译它们(下一步!)。作为替代(英语!)基础,TH3D 固件也可用,由 Hooglands 和 TH3D 团队提供。
所以,让我们打开你Marlin.ino
用的Arduino并找到X_MIN_POS
(CTRL
+ F
> X_MIN_POS
>搜寻所有草图)。
在我们抓取的配置文件Configuration.h
中,草图文件包含第 786-789 行(可能不同):
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -10
#define Y_MIN_POS -15
#define Z_MIN_POS 0
调整这些直到达到想要的位置 - Repetier Host 可以在这里帮助确定正确的位置。
第 3 步 - 编译
Ender3 最难的一步是让代码进行实际编译,因为它使用了Arduino 本身不支持的ATmega1284P 16Bit。虽然MightyCore支持该芯片,但它不使用该硬件库进行编译。但是,Christian 确实发现将Sanguino设置为 ATmega 1284P 16 位确实有效。这些属于作为提取文件夹到Arduino/hardware
文件夹,通常是在你的文件(如果你使用的是Windows)或家庭(在Mac)。现在,我们确实设置Tools>Board:> Sanguino
并Tools>Processor:>ATmega1284 or ATmega1284P (16 MHz)
还必须安装用于 Arduino的U8glib.h。为此,请从 github 下载 zip,然后在 Arduino 软件中Sketch>Include Library>Add .ZIP Library...
选择整个 zip 存储库进行自动安装。
通过这些设置,我们能够编译设置。
第 4 步 - 在机器上安装
大多数人现在都希望阅读有关引导加载程序和闪存的信息,这确实是一种选择。但是因为我刚刚想出如何从 .hex 安装固件,所以我想知道:我们不能从我们的设置中制作 .hex 文件吗?是的,Arduino 支持这个。
因此,在 Arduino IDE 中按Ctrl
+ Alt
+ S
(或Sketch > Export Compiled Binary
)。这将产生两个文件:
Marlin.ino.sanguino.hex
Marlin.ino.with_bootloader.sanguino.hex
在这两者中,最Marlin.ino.sanguino.hex
有趣的是通过 CURA 进行“直接闪烁”。将此文件与此处的第 2 步开始的过程一起使用,或使用Greenonline 的解决方案之一来刷新固件 - 无需引导加载程序!