spmkey/README.md

3.5 KiB
Raw Permalink Blame History

RP2350

基于RP2350进行功能整合修复部分bug时间所限结束时间20260108。 归档处理

前提:

编译基础:

apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential git python3 libstdc++-arm-none-eabi-newlib -y

获取Pico SDK

git clone -b master https://github.com/raspberrypi/pico-sdk.git

git submodule update --init

export PICO_SDK_PATH=~/pico/pico-sdk

获取本项目源码:

git clone http://192.168.201.136:3000/jb/spmkey.git

git submodule update --init --recursive

本项目优先使用微雪RP2350-USB-AGPIO 16 连接 WS2812B RGB LED已加入支持ws2812B其他的自救

注意26年以前的微雪RP2350是A2版本存在安全漏洞建议考虑A4版

移植来自微雪RB2350 RGB例程出bug自救

支持的模拟PID/VID

平台名称 (VIDPID 参数) VID (厂商 ID) PID (产品 ID) 说明
NitroHSM 0x20A0 0x4230 Nitrokey HSM
NitroFIDO2 0x20A0 0x42B1 Nitrokey FIDO2
NitroStart 0x20A0 0x4211 Nitrokey Start
NitroPro 0x20A0 0x4108 Nitrokey Pro
Nitro3 0x20A0 0x42B2 Nitrokey 3
Yubikey5 0x1050 0x0407 Yubico YubiKey 5
YubikeyNeo 0x1050 0x0116 Yubico YubiKey NEO
YubiHSM 0x1050 0x0030 Yubico YubiHSM
Gnuk 0x234B 0x0000 Gnuk Token
GnuPG 0x1209 0x2440 GnuPG Smartcard

默认值VID是0xFEFFPID0xFCFD

参考文件pico-keys-sdk/pico_keys_sdk_import.cmake

cmake 参数:cmake .. -DVIDPID=Yubikey5或者 cmake .. -DVIDPID=NitroFIDO2

其他参数

一键查看参数grep -n "Pico Key|picokeys|PRODUCT|string_desc"

参考文件:

pico-keys-sdk/src/usb/usb_descriptors.c

pico-keys-sdk/src/led/led_ws2812.c

main 文件pico-keys-sdk/src/main.c

注意存在多个CMakeLists.txt文件

已经微调加入参数:

CMake参数 类型 示例 作用
-DUSB_MANUFACTURER 字符串 '"SPM-A2"' 设备名称
-DVIDPID 字符串 '"Yubico"' 制造商PID/VID
-LED_BRIGHTNESS_DIV 数字 20对应下方5% LED亮度越大越暗

亮度值说明

参考CMake编译命令

cmake -DUSB_PRODUCT='"SPM-PMC"' \ -DUSB_MANUFACTURER='"Yubico"' \ -DUSB_LANDING_URL='"www.baidu.com"' \ -DLED_BRIGHTNESS_DIVISOR=20 \

亮度参考表

LED_BRIGHTNESS_DIV 实际亮度 效果
1 100% 非常亮
2 50% 很亮
5 20% 适中
10 10% 较暗
20 5% 默认,暗,仍可见
50 2% 最暗(自动限制)
>50 2% 自动限制为最小

启用WS2812B默认已配置

LED 配置主CMakeLists.txt启用ws2812

编辑文件pico-fido2/CMakeLists.txt

endif(ENABLE_OTP_APP)下方加入

WS2812 LED 配置

add_definitions(-DPICO_DEFAULT_WS2812_PIN=16)

message(STATUS "WS2812 LED Pin: \t\t 16")

验证:

cmake 输出显示:-- WS2812 LED Pin: 16

编译

PICO_SDK_PATH=~/pico/pico-sdk cmake .. \
    -DPICO_BOARD=pico2 \
    -DVIDPID=Yubikey5 \
    -DUSB_MANUFACTURER="Yubico" \
    -DUSB_PRODUCT_NAME="SPM-PMC" \
    -DLED_BRIGHTNESS_DIV=20

make -j$(nproc)

注意每次重新编译建议把build文件清空

刷机

长按BOOT接电把uf2文件复制到RP2350分区即可自动重启

备注支持查看本仓库的SupportList.md文件