ESP32-S31 รัน Linux แบบมี MMU พร้อมโค้ดและข้อจำกัดสำคัญ

GLOBALBYTE / ESP32-S31 / RISC-V / EMBEDDED LINUX

ESP32-S31 รัน Linux ได้จริง? เจาะ RISC-V, MMU และวิธีทดลอง

ไมโครคอนโทรลเลอร์ ESP32 ตัวเล็ก ๆ จะรัน Linux แบบมี Kernel และ User Space ได้จริงหรือ? ข่าวของ Hackaday และ i-programmer ชี้ไปที่ ESP32-S31 ชิปรุ่นใหม่ที่มี Sv32 MMU บน CPU RISC-V ทำให้มี Linux Port ทั้งจาก Espressif และชุมชนนักพัฒนา แต่ยังมีข้อจำกัดมากกว่าคอมพิวเตอร์บอร์ดเดี่ยวทั่วไป

ข่าวหลัก: Hackaday โดย Jenny List, 7 พฤศจิกายน 2026 | ข่าวรอง: i-programmer, 7 ตุลาคม 2026 | เรียบเรียงโดย GlobalByte

บอร์ด ESP32-S31 Function-CoreBoard-1 จากเอกสารทางการ Espressif
ESP32-S31-Function-CoreBoard-1 ภาพจากคู่มือ Espressif เป็นภาพบอร์ดอ้างอิง Hardware ไม่ใช่ภาพที่พิสูจน์ว่า Linux บูตสำเร็จ
Key Takeaways
  • Linux แบบมี MMU ที่กล่าวถึงนี้เป็นของ ESP32-S31 ไม่ใช่ ESP32-S3 ทุกบอร์ด
  • CPU หลักเป็น Dual-core 32-bit RISC-V สูงสุด 320 MHz และรองรับ Sv32 Address Translation
  • มีทั้ง Official Linux BSP ของ Espressif และ Community Port ของ GrieferPig / annoyedmilk ซึ่งฟีเจอร์ต่างกัน
  • Official BSP ยังอยู่ในสถานะ Developer Preview ไม่แนะนำใช้ใน Production
  • ทดลองได้ผ่าน UART, Buildroot หรือ Yocto ตามโครงการและบอร์ดที่เลือก

ESP32 รัน Linux ได้จริงไหม?

ได้ แต่ต้องระบุรุ่นให้ตรง สิ่งที่ข่าวทั้งสองแหล่งรายงานคือ ESP32-S31 ที่มีหน่วยจัดการหน่วยความจำหรือ MMU จึงรองรับ Linux แบบ Conventional MMU Linux ไม่ใช่เพียง no-MMU Linux หรือการจำลอง CPU บนไมโครคอนโทรลเลอร์รุ่นเก่า

Linux Kernel ไม่ได้ทำให้ชิปกลายเป็น Raspberry Pi โดยอัตโนมัติ เพราะ RAM ของ Development Board ตัวอย่างมีจำกัด ความพร้อมของ Driver แตกต่างกัน และการติดตั้งจำเป็นต้องใช้ชุด Firmware ที่ตรงกับ Hardware Revision

อ่านบริบทข่าวได้จาก Hackaday: Proper Linux, On An ESP32 และ i-programmer: The ESP32 S31 Runs Linux

ทำไม Sv32 MMU ถึงทำให้ ESP32-S31 รัน Linux ได้?

MMU (Memory Management Unit) แปลที่อยู่หน่วยความจำเสมือนเป็นที่อยู่จริง โดย Sv32 เป็นระบบจัดการ Page Table แบบ 2 ระดับสำหรับ RISC-V 32-bit ช่วยให้ Kernel และ User Process ใช้ Virtual Memory และการกำหนดสิทธิ์เข้าถึงหน่วยความจำได้

Linux Application / BusyBox Shell

โปรแกรมทำงานใน User Space

↓ System Call
Linux Kernel / Virtual Memory

จัดการ Process และทรัพยากร

↓ Sv32 Address Translation
ESP32-S31 RISC-V + PSRAM

เข้าถึงหน่วยความจำและ Peripheral ตาม Driver

แผนภาพ HTML นี้สรุปหลักการจาก Datasheet และ Linux Documentation ไม่ใช่ Block Diagram ที่คัดลอกจากผู้ผลิต

