# 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-A（GPIO 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是：0xFEFF，PID：0xFCFD

参考文件：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文件


