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

Linux下如何为PlatformIO指定Atmel AVRISP mkII的正确上传端口

解决PlatformIO中AVRISP mkII上传端口问题

问题核心

AVRISP mkII是USB HID类编程器,并非串口设备,自动识别的/dev/ttyS0完全不匹配,需要通过USB直接访问设备,同时要确保普通用户拥有足够的设备访问权限。

解决方案步骤

1. 配置udev权限(关键)

Ubuntu默认限制普通用户访问USB编程器,需添加udev规则开放权限:

  • 创建规则文件:
    sudo nano /etc/udev/rules.d/99-avrispmkII.rules
    
  • 写入以下规则内容:
    SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="0666", GROUP="plugdev"
    
  • 保存退出后,重新加载udev规则:
    sudo udevadm control --reload-rules && sudo udevadm trigger
    
  • 将当前用户加入plugdev组,确保权限生效:
    sudo usermod -aG plugdev $USER
    
  • 注销并重新登录,让组权限变更生效。

2. 修正platformio.ini配置

检查并调整你的配置,注意两个细节:

  • 原配置中upload_command末尾多了一个多余的反引号,需删除,正确配置如下:
    upload_protocol = custom
    upload_port = usb
    upload_flags =
        -C
        $PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
        -p
        $BOARD_MCU
        -P
        $UPLOAD_PORT
        -c
        stk500v2
        -e
    upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i
    
  • 确认$BOARD_MCU已正确设置为你的目标MCU型号(例如atmega328p)。

3. 手动测试avrdude(排查问题)

脱离PlatformIO直接运行avrdude,验证设备是否可正常访问:

avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p <你的MCU型号> -P usb -c stk500v2 -e -U flash:w:<你的固件路径>.hex:i

如果此命令能成功执行,说明权限和配置均无问题,重启VS Code后即可正常使用PlatformIO上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:30:20