J-Link Debug Probe and OpenOCD for Windows

<rawat.s>
3 min readMar 4, 2020

--

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

บทความนี้เป็นบันทึกช่วยจำสำหรับการใช้งานอุปกรณ์ SEGGER J-Link ร่วมกับซอฟต์แวร์ OpenOCD สำหรับ Window 10

ถ้าต้องการจะใช้ SEGGER J-Link ร่วมกับ OpenOCD สำหรับระบบปฏิบัติการ Windows 10 จะต้องเปลี่ยน USB Driver จาก J-Link Driver ไปใช้ WinUSB Driver ซึ่งก็สามารถทำได้ไม่ยาก โดยใช้ซอฟต์แวร์อย่างเช่น SysProgs USB Driver Tool หรือ Zadig Tool เป็นต้น

ให้เชื่อมต่ออุปกรณ์ SEGGER J-Link กับพอร์ต USB ของคอมพิวเตอร์ และถ้ายังไม่ได้ติดตั้งโปรแกรม J-Link for Windows ให้ดาวน์โหลดและติดตั้งใช้งานก่อนทำขั้นตอนถัดไป

ขั้นตอนการดำเนินการ

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

  • ติดตั้งและใช้งานซอฟต์แวร์ SEGGER J-Link for Windows เพื่อทดสอบการทำงานของอุปกรณ์ดังกล่าว ดูว่าสามารถใช้งานได้หรือไม่ โดยนำมาใช้กับบอร์ด RobotDyn SAMD21 M0-Mini เป็นตัวอย่าง และใช้โปรแกรมผ่าน SWD Interface
  • ทำขั้นตอนโปรแกรมไฟล์ Arduino Zero Bootoloader ลงบอร์ด SAMD21 M0-Mini โดยใช้โปรแกรม J-Flash Lite
  • เลือกใช้ WinUSB Driver แทน J-Link Driver เพื่อใช้งานร่วมกับ OpenOCD
  • ดาวน์โหลดและติดตั้งโปรแกรม OpenOCD สำหรับ Windows
  • ลองใช้ OpenOCD เพื่อทำขั้นตอนโปรแกรมไฟล์ Arduino Zero Bootoloader ลงบอร์ด SAMD21 M0-Mini โดยใช้โปรแกรม J-Flash Lite

การดิดตั้งและใช้งาน J-Link Software for Windows

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

ดาวน์โหลดและดิดตั้งโปรแกรมไปตามขั้นตอนปรกติ จากนั้นเรียกใช้โปรแกรม SEGGER J-Flash Lite จากเมนู

หน้าเว็บสำหรับดาวน์โหลดโปรแกรม J-Link Software for Windows
การติดตั้งโปรแกรม SEGGER J-Link for Windows

เมื่อโปรแกรม J-Flash Lite เริ่มต้นทำงาน ผู้ใช้จะต้องเลือกอุปกรณ์ (Device) ในกรณีนี้คือ ATSAMD21G18 และเลือก Interface เป็น SWD

ลองใช้งานโปรแกรม SEGGER J-Flash Lite สำหรับ ATSAMD21G18

ไฟล์สำหรับ Arduino Zero Bootloader สามารถดาวน์โหลดได้จาก Github เป็น .bin หรือ .hex (เลือกใช้อย่างใดอย่างหนึ่ง)

การเลือกไฟล์และโปรแกรม Arduino Zero Bootloader (samd21_sam_ba.bin)

เมื่อได้เชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์ผ่านอุปกรณ์ J-Link ไปยังคอมพิวเตอร์แล้ว ถัดไปในโปรแกรม J Flash Lite ก็ให้ลองกดปุ่ม Erase Chip และ Program Device ตามลำดับ เพื่อโปรแกรมไฟล์ Arduino Zero Bootloader ไปยังบอร์ดไมโครคอนโทรลเลอร์

ข้อสังเกตในการเชื่อมต่ออุปกรณ์: อุปกรณ์ SEGGER J-Link มีคอนเนกเตอร์แบบ 2x10 Pin (2.54mm spacing) และเราจะใช้เฉพาะขาสำหรับ SWD Interface เท่านั้นในกรณีนี้ แต่เนื่องจากบอร์ด SAMD21 M0-Mini ใช้คอนเนกเตอร์แบบ 2x5 Pin (1.27mm spacing) ซึ่งมีขนาดเล็ก ดังนั้นจึงต้องมีตัวแปลง (Adapter Board) เพื่อให้ง่ายต่อการเชื่อมต่อโดยใช้สายสัญญาณและไฟเลี้ยงทั้งหมด 4 เส้น คือ 3.3V (Voltage Target), GND, SWDIO และ SWCLK และจะต้องเสียบสาย USB (microUSB) เพื่อจ่ายไฟเลี้ยงให้บอร์ดดังกล่าวด้วย

