1 คะแนน โดย GN⁺ 2025-04-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

คอมพิวเตอร์ขั้นต่ำ

  • แนวคิดเริ่มต้น: ในอดีต เราสามารถสั่งชุดคิทมาประกอบคอมพิวเตอร์เองที่บ้านได้ คอมพิวเตอร์สมัยใหม่ประกอบด้วยชิปที่ซับซ้อนและต้องใช้พลังงานจำนวนมาก แต่ได้เริ่มทดลองว่า จะสามารถทำคอมพิวเตอร์สมัยใหม่ให้อยู่ในรูปคิทที่ประกอบเองที่บ้านได้อย่างง่ายดายหรือไม่
  • เป้าหมาย: สร้างคอมพิวเตอร์ที่สามารถรัน Debian Linux, vi, gcc, make ได้ โดยตั้งเป้าไว้ที่ RAM 8MB, CPU 1 MIPS, SD การ์ด และ USB

การเลือกชิ้นส่วน

  • อินเทอร์เฟซ USB: ในบรรดาชิป 8 ขา แทบไม่มีชิปที่รองรับ USB โดยตรง ตัวเลือกที่เป็นไปได้คือซีรีส์ PL2303GL และ ATTINYx5
  • RAM: ใช้ SOIC-8 PSRAM ซึ่งสามารถหา RAM ขนาด 8MB ได้ไม่ยาก
  • ไมโครคอนโทรลเลอร์: พิจารณาหลายตัวเลือกแล้ว และสรุปว่า STM32G031J6 เหมาะสมที่สุด มีแฟลช 32KB, RAM 8KB และความถี่สัญญาณนาฬิกา 64MHz

การออกแบบฮาร์ดแวร์

  • คอนโซล: ขา UART ไม่สามารถนำไปรวมใช้งานกับส่วนอื่นได้
  • RAM: แม้ SPI PSRAM จะรองรับโหมด QSPI แต่เนื่องจากข้อจำกัดด้านจำนวนขา จึงใช้โหมด SPI ปกติ
  • SD การ์ด: เพื่อแก้ปัญหาจำนวนขาไม่พอ จึงออกแบบวิธีเชื่อมต่อ RAM และ SD การ์ดเข้ากับขาเดียวกัน

เรื่องราวฝั่งซอฟต์แวร์

  • อีมูเลเตอร์: นำ MIPS emulator ที่มีอยู่เดิมกลับมาใช้ใหม่ และแบ่งแฟลช 32KB ออกเป็นบูตโหลดเดอร์กับโค้ดหลัก
  • บูตโหลดเดอร์: พัฒนาบูตโหลดเดอร์ที่รองรับการอัปเดตเฟิร์มแวร์จาก SD การ์ด

ประสิทธิภาพ

  • โอเวอร์คล็อก: STM32G031 ถูกระบุไว้ที่ 64MHz แต่สามารถโอเวอร์คล็อกได้ถึง 150MHz ที่ 148MHz, CPU MIPS ที่จำลองขึ้นมีประสิทธิภาพเทียบเท่ากับ MIPS R3000 ราว 1.65MHz

การประกอบ

  • การประกอบรอบแรก: บัดกรีซ็อกเก็ต SD การ์ด, คาปาซิเตอร์, ตัวต้านทาน, ไมโครคอนโทรลเลอร์ และชิป USB-serial ตามลำดับ
  • การประกอบรอบที่สอง: หลังโปรแกรมบูตโหลดเดอร์ลงในไมโครคอนโทรลเลอร์แล้ว จึงบัดกรีชิป RAM

การดาวน์โหลดและการใช้งาน

  • ไฟล์: ไฟล์ที่จำเป็นทั้งหมดรวมอยู่ในแพ็กเกจดาวน์โหลด เขียนอิมเมจลง SD การ์ด แล้วคัดลอกเฟิร์มแวร์ลง SD การ์ด เพื่อให้บูตโหลดเดอร์ตรวจพบได้ในระหว่างการบูตครั้งแรก
  • วิธีใช้งาน: อุปกรณ์จะบูตเข้าสู่เชลล์พรอมป์ต์ และสามารถรัน bash เพิ่มเติมได้ แนะนำให้ใช้ไฟล์สว็อปเพื่อป้องกันปัญหา RAM ไม่เพียงพอ

