-
นำ SerenityOS ไปยังฮาร์ดแวร์จริง
- เหตุผลที่ตัดสินใจเข้าร่วมโปรเจกต์ SerenityOS อย่างจริงจังคือโค้ดเบสสามารถรันได้เฉพาะบน QEMU แต่ไม่สามารถทำงานบนฮาร์ดแวร์จริงได้ เพื่อแก้ปัญหานี้จึงเลือก Dell 3100 Chromebook
-
เหตุผลที่เลือก Chromebook
- Chromebook มีราคาไม่แพงและหาได้ง่าย อีกทั้งมีชิปรักษาความปลอดภัย Cr50 ซึ่งช่วยให้ดีบักได้แม้ในสถานะปิดและยังเลือก Dell 3100 เพราะราคาถูกและคีย์บอร์ดดีกว่าโมเดลระดับสูง
-
ปัญหา cros_ec
- แม้ว่า Cr50 ของ Chromebook จะมีประโยชน์ต่อการดีบัก แต่ใน Dell 3100 กลับไม่ทำงานอย่างถูกต้อง พยายาม ‘แฮ็ก’ ฮาร์ดแวร์หลายวิธีแต่ยังไม่สำเร็จ
-
ค้นหาทางเลือก
- เนื่องจาก Cr50 ใช้งานไม่ได้ จึงสร้างโซลูชันดีบักสำรองด้วยบอร์ด Raspberry Pi Pico และเชื่อมต่อ UART กับ SPI flash เพื่อทำให้การดีบักเป็นไปได้
-
ด้านซอฟต์แวร์
- ใช้ CircuitPython เชื่อมต่อกับอุปกรณ์ USB และใช้งานโปรโตคอล serprog ผ่าน CircuitPython สำหรับการแฟลช EEPROM
-
การดีบัก SerenityOS
- เพื่อดีบักเคอร์เนลของ SerenityOS ได้ ได้ตั้งค่า Alpine Linux ขึ้นมาและสร้างสภาพแวดล้อมที่ดาวน์โหลดและทดสอบเคอร์เนลอัตโนัมัติผ่าน GRUB
-
ทำความเข้าใจ 16550 UART
- 16550 UART คืออินเทอร์เฟซมาตรฐานสำหรับการสื่อสารแบบอนุกรมที่มีอยู่ในแทบทุก PC แต่ Dell 3100 ใช้การติดตั้งแบบ MMIO ซึ่งทำให้เกิดความยากในการดีบักช่วงต้น
-
การพัฒนาไดรเวอร์ eMMC
- เพื่อพัฒนาไดรเวอร์ eMMC ให้ได้ จำเป็นต้องทำความเข้าใจความแตกต่างระหว่าง SD และ MMC แล้วนำลำดับการเริ่มต้นมาใช้งาน ในตอนท้ายพบว่าปัญหาอยู่ที่การตั้งค่าผิดของรีจิสเตอร์ควบคุมพลังงานและได้แก้ไขมันเรียบร้อยแล้ว
-
สรุป
- โปรเจกต์นี้ใช้เวลาถึง 6 เดือน และเป็นขั้นตอนสำคัญเพื่อให้ SerenityOS ทำงานบนฮาร์ดแวร์จริงต่อไป ในอนาคตก็ยังจำเป็นต้องมีการดีบักและปรับปรุงเพิ่มเติมต่อเนื่อง
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News