Якесь тло
Найголовніше, що вам слід знати, це те, що RaspberryPi - це дивний звір, де ARM CPU
не є основним процесором - це лише копроцесор VideoCore GPU
. Коли програма RaspberryPi запускається, з картки SD в кеш L2 зчитується блок GPU і виконується. Потім цей код відкриває всі важливі периферійні пристрої (оперативна пам'ять, годинник тощо) і запускає ARM CPU
. Тоді завантажувач 2-го ступеня або сама операційна система може бути запущенаARM CPU
.
Блок GPU - це не лише завантажувач. Це насправді операційна система (Video Core OS) сама по собі. Деякі важливі елементи системи не доступні безпосередньо процесору ARM, і для їх використання вона повинна спілкуватися GPU
(використовуючи mailbox
систему обміну повідомленнями). Про це є часткова документація . Зараз Video Core OS
( VCOS
) час від часу співробітники Broadcom поширюються, щоб дозволити функції, потрібні Linux
ядру, та, можливо, в інших місцях, щоб знайти інформацію про це. Але воно там .. десь. І є кілька людей, які пишуть свій власний код голого металу або навіть ОС на RaspberryPi, щоб допомогти вам. І звичайно багато відкритого вихідного коду - Linux ядро RasbperryPi, наприклад.RISC OS
а іноді навіть деяким ОС хобі. Там немає хорошої документації з цього приводу , однак, вам доведеться рити в RaspberryPi forum
,github
VideoCore є власником, немає офіційної документації та інструментів розробки. Тому, якщо ви не хочете докласти багато зусиль, ви не можете переписати VCOS
власний код. Однак є певні зусилля, щоб переробити інженер Video Core, трохи інформації ви можете знайти тут .
Інша проблема полягає в тому, що USB
стек Synopsys є власником, і знову немає документації на нього, і здається, що навіть з документацією важко це надійно реалізувати. Але знову ж таки код доступний (Linux kernel, u-boot, CSUD ). Використання розширених графічних можливостей Video Core
також може бути важким - для графічних бібліотек є якийсь відкритий код , але це лише для ARM
сторони.
Попри це, можна було зробити RISC OS
порт із доступної інформації (мені не зовсім зрозуміло, чи використовували вони лише загальнодоступну інформацію, хоча деякі люди переписують (незалежно від Broadcom) ядро Linux для магістралі, там - FreeBSD
порт, "U-boot" та інші. Тож остаточно можна написати власну ОС. Це просто не так просто, як це можливо.
Ваші цілі
Номер 1
Наскільки я знаю, немає жодного способу, щоб SoC міг почати іншим способом, ніж описаний. Тому завантажувач першого етапу повинен бути включений SD card
. І це має бути GPU
двійковим, а не ARM
двійковим, що є ще однією проблемою. І в RaspberryPi немає спалаху на борту, що теж є проблемою.
Число 2
Основна проблема полягає в тому, що flash
на RaspberryPi немає бортового пристрою. Ви можете додати його, і він може бути активований у вашому завантажувальному пристрої (який уже повинен був бути завантажувачем другого ступеня). Запис USB-драйвера може бути проблематичним.
Число 3, 4, 5
Це не повинно бути великою проблемою. Більшість периферійних пристроїв (принаймні ті , доступними для ARM
) документуються тут . Існуючий завантажувач робить це ще простіше, оскільки ви повністю настроїли свій SoC. Тут і тут ви можете подивитися якийсь код та документацію.
Альтернативи
Я не знаю жодної іншої ради так добре, як RaspberryPi, тому важко щось рекомендувати, але ви можете поглянути на деякі зрілі проекти, такі як Beagleboard / Beaglebone / Pandaboard на базі OMAP, або ви можете слідкувати за розробкою деяких нових дощок, таких як Allwinner Cubieboard або PCduino . Все залежить від того, що саме ви хочете досягти.