[ESP8266] - How to compile custom firmware for ESP8266

Standard



หลังจาก Espressif ผู้ผลิตโมดูล ESP8266 ได้ปล่อย SDK ของโมดูลตัวนี้ออกมาพร้อมกับ VM พักใหญ่ ๆ แล้ว  ก็มีโอกาสได้ลองเล่นดูนิดหน่อยครับ  แต่กว่าจะมีเวลามาเขียนบล็อคหลาย ๆ คนก็น่าจะลองเล่นกันไปแล้ว ฮ่า ๆ  เอาเป็นว่ามาช้ายังดีกว่าไม่มาละกัน    บทความนี้จะมาพูดถึงการ Compile Code ด้วย VM ซึ่งเป็นวิธีที่ง่ายและรวดเร็ว  หรือใครไม่อยากใช้ VM ก็สามารถลง Toolchain เองได้ครับ  พร้อมแล้วมาเริ่มกันเลย

เตรียมไฟล์สำหรับใช้งาน

1. ไฟล์ Image สำหรับ Virtual Box  Download
2. ไฟล์ SDK Download 

Import VM

1. ติดตั้ง Virtual Box ให้เรียบร้อยแล้วกำหนดค่า Default Machine Folder ใน Virtual Box ให้เป็น Folder ที่เราต้องการ  

2. Imort ไฟล์ .ova  ที่ดาวน์โหลดมา โดยไปที่ Menu File >> Import Appliance

3. โปรแกรมจะแสดงรายละเอียด VM ที่เราจะ Import ไม่ต้องแก้ไขอะไร กด Import ได้เลย

4. รอให้ Virtual Box Import เสร็จ

5. หลังจากนั้นจะมี VM เพิ่มขึ้นมา  ปกติเห็นแค่ VM เดียวนะครับ  ในรูปมี 2 VM เพราะ ผม Import เข้าไปเพิ่มเพื่อ Capture รูปครับ

6. กำหนด Share folder  ขั้นตอนนี้ค่อนข้างสำคัญเพราะ Script ใน VM จะทำการ mount folder จากค่าที่เราตั้งไว้ตรงนี้  ดังนั้นให้เราแก้แค่ Path อย่างเดียว โดยเลือกเป็น folder ที่เราจะใช้เก็บ code  ส่วนตรง Name ให้ใช้ share เหมือนเดิม



หลังจากสร้าง VM เสร็จแล้ว  สามารถเข้าใช้งานด้วย Username และ Password ตามนี้ครับ
Username : ESP8266
Password : espressif


Compile custom firmware.

ขั้นตอนต่อไปคือการเอาโค้ดตัวอย่าง compile  
- app  คือ โฟลเดอร์ที่ใช้เก็บโค้ดที่เราเขียน
- examples คือ  โค้ดตัวอย่าง
- bin คือ โฟลเดอร์สำหรับเก็บไฟล์ .bin ที่ได้หลังจากการ Compile

ที่สำคัญคือโค้ดทั้งหมดจะต้องอยู่ใน Path ของ Virtual Box ที่เราตั้งค่าการแชร์ไว้  ไม่งั้นใน VM จะไม่เห็นโค้ดที่เราต้องการ Compile  ว่าแล้วก็มาเริ่ม Compile โค้ดกันเลย

1. สำหรับบางคนอาจจะติดปัญหาเรื่อง Permission ไม่สามารถ Execute Script บางตัวได้  แก้ปัญหาโดย sudo -s ครับ
2. ทำการ mount folder ที่เราตั้งค่าแชร์ไว้  โดยในตัว vm จะมี script มาให้แล้ว  เราสามารถเรียก mount.sh ได้เลย  หลังจาก mount สำเร็จก็จะมีไฟล์ที่เราตั้งค่าแชร์ไว้อยู่ใน folder Share ครับ
3. สมมุติว่าเราแก้ไขโค้ดตามที่ต้องการแล้ว  เราสามารถเข้าไปใน folder app แล้วสั่ง make ได้เลยครับโดยใช้คำสั่ง  "cd Share/app" และ  "make"
4. จากนั้นสร้างไฟล์ .bin โดยเรียกใช้ script gen_misc.sh  ด้วยคำสั่ง "./gen_misc.sh"

5. เมื่อเข้าไปดูใน Share/bin จะมีไฟล์ .bin ที่เราสร้าง โดยไฟล์ที่จะนำไปใช้งานคือ

 - eagle.app.v6.flash.bin
- eagle.app.v6.irom0text.bin



เพียงเท่านี้เราก็จะได้ Custom Firmware ที่พร้อมจะนำไป flash ใส่โมดูลของเราแล้วครับ
การ flash custom firmware จะไม่เหมือนกับการ flash official firmware ทั่วไป
เราจะใช้ esptool.py  หรือ ESP FLASH DOWNLOAD TOOL ในการ Flash

เจอกันบทความถัดไปเรื่องการ Flash Custom Firmware ครับ