项目简介
本项目是专门为Pinephone键盘打造的开源固件。采用双固件架构,包含通用库存固件与可定制的用户固件,无需硬件修改即可灵活调整键盘功能。库存固件可直接实现键盘完整功能,还支持通过I2C接口从Pinephone本身进行用户固件的更新或定制。项目基于开源软件,无依赖,仅需sdcc 4.1+即可构建固件。
项目的主要特性和功能
- 双固件架构:库存固件实现键盘完整功能,能报告键盘矩阵原始状态;用户固件用于更新或定制,满足硬件修改后的软件支持需求。
- 灵活配置:可在键盘驱动中随意更改键映射和组合,无需重新刷写固件。
- 低功耗设计:利用MCU掉电功能,闲置时功耗低至9mW,主动扫描模式下功耗20mW。
- 多方式刷机:支持通过USB和I2C接口刷机,USB可更新库存固件,I2C可在保留库存固件的同时写入用户固件。
- 自我检测:具备自我检测功能,可快速检测键盘矩阵问题。
- I2C接口控制:通过I2C接口暴露寄存器,用户可读写寄存器控制键盘固件操作。
安装使用步骤
准备工作
确保已下载本项目的源码文件,且安装了sdcc 4.1+版本。
编译固件
进入firmware
目录,执行./build.sh
命令编译新固件。
刷机方式
USB刷机
- 焊接USB线到键盘控制板。
- 保存原始固件:
./ppkb-usb-flasher info > saved-info.txt
./ppkb-usb-flasher --rom-out saved-rom.bin read
- 刷入新固件:
./ppkb-usb-flasher --rom-in firmware/build/fw-stock.bin write reset
I2C刷机
- 按特殊方式构建用户固件,使其位于代码ROM的0x4000地址。
- 刷入新固件:
./ppkb-i2c-flasher --rom-in firmware/build/fw-user.bin write reset
使用操作
- 修改固件运行方式:可修改寄存器0x20的设置,但设置在复位后不保留。
- 读取键盘矩阵状态:从地址0x07进行13B的读取事务,通过计算CRC8校验数据。
- 自我检测:向寄存器0x21写入命令'r'或'c',从寄存器0xff重复读取以获取自检结果。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】