จากครั้งที่แล้ว เราได้ลอง Compile ตัวอย่างโปรแกรมง่ายๆที่มาพร้อมกับ NRF51 SDK ดูแล้ว คราวนี้เรามาลองเขียนลงไปใน Chip ดูบ้าง
ในครั้งนี้เราจะมาลองใช้งานผ่าน Segger J-Link กัน ซึ่งใน Development kit หรือ Evaluation Kit ของ Nordic ทุกตัว จะมี Segger J-Link Like หรือ Segger J-Link OB มาให้อยู่แล้ว หรือสำหรับท่านที่มี Segger J-Link รุ่นใหญ่ อยู่แล้ว ก็สามารถต่อใช้งานได้ในลักษณะเดียวกัน
Segger เองได้ทำการเตรียมซอฟต์แวร์สำหรับ J-Link เอาไว้หลากหลาย Platform อยู่แล้ว เราสามารถดาวน์โหลด จาก https://www.segger.com/jlink-software.html มาติดตั้งใช้งานได้ทันที
ชุดซอฟต์แวร์ที่ Segger เตรียมไว้ให้จะมีโปรแกรมอยู่หลายตัว ครั้งนี้เราจะมาลองใช้งานผ่านโปรแกรม JLinkExe
หลังจากที่เราติดตั้งโปรแกรมไว้แล้ว ก็สามารถ เรียก JLinkExe จาก Terminal ได้เลย แล้วพิมพ์ คำสั่งเพื่อกำหนด ความเร็วในการเชื่อมต่อและ อุปกรณ์
speed 10000 device nrf51822
หรือจะสั่งผ่าน Command Line หรือสร้างเป็น Script File แล้วเรียกใช้ก็ได้เช่นกัน
หลังจากกำหนดความเร็วและอุปกรณ์ปลายทางแล้ว ก็พร้อมที่จะทำการสั่งคำสั่งไปยังชิปที่ต้องการ คำสั่งแรกก็คือ
เป็นการสั่ง reset อุปกรณ์ แล้ว halt หรือหยุดการทำงานเอาไว้
ก่อนที่จะทำการโปรแกรม firmware เข้าไปใหม่ อาจจะต้องทำการลบข้อมูลที่มีอยู่ซะก่อน ใน nrf51 นั้นการลบจะทำได้โดยการเขียนค่าไปยัง register ที่กำหนด ซึ่งใน JLinkExec สามารถทำได้โดยผ่านคำสั่ง w4
w4 4001e504 2 w4 4001e50c 1 w4 4001e504 1
คำสั่งที่หนึ่ง เข้าสู่โหมดการลบ (erase enabled) คำสั่งที่สอง ทำการเริ่มทำการลบ (erase all) คำสั่งที่สาม เข้าสู่โหมดการเขียน (enable writing)
รายละเอียดดูได้จากบทที่ 5 Non-Volatile Memory Controller (NVMC) ของเอกสาร nRF51 Serial Reference Manual
เมื่อทำการลบโปรแกรม แล้วเข้าสูงโหมดการเขียนแล้ว ก็สามารถใช้คำสั่ง loadbin เพื่อเขียนโปรแกรมลงไปในชิปได้เลย โดยตัวเลขตัวสุดท้ายจะเป็นตำแหน่งที่เราจะเขียนลงไป ตำแหน่งที่ 0 จะเป็นจุดเริ่มต้น
loadbin _build/blinky_gcc_xxaa.bin 0
สำหรับโปรแกรมที่มีการใช้ SoftDevice เราจะทำการโปรแกรม SoftDevice ที่ตำแหน่ง 0 ส่วนโปรแกรมที่เราเขียนขึ้นจะอยู่ในต่ำแหน่งที่ SoftDevice กำหนด (SoftDevice ปัจจุบันจะระบุเป็น 0x20000)
หลังจากโปรแกรมเสร็จเรียบร้อย ก็ใช้คำสั่ง
เพื่อให้ CPU เริ่มทำงานได้เลย (อาจจะ r เพื่อทำการ reset ทุกอย่างอีกครั้งก่อนก็ได้)
สำหรับท่านที่ต้องการโปรแกรม SoftDevice ด้วย JLinkExe ตัวโปรแกรม SoftDevice ที่ Nordic เตรียมไว้ให้ จะเป็นไฟล์ .hex จะต้องทการแปลงจาก .hex เป็น .bin ซะก่อน ซึ่งสามารถทำได้โดยคำสั่ง objcopy เช่น
arm-none-eabi-objcopy -I ihex -O binary s110_nrf51822_7.1.0_softdevice.hex s110_nrf51822_7.1.0_softdevice.bin
ในครั้งต่อไปเราจะมาลองแบบอื่นๆกัน