Некоторый фон
Самая важная вещь, которую вы должны знать, это то, что RaspberryPi - это странный зверь, у ARM CPU
которого не основной процессор, а только сопроцессор VideoCore GPU
. Когда RaspberryPi запускается, двоичный объект GPU считывается с SD-карты в кэш L2 и выполняется. Затем этот код вызывает все важные периферийные устройства (RAM, часы и т. Д.) И запускает ARM CPU
. Затем можно запустить загрузчик 2-й ступени или саму операционную систему ARM CPU
.
GPU blob - это не только загрузчик. Это на самом деле операционная система (ОС Video Core) сама по себе. Некоторые важные элементы системы не доступны напрямую процессору ARM, и он должен взаимодействовать GPU
(используя mailbox
систему обмена сообщениями), чтобы использовать их. Есть частичная документация об этом доступно. Теперь Video Core OS
( VCOS
) время от времени сотрудники Broadcom расширяют возможности для включения функций, необходимых Linux
ядру, RISC OS
а иногда даже некоторым хобби-операционным системам. Там нет хорошей документации об этом, однако, вам придется копаться в RaspberryPi forum
,github
и, возможно, другие места, чтобы найти информацию об этом. Но это там .. где-то. И есть несколько человек, которые пишут свой собственный голый код или даже операционные системы на RaspberryPi, чтобы помочь вам. И, конечно же, много открытого исходного кода - например, ядра Linux RasbperryPi.
VideoCore является проприетарным, нет официальной документации и средств разработки. Поэтому, если вы не хотите прилагать много усилий, вы не можете переписать VCOS
свой собственный код. Тем не менее, есть некоторая попытка перепроектировать Видео Ядро, вы можете найти некоторую информацию здесь .
Другая проблема заключается в том, что USB
стек от Synopsys является проприетарным, и опять же нет документации для него, и кажется, что даже с документацией трудно надежно его реализовать. Но опять же, код доступен (ядро Linux, u-boot, CSUD ). Использование расширенных графических возможностей Video Core
также может быть затруднено - есть некоторый открытый исходный код для графических библиотек, но это только для ARM
стороны.
При этом можно было сделать RISC OS
порт доступным из информации (хотя мне не совсем понятно, использовали ли они только общедоступную информацию), некоторые люди переписывают (независимо от Broadcom) ядро Linux для mainline, там это FreeBSD
порт, 'U-boot` и другие. Так что, безусловно, можно написать свою собственную ОС. Это не так просто, как могло бы быть.
Ваши цели
Номер 1
Насколько я знаю, SoC не может быть запущен иначе, чем описанный. Итак, загрузчик первого этапа должен быть включен SD card
. И это должен быть GPU
двоичный файл, а не ARM
двоичный, что является еще одной проблемой. И в RaspberryPi нет встроенной вспышки, что также является проблемой.
Номер 2
Основная проблема в том, что flash
на RaspberryPi нет встроенной платы . Вы можете добавить один, и он может быть активирован в вашем загрузчике (который уже должен быть загрузчиком 2-го этапа). Однако написание драйвера USB может быть проблематичным.
№ 3, 4, 5
Это не должно быть большой проблемой. Большинство периферийных устройств (по крайней мере, те, которые доступны для ARM
) описаны здесь . Существующий загрузчик делает это еще проще, поскольку вы полностью настроили свой SoC. Вы можете посмотреть здесь и здесь для некоторого кода и документации.
альтернативы
Я не знаю ни одной другой доски так хорошо , как RaspberryPi , так что трудно рекомендовать что - то , но вы можете взглянуть на некоторые зрелые проекты , как OMAP основе Beagleboard / Beaglebone / Pandaboard или вы можете следить за развитием некоторых новых плат , таких как ALLWINNER основе Cubieboard или PCduino . Все зависит от того, что именно вы хотите достичь.