ไมโครโปรเซสเซอร์ ESP32-S31 กำลังได้รับการรองรับ Linux จาก Espressif Systems โดย ไมโครโปรเซสเซอร์ RISC-V แบบดูอัลคอร์ ESP32-S31 เปิดตัวครั้งแรกเมื่อเดือนมีนาคม ตามมาด้วยบอร์ดพัฒนา ESP32-S31 สองรุ่น ในเดือนพฤษภาคม และเมื่อไม่กี่สัปดาห์ที่ผ่านมา Espressif ก็ได้ประกาศเข้าสู่การผลิตจำนวนมาก
ชิป RISC-V รุ่นใหม่นี้มี MMU (Memory Management Unit) ซึ่งช่วยให้การใช้งาน Linux ทำได้ง่ายขึ้นมาก ขณะที่บอร์ดพัฒนามาพร้อม PSRAM ขนาด 16MB ทำให้สามารถใช้งาน Linux image ขนาดเล็กได้ จากเดิมที่เป็นเพียงแนวคิด ตอนนี้ Espressif Systems ได้ก้าวไปอีกขั้นด้วยการเปิดตัว Linux BSP เวอร์ชัน Developer Preview สำหรับ ESP32-S31 แล้ว นอกจากนี้ยังมีโครงการจากชุมชนที่กำลังพอร์ต Linux มายังชิปนี้ด้วย ซึ่งจะกล่าวถึงในช่วงท้ายของบทความ
มาดู ESP Linux BSP อย่างเป็นทางการกันก่อน โดย repository ดังกล่าวมีเพียงเครื่องมือสำหรับจัดวาง image และแพ็กเกจที่ใช้กับการผสาน Buildroot สำหรับ ESP32-S31 ส่วนแกนหลักของโครงการอยู่ใน repository esp-buildroot-external ซึ่งประกอบด้วย NOR boot stack สำหรับ ESP32-S31, root filesystem ที่สร้างด้วย Buildroot 2025.02, คำแนะนำสำหรับการ build และ flash image นอกจากนี้ยังสามารถดูซอร์สโค้ดของ Linux kernel 6.18 fork ที่ใช้ใน Developer Preview โดยตรง
เราไม่มีบอร์ด ESP32-S31 จึงทดลองเพียงการ build Linux image เท่านั้น ยังจำเป็นต้องใช้ esptool เวอร์ชันใหม่ โดยเราใช้ esptool 4.7.0 ซึ่งไม่เพียงพอ เพราะ ESP32-S31 ต้องการ esptool 5.3.0 หรือใหม่กว่า จึงอัปเดตด้วยคำสั่ง:
|
1 2 3 4 |
sudo apt purge esptool sudo apt install pipx pipx ensurepath pipx install esptool |
จากนั้นตรวจสอบเวอร์ชัน:
|
1 2 3 |
$ esptool version esptool v5.3.1 5.3.1 |
ทำตามคำแนะนำจาก repository ของ Buildroot External Tree:
|
1 2 3 |
mkdir ~/edev/sandbox git clone --branch 2025.02 --depth 1 https://gitlab.com/buildroot.org/buildroot.git esp-buildroot git clone -b buildroot/v2025.02-esp32s31 https://github.com/espressif/esp-buildroot-external.git esp-buildroot-external |
สังเกตว่าเราไม่จำเป็นต้อง clone repository esp-linux-bsp ด้วยตัวเอง เนื่องจาก Buildroot จะดาวน์โหลดให้โดยอัตโนมัติ
ตั้งค่าการ build ใช้คำสั่ง:
|
1 |
make -C esp-buildroot BR2_EXTERNAL=~/edev/sandbox/esp-buildroot-external O=~/edev/sandbox/esp32-s31-linux espressif_esp32s31_function_core_board_nor_defconfig |
หากทำงานสำเร็จ จะเห็นไฟล์ configuration ถูกสร้างขึ้น เช่น:
|
1 2 3 4 5 6 |
make: Entering directory '/home/jaufranc/edev/sandbox/esp-buildroot' GEN /home/jaufranc/edev/sandbox/esp32-s31-linux/Makefile # # configuration written to /home/jaufranc/edev/sandbox/esp32-s31-linux/.config # make: Leaving directory '/home/jaufranc/edev/sandbox/esp-buildroot' |
จากนั้นก็พร้อม build Linux สำหรับ ESP32-S31 แล้ว:
|
1 2 |
ESP_ESPTOOL=$(which esptool) make -C ~/edev/sandbox/esp-buildroot O=~/edev/sandbox/esp32-s31-linux/ -j$(nproc) |
ขั้นตอนนี้ใช้เวลาค่อนข้างนาน โดยผู้เขียนระบุว่า มากกว่าหนึ่งชั่วโมง เนื่องจากระบบต้องดาวน์โหลดแพ็กเกจต่าง ๆ และทำการ build แต่สุดท้ายก็ได้ Linux image ที่พร้อมสำหรับการ flash ลงบอร์ด ตัวอย่างผลลัพธ์:
|
1 2 3 4 5 6 7 8 9 10 11 |
... gen_esp_flash_image: wrapping SPL -> spl_app.bin (load 0x2F040000) esptool v5.3.1 Creating ESP32-S31 image... Successfully created ESP32-S31 image. gen_esp_flash_image: merging slots -> s31_full_flash.bin esptool v5.3.1 SHA digest in image updated. Wrote 0xd1f000 bytes to file 's31_full_flash.bin', ready to flash to offset 0x0. gen_esp_flash_image: s31_full_flash.bin (13758464 bytes) ready in /home/jaufranc/edev/sandbox/esp32-s31-linux/images make: Leaving directory '/home/jaufranc/edev/sandbox/esp-buildroot' |
ไฟล์ที่ได้ในโฟลเดอร์ images ได้แก่:
|
1 2 3 4 5 |
jaufranc@CNX-LAPTOP-5:~/edev/sandbox$ ls esp32-s31-linux/images/ esp32s31.dtb fw_jump.elf rootfs.tar u-boot.dtb fw_dynamic.bin rootfs.cpio s31_full_flash.bin u-boot.itb fw_dynamic.elf rootfs.cpio.gz spl_app.bin u-boot-spl-dtb.bin fw_jump.bin rootfs.cramfs u-boot.bin xipImage |
หากมีบอร์ด ESP32-S31 สามารถใช้คำสั่งต่อไปนี้เพื่อ flash OS image:
|
1 |
esptool --chip esp32s31 --port <serial-port> --baud 1152000 write-flash 0x0 <path-to-output-directory>/images/s31_full_flash.bin |
ส่วน Linux console สามารถเข้าถึงได้ที่ความเร็ว 115200 baud
อย่างไรก็ตาม Linux BSP รุ่นนี้ยังเป็นเพียง Developer Preview และเหมาะสำหรับการทดลองเท่านั้น ไม่แนะนำให้ใช้ในระบบ production ปัจจุบันรองรับเฉพาะ ESP32-S31 และ Espressif ระบุว่าในช่วง Developer Preview จะมีการอัปเดตที่อาจไม่สม่ำเสมอ, การเปลี่ยนแปลงที่อาจทำให้ระบบเดิมใช้งานไม่ได้ (breaking changes), การรองรับฟีเจอร์ต่าง ๆ อย่างจำกัด และการแก้ไขบั๊กแบบ best-effort นอกจากนี้ยังไม่ชัดเจนว่า ณ ตอนนี้มีฟีเจอร์ใดทำงานได้ครบถ้วนแล้วบ้าง เช่น Wi-Fi ใช้งานได้หรือไม่
นอกเหนือจาก Linux BSP อย่างเป็นทางการ ยังมีอย่างน้อย 2 โครงการจากชุมชน ที่กำลังพอร์ต Linux ไปยังบอร์ด ESP32-S31-Korvo-1:
- โครงการของ GrieferPig เป็นการพอร์ต Linux 6.12 สำหรับ RISC-V 32-bit ที่รองรับ MMU ให้ทำงานแบบ native บนไมโครคอนโทรลเลอร์ ESP32-S31 โดย Buildroot rootfs และการรีบูตทำงานได้อย่างเสถียรแล้ว แต่ยังไม่มีฟังก์ชันปิดเครื่อง (poweroff) ส่วนฟีเจอร์อย่าง Wi-Fi, Bluetooth dual mode และการใช้งานทั้ง 2 คอร์ ยังอยู่ในขั้นทดลอง สามารถดูรายละเอียดสถานะและโค้ดได้บน GitHub
- โครงการ esp32-s31-linux ของ Marco นำ Linux 7.1 และ OpenSBI 1.9 มารันบนบอร์ด ESP32-S31 Korvo-1 โดยขณะนี้อุปกรณ์ต่อพ่วงส่วนใหญ่ยังไม่ได้เปิดใช้งาน ยกเว้นบางส่วน เช่น LCD panel, ช่อง microSD, USB host และ WLAN modem ที่ยังอยู่ระหว่างการพัฒนา สามารถดูโครงการบน GitHub
แปลจากบทความ : Espressif Systems releases a Linux BSP developer preview for ESP32-S31 RISC-V microprocessor

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT


