Building MicroPython Firmware
ขั้นตอนการคอมไพล์โค้ดของไมโครไพธอน เพื่อให้ได้ไฟล์ที่เป็นเฟิร์มแวร์ (.bin)
MicroPython-ESP32 Firmware
โดยปรกติแล้ว ถ้าต้องการใช้งานไมโครไพธอนกับบอร์ดไมโครคอนโทรลเลอร์ เช่น ESP32 หรือบอร์ดอื่น ๆ ก็มีไฟล์ .bin ที่ทางผู้พัฒนาได้จัดทำไว้แล้ว เพื่อนำไปใช้ติดตั้งเป็นเฟิร์มแวร์ (Firmware) ลงในหน่วยความจำ Flash ของบอร์ดไมโครคอนโทรลเลอร์ เช่น สำหรับ ESP32 ก็สามารถดาวน์โหลดได้จาก https://micropython.org/download/esp32/
ในบางกรณี ถ้าเราต้องการลองดัดแปลงแก้ไข หรือลองทำขั้นตอน Build Firmware จากซอร์ซโค้ด (Source Code) ของ MicroPython ที่ดาวน์โหลดมาจาก Github ก็ต้องติดตั้งเครื่องมือหรือโปรแกรมที่จำเป็น โดยจำแนกตามระบบปฏิบัติการที่เลือกใช้ได้ เช่น Windows, Linux, Mac OS
ในการคอมไพล์ซอร์ซโค้ดของไมโครไพธอน เช่น สำหรับ ESP32 หรือ STM32 แนะนำให้ใช้ Linux เช่น Ubuntu สำหรับคอมพิวเตอร์ x86_64 หรือ Raspbian OS สำหรับบอร์ด Raspberry Pi ในกรณีที่ใช้ระบบปฏิบัติการ Windows 10 ก็แนะนำให้ใช้ WSL / WSL2 ที่รองรับการใช้งาน Ubuntu 18.04 LTS หรือใหม่ (ทำตามขั้นตอน Guideline ของ Microsoft)
ถัดไปเป็นขั้นตอนสำหรับ Ubuntu ที่อ้างอิงจาก: https://github.com/micropython/micropython/tree/master/ports/esp32
เครื่องคอมพิวเตอร์ที่ได้ลองใช้งานคือ คอมพิวเตอร์บอร์ดเดี่ยว Raspberry Pi 4 Model B ติดตั้งระบบปฏิบัติการ Raspbian OS Buster (32-bit) แต่ก็เราก็สามารถใช้คอมพิวเตอร์ Ubuntu หรือใช้งานผ่าน WSL2 สำหรับ Windows 10 ได้เช่นกัน
ตัวอย่างการทำคำสั่ง เพื่อดูเวอร์ชันของระบบปฏิบัติการ Linux ที่ได้นำมาใช้งาน
ขั้นตอนแรก ให้ติดตั้งโปรแกรมคำสั่งต่าง ๆ ที่จำเป็นต้องใช้ในขั้นตอนถัดไปลงในเครื่องคอมพิวเตอร์ Linux ของผู้ใช้ ดังนี้
ขั้นตอนที่ 2 กำหนดไดเรกทอรี เพื่อทำคำสั่งดาวน์โหลด Repository ของไมโครไพธอน จาก Github มายังคอมพิวเตอร์ของผู้ใช้ (ในตัวอย่างนี้ เลือกเป็น $HOME/MicroPython
)
ขั้นตอนที่ 3 เป็นการติดตั้งเครื่องมือต่าง ๆ เช่น ESP-IDF สำหรับ ESP32
ทำคำสั่งเพื่อย้ายไปยังไดเรกทอรีสำหรับ ports/esp32
แล้วทำคำสั่ง make
ดังนี้
ให้สังเกตข้อความเอาต์พุตจากการทำคำสั่งดังกล่าว ดูตรงข้อความที่มีคำว่า git hash เช่น
Supported git hash (v3.3):
9e70825d1e1cbf7988cf36981774300066580ea7
Supported git hash (v4.0) (experimental):
4c81978a3e2220674a432a588292a4c860eef27b
ในการคอมไพล์โค้ดสำหรับ ESP32 จะต้องใช้โปรแกรมที่เรียกว่า ESP-IDF ของบริษัท Espressif ซึ่งในขณะนี้มีให้เลือกใช้สองเวอร์ชัน คือ v3.3 และ v4.0 ตามข้อความข้างบน
เราจะเลือกใช้ ESP-IDF v4.0 และทำคำสั่งต่อไปนี้เพื่อติดตั้งโปรแกรมต่าง ๆ ที่เกี่ยวข้อง โดยต้องระบุ git commit ID (ค่า hash ในเลขฐานสิบหก) ที่ปรากฏในข้อความเอาต์พุตข้างบน เพื่อใช้กับคำสั่ง git checkout
ขั้นตอนที่ 4 ให้ย้ายไปยังไดเรกทอรีของไมโครไพธอนสำหรับ ESP32 แล้วเริ่มใช้งาน Python Virtual Environment พร้อมติดตั้งซอฟต์แวร์ที่เกี่ยวข้อง
ขั้นตอนที่ 5 ทำคำสั่งต่อไปนี้ เพื่อเริ่มขั้นตอนคอมไพล์โค้ด ซึ่งอาจใช้เวลาหลายนาที
ข้อสังเกต: สำหรับบอร์ด ESP32 โดยทั่วไป จะมีสองประเภทคือ บอร์ด ESP32 ที่ไม่มีชิปหน่วยความจำภายนอกประเภท SPIRAM (เรียกว่า GENERIC
) และบอร์ดที่มี SPIRAM อย่างน้อย 4MB (เรียกว่า GENERIC_SPIRAM
) และเมื่อคอมไพล์โค้ดแล้ว จะได้ไฟล์เฟิร์มแวร์ (.bin) แยกกัน ต้องเลือกให้ถูกต้อง เมื่อจะนำไปใช้งาน
ขั้นตอนที่ 6 (สุดท้าย) เป็นการเขียนไฟล์ firmware.bin
ไปยังบอร์ดเป้าหมาย
เมื่อได้ไฟล์ firmware.bin
แล้ว ก็สามารถนำไปเขียนลงให้หน่วยความจำ Flash ของบอร์ด ESP32 ได้ โดยใช้โปรแกรมแบบ Command Line เช่น esptool.py
เสียบสาย USB เชื่อมต่อระหว่างคอมพิวเตอร์ผู้ใช้กับบอร์ด ESP32 แล้วลองทำคำสั่งดังนี้
ถ้าสามารถเชื่อมต่อและอ่านค่าจากบอร์ด ESP32 ก็ให้ทำคำสั่งเขียนข้อมูลจากไฟล์ firmware.bin
ไปยังบอร์ดเป้าหมาย
เมื่อทำได้แล้ว ให้ลองเชื่อมต่อกับบอร์ด ESP32 ผ่านทาง Serial REPL จะเห็นข้อความเริ่มต้นหลังจากรีเซตการทำงานของบอร์ด เช่น
MicroPython v1.13-189-g76a2dff61 on 2020-11-27; ESP32 module (spiram) with ESP32 Type "help()" for more information.
ซึ่งแสดงว่า เราสามารถใช้งานไมโครไพธอนได้แล้ว
Micropython-STM32 Firmware
ขั้นตอนการติดตั้ง MicroPython for STM32 อ้างอิงตามเอกสารออนไลน์ดังนี้ https://github.com/micropython/micropython/wiki/Getting-Started-STM
1) การคอมไพล์โค้ดสำหรับ STM32 จำเป็นต้องใช้ GNU ARM Embedded Toolchain ให้ดาวน์โหลดไฟล์ ติดตั้งตามเวอร์ชันและระบบปฏิบัติการที่ต้องการใช้ได้ ในตัวอย่างนี้เราได้เลือกใช้เวอร์ชัน “GNU Tools for Arm Embedded Processors 8–2019q4-major”
2) ติดตั้งโปรแกรมสำหรับการคอมไพล์โค้ดใน Ubuntu
3) ดาวน์โหลดซอร์ซโค้ดของ MicroPython จาก Github
4) คอมไพล์โค้ดสำหรับ MicroPython Cross Compiler (mpy-cross
)
5) คอมไพล์โค้ดสำหรับ MicroPython-STM32 Port เช่น บอร์ดเป้าหมายเป็น NUCLEO_L476RG
เมื่อทำขั้นตอนคอมไพล์ซอร์ซโค้ดให้ได้ไฟล์เฟิร์มแวร์ ซึ่งจะอยู่ในไดเรกทอรี build-NUCLEO_L476RG
และเป็นไฟล์ .dfu
และ .hex
ไฟล์
.hex
จะใช้สำหรับการอัปโหลดด้วยอุปกรณ์ ST-Link V2 และใช้ร่วมกับโปรแกรมเช่น OpenOCD หรือ ST-Link Utilityไฟล์
.dfu
จะใช้วิธีการทำให้ STM32 อยู่ในโหมด DFU (Device Firmware Upgrade Mode) แล้วสามารถใช้โปรแกรมอย่างเช่นdfu-util
อัปโหลดไฟล์ไปยังบอร์ดโดยใช้เพียงสาย USB
ถ้าต้องการได้ไฟล์ .bin ก็ทำคำสั่งดังนี้
ถ้าใช้บอร์ด NUCLEO เมื่อเสียบสาย USB กับคอมพิวเตอร์ จะมองเห็นไดรฟ์ปรากฎขึ้นมา เราสามารถลากไฟล์ .bin ไปใส่ลงในไดรฟ์ดังกล่าว เพื่อทำการโปรแกรมไฟล์เฟิร์มแวร์สำหรับไมโครไพธอนได้
ข้อสังเกต: ถ้าใช้ WSL Ubuntu จะไม่สามารถมองเห็นพอร์ต USB และไม่สามารถใช้คำสั่ง make deploy
ได้ ดังนั้นจึงใช้วิธีสำเนาไฟล์จาก Ubuntu File System ไปยังไดเรกทอรีของ Windows 10 เช่น ไดรฟ์ C คือ /mnt/c
แล้วใช้โปรแกรมสำหรับ Windows ทำการอัปโหลดไฟล์ เช่น โปรแกรม STM32CubeProgrammer ที่ใช้สามารถใช้ร่วมกับอุปกรณ์ ST-Link Programmer เป็นต้น
Last updated