การใช้งานอุปกรณ์ ULINK2 กับซอฟต์แวร์ ARM Keil uVision & MDK

<rawat.s>
3 min readJan 25, 2020

--

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

ในปัจจุบันคนส่วนใหญ่ มักเริ่มต้นและเรียนรู้การใช้งานและเขียนโปรแกรมไมโครคอนโทรลเลอร์โดยใช้บอร์ด Arduino ซึ่งก็มีข้อดีหลายประการ ถ้ามีบอร์ด Arduino เช่น Uno หรือ Nano (ถือว่า มีราคาไม่แพงเลย) ก็แค่นำมาเสียบสาย USB ต่อเข้ากับคอมพิวเตอร์ และสามารถเขียนโปรแกรมโดยใช้ Arduino IDE (Open Source) ถ้าเขียนโค้ด Arduino Sketch ได้ถูกต้องแล้ว ก็ทำขั้นตอน Build และตามด้วย Upload ไปยังบอร์ด Arduino ได้ไม่ยากเลย

ในอดีต ผู้เขียนเคยใช้ซอฟต์แวร์ Keil (ถูกซื้อไปโดยบริษัท ARM Ltd. ในปีค.ศ. 2005 ปัจจุบันเรียกว่า ARM KEIL) เพื่อทดลองเขียนโปรแกรมบอร์ดไมโครคอนโทรลเลอร์ (32 บิต) ซึ่งถือว่า เป็นครั้งแรกในชีวิต … ไมโครคอนโทรลเลอร์ที่มีให้ใช้ตอนนั้นคือ LPC2148 (ARM7TDMI-S) ของบริษัท Philips Semiconductors (หรือ NXP ในปัจจุบัน)

ซอฟต์แวร์ที่มีคนแนะนำให้ใช้คือ Keil uVision IDE แต่จะต้องใช้งานในโหมด Evaluation (ถ้าใช้ Professional Version จะต้องเสียค่า License ในการใช้งาน) ดังนั้นจึงมีข้อจำกัดคือ ขนาดของโปรแกรมที่ได้ (Program Size) จะต้องมีขนาดไม่เกิน 32KB ถ้าต้องการจำลองการทำงานด้วย Simulator (อันนี้ถือว่าเป็นจุดแข็ง เช่น เราสามารถจำลองการทำงานของโปรแกรมในระดับคำสั่งได้ก่อนไปทดลองกับฮาร์ดแวร์จริง)

การโปรแกรมหรืออัปโหลดไฟล์ไปยังบอร์ดไมโครคอนโทรลเลอร์ มีหลายวิธี วิธีแรกใช้ Bootloader เช่น ผ่านทาง Serial (ในตอนนั้นได้ลองใช้กับบอร์ด LPC2148) และอีกวิธีเป็นการใช้อุปกรณ์ Device Programmer / Debugger คือ สามารถอัปโหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์ได้แล้ว ยังสามารถทำการดีบักโปรแกรมในขณะที่ทำงานโดยใช้ฮาร์ดแวร์จริงได้ด้วย

ผู้เขียนไม่ได้ใช้ซอฟต์แวร์ ARM Keil uVision IDE & MDK-ARM มานานหลายปี และในอดีตก็เคยได้ซื้ออุปกรณ์ ULINK2 JTAG Programmer / Debugger ของบริษัท ARM Keil (แต่ที่จริงแล้วเป็น Clone ที่ผลิตในประเทศจีน ราคาจึงไม่แพงมากนัก) นอกจากนั้นยังมีบอร์ดไมโครคอนโทรลเลอร์ที่ได้เคยซื้อไว้ ซึ่งน่าจะผลิตมาประมาณ 10 ปีแล้ว เป็นบอร์ดที่มีชื่อว่า BlueBoard LPC1768 (บอร์ดนี้ผลิตโดยบริษัทในอินเดีย) ด้วยความเสียดาย และอยากทราบว่า จะยังใช้ได้อยู่หรือไม่ จึงเป็นจุดเริ่มต้นของสิ่งที่จะนำเสนอในบทความนี้

