Một số nền tảng
Điều quan trọng nhất bạn nên biết là RaspberryPi là một con quái vật kỳ lạ trong đó ARM CPU
CPU không phải là CPU chính - nó chỉ là một bộ đồng xử lý cho VideoCore GPU
. Khi RaspberryPi khởi động, một blob GPU được đọc từ thẻ SD đến bộ đệm L2 và được thực thi. Mã này sau đó đưa lên tất cả các thiết bị ngoại vi quan trọng (RAM, đồng hồ, v.v.) và bắt đầu ARM CPU
. Sau đó, bộ tải khởi động giai đoạn 2 hoặc một số hệ điều hành có thể được chạy trên đó ARM CPU
.
GPU blob không chỉ là một bộ tải khởi động. Đó thực sự là một hệ điều hành (Video Core OS). Một số yếu tố quan trọng của hệ thống không thể truy cập trực tiếp bằng CPU ARM và nó phải liên lạc với GPU
(sử dụng mailbox
hệ thống nhắn tin) để sử dụng chúng. Có một phần tài liệu về điều này có sẵn. Bây giờ Video Core OS
( VCOS
) được nhân viên Broadcom mở rộng theo thời gian để kích hoạt các tính năng cần thiết cho Linux
kernel RISC OS
hoặc đôi khi là một số HĐH sở thích. Không có tài liệu tốt về điều này tuy nhiên, bạn sẽ phải khai thác trong RaspberryPi forum
,github
và có thể những nơi khác để tìm thông tin về điều này. Nhưng nó ở đó .. ở đâu đó. Và có một vài người viết mã kim loại trần hoặc thậm chí các hệ điều hành của họ trên RaspberryPi để giúp bạn. Và dĩ nhiên, rất nhiều mã nguồn mở - hạt nhân Linux của RasbperryPi's chẳng hạn.
VideoCore là độc quyền, không có tài liệu chính thức và công cụ phát triển. Vì vậy, trừ khi bạn muốn nỗ lực nhiều, bạn không thể viết lại VCOS
bằng mã của riêng bạn. Tuy nhiên, có một số nỗ lực để thiết kế đảo ngược Video Core, bạn có thể tìm thấy một số thông tin ở đây .
Một vấn đề khác là USB
ngăn xếp của Synopsys là độc quyền và một lần nữa không có tài liệu nào cho nó và dường như ngay cả với tài liệu cũng khó thực hiện nó một cách đáng tin cậy. Nhưng một lần nữa, mã có sẵn (nhân Linux, u-boot, CSUD ). Việc sử dụng các khả năng đồ họa nâng cao Video Core
cũng có thể khó khăn - có một số mã nguồn mở cho các thư viện đồ họa, nhưng nó chỉ dành cho ARM
phụ.
Điều đó đang được nói, có thể làm cho RISC OS
cổng từ thông tin có sẵn (đối với tôi không hoàn toàn rõ ràng nếu họ chỉ sử dụng thông tin có thể truy cập công khai), một số người đang viết lại (độc lập với Broadcom) nhân Linux cho tuyến chính, ở đó là một FreeBSD
cổng, 'U-boot` và các cổng khác. Vì vậy, chắc chắn có thể viết hệ điều hành của riêng bạn. Nó không dễ dàng như nó có thể được.
Mục tiêu của bạn
Số 1
Theo như tôi biết, không có cách nào mà SoC có thể bắt đầu theo một cách khác ngoài cách được mô tả. Vì vậy, bootloader giai đoạn đầu tiên phải được bật SD card
. Và nó phải là một GPU
nhị phân, không phải là ARM
nhị phân mà là một vấn đề khác. Và không có đèn flash trên tàu trong RaspberryPi cũng là một vấn đề.
Số 2
Vấn đề chính là không có trên tàu flash
trên RaspberryPi. Bạn có thể thêm một cái và nó có thể được kích hoạt trong bộ tải khởi động của bạn (cái này phải là bộ nạp khởi động giai đoạn 2 rồi). Tuy nhiên, việc viết trình điều khiển USB có thể có vấn đề.
Số 3, 4, 5
Đây không phải là một vấn đề. Hầu hết các thiết bị ngoại vi (ít nhất là những thiết bị có thể truy cập được ARM
) được ghi lại ở đây . Bộ tải khởi động hiện tại làm cho việc này thậm chí còn dễ dàng hơn vì bạn đã cấu hình SoC hoàn toàn. Bạn có thể xem ở đây và ở đây cho một số mã và tài liệu.
Lựa chọn thay thế
Tôi không biết bất kỳ bảng nào khác tốt như RaspberryPi, vì vậy thật khó để đề xuất một cái gì đó nhưng bạn có thể xem một số dự án trưởng thành như Beagleboard / Beaglebone / Pandaboard dựa trên OMAP hoặc bạn có thể theo dõi sự phát triển của một số bảng mới như Allwinner Bảng mạch hoặc PCduino . Tất cả phụ thuộc vào chính xác những gì bạn muốn thực hiện.