Máy tính tối giản
- Ý tưởng ban đầu: Trước đây có thể đặt mua kit để tự lắp ráp máy tính tại nhà. Máy tính hiện đại được cấu thành từ các chip phức tạp và cần nhiều điện năng. Tuy nhiên, tác giả bắt đầu thử nghiệm xem liệu có thể tạo ra một bộ kit giúp dễ dàng tự lắp ráp máy tính hiện đại tại nhà hay không.
- Mục tiêu: Tạo ra một máy tính có thể chạy Debian Linux, vi, gcc và make. Mục tiêu được đặt ra là 8MB RAM, CPU 1 MIPS, thẻ SD và USB.
Lựa chọn linh kiện
- Giao tiếp USB: Trong số các chip 8 chân, hầu như không có chip nào hỗ trợ USB. PL2303GL và dòng ATTINYx5 là những lựa chọn khả thi.
- RAM: Sử dụng PSRAM SOIC-8. Có thể dễ dàng kiếm được RAM 8MB.
- Vi điều khiển: Đã cân nhắc nhiều phương án, nhưng STM32G031J6 được đánh giá là phù hợp nhất. Nó có 32KB flash, 8KB RAM và xung nhịp 64MHz.
Thiết kế phần cứng
- Bảng điều khiển: Chân UART không thể ghép chung với các thành phần khác.
- RAM: SPI PSRAM hỗ trợ chế độ QSPI, nhưng do giới hạn số chân nên dùng chế độ SPI thông thường.
- Thẻ SD: Để giải quyết vấn đề thiếu chân, tác giả придумал cách nối RAM và thẻ SD vào cùng một nhóm chân.
Câu chuyện phần mềm
- Trình giả lập: Tái sử dụng trình giả lập MIPS sẵn có. Bộ nhớ flash 32KB được chia thành bootloader và mã chính.
- Bootloader: Phát triển một bootloader hỗ trợ cập nhật firmware từ thẻ SD.
Hiệu năng
- Ép xung: STM32G031 được định danh ở mức 64MHz, nhưng có thể ép xung lên tới 150MHz. Ở 148MHz, CPU MIPS được giả lập cho hiệu năng tương đương khoảng MIPS R3000 1.65MHz.
Lắp ráp
- Lắp ráp ban đầu: Hàn lần lượt socket thẻ SD, tụ điện, điện trở, vi điều khiển và chip USB-to-serial.
- Lắp ráp lần hai: Sau khi lập trình bootloader vào vi điều khiển, tiến hành hàn chip RAM.
Tải xuống và sử dụng
- Tệp: Mọi tệp cần thiết đều có trong gói tải về. Ghi image thẻ SD và chép firmware vào thẻ SD để bootloader nhận ra nó ở lần khởi động đầu tiên.
- Cách dùng: Thiết bị khởi động vào dấu nhắc shell, và có thể chạy thêm bash. Để tránh thiếu RAM, nên dùng swap file.
1 bình luận
Ý kiến Hacker News
nCScủa RAM làmCLKcủa thẻ SD,CLKcủa RAM làmCMDcủa thẻ SD, vàMOSIcủa RAM làmDATcủa thẻ SD