How To Use LPCXpresso IDE For Developing Your Project

การใช้ LPCXpresso IDE เพื่อสร้างและพัฒนา project ขั้นพื้นฐาน

LPCXpresso IDE เป็นโปรแกรมสำหรับพัฒนาการ Project สำหรับ LPC ARM-based microcontroller โดยถูกออกแบบให้ทำงานได้เข้ากับ LPC ทุกตระกูลในปัจจุบัน โดยหากมี LPC ตระกูลที่ใหม่ขึ้นออกมา ผู้พัฒนาจะปรับปรุงโปรแกรมและเปิดให้ผู้ใช้สามารถดาวน์โหลดได้ใหม่เสมอ โปรแกรมนี้มีและเครื่องมือที่จำเป็นในการช่วยพัฒนา Project รวมทั้งสิ่ง library พื้นฐานทั่วไป และรูปแบบที่ง่ายแก่การเข้าใจ และใช้งาน ใช้งานร่วมกับ LPCXpresso USB ARM JTAG Debuger

Layout
หน้าจอโปรแกรมของ LPCXpresso จะประกอบไปด้วย View หลาย ๆ View (ซึ่งเรียกว่า “View”)  แต่ละ View ใช้สำหรับแสดงเนื้อหาและคำสั่งตามชนิดของ View นั้น โดย View สามารถเคลื่อนย้ายและเพิ่มลดขนาด View และสามารถเลือกปิด View ที่ไม่ต้องการ หรือเปิด View ใหม่โดยไปที่ Window (toolbar) => show View

ใน Perspective (รูปแบบ) ปกติในการใช้โปรแกรมจะแบ่งเป็นแบบ Development และ Debug perspective

Development Perspective

1) Project explore View – View สำหรับดูและเลือก project และ file ของ project จาก Work space ที่ถูกเลือก  โดย Work space คือ directory ที่ถูกเลือกเพื่อเก็บ Project ต่างๆ  ที่ถูกสร้างขึ้นมา ทุกครั้งที่เปิดโปรแกรมผู้ใช้จะถูกขอให้เลือก  Directory แต่ผู้ใช้สามารถเปลี่ยน Directory ได้เอง โดยไปที่ File (toolbar) => Switch Workspace
2) Editor View – View เพื่ออ่านและแก้ไข file source code ของ project รวมถึงตั้ง break point สำหรับการ debug
3) Quick start View – View ที่รวบรวมคำสั่งที่มักจะถูกเรียกใช้บ่อยครั้ง และคำสั่งที่จำเป็นในการทำงาน เช่นคำสั่ง Build, Debug, Create new Project เป็นต้น
4) Console  View – View สำหรับแสดงข้อมูลจากการ compile และ run/debug Project  เช่น ขนาด project, ชนิดของ project, error และ output กรณีที่ใช้ Semihosting

Debug Perspective

1) Core Register / Peripheral View – Core View ใช้แสดงตำแหน่ง address ของ register โดยขณะ debug   register ที่มีการเปลี่ยนแปลงจะถูก Highlight ด้วยสีเหลือง Peripheral View มีไว้สำหรับเลือก peripheral ที่ต้องการสังเกต memory ของ peripheral นั้น ข้อมูล peripheral ที่ถูกเลือกจะถูกแสดงอยู่ในส่วน Console View => แถบ memory 
2) Debug View – View สำหรับดูการทำงานและควบคุมการ Debug เช่น stop และ resume 
3) Editor View – View สำหรับดู code และวางจุด breakpoint   *การแก้ไข code ในช่วง debug จะยังไม่มีผลอย่างใดต่อการ debug จนกว่าจะ terminate และ compile แล้ว run ใหม่อีกครั้ง
4) Quick start View –ขณะ debug จะมีแถบ Variable View สำหรับดูตัวแปรต่างๆใน code และ Breakpoint View เพื่อดูตำแหน่ง breakpoint ทั้งหมดที่ถูกวางไว้ใน Project โดยแสดง file และบรรทัดของแต่ละ breakpoint
5) Console View – View แสดงผลการ debug และมีแถบ Memory View แสดงข้อมูลและสถานะข้อมูลของ peripheral ที่ถูกเลือก


การใช้งานเบื้องต้น
การ import example project 
การฝึกใช้งานเบื้องต้นสามารถลองเรียกใช้ Example project ของ Code-Red/NXP ซึ่งมาพร้อมกับโปรแกรม โดยเลือกตระกูล LPC ให้ตรงกับ Target board ที่ผู้ใช้ต้องการทดสอบ โดยไปที่

Quick start View => start here => Import example project

จาก นั้นโปรแกรมจะให้ผู้ใช้ browse และเลือก file ชนิด zip ซึ่งเก็บชุด project ไว้ จากนั้นให้ผู้ใช้เลือกชุด project ให้ตรงกับ target board (ในที่นี้ใช้ LPC1343)

จาก นั้นโปรแกรมจะให้เลือก Project ที่ต้องการ import จาก Project ที่พบทั้งหมดข้างใน zip ต่อไปเลือก finish    project ทั้งหมดที่ถูกเลือก import เข้า workspaceปัจจุบัน และจะถูกแสดงใน Project Explorer View 
    Project ตัวอย่างที่ง่ายต่อการทดสอบได้แก่ blinky ซึ่งเป็น project ที่ทำให้ LED  ของ target board กระพริบอย่างคงที่ เพราะมี Code การทำงานที่ง่าย และเห็นผลได้ที่ LED เมื่อเลือก  project blinky ใน Project Explorer View แล้วให้compile และ debug blinky ใน Quick start view  เพื่อดูการทำงานบน target board และการทำงานของโปรแกรม

