Уровень взлома малины pi

Я работаю со встроенными системами (в основном микроконтроллерами) около 3 лет. Я хочу знать, сколько RPi на самом деле с открытым исходным кодом? Я знаю, что arduino дает нам полную информацию об оборудовании /программном обеспечении и т. Д. Но как насчет RPi? Это важно, так как моя команда и я хочу сделать следующее с малиновым pi [этот проект намеревается использовать RPi точно так же, как arduino => нет ОС]:

  1. Перепишите основной загрузчик (ПЗУ) для загрузки с флэш-памяти, а не на внешнюю SD-карту.
  2. У вас есть вторичный загрузчик во встроенной вспышке, это активирует порт USB pi и слушает его. Он должен принимать двоичный код (который он получит с моего ПК) и сохранить его на вспышке. позже начните выполнять его.
  3. Разработка собственных драйверов устройств для обработки протоколов связи.
  4. Разработайте собственную среду загрузки и отладки для PI, а также нашу пользовательскую реализацию встроенного C для ARM (необходимо для управления GPIO и т. д.).
  5. Внедрите собственную ОС для встроенных систем, если это возможно.

Возможно ли это с малиной Pi? Если нет:
- > Какой из моих пяти целей невозможно с малиновым пи. какие изменения я должен внести в свой проект, если мне нужно работать с PI?
- > Какие еще платы существуют на рынке, которые позволят мне выполнить именно то, что я хочу?

33 голоса | спросил deepak 20 PMpSat, 20 Apr 2013 16:50:32 +040050Saturday 2013, 16:50:32

2 ответа


72

Некоторый фон

Самое главное, что вы должны знать, это то, что RaspberryPi - странный зверь, где ARM CPU - не основной процессор - это только сопроцессор для графического процессора VideoCore GPU. Когда запускается RaspberryPi, кадр GPU считывается с SD-карты в кэш L2 и выполняется. Затем этот код отображает все важные периферийные устройства (ОЗУ, часы и т. Д.) И запускает ARM CPU. Тогда второй загрузчик или какая-либо операционная система может быть запущена на ARM CPU.

БЛОК GPU - это не только загрузчик. Фактически это операционная система (Video Core OS). Некоторые важные элементы системы напрямую недоступны процессору ARM, и для их использования ему необходимо связываться с GPU (используя систему сообщений mailbox). Существует частичная документация об этом. Теперь Video Core OS (VCOS) время от времени расширяется сотрудниками Broadcom для включения функций, необходимых для ядра Linux, RISC OS или иногда даже некоторые хобби. Однако нет хорошей документации по этому вопросу, вам придется копать в RaspberryPi forum, github и, возможно, в других местах, чтобы найти информацию об этом. Но это где-то. И есть несколько человек, которые пишут свой собственный металлический код или даже ОС на RaspberryPi, чтобы помочь вам. И, конечно, много открытого кода - ядро ​​Linux RasbperryPi.

VideoCore является собственностью, нет официальной документации и средств разработки. Поэтому, если вы не хотите приложить много усилий, вы не можете переписать VCOS своим кодом. Тем не менее, есть некоторые попытки перепроектировать Video Core, вы можете найти здесь информацию .

Другая проблема заключается в том, что стек 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

Основная проблема заключается в том, что на RaspberryPi отсутствует встроенная flash. Вы можете добавить его, и он может быть активирован в вашем загрузчике (который уже должен был быть загрузчиком 2-го этапа). Однако запись драйвера USB может быть проблематичной.

Номер 3, 4, 5

Это не должно быть большой проблемой. Большинство периферийных устройств (по крайней мере, те, которые доступны для ARM), документированы . Существующий загрузчик делает это еще проще, так как вы полностью настроили свой SoC. Вы можете посмотреть здесь и здесь для некоторого кода и документации.

Альтернативы

Я не знаю никакой другой доски, такой же, как RaspberryPi, поэтому трудно что-то рекомендовать, но вы можете взглянуть на некоторые зрелые проекты, такие как OMAP на основе Beagleboard / Beaglebone / Pandaboard или вы можете следуйте за разработкой некоторых новых плат, таких как Allwinner на основе Cubieboard или PCduino . Все зависит от того, что именно вы хотите достичь.

ответил Krzysztof Adamski 20 PMpSat, 20 Apr 2013 19:58:43 +040058Saturday 2013, 19:58:43
4

Чтобы обновить отличный ответ Krzysztof, Broadcom наконец опубликовал некоторый код, лицензированный как 3-Clause BSD, чтобы помочь в создании драйвера с открытым исходным кодом. Утилита rpi-open-firmware для замены прошивки Raspberry Pi VPU началась в 2016 году: https: //github.com/christinaa/rpi-open-firmware . Подробнее см. https://news.ycombinator.com/item?id=11703842

Существует несколько альтернативных советов, кратко описанных и связанных с RaspberryPi - Debian Wiki , включая ODROID -C1, Cubieboard, Banana Pi, OLinuxIno Wifi от Olimex и OlinuxIno Mini, EOMA68 и Beaglebone black.

ответил nealmcb 18 Mayam16 2016, 03:12:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132