1 ความคิดเห็น

 
GN⁺ 2025-04-06
ความคิดเห็นจาก Hacker News
  • หลังจากขบคิดเรื่องพินที่สามารถจับคู่กับสามพินของ SDIO ได้ ก็พบว่าสามารถใช้ nCS ของ RAM เป็น CLK ของการ์ด SD, ใช้ CLK ของ RAM เป็น CMD ของการ์ด SD และใช้ MOSI ของ RAM เป็น DAT ของการ์ด SD ได้
  • น่าเสียดายที่ต้องใช้ชิปแยกต่างหากเพื่อเชื่อมต่อกับ USB; USB เป็นโปรโตคอลที่ซับซ้อน และยกเว้น V-USB พื้นฐานแล้ว ก็จำเป็นต้องมีฮาร์ดแวร์เฉพาะทางและซอฟต์แวร์สแตก ขณะที่ SPI นั้นเรียบง่ายมากและทำได้ด้วยฮาร์ดแวร์เพียงเล็กน้อย
  • คิดถึงสมัยก่อนที่เดสก์ท็อปและแล็ปท็อปมีพอร์ตอนุกรมและพอร์ตขนานเปิดให้ใช้งานอยู่ภายนอก คิดว่าคงจะดีถ้าใช้ UART, I2C, SPI แทน USB และใช้อินเทอร์เฟซ IEEE 802.3 Ethernet สำหรับอุปกรณ์ต่อพ่วงที่มีข้อมูลจำนวนมาก
  • บทความนี้ให้ความรู้และสนุกมาก
  • น่าจะดีถ้ามีการพูดถึงว่าจำเป็นต้องใช้ความหนาของบอร์ด 0.8mm เพื่อให้ "USB-C edge connector" พอดีกับปลั๊ก
  • รู้สึกว่าถ้ายืดหยุ่นกับข้อกำหนดเรื่อง 8 พินมากกว่านี้อีกนิด โปรเจ็กต์ก็น่าจะง่ายขึ้นมาก ถ้ามีพินเพิ่มอีกไม่กี่พิน ความซับซ้อนก็คงลดลงอย่างมาก
  • แทบจะเป็นการประกอบจากชิปแค่สองตัว ตัวหนึ่งคือ USB-to-serial IC ถ้าไม่นับ SD card จำนวนพินรวมก็ต่ำมาก
  • โปรเจ็กต์นี้เจ๋งมาก แต่ก็ขัดกับเป้าหมายที่จะสร้างคิทคอมพิวเตอร์ใหม่สำหรับผู้เริ่มต้น สำหรับมือใหม่แล้ว SOIC8 กับ SOIC28 แทบไม่ต่างกันมากนัก และชิปที่ใหญ่กว่าจะสร้างคอมพิวเตอร์ที่ใช้งานได้มีประโยชน์กว่าด้วย
  • ลองจินตนาการว่าน่าจะนำไปใช้กับโครงสร้างพื้นฐาน IoT แบบ serverless ได้ ถ้าผู้ให้บริการ PCB จัดหาแค่พลังงานและ Ethernet ก็จะ SSH เข้าใช้งานได้ และเมื่อทำงานเสร็จก็อาจรีไซเคิลโลหะ/PCB ได้
  • น่าจะทำกับ RISC-V ได้เหมือนกัน คิดถึงการตั้งบริษัทเล็ก ๆ ที่รูทโทรศัพท์มือถือเก่าด้วย AI แล้วจัดหาอินเทอร์เน็ตกับพลังงานให้
  • มีแรงกระตุ้นอยากข้ามการใช้บอร์ดไปเลย แล้วทำเป็นชิ้นส่วนวงจรแทน
  • ด้วยเหตุผลส่วนตัว ฉันแพ้ทาง RISC-V
  • ถ้าใช้ชิป SPI flash แบบ 8 พินแทน SD card สำหรับเก็บข้อมูลก็น่ารักดีเหมือนกัน