Hardware ESP32-S31 มีอะไรที่เกี่ยวข้องกับ Linux?

รายการ ข้อมูลที่ยืนยันจากเอกสาร
HP CPU Dual-core 32-bit RISC-V สูงสุด 320 MHz
Memory Management Sv32 Two-level Page Table
Internal SRAM HP SRAM 512 KB และ LP SRAM 32 KB (คนละส่วน)
External PSRAM ขึ้นกับรุ่นชิป/โมดูล; Function-CoreBoard-1 ตัวอย่างมี PSRAM 16 MB
Flash บน Function-CoreBoard-1 16 MB
Wireless 2.4 GHz Wi-Fi 6, Bluetooth 5.4 และ IEEE 802.15.4
Peripheral USB 2.0 HS OTG, Ethernet MAC, UART, GPIO, SPI, I²C, SD/MMC
Linux Compatibility ต้องดู Kernel Driver Support Matrix ของ Port ที่ใช้งาน
ชุดบอร์ดพัฒนา ESP32-S31 Korvo-1 และ Function-CoreBoard-1 ที่แสดงโดย Espressif
ภาพชุด Development Board ของ ESP32-S31 จากแพลตฟอร์ม Espressif; บอร์ดแต่ละรุ่นมี Connector และ Peripheral ไม่เหมือนกัน

บน Function-CoreBoard-1 มีพอร์ต Ethernet RJ45, USB, UART และ Header สำหรับทดลอง ส่วน Korvo-1 มีจอและอุปกรณ์มัลติมีเดีย จึงต้องเลือก Linux Image ให้ตรงรุ่นบอร์ด ไม่ใช้คำว่า ESP32-S31 Board แทนกันทั้งหมด

ดูคู่มือ Hardware ของ Function-CoreBoard-1

Linux บน ESP32-S31 บูตผ่านอะไรบ้าง?

Community Port บางโครงการใช้ ESP-IDF Boot Stage เตรียม Memory ก่อนส่งต่อให้ OpenSBI และ Linux Kernel จากนั้นจึงเริ่ม User Space ผ่าน Buildroot ความแตกต่างอยู่ที่ Boot Chain, CPU Core และ Filesystem ที่แต่ละโครงการเลือก

ESP ROM / ESP-IDF Second Stage
↓
Loader + OpenSBI
↓
Linux Kernel บน ESP32-S31
↓
Buildroot User Space / Shell

Boot Flow นี้ยกจากแนวทาง annoyedmilk เท่านั้น Official Espressif ใช้ส่วนประกอบและวิธี Build ตาม BSP ของตนเอง

Official Linux BSP จาก Espressif อยู่ขั้นไหน?

Espressif มี Kernel Repository สาขา integration/v6.18-esp32s31 และ Layer meta-espressif สำหรับ Yocto ซึ่งใช้ Linux Kernel, U-Boot, OpenSBI และ Root Filesystem ที่จัดสำหรับหน่วยความจำขนาดเล็ก ส่วน esp-linux-bsp มีเครื่องมือจัด Layout และประกอบ Flash Image

Developer Preview

ทั้ง Official BSP และ Yocto Layer ระบุว่ายังไม่แนะนำใช้ Production อาจมี Breaking Changes และไม่ได้รับประกัน API/ABI Compatibility นอกจากนี้ Yocto Development Image ตัวอย่างเปิด Root Login แบบไม่มีรหัสผ่าน จึงห้ามนำการตั้งค่านี้ไปใช้ในระบบที่เปิดให้เข้าถึงผ่านเครือข่ายโดยไม่ปรับ Security

Official meta-espressif — Yocto Build Excerpt
mkdir ~/yocto && cd ~/yocto
git clone https://git.openembedded.org/bitbake
git clone https://github.com/espressif/meta-espressif.git
./bitbake/bin/bitbake-setup init --non-interactive \
  ./meta-espressif/bitbake-setup/espressif.conf.json esp32s31
source bitbake-builds/esp32s31-wrynose/build/init-build-env
bitbake esp-image-core

Excerpt จาก README ของ Espressif ต้องอ่าน Dependencies และข้อกำหนดเวอร์ชัน Yocto ก่อนรัน ไม่ใช่คำสั่งแฟลชโดยตรง