การสร้าง Project ใหม่
    ผู้ใช้สามารถสร้าง Project ใหม่เองตั้งแต่ต้นได้โดยไปที่ File (toolbar) => new => new project จากนั้นเลือกชนิดของ project ( project เปล่า / c/c++ / CVS) และเลือกตระกูล LPC ของ  target board ให้ถูก  หรือไปที่ Quick start View => “Project and File Wizard” => MCU Project Wizards => Create NXP LPCXXXX Project

จาก นั้นโปรแกรมจะถามว่าต้องการใช้ CMSIS ซึ่งเป็นที่เป็นคำสั่งและการกำหนดเชื่อมต่ออย่างมาตรฐานสำหรับ Cortex Microcontroller (LPC 1xxx) หรือไม่ ให้เลือก USE CMSIS เพื่อใช้ function การทำงานและการเชื่อมต่อเบื้องต้นของ CMSIS

แล้วโปรแกรมจะให้เลือก Build configuration => เลือกทั้ง Debug และ Release แล้วเลือก Finish

จาก นั้นเลือกชนิด LPC Processor ที่ถูกต้องของ target board แล้วเลือก finish สุดท้ายจะได้ Project ว่างเปล่าซึ่งถูกสร้างไว้ใน  workspace ที่ปัจจุบัน   ขั้นตอนสุดท้ายก่อนจะเริ่มพัฒนา project ได้ก็คือ การ import CMSIS project เข้ามาที่ workspace โดยไปที่ Quick start => Import example project => และเลือก CMSISLPCXXXX.zip โดย xxxx คือหมายเลขของ LPC เมื่อเสร็จสิ้นจึงจะได้ project ที่สามารถนำมาพัฒนาได้   นอกจากนี้หากจำเป็นที่จะต้องใช้ file header / c source code อื่นๆเพื่อใช้กับ project สามารถ import ได้เข้ามาได้โดยไปที่ Quick start => Import and export => import file(s)  หรือ เลือก import มาทั้ง project โดย achieved project(project ใน file zip) หรือ existing project (project ที่มีอยู่แล้ว)

Semihosting (C/C++ project)
    ในการ debug และพัฒนา project เบื้องต้น การแสดงผลทางหน้าจอ ณ บางช่วงของการทำงานโปรแกรม อาจช่วยในการสังเกตและแก้ไขพัฒนาได้ดีขึ้น  เช่น  ต้องการแสดงข้อความ “ led on ” เมื่อสั่งให้ LED เป็นสถานะ ON  เพื่อติดตามการทำงานของ code ที่เขียนขึ้น เป็นต้น    ในรูปแบบปกติมักจะใช้การติดต่อส่งข้อมูลระหว่าง target board และ PC ผ่านทาง terminal/USB โดยใช้โปรแกรมแยกต่างหากเช่น HyperTerminal หรือ X-CTU เป็นต้น แต่ LPCXpresso IDE ได้รับการพัฒนาให้สามารถ Debug Project แบบ Semihosting ได้โดยให้ Project ใช้ semihosting library ซึ่งจะสามารถรับและส่งข้อมูลด้วยคำสั่งรับและแสดงผลพื้นฐานในภาษา C เช่น scanf และ printf ได้ทันที ผ่าน Console View ซึ่งช่วยให้ส่งและดูผลได้ไปพร้อมกับการ debug แต่ target board ที่ใช้ semihosting library กับ project จะสามารถทำงานได้เฉพาะเมื่อ debug โปรแกรมนี้ซึ่งต้องเชื่อมต่อกับ PC ตลอด ดังนั้นเพื่อให้ target board สามารถทำงานแยกจาก  PC ได้ หลังจากพัฒนาเสร็จ ผู้ใช้จำเป็นต้องแก้ไข Project ให้ใช้ Library  ปกติ และนำคำสั่ง input/output พื้นฐานออก เนื่องจากคำสั่งพื้นฐานนี้ไม่สามารถ compile ได้เมื่อใช้ library ที่ไม่เป็น semihosting

การ ปรับเพื่อให้ C/C++ Project ใช้ Semihosting ทำได้โดย click เลือก project ที่ต้องการใน Project Explorer View แล้ว click ขวา => properties “หรือ”ไปที่ Project บน toolbar => properties

จาก นั้นเลือก C/C++ Build ในแถบทางซ้ายสุด => Settings จากนั้นในแถบทางขวาให้เลือก Tool Settings => MCU LINKER => Target   จากนั้นเลือก library จากช่องคำสั่ง USE C library ให้เป็น Redlib(semihost) หรือNewlib(semihost)

ตัวอย่าง แบบพื้นฐานซึ่งแก้ไขจากจาก Project Blinky โดยออกแบบใหม่ให้โปรแกรมแสดงข้อความด้วย printf แล้วจากนั้นรอรับคำสั่งด้วย scanf จากนั้นให้ LED ทำงานตามคำสั่งที่ได้โดยใช้ switch: case โดยจะเห็นว่า ข้อความ output และจุดใส่ input จะอยู่ใน Console View