摘要
我正试图在AMJ40的机械键盘上闪现新的固件。我可以闪现的十六进制‘成功’,但键盘的反应,恢复到它的默认行为。
更详细
我可以make新的.hex文件,看起来一切正常,但是当我使用键盘时,它只会有它的默认行为。
我只是假设代码中有些东西不起作用,但当我按下重置按钮时,键盘就停止工作了,在make进程发送了一个重置命令之后,它又工作了--只是使用旧的布局。
这是make dfu的输出
ben@um:~/projects/git/AMJ40/src$ make dfu
dfu-programmer atmega32u4 erase
dfu-programmer atmega32u4 erase
dfu-programmer atmega32u4 flash AMJ40_lufa.hex
Validating...
17124 bytes used (59.72%)
dfu-programmer atmega32u4 reset我试图控制各种键组合,如建议在这里。
我也尝试过手动清空芯片。这里是是清除内存后的内存内容吗?。
如果手动重新创建make dfu命令,则会得到相同的行为,即:
dfu-programmer atmega32u4 erase
dfu-programmer atmega32u4 erase
dfu-programmer atmega32u4 flash layout.hex
dfu-programmer atmega32u4 start我目前试图闪现的密钥映射如下所示:
KEYMAP(
D, O, H, E, R, T, Y, U, I, P, A, A,\
D, O, H, E, R, T, Y, J, K, L, A,\
D, O, H, E, R, T, Y, M, A, A, A,\
A, A, A, A, A, A, A, A),
KEYMAP(
F, R, U, S, T, R, A, T, E, P, A, A,\
D, O, H, E, R, T, Y, J, K, L, A,\
D, O, H, E, R, T, Y, M, A, A, A,\
A, A, A, A, A, B, B, B),这个可笑的关键图是要非常清楚地表明它是否起作用。我希望顶部行的第二个键在闪烁后打印O,但是它总是打印一个Q(就像普通的QWERTY键盘一样)。
猜疑
我已经看过了,但是在构建过程中可能有一个文件被引用,它覆盖了我的意图。
芯片中也可能有一些神秘的角落,它们不断地将自己恢复到以前的设置,但我看不出这是如何发生的。
免责声明
这个问题不一定是一个编程问题,但还有其他几个dfu程序员还没有关闭作为一个主题,所以他们鼓舞了我。
发布于 2017-01-25 18:24:10
密钥映射在EEPROM中,因此它在重新启动时仍然存在。..。此外,QMK固件有一个擦除EEPROM十六进制,您可以使用擦除它。
这就是答案。命令dfu-programmer atmega32u4 erase不擦除eeprom。要做到这一点,您需要用其他东西覆盖它。在本例中,其他内容是来自.hex的QMK量子工具文件。
这里有一个小小的改动,因为文档中说应该是:
dfu-programmer atmega32u4 flash-eeprom eeprom_reset.hex但在我的dfu程序员版本中,它需要
dfu-programmer atmega32u4 flash --eeprom eeprom_reset.hex我将其添加到我的make过程中。我将上面提到的十六进制文件复制到我的回购中,然后将tmk_core_custom/rules.mk更改为在dfu部分中有以下内容
dfu: $(TARGET).hex
...
dfu-programmer $(MCU) erase
dfu-programmer $(MCU) flash-eeprom tools/eeprom_reset.hex # <-add this line
dfu-programmer $(MCU) erase
dfu-programmer $(MCU) flash $(TARGET).hex
dfu-programmer $(MCU) reset这意味着我现在可以在一步内完成一个make dfu。
未来事物
tmk_core_custom子模块中。理想情况下,我会找到一种方法让它生活在我的回购中。我完全在寻求建议,让这个答案更好!
https://stackoverflow.com/questions/41788455
复制相似问题