GrieferPig: Linux 6.18 กับผลการบูตจริง

โครงการ GrieferPig/esp32-s31-linux เป็น Community Port ที่แสดง Boot Log และตาราง Driver Support อย่างละเอียด README ระบุฟีเจอร์ เช่น Linux/Sv32, Flash XIP, Dual-core SMP, Persistent Root Filesystem และ Wi-Fi Station พร้อมแยกสถานะ Stable, Experimental, WIP และ Unsupported

ภาพ Boot Log ของ Linux ที่รันบน ESP32-S31 จากโครงการ GrieferPig
ภาพ Linux Boot Log จาก Repository เอกสารของ GrieferPig เป็นหลักฐานแสดงการบูตในโครงการนั้น ไม่ใช่การทดสอบโดย GlobalByte

การรองรับ Peripheral เช่น I²C, SPI, SD/MMC และ USB ยังต้องตรวจจาก Driver Support Matrix รุ่นปัจจุบัน ไม่ควรสรุปว่าทุกพอร์ตใช้งานได้ครบเพียงเพราะ Linux บูตสำเร็จ

annoyedmilk: Linux 7.3.1 และ Terminal บน Korvo-1

อีกโครงการคือ annoyedmilk/esp32-s31-linux ซึ่ง README ที่ตรวจระบุ Linux 7.3.1 กับ OpenSBI 1.9 โดยแบ่งการทำงานให้ Linux รันบน Hart 1 ส่วน Hart 0 ดูแล Radio Firmware ระบบมี Buildroot User Space และรองรับบอร์ดหลาย Configuration ต่างกัน

ภาพ Linux Terminal Fastfetch จากโครงการ annoyedmilk บน ESP32-S31
ภาพ Fastfetch จาก README ของ annoyedmilk ใช้แสดงหน้าตา Linux User Space ที่พอร์ตนี้พัฒนาขึ้น; อาจมีรายละเอียดต่างจาก Release ล่าสุด

README แยก Release Files เป็นชุดสำหรับ Module, Function-CoreBoard-1 และ Korvo-1 เช่น Flash ZIP และ Disk Image โดยบาง Configuration ต้องใช้ microSD หรือ USB Stick เป็น Root Filesystem ด้วย

เปรียบเทียบ Linux Port ทั้งสามแนวทาง

โครงการ Linux / ระบบ ลักษณะสำคัญ ข้อควรระวัง
Espressif Official Linux 6.18 Branch, Yocto Vendor Kernel/BSP และ Image Builder Developer Preview
GrieferPig Linux 6.18, Community มี Boot Log, Releases, Driver Support Matrix Driver บางส่วนยัง Experimental/WIP
annoyedmilk Linux 7.3.1, Buildroot OpenSBI, Shell, Wi-Fi, หลาย Board Profiles ต้องใช้ Image/Storage ให้ตรงกับบอร์ด

หมายเหตุ: ตัวเลข Kernel อ้างอิงสถานะ Repository ณ วันที่ตรวจ ไม่ใช่การรับรองว่าทุก Release ที่ดาวน์โหลดมีฟีเจอร์เหมือนกัน

ถ้าอยากทดลอง Linux บน ESP32-S31 ต้องเริ่มอย่างไร?

  1. ตรวจชื่อชิปและบอร์ดให้ตรง โดยดู Espressif Datasheet และคู่มือ Development Board
  2. เลือกเพียงหนึ่งโครงการ: Official Espressif, GrieferPig หรือ annoyedmilk
  3. อ่าน README และ Release Notes ของโครงการที่เลือก รวมถึงรายการอุปกรณ์เก็บข้อมูลที่ต้องใช้
  4. สำรองข้อมูลเดิมก่อนแฟลช และทำตามคำสั่งของ Release นั้นโดยเฉพาะ
  5. เชื่อม UART Console ตรวจ Boot Log จากนั้นจึงทดสอบ Network และ Peripheral ที่ Support Matrix รองรับ
annoyedmilk — Flash Example จาก README
pip install "esptool==5.5.0"
esptool --chip esp32s31 -p PORT -b 921600 \
  write-flash 0x0 flash.bin

