-
Đưa SerenityOS lên phần cứng thực tế
- Tác giả quyết định đi sâu hơn vào dự án SerenityOS vì codebase chỉ chạy được trên QEMU mà chưa chạy trên phần cứng thực. Để giải quyết việc này, họ đã chọn Chromebook Dell 3100.
-
Lý do chọn Chromebook
- Chromebook có giá rẻ, dễ kiếm và có chip bảo mật Cr50 nên vẫn có thể debug kể cả khi ở chế độ khóa. Dell 3100 được chọn vì giá thấp và bàn phím tốt hơn so với các mẫu cao cấp.
-
Vấn đề cros_ec
- Chip Cr50 của Chromebook rất hữu ích cho việc gỡ lỗi, nhưng trên Dell 3100 nó không hoạt động đúng cách. Một số lần thử hack phần cứng đã được thực hiện nhưng không thành công.
-
Tìm kiếm giải pháp thay thế
- Vì chip Cr50 không hoạt động, nhóm đã triển khai giải pháp gỡ lỗi thay thế bằng bo mạch Raspberry Pi Pico. Điều này cho phép debug thông qua UART và kết nối với SPI flash.
-
Khía cạnh phần mềm
- Dùng CircuitPython để triển khai kết nối với thiết bị USB, và triển khai giao thức serprog bằng CircuitPython cho việc ghi flash EEPROM.
-
Debug SerenityOS
- Để debug kernel SerenityOS, họ đã thiết lập Alpine Linux và xây dựng môi trường tự động tải xuống, sau đó kiểm tra kernel qua GRUB.
-
Tìm hiểu 16550 UART
- 16550 UART là giao diện chuẩn cho truyền thông nối tiếp, có mặt trên hầu hết máy tính PC. Tuy nhiên trên Dell 3100 nó được cài đặt theo dạng MMIO, nên debug ban đầu gặp nhiều khó khăn.
-
Triển khai driver eMMC
- Để triển khai driver eMMC, nhóm đã hiểu sự khác biệt giữa SD và MMC, rồi thực hiện chuỗi khởi tạo. Họ phát hiện cấu hình sai của thanh ghi điều khiển nguồn là nguyên nhân và đã sửa lỗi này.
-
Kết luận
- Dự án kéo dài 6 tháng và là một bước quan trọng để chạy SerenityOS trên phần cứng thực. Sẽ còn cần thêm công tác gỡ lỗi và cải tiến tiếp theo.
1 bình luận
Ý kiến trên Hacker News