SAMD21 M0-Mini Pinout
คอนเนกเตอร์แบบ 2x5 Pin และ 2x10 Pin

การสลับใช้งานระหว่าง J-Link Driver และ WinUSB Driver

‍‍‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

ในบทความนี้ได้เลือกใช้ SysProgs USB Driver Tool และดาวน์โหลดไฟล์ .exe เพื่อนำมาแตกไฟล์ (ใช้โปรแกรม 7-zip) และจะได้โฟลเดอร์ใหม่ จากนั้นเรียกใช้โปรแกรมชื่อ UsrDriverTool.exe

หน้าเว็บสำหรับดาวน์โหลดไฟล์ UsbDriverTool.exe
เรียกใช้โปรแกรม UsbDriverTool.exe
เลือกรายการ J-Link Driver แล้วกดปุ่ม Change Driver Type
เลือกใช้ WinUSB สำหรับ J-Link
เมื่อได้เปลี่ยนไปใช้ WinUSB Driver แทน J-Link Driver แล้ว

ถ้าต้องการเปลี่ยนกลับไปใช้ J-Link Driver แทน WinUSB Driver ก็ทำได้ในลักษณะเดียวกัน เช่น ในกรณีที่จะต้องใช้โปรแกรม SEGGER J-Flash หรือใช้โปรแกรม AVR Studio 7 IDE หรือ ARM Keil uVision IDE ร่วมกับอุปกรณ์ J-Link Debugger

ดาวน์โหลดและติดตั้งโปรแกรม OpenOCD for Windows

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

ถัดไปจะมาลองใช้โปรแกรม OpenOCD สำหรับ Windows ให้ทำขั้นตอนดาวน์โหลดและติดตั้งโปรแกรม OpenOCD ไปตามลำดับ ในบทความนี้ได้ลองใช้ OpenOCD version 2020-01-14

ในตัวอย่างนี้ได้ติดตั้ง OpenOCD ไว้ในโฟลเดอร์ C:\Tools\OpenOCD-20200114–0.10.0

หน้าเว็บสำหรับดาวน์โหลดไฟล์ OpenOCD for Windows

สร้างและบันทึกไฟล์ประเภท Batch File เช่น SAMD21_flash_bootloader.bat สำหรับทำคำสั่งเพื่อโปรแกรมไฟล์ Arduino Zero Bootloader ไปยังบอร์ด SAMD21 โดยใช้ OpenOCD + J-Link Debugger

@echo OFF
set OPENOCD_PATH=C:\Tools\OpenOCD-20200114-0.10.0
set BOOTLOADER_FILE=C:\Users\%USERNAME%\Downloads\samd21_sam_ba.bin
%OPENOCD_PATH%\bin\openocd.exe -d2 -f .\openocd.cfg ^
-c "init; targets; reset halt;" ^
-c "program {%BOOTLOADER_FILE%} verify;" ^
-c "reset; shutdown"

สร้างและบันทึกไฟล์ openocd.cfg ซึ่งเป็น Configuration File ที่เราสร้างขึ้นมาใหม่เพื่อนำไปใช้กับ OpenOCD ดังนี้

#source [find interface/cmsis-dap.cfg]
source [find interface/jlink.cfg]
transport select swd
set CHIPNAME at91samd21g18
set CPUTAPID 0x0bc11477
set ENDIAN little
telnet_port disabled
reset_config srst_nogate
adapter_nsrst_delay 100
adapter_nsrst_assert_width 100
source [find target/at91samdXX.cfg]
ตัวอย่างการทำคำสั่ง SAMD21_flash_bootloader.bat

โดยสรุป: บทความนี้สาธิตขั้นตอนการใช้งานอุปกรณ์ SEGGER J-Link V9 ร่วมกับโปรแกรม OpenOCD สำหรับ Windows เพื่อโปรแกรมไฟล์ .bin ไปยังชิป ATSAMD21 โดยใช้อินเทอร์เฟส SWD

--

--