เปลี่ยน PORT เป็นพอร์ตจริง และใช้ flash.bin จาก Release ที่ตรงบอร์ดเท่านั้น คำสั่งนี้อาจเขียนทับ Firmware เดิม และบางรุ่นต้องทำ Disk Image เพิ่มด้วย

อย่าแฟลชข้ามรุ่น

Image สำหรับ Korvo-1 และ Function-CoreBoard-1 อาจใช้ Storage และ Driver ต่างกัน การเขียน Disk Image ด้วยเครื่องมือแฟลชจะลบข้อมูลบนอุปกรณ์ปลายทางที่เลือก

วิดีโอเกี่ยวกับ ESP32-S31 Linux

วิดีโอจาก ShotokuTech อธิบาย Linux BSP Developer Preview และข้อสงสัยด้านการรัน Linux บน S31 ส่วนคลิป Hands-on ของ Platima Tinkers สาธิต Development Board และ Linux Port ในช่วงเวลาที่เผยแพร่ซึ่งอาจเป็น Release เก่ากว่าสถานะ GitHub ปัจจุบัน

ดูวิดีโอ ShotokuTech บน YouTube

ดู Hands-on ของ Platima Tinkers

วิดีโอเหล่านี้เป็นสื่อประกอบเพิ่มเติม ไม่ใช่วิดีโอที่ยืนยันว่าฝังอยู่ใน Hackaday หรือ i-programmer ต้นฉบับ และไม่ได้ยืนยันผล Benchmark โดย GlobalByte

ข้อจำกัดที่ควรรู้ก่อนนำ Linux บน ESP32 ไปใช้จริง

  • Linux Kernel บูตสำเร็จไม่ได้หมายความว่า Driver สำหรับ GPIO, USB, I²C, Network และ Wireless ทุกชนิดพร้อมใช้งานทั้งหมด
  • PSRAM 16 MB บนบอร์ดตัวอย่างมีทรัพยากรจำกัดเมื่อเทียบกับ SBC ที่มี DRAM มากกว่า
  • ชิปมี JPEG/PPA Accelerator แต่ไม่ควรอ้างว่ามี GPU สำหรับ Desktop Linux แบบทั่วไป
  • Official Yocto Development Image ต้องปรับ Default Root Login และการเข้าถึง Network ก่อนใช้งานจริง
  • Flash Image และ Storage Layout เปลี่ยนได้ตาม Release จึงอาจทำให้ข้อมูลเดิมสูญหาย

ดังนั้นเรื่องนี้เหมาะกับการเรียนรู้ RISC-V, Linux Boot Chain, Embedded Linux และ Driver Development มากกว่าการยืนยันว่าพร้อมนำไปใช้ในระบบ Production ทันที

Source Code, Firmware, PDF และไฟล์ดาวน์โหลด

ลิงก์ Firmware และ Build Image ถูกแยกตามเจ้าของโครงการ ไม่รับรองว่าไฟล์จากคนละ Port ใช้แทนกันได้หรือรองรับบอร์ดเดียวกันทุก Revision

FAQ: คำถามที่พบบ่อย

1. ESP32 รุ่นไหนรัน Linux แบบมี MMU ได้?

กรณีศึกษานี้คือ ESP32-S31 ซึ่งมี Sv32 MMU ส่วน ESP32 รุ่นอื่นต้องตรวจ Hardware และ Linux Port แยกกัน

2. ESP32-S31 ใช้ CPU อะไร?

CPU หลักเป็น Dual-core 32-bit RISC-V สูงสุด 320 MHz ตาม Espressif Datasheet

3. MMU ต่างจากการรัน Linux แบบ no-MMU อย่างไร?

MMU รองรับ Virtual Memory และการแยกสิทธิ์เข้าถึงหน่วยความจำระหว่าง Kernel กับ Process

4. RAM ของบอร์ดตัวอย่างเท่าไร?

Function-CoreBoard-1 ระบุ PSRAM 16 MB และ Flash 16 MB ส่วน SRAM ภายในชิปมี HP 512 KB และ LP 32 KB

5. Official Linux ของ Espressif พร้อม Production แล้วหรือยัง?

ยังไม่พร้อมตามคำเตือน Developer Preview ใน Official BSP

