Beberapa latar belakang
Yang paling penting yang harus Anda ketahui adalah bahwa RaspberryPi adalah binatang aneh di mana ARM CPU
bukan CPU utama - itu hanya co-prosesor untuk VideoCore GPU
. Ketika RaspberryPi dimulai, gumpalan GPU dibaca dari kartu SD ke cache L2 dan dieksekusi. Kode ini kemudian memunculkan semua periferal penting (RAM, jam, dll) dan memulai ARM CPU
. Kemudian bootloader tahap 2 atau beberapa sistem operasi itu sendiri dapat dijalankan ARM CPU
.
Gumpalan GPU bukan hanya bootloader. Ini sebenarnya adalah sistem operasi (Video Core OS) dengan sendirinya. Beberapa elemen penting dari sistem tidak dapat diakses langsung oleh ARM CPU dan harus berkomunikasi dengan GPU
(menggunakan mailbox
sistem pesan) untuk menggunakannya. Ada dokumentasi parsial tentang ini tersedia. Now Video Core OS
( VCOS
) diperpanjang dari waktu ke waktu oleh karyawan Broadcom untuk mengaktifkan fitur yang dibutuhkan oleh Linux
kernel, RISC OS
atau terkadang bahkan beberapa OS hobi. Tidak ada dokumentasi yang baik tentang ini, Anda harus menggali di RaspberryPi forum
,github
dan mungkin tempat lain untuk mencari informasi tentang ini. Tapi itu ada di suatu tempat. Dan ada beberapa orang yang menulis kode logam telanjang mereka sendiri atau bahkan OS pada RaspberryPi untuk membantu Anda. Dan tentu saja banyak kode sumber terbuka - kernel Linux RasbperryPi misalnya.
VideoCore adalah hak milik, tidak ada dokumentasi resmi dan alat pengembangan. Jadi, kecuali jika Anda ingin melakukan banyak upaya, Anda tidak dapat menulis ulang VCOS
dengan kode Anda sendiri. Namun, ada beberapa upaya untuk merekayasa balik Core Video, Anda dapat menemukan beberapa informasi di sini .
Masalah lain adalah bahwa USB
tumpukan oleh Synopsys adalah milik dan sekali lagi tidak ada dokumentasi untuk itu dan tampaknya bahkan dengan dokumentasi sulit untuk mengimplementasikannya dengan andal. Tetapi sekali lagi, kode tersedia (kernel Linux, u-boot, CSUD ). Menggunakan kemampuan grafik canggih Video Core
mungkin juga sulit - ada beberapa kode sumber terbuka untuk pustaka grafis, tetapi itu hanya untuk ARM
sisi.
Yang sedang berkata, adalah mungkin untuk membuat RISC OS
port dari informasi yang tersedia (itu tidak sepenuhnya jelas bagi saya jika mereka hanya menggunakan informasi yang dapat diakses publik, meskipun), beberapa orang menulis ulang (terlepas dari Broadcom) kernel Linux untuk arus utama, ada adalah FreeBSD
porta, 'U-boot` dan lainnya. Jadi sangat mungkin untuk menulis OS Anda sendiri. Itu tidak semudah mungkin.
Tujuan Anda
Nomor 1
Sejauh yang saya tahu, tidak ada cara bahwa SoC bisa memulai dengan cara lain dari yang dijelaskan. Jadi bootloader tahap pertama harus dihidupkan SD card
. Dan itu harus menjadi GPU
biner, bukan ARM
biner yang merupakan masalah lain. Dan tidak ada flash on board di RaspberryPi yang juga merupakan masalah.
Nomor 2
Masalah utama adalah bahwa tidak ada on-board flash
di RaspberryPi. Anda bisa menambahkan satu dan itu bisa diaktifkan di bootloader Anda (yang seharusnya sudah menjadi bootloader tahap 2). Menulis driver USB bisa menimbulkan masalah.
Nomor 3, 4, 5
Ini seharusnya tidak menjadi masalah. Sebagian besar perangkat (setidaknya yang dapat diakses ARM
) didokumentasikan di sini . Bootloader yang ada menjadikan ini lebih mudah karena SoC Anda sudah sepenuhnya terkonfigurasi. Anda dapat melihat di sini dan di sini untuk beberapa kode dan dokumentasi.
Alternatif
Saya tidak tahu papan lain sebaik RaspberryPi sehingga sulit untuk merekomendasikan sesuatu tetapi Anda dapat melihat beberapa proyek dewasa seperti OMAP berbasis Beagleboard / Beaglebone / Pandaboard atau Anda dapat mengikuti pengembangan beberapa papan baru seperti Allwinner berdasarkan Cubieboard atau PCduino . Itu semua tergantung pada apa yang ingin Anda capai.
Untuk memperbarui jawaban hebat Krzysztof, Broadcom akhirnya secara terbuka merilis beberapa kode, dilisensikan sebagai 3-Clause BSD, untuk membantu pembuatan driver GPU open source. Upaya "rpi-open-firmware" untuk menggantikan gumpalan firmware Raspberry Pi VPU dimulai pada tahun 2016: https://github.com/christinaa/rpi-open-firmware . Lihat lebih lanjut di https://news.ycombinator.com/item?id=11703842
Ada sejumlah papan alternatif yang dijelaskan dan ditautkan secara singkat dari RaspberryPi - Debian Wiki , termasuk ODROID-C1, Cubieboard, Banana Pi, OLinuxIno Wifi Olimex dan OlinuxIno Mini, EOMA68, dan Beaglebone black.
sumber
Sebenarnya ada cukup banyak yang dapat Anda lakukan dengan bootloader U-boot dengan Raspberry Pi. Anda pada dasarnya hanya membiarkan GPU memuat SoC coprocessor ARM Anda dengan gambar U-boot sebagai "OS".
Saya menemukan artikel ini bermanfaat sebagai contoh. Saya belum melakukannya (belum), tetapi saya berencana untuk melakukannya. Saya kebetulan menemukan pertanyaan Anda ketika saya sedang mencari cara untuk melakukan ini sendiri, dan kemudian saya menemukan artikel itu dan sepertinya itu mungkin berguna bagi orang lain yang mencari yang serupa.
Ada artikel lain yang berisi instruksi lebih luas untuk membuat image U-boot.
sumber