หน้าเว็บของบริษัทที่ขายบอร์ด BlueBoard LPC1768
หน้าเว็บของบริษัท ARM Keil ที่แสดงข้อมูลเกี่ยวกับอุปกรณ์ ULINK2

ขั้นตอนการดำเนินการมีดังนี้‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍
1) ดาวน์โหลดและติดตั้งซอฟต์แวร์ MDK-ARM (ใช้เวอร์ชัน MDK 5.29) สำหรับระบบปฏิบัติการ Windows 10
2) ติดตั้ง Software Pack สำหรับ NXP LPC1700 MCU Series
3) สร้างโปรเจกต์ใน uVision IDE และเขียนโค้ดในไฟล์ main.c เพื่อทำให้ LED (ขา P1_29 ของ LPC1768) บนบอร์ดกระพริบได้
4) คอมไพล์โค้ด โดยทำขั้นตอน Build
5) ตั้งค่าเลือกใช้อุปกรณ์ ULINK2 ในส่วนของ Debug
6) อัปโหลดโปรแกรมไปยังบอร์ดทดลอง และทำขั้นตอนดีบักในฮาร์ดแวร์

เริ่มต้นขั้นตอนติดตั้ง MDK-ARM v5.29
เริ่มต้นขั้นตอนติดตั้ง Keil Pack Installer
เลือก Software Pack ที่ต้องการติดตั้งหรืออัปเดต เช่น จะใช้ MCU ตระกูลใดหรือของบริษัทใดบ้าง
ค้นหา LPC1700 Series แล้วติดตั้ง (Install) Keil LPC1700 DFP
เริ่มต้นใช้งาน Keil uVision IDE และสร้างโปรเจกต์ใหม่
เลือกไมโครคอนโทรลเลอร์ LPC1768
เลือกไลบรารีที่จะต้องใช้ เลือกเฉพาะการใช้งานเบื้องต้น (ยังไม่ต้อง Advanced อะไร)
สร้างไฟล์ main.c เขียนโค้ดตามตัวอย่าง แล้วเพิ่มเข้าในกลุ่ม Source Group 1
เข้าสู่ขั้นตอนการตั้งค่าให้กับ Target “Target 1”
ตัวอย่างการตั้งค่าใน Tab “Target”
ตัวอย่างการตั้งค่าใน Tab “Output”
ตัวอย่างการตั้งค่าใน Tab “Debug”
ตัวอย่างการตั้งค่าสำหรับ ULINK2 ในส่วนของ Debug
ตั้งค่า Core Clock ให้เป็น 100 MHz
เมื่อทำขั้นตอน Flash > Download แล้ว ให้ทำขั้นตอน Debug > Start/Stop Debug Session
ลองเพิ่ม Breakpoint ในโค้ดเพื่อให้หยุดเมื่อทำงานมาถึงตำแหน่งหรือบรรทัดที่ระบุ
สามารถดูช่วงเวลาการเกิด Breakpoint สังเกตที่ Internal Sec … เป็นค่า Elapsed Time หน่วยเป็นวินาที จะเพิ่มขึ้นทีละ 0.1 วินาที (ครบหนึ่งรอบของการวนซ้ำใน while loop)
เมื่อทดลองกับฮาร์ดแวร์และวัดสัญญาณเอาต์พุตได้ประมาณ 10Hz

จบการนำเสนอ แต่การเรียนรู้ยังไม่จบ โปรดติดตามนะครับ …

Creative Commons, Attribution-Non Commercial-Share Alike 4.0 International (CC BY-NC-SA 4.0)

--

--

<rawat.s>
<rawat.s>

Written by <rawat.s>

I'm Thai and working in Bangkok/Thailand.

No responses yet