Electronic, Arduino ,Python ,Robotic
Posts tagged booloader
Arduino Hacking ตอน Burn Bootloader ง่ายนิดเดียว ?
Sep 6th
ตอนนี้ คนเริ่มใช้ Arduino กันเยอะมากขึ้นแล้ว หลังจากที่สำรวจ ตอนนี้ก้อมี บอร์ดที่เรียกว่า Arduino(clone) /Freeduino /m168 board อยู่หลายเจ้าเลย
เดี่ยวคงจะมีปัญหา ตัว bootloader พังบ้างล่ะ ตอนผมลองเล่นแรกๆ ส่วนมากจะชอบสร้างบอร์ดเองกัน แต่จะติดปัญหา ส่วนของเครื่องโปรแกรม คือเครื่องโปรแกรมที่อยู่ในโปรแกรม Arduino มันหาไม่ได้ คือจะเพิ่มเครื่องโปรแกรมที่เรามีอยู่ได้หรือป่าว ทางเราเลยจะบอกวิธีการ hack สุดแสนจะง่าย ให้ Arduino ใช้เครื่องโปรแกรมเราได้
ขอเล่าย้อนไปก่อน การจะ Hack จะต้องเข้าใจโครงสร้างของ Arduino ก่อน
Arduino เป็นโปรเจค open-source ที่รวมกับ โปรเจค open-source หลายๆตัวเข้ามาใช้ (อันนี้ต้องขอบคุณ คนพัฒนาในอดีตครับ ทำเอาไว้เยอะมาก) อย่างเช่น ตัวโปรแกรม base จะเป็น java ทำให้มันทำงานได้หลายๆ platform ตัวคอมไพล์เลอร์ของ Arduino จะใช้ avr-gcc และตัวสุดท้าย ตัวโปรแกรม ใช้ avrdude ในการ burn โปรแกรม
ถ้าเข้าใจโครงสร้างมันแล้วจะใส่อะไร เพิ่มอะไรก้อพอจะหาทางไปต่อได้ถูกครับ (ใช้พี่ google ดำไปได้ต่อ)
กลับมาที่ bootloader อีกรอบ การเบิร์น boot-loader นั้นไม่ยากยุ่ง เพราะว่าในโปรแกรม Arduino จะมีส่วนของ burn bootloader อยู่แล้ว ถ้าท่านมีเครื่องโปรแกรมตามรายชื่อในรูปก้อใช้งานได้เลยครับ แต่ปัญหามีอยู่ว่า เครื่องโปรแกรมที่มีรายชื่อ เป็นเครื่องที่ไม่มีขายในไทย จะเอามาใช้งานได้บ้างไหม

โดยปกติจะใช้ burn bootloader ตอนไหนบ้าง ผมจะใช้ตอนแรก ในการสร้างบอร์ดครับ หลังจากที่ได้ไอชีมาใหม่ ยังไม่ได้ใส่ firmware กับอีกรอบที่ bootloader เสีย (อันนี้โอกาสเกิดได้น้อย แต่มันก้อยังเสียได้) อาการเสียของ bootloader ดูง่ายๆ ถ้า LED13 บนบอร์ดไม่กระพริบ แสดงว่า boot-loader มันจะเสียแล้ว วิธีการเบิร์น bootloader ก้อแค่ กดที่เมนู Burn Bootloader ตอนโปรแกรมมันจะเบิร์น firmware และ set fusebit ให้
::กรอบแทรก :: เดี่ยวคนมาใหม่จะงง ขออธิบายให้รู้จัก bootloader กันสักนิด
“ bootloader คือ firmware ส่วนหนึ่งที่ทำหน้าที่ เป็นที่ช่วยในการ upload โปรแกรม หรือ sketch ที่เราเขียนเข้าไปใน flash rom ผ่านทางสาย serial หรือ usb ซึ่งแล้วแต่คนออกแบบครับ โดยไม่จำเป็นต้องมีเครื่องโปรแกรมไอชี
สำหรับวิธีการ Hacking ให้ Arduino มีเครื่องโปรแกรมนั้นง่ายๆครับ ก้อแค่ edit file ไฟล์ programmers.txt ซึ่งจะอยู่ที่ >> [drive:]\arduino\hardware\programmers.txt ดังรูป

วิธีการเพิ่มแค่ใส่ CODE เข้าไปเพิ่ม แล้ว restart โปรแกรมใหม่เท่านั้นเอง ตัวแปร config ต่างๆมันจะเก็บไว้ในรูปแบบ object ของ java เอาที่สำคัญๆ ได้แก่
.communtication กำหนดว่าใช้ usb หรือ serial
.protocol เครื่องโปรแกรมใช้รูปแบบการรับส่งข้อมูลแบบไหน อันนี้ท่านต้องรู้จักโปรแกรม avrdude แล้วท่านจะรู้จัก protocol ต่างๆครับ
เครื่องโปรแกรมที่มีในไทยนะครับ ที่ผมเคยทดลองใช้อยู่ จะมีรุ่นดังต่อไปนี้นะครับ
- AVR-ISP (LPT)
- AVR-ISP (USB)
- USBASP (รุ่นทำกันเอง)
