This is a TMK keyboard firmware for nRF52810 or nRF52832, nRF51822 version see here.
这是一个基于nrf52蓝牙键盘的固件,使用了nRF SDK 15.3作为底层硬件驱动,并使用TMK键盘库作为键盘功能的上部实现。
此固件中的USB部分和KeymapDownloader部分重用了 nrf51822-keyboard 的代码。
application/ 固件相关
main/ 主程序
src/ 源码
bootloader/
当前支持nrf52810和nrf52832两种主控硬件,此固件支持的键盘列表见Keyboard目录。
首先下载 nRF5 SDK 15.3/16.0, 解压并放入SDK文件夹。
然后安装 gcc-arm-none-eabi-7-2018-q2-update,将template目录中对应平台的配置文件模板复制一份,重命名为Makefile.posix
或Makefile.windows
,修改里面工具路径为你的安装目录。
修改后的Makefile.posix & Makefile.windows 复制一份覆盖SDK/components/toolchain/gcc/下对应文件。 如果使用自定义SDK,需要同步修改application/bootloader/project/armgcc/Makefile中LIB_FILES += \ $(SDK_ROOT)/external/nrf_oberon/lib/cortex-m4/hard-float/liboberon_2.0.7.a \ $(SDK_ROOT)/external/micro-ecc/nrf52hf_armgcc/armgcc/micro_ecc_lib_nrf52.a 对应路径
然后安装 SDCC 用于编译CH554相关代码。
参见这篇文章,先编译uECC库,然后再编译Bootloader
注意:nrfutil 只支持Python2.x
大概分几步:
nrfutil生成bootloader密钥
nrfutil keys generate private.key
nrfutil keys display --key pk --format code private.key --out_file public_key.c
编译uECC 依赖uECC库,在SDK/external/micro-ecc/克隆uECC git仓库
cd SDK/external/micro-ecc
git clone https://github.com/kmackay/micro-ecc.git
./build_all.sh
编译bootloader
将之前生成的public_key.c中密钥部分替换application/bootloader/dfu_public_key.c中对应的内容 如果希望保留更新线上DFU的兼容性,请不要更改此处公钥内容,并在在后续制作DFU的步骤中使用application/main/project下的private.key
/** @brief Public key used to verify DFU images */
__ALIGN(4) const uint8_t pk[64] =
{
0xac, 0x29, 0x24, 0x03, 0xac, 0xdb, 0xab, 0x76, 0x64, 0x8b, 0xb3, 0xa2, 0x2c, 0xec, 0xbd, 0xa8, 0x8f, 0x36, 0x63, 0x1b, 0xa1, 0xe4, 0xf6, 0xe6, 0x33, 0xbq, 0xbe, 0xe3, 0x05, 0x8a, 0x14, 0x93,
0x99, 0xf4, 0x66, 0x9c, 0x80, 0x8f, 0xda, 0x06, 0xae, 0xbc, 0xcf, 0x6b, 0x6a, 0x68, 0x1c, 0x91, 0x2d, 0x23, 0xf1, 0x9d, 0xb0, 0xec, 0x5c, 0x8d, 0xc6, 0x88, 0x97, 0x88, 0x66, 0x54, 0x5f, 0x14
};
注意:必须确保bootloader编译是的公钥与下面介绍的打包DFU.zip使用的私钥是成对的,否则会导致无法引导加载固件
cd application/bootloader/project/armgcc
make
使用密钥制作只用于application更新的DFU.zip
首先编译键盘固件
cd keyboard/Ω45 && make
打包
将private.key复制到keyboar/Ω45/_build
update application
nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52_kbd.hex --sd-req 0xB7 --key-file private.key app_dfu_package.zip
完整包DFU制作
生成bootloader setting
nrfutil settings generate --family NRF52 --application nrf52832_xxaa_bootloader.hex --application-version 1 --bootloader-version 0 --bl-settings-version 1 bootloader_setting.hex
合并bootloader & bootloader setting
mergehex --merge nrf52832_xxaa_bootloader.hex bootloader_setting.hex --output nrf_bootloader_wsetting.hex
打包 额外需要用到mergehex,在
此处下载
update bootloader & softdevice & application
cp ../../../application/bootloader/project/armgcc/_build/nrf52832_xxaa_bootloader.hex ./
nrfutil pkg generate --hw-version 52 --bootloader-version 0 --bootloader nrf_bootloader_wsetting.hex --application-version 1 --application nrf52_kbd.hex --sd-req 0xB8,0xB7 --sd-id 0xB8,0xB7 --softdevice s112_nrf52_6.1.1_softdevice.hex --softdevice s132_nrf52_6.1.1_softdevice.hex --key-file private.key app_nrdfu_package_softdevice.zip
--application-version 必须不低于bootloader中的版本号,否则无法更新DFU
现在蓝牙和USB控制器程序的Makefile都放在一起了。进入对应的硬件目录,直接make即可。
cd keyboard/gt-ble60
make
对于nrf52,若要通过JLink直接写入,则需要安装JLink的驱动;若使用DAP-Link写入,则需要安装pyocd;若使用蓝牙DFU进行升级,则需要安装nrfutil
对于ch554,你可以使用官方的windows烧写工具,或三方的usbisp烧写。
请使用make help
查看所有的烧写和打包指令。
请参考Keyboard目录下的template移植模板,并查看doc目录下的对应说明。
原网址: 访问
创建于: 2021-12-22 16:34:30
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论