使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader

  • 内容
  • ....
  • 相关

最近几天利用ATSAMD21G18 制作了与Arduino Zero安全兼容的几块PCB样板,支持三路步进电机输出,四路舵机输出,预留了ESP-12可插拔接口,集成了ICM-20600陀螺仪,因为新购的ATMEL ATSAMD21G18不烧写专用的Bootloader,是无法在Arduino IDE下使用的,下面就将使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader的过程记录下来,供需要的朋友参考。

PCB板的设计

ARM Cortex-M0 机器人控制板
ARM Cortex-M0 机器人控制板

这块控制板的目标是可以自由的创建一些机器人项目,而不需要去额外的连接其它模块。同时,它集成有足够使用的传感器端口和电压输出,并能保持与 Arduino Zero 100%兼容性,由于采用的核心处理器是ARM Cortex-M0与Arduino Zero完全一致,因此,Arduino IDE会将其识别为有USB接口的Arduino ZERO。下面是基本完成的实物图:

Arduino Zero 兼容控制板
Arduino Zero 兼容控制板

下面是各主要部件图:

Arduino Zero 兼容控制板组件
Arduino Zero 兼容控制板组件

其中,1 为核心处理器;2是5V、3.3V电路;3是三路步进电机驱动板接口,支持A4988电机驱动板;4是ESP8266模块接口,与ESP-12S转接板尺寸完全兼容;5是ICM20600陀螺仪。

在上图中步进电机驱动板接口的中间有一个2.54mm的3P母座,该接口就是预留的ATSAMD21G18的SWD烧写 firmare 的接口,从上到下分别是RESET、SWCLK、SWDIO。

J-Link EDU Mini

J-Link EDU Mini
J-Link EDU Mini

这是性价比最高的SEGGER产品,小巧实用,带2×5针1.27mm输出线,J-Link EDU Mini 支持的CPU类型可查阅:Overview of Supported CPUs and Devices ,其输出针脚定义如下图:

J-Link EDU Mini SWD接口

接口定义图中的 1 脚与实物图中的一脚对应。电商购买地址:J-Link EDU Mini

Bootloader烧写前的准备

  1. 前往Github下载Arduino官方的Bootloader,地址:https://github.com/arduino/ArduinoCore-samd ,提前下载文件包备用;
  2. 下载安装Atmel Studio 7.0;
  3. 完成J-Link 1.27mm 转2.54mm的改造,可用小电阻的引脚插入10针排线孔引出,再用杜邦线接触即可。
  4. 完成硬件连接,即J-Link与 ATSAMD21G18的SWD 接口的硬件连接,可见下图:

ATMEL Cortex-M0 Bootloader烧写

完成前面准备工作后,将J-Link插入电脑USB接口,通常Windows会自动安装驱动,否则只能自行官网 SEGGER.com 下载驱动安装了。然后打开ATMEL Studio 7,点开“Tools”菜单,找到下面的“Device Programming”。

 ATMEL Studio 7,“Tools”菜单,下面的“Device Programming”
ATMEL Studio 7,“Tools”菜单,下面的“Device Programming”

打开Device Programming窗口,选择“Tool”为 J-link,“Device”为ATSAMD21G18A, “interface”为SWD,然后点击“Apply”。

 ATMEL Studio Device Programming
ATMEL Studio Device Programming

如果硬件连接和 J-Link 驱动安装无误,我们就可以读出设备的签名信息和目标电压

 ATMEL Studio Device Programming
ATMEL Studio Device Programming

这是可以点击Fuses熔丝位检查是否需要解锁了,我的ATSAMD21G18A是没有锁的,网上有教程说需要修改BOOTPROT为0x07,我研究了一晚终于在官方的DATASHEET上找到了答案,见下图

ATMEL Cortex-m0 BOOTPROT
ATMEL Cortex-m0 BOOTPROT

奇怪的事我安装的最新studio版本的熔丝位显示如下,它并不是以十六进制存在的,也许官方进行了软件更新

  ATMEL Studio Device Programming
ATMEL Studio Device Programming

NVMCTRL_BOOTPROT为值为“ 0 Bytes”,对应的值就是“7”。熔丝位检查无误后可以进入“Memories”菜单,进行BOOTLOADER的烧写了。

点击Flash地址栏后面的三点图标,导航到前面下载的Arduino SAMD Bootloader文件位置,应该是“ArduinoCore-samd-master.zip”,文件的路径是”ArduinoCore-samd-master\bootloaders\zero\samd21_sam_ba.hex”。

 Arduino SAMD Bootloader 烧写
Arduino SAMD Bootloader 烧写

至此,Bootloader烧写就成功了,这时可以打开Arduino IDE验证软件是否可以识别出板子了。

Arduino IDE 识别 Arduino Zero
Arduino IDE 识别 Arduino Zero
Arduino IDE 识别 Arduino Zero
Arduino IDE 识别 Arduino Zero

OK,IDE完美识别出开发板,至此使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader成功。