- โปรเจ็กต์เดโมที่เปลี่ยนไมโครคอนโทรลเลอร์ ESP32-S3 ให้เป็น พีซีขนาดเล็กที่บูตใช้งานได้ทันที พร้อมเชลล์ ตัวแก้ไข คอมไพเลอร์ และตัวติดตั้งแอป
- BreezyBox คือคอมโพเนนต์มินิเชลล์สำหรับ ESP-IDF ที่มีคำสั่งแบบคล้าย UNIX พร้อมความสามารถด้าน vterm และ VFS
- ทำงานบนบอร์ด Waveshare ESP32-S3-Touch-LCD-7B และสามารถนำไปปรับใช้กับบอร์ดอื่นได้ง่าย
- หลังจากฟอร์กแล้วสามารถรันบนบอร์ดของตนเองได้ หรือใช้ USB console เพื่อใช้งาน เอาต์พุตรหัส ANSI มาตรฐาน
- เผยแพร่ภายใต้ไลเซนส์ MIT โดยมีเป้าหมายเพื่อขยายระบบนิเวศ
ภาพรวมของ BreezyBox
- โปรเจ็กต์เดโมที่ทำให้สามารถ ใช้ ESP32-S3 ได้เหมือนพีซีแม้ไม่มี Linux โดยมีฟังก์ชันเชลล์ ตัวแก้ไข คอมไพเลอร์ และการติดตั้งแอป
- มุ่งให้ประสบการณ์การใช้งานคล้าย Raspberry Pi แต่ ไม่มีโอเวอร์เฮดของ OS ระดับเซิร์ฟเวอร์/เดสก์ท็อป
- BreezyBox เป็น คอมโพเนนต์มินิเชลล์ บนพื้นฐาน ESP-IDF สำหรับสร้างสภาพแวดล้อมรันคำสั่งอย่างง่าย
- ESP32-S3 มี โครงสร้างทรัพยากรคล้ายพีซียุค DOS พร้อมความสามารถด้านการสื่อสารไร้สาย
- โปรเจ็กต์อธิบายศักยภาพของชิปนี้ว่าเป็น “เทคโนโลยีขนาดเล็กที่สง่างาม” และลดขนาดโค้ดให้เล็กที่สุด
องค์ประกอบของ BreezyBox
- BreezyBox มี vterm, VFS, การติดตาม CWD, คำสั่งแบบคล้าย UNIX และตัวติดตั้งแอป
- ตัวโหลด ELF และ ความสามารถด้าน dynamic linking มีอยู่ในคอมโพเนนต์ ESP-IDF อยู่แล้ว
- ชื่อนี้ได้แรงบันดาลใจจาก BusyBox และอยู่ในรูปแบบ เลเยอร์ user space ที่ทำงานบน FreeRTOS
- สามารถเพิ่มเข้าไปในโปรเจ็กต์ ESP-IDF ได้ด้วยโค้ดเพียงบรรทัดเดียว และทำงานได้แม้มีแค่อินพุต/เอาต์พุตพื้นฐาน
จุดเด่นของรีโพซิทอรีเดโม
- รีโพซิทอรีนี้เป็น ตัวอย่างการใช้งานจริง ของ BreezyBox ซึ่งตั้งค่าให้เหมาะกับบอร์ดเฉพาะรุ่น (Waveshare ESP32-S3-Touch-LCD-7B)
- BreezyBox มอบหมายการตั้งค่าจอแสดงผลและบอร์ดให้กับเฟิร์มแวร์ของผู้ใช้
- ผู้ใช้สามารถอ้างอิงโค้ดแล้ว ปรับแก้ให้เข้ากับบอร์ดหรือจอของตนเองได้
- การใช้ คอนโทรล text label ของ LVGL ช่วยให้การทำเอาต์พุตบน LCD ง่ายขึ้น และยังสามารถรันผ่าน USB console ได้
วิธีใช้งาน
- สามารถ ฟอร์กแล้วโคลนรีโพซิทอรี เพื่อรันบนบอร์ดของตนเองได้
- ทดสอบบนบอร์ดราคาประมาณ 40 ยูโร และใช้งานได้กับบอร์ด LCD S3 ราคาประหยัดเช่นกัน
- หากใช้ USB console จะสามารถดู เอาต์พุตรหัส ANSI ผ่าน IDF Monitor ของ VSCode หรือ Tabby ได้
- ตัวเรนเดอร์ฟอนต์เขียนขึ้นเอง แต่เป็น การทำแบบเลือกใช้เพื่อให้ได้ประสิทธิภาพมากกว่า 30FPS
การมีส่วนร่วมและการขยายต่อ
- โปรเจ็กต์เผยแพร่ภายใต้ ไลเซนส์ MIT จึงสามารถแก้ไขและแจกจ่ายต่อได้อย่างอิสระ
- รายการที่ต้องการการมีส่วนร่วม
- เพิ่มแอป ELF: สามารถอ้างอิงตัวอย่างจากรีโพซิทอรี breezyapps เพื่อสร้างแอปใหม่ได้
- ตัวอย่างเฟิร์มแวร์สำหรับหลายบอร์ด: เสนอได้หลายรูปแบบ เช่น พื้นฐาน C/C++, มี GUI, หรือพอร์ตเกมเรโทร
- เป้าหมายคือให้ผู้ใช้จำนวนมากขึ้นนำ BreezyBox ไปใช้ และขยาย ระบบนิเวศของตัวอย่างที่ทำซ้ำได้ทันที
1 ความคิดเห็น
ความเห็นจาก Hacker News
โปรเจกต์นี้เจ๋งมาก เดี๋ยวจะลองทำดูเอง
เห็นอีกสองโปรเจกต์ที่เกี่ยวข้องกันด้วย
Boot-Linux-ESP32S3-Playground
การบูตได้ทันทีนี่เจ๋งจริง พอเห็นโปรเจกต์แบบนี้หรือ Fruit Jam ของ Adafruit ก็ยิ่งชัดว่า “พอตัดความซับซ้อนที่ไม่จำเป็นออกไป ก็ได้อะไรกลับมาเยอะมาก”
อยากให้สิ่งนี้เป็นคอมพิวเตอร์เครื่องแรกของเด็กเลย
สรุปแล้วรู้เลยว่าสุดสัปดาห์หน้าจะทำอะไร เดิมตั้งใจจะซื้อ esp32-s3 สำหรับอีกโปรเจกต์อยู่แล้ว ตอนนี้คงต้องซื้อสองตัว
บล็อกเปรียบเทียบตัวเลือก ESP32 SoC
ผมว่าบอร์ดพวกนี้ คุ้มค่าราคามาก และวางแผนจะใช้แทน KVM
ถ้าแฟลช ESP32-Bus-Pirate แล้วต่อเข้ากับอุปกรณ์ที่จะควบคุมจากระยะไกล จะสะดวกมาก กินไฟแทบไม่มีเลย เลยปล่อยให้ต่อ Wi-Fi ไว้ตลอด
สงสัยว่าจะพอร์ตให้ไปรันบน rp2350 ได้ไหม
โอ้ คุณคือคนที่ทำ xcc700 ใช่ไหม! ผมสนใจการใช้ MCU กับงานคอมพิวติ้งทั่วไปมาก อยากรู้ว่าจะดันมันไปได้ไกลแค่ไหน
อาจจะจำได้ว่าเมื่อก่อน FabGL เคยรันเดโมเกมและการจำลอง DOS แต่กับ ESP-IDF รุ่นใหม่ ๆ มันอัปเดตต่อได้ยาก
เลยกำลังทำใหม่ให้มี โครงสร้างแบบโมดูลาร์ มากขึ้น เพื่อให้ดูแลต่อระยะยาวได้ บางคนยังเคยรัน MacOS รุ่นเก่าผ่านการจำลองด้วย
เจ๋งมาก! ต้องเอาไปลง M5Stack Cardputer ทันที
ถ้าไม่มีโมเดลหน่วยความจำแบบแบน การทำ OS ทั่วไปมันไม่ยากเหรอ? Amiga1000 ก็ไม่มี MMU แต่มีโมเดลหน่วยความจำแบบแบน คิดว่าการหลบข้อจำกัดนี้น่าจะต้องทำอะไรซับซ้อนพอสมควร
เหตุผลที่ OS ทั่วไปทำได้ยากบนแพลตฟอร์มนี้คือ ไม่มี memory protection แต่ผมแค่อยากทำเชลล์กับตัวติดตั้งแอป เลยจัดการได้ในระดับนั้น
เพิ่งรู้จัก BreezyBox ครั้งแรกตอนนี้เอง น่าสนใจมาก ผมไม่อยากต้องคอยกังวลเรื่องตั้งค่า Wi-Fi หรืออัปเดต แค่อยากเขียนแอปของตัวเองเท่านั้น
เลยไม่เข้าใจว่าทำไมถึงยังไม่มี microcontroller OS แบบเรียบง่ายที่ช่วยจัดการเรื่องพวกนี้แทนให้ นี่อาจจะกลายเป็นฐานของสิ่งนั้นได้
สงสัยว่ามี flow สำหรับการตั้งค่าแบบ headless deployment หรือยัง เช่น ตั้งค่า Wi-Fi ตอนแฟลช, ปล่อย remote shell/web UI เป็นต้น
การเข้าถึงผ่านเว็บสำหรับตั้งค่าระยะไกลน่าจะทำได้ เพราะมีเว็บเซิร์ฟเวอร์อยู่แล้ว แค่ขยายให้รันโค้ดฝั่งเซิร์ฟเวอร์ได้
ขอถามแบบพื้นฐานหน่อย นี่รองรับแค่ S3 หรือรันบน C3 ได้ด้วย?
ไบนารี ELF ที่ติดตั้งด้วย eget ก็ต้องคอมไพล์ใหม่สำหรับ RISC-V ด้วย น่าจะดีถ้าเพิ่ม การรองรับ manifest เพื่อแยก ELF ตามแพลตฟอร์ม
อีกอย่างคือต้องดูด้วยว่ามี PSRAM อยู่เท่าไร