spmkey/README.md

142 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
## 编译
```javascript
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文件