You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为USB连接的PIC24FJ128GC006烧录唯一序列号实现持久识别

为PIC24FJ128GC006设置唯一USB iSerial值的实现方案

完全可以在烧录阶段为每台设备写入唯一标识符,让lsusb -v输出不同的iSerial值,从而生成独立的/dev/serial/by-id条目,具体操作如下:

1. 核心原理

USB设备的iSerial对应字符串描述符的索引,/dev/serial/by-id的命名正是基于该值+设备VID/PID生成。要实现唯一识别,只需让每台设备的固件在USB枚举时,返回不同的iSerial字符串即可。

2. 固件修改要点

  • 利用芯片内置唯一ID:PIC24FJ128GC006自带出厂固化的唯一硬件ID(查看 datasheet 可找到对应寄存器,比如DEVID0、DEVID1等连续寄存器),固件启动时读取这些寄存器的值,格式化为字符串后填充到USB字符串描述符的iSerial字段。
  • 自定义写入唯一值:如果内置ID不符合需求,可将自定义的唯一字符串(比如设备编号、MAC格式字符串)写入芯片的EEPROM区域,固件启动时读取该区域内容作为iSerial值。
  • 修改USB描述符代码:找到固件中定义USB字符串描述符的数组,将原本固定的iSerial字符串替换为动态读取的唯一值。

3. 烧录阶段写入唯一值

  • MPLAB X IDE + PICKIT 5 可视化操作:
    • 打开项目的烧录配置,在"Programmer"设置中找到"Custom Data"选项,为每台设备手动输入唯一的序列号字符串,烧录时该值会被写入指定的EEPROM地址。
  • 命令行批量烧录:
    • 使用PICKIT 5的命令行工具pk5cmd,编写脚本自动为每台设备分配递增的唯一值,通过-w参数写入到EEPROM的指定地址,实现批量自动化烧录。

4. 验证步骤

烧录完成后连接设备到电脑:

  • 执行lsusb -v,找到对应设备的iSerial字段,确认每台设备的值唯一。
  • 查看/dev/serial/by-id/目录,应该会出现与设备数量一致的独立条目,且重启或插拔设备后路径不会变化。

内容的提问来源于stack exchange,提问作者Kepler7894i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:12:33