最近在开发一款USB外设,使用ATSAMD21G18作为主控芯片,Arduino开发,因为是自己设计的电路板,芯片也是不带bootloader的元件,不能直接烧录Arduino程序,需要先刷bootloader:
先按照官方文档,添加SAMD21 core:https://docs.arduino.cc/software/ide-v1/tutorials/getting-started/cores/arduino-samd/
使用arduino的烧录引导程序功能,烧录bootloader,我使用的是DAPLINK参考了这个教程:https://github.com/DeqingSun/Debug-Arduino-ATSAMD21G18-with-CMSIS-DAP

问题出现了
arduino的openocd不能识别daplink设备,起初我还以为驱动有问题,或者daplink太垃圾,后来换了个daplink也不行
因为玩这个芯片的人少,所以也没找到什么解决方案,说什么的都有,有的人是因为权限问题,在我这都不能解决问题
解决方案
后几经周折发现是arduino自带的openocd版本太低导致的,应该是不兼容我的daplink
需要自己去openocd官网下载最新的openocd,解压到:C:\Users\用户名\AppData\Local\Arduino15\packages\arduino\tools\openocd把现有的给替换掉

确保子目录结构如下:

再上传就可以了
拓展内容
daplink选购:淘宝上10块左右的,大部分都是用STM32F103C6T6,内存小的可怜,下载速度很慢,固件也是阉割版的,不然放不下,会有很多奇怪的问题,建议不要买,推荐后面这个图中的CH32V305的,稳定且速度很快,就贵几块钱