6. GrieferPig มี Firmware ให้แฟลชไหม?

มีหน้า GitHub Releases แต่ต้องเลือก Image ให้ตรงกับบอร์ดและอ่าน Installation Guide

7. annoyedmilk มี Linux เวอร์ชันใด?

README ที่ตรวจระบุ Linux 7.3.1 และ OpenSBI 1.9; Release ต่างช่วงเวลาอาจใช้เวอร์ชันอื่น

8. Linux ใช้ทั้งสอง Core พร้อมกันเสมอไหม?

ไม่เสมอ แนวทางจัด Core ของแต่ละ Port แตกต่างกัน เช่น GrieferPig ระบุ SMP ส่วน annoyedmilk แยก Linux กับ Radio Firmware

9. สามารถใช้ Desktop Linux เหมือน Raspberry Pi ได้ไหม?

ไม่ควรคาดหวัง Desktop Linux ทั่วไปจาก Hardware ที่มีหน่วยความจำจำกัดและ Driver ที่ยังพัฒนา

10. Wi-Fi และ Ethernet ทำงานครบไหม?

ความพร้อมขึ้นกับ Port, Release และบอร์ด ต้องตรวจ Support Matrix ของโครงการที่เลือก

11. จำเป็นต้องใช้ microSD หรือ USB Stick หรือไม่?

บาง Configuration ของ annoyedmilk ต้องใช้ Root Disk แต่ Module Profile อีกแบบใช้ Flash บนโมดูล

12. Linux BSP ของ Espressif ใช้เครื่องมืออะไร Build?

Official meta-espressif ให้แนวทาง Yocto ผ่าน bitbake-setup และ bitbake esp-image-core

13. การแฟลชมีความเสี่ยงต่อข้อมูลหรือไม่?

มี หากเขียนทับ Flash หรือ Disk Image โดยเลือกผิดอุปกรณ์ ข้อมูลเดิมอาจหาย

14. มีโค้ดและ PDF ให้ดาวน์โหลดไหม?

มี Linux Kernel/BSP Repositories, Community Releases, Datasheet และ Schematic/PCB PDF จากแหล่งต้นฉบับ

สรุป: ESP32-S31 ทำให้เส้นแบ่ง MCU กับ Embedded Linux ใกล้กันขึ้น

ESP32-S31 แสดงให้เห็นว่า Microcontroller ที่มี RISC-V, Sv32 MMU และ PSRAM สามารถรัน Linux แบบมี Kernel และ User Space จริงได้ แต่คุณสมบัตินี้ยังไม่ใช่เหตุผลให้แทนที่ SBC หรือ Linux Production System ในทุกงาน

สำหรับ Maker และ Developer สิ่งที่น่าศึกษาที่สุดคือ Boot Flow, MMU, Linux Driver และการจัด Memory บน Hardware ขนาดเล็ก โดยเริ่มจาก Official Yocto BSP หรือ คู่มือทดลองของ GrieferPig และตรวจความเข้ากันได้ของบอร์ดก่อนเสมอ

References / แหล่งข้อมูลต้นฉบับ

  1. Hackaday: Proper Linux, On An ESP32 (7 Nov 2026)
  2. i-programmer: The ESP32 S31 Runs Linux (7 Oct 2026)
  3. Espressif: ESP32-S31 Series Datasheet
  4. Espressif: Function-CoreBoard-1 User Guide
  5. Espressif Official Linux Kernel
  6. Espressif: meta-espressif
  7. Espressif: esp-linux-bsp
  8. GrieferPig: ESP32-S31 Linux
  9. annoyedmilk: ESP32-S31 Linux
  10. ShotokuTech: ESP32-S31 Linux BSP Discussion

ต่อยอด ESP32 และ Embedded Linux กับ GlobalByte

กำลังศึกษา RISC-V, ESP32, Development Board หรือ Embedded Linux? สามารถสอบถามทีม GlobalByte เกี่ยวกับบอร์ดและอุปกรณ์ Maker ที่เหมาะกับโปรเจกต์ได้ โดยควรยืนยันรุ่นสินค้าและ Compatibility ของ Linux Port ก่อนสั่งใช้งานจริง

 

แท็ก


Blog posts