Рівень Hackability малинового пі


35

Я працюю з вбудованими системами (в основному мікроконтролерами) близько 3 років. Я хочу знати, скільки RPI насправді з відкритим кодом ?? Я знаю, що ардуїно надає нам повну інформацію про апаратне / програмне забезпечення тощо. А як щодо RPi? Це важливо, оскільки моя команда, і я хочу зробити наступне з малиновим пі [цей проект має намір використовувати RPi саме як arduino => немає ОС]:

  1. Перезапишіть основний завантажувач (ROM) для завантаження із флеш, а не із зовнішньої SD-карти.
  2. Майте вторинний завантажувач у спалаху на борту, це активує usb-порт пі та слухає його. Він повинен прийняти двійковий код (який він отримає з мого ПК) і зберегти його на спалах. пізніше починайте його виконувати.
  3. Розробіть власні драйвери пристроїв для обробки протоколів зв’язку.
  4. Розробіть власне середовище для завантаження та налагодження для PI разом із нашою власною реалізацією вбудованого C для ARM (необхідного для управління GPIO тощо).
  5. По можливості реалізуйте власну ОС для вбудованих систем.

Це можливо з малиною Пі? Якщо ні:
-> Яка з п’яти моїх цілей неможлива з малиновим пі. які зміни я повинен внести до свого проекту, якщо мені доведеться працювати з ІП?
-> Які ще дошки є на ринку, які дозволять мені виконати саме те, що я хочу?

Відповіді:


76

Якесь тло

Найголовніше, що вам слід знати, це те, що 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 . Все залежить від того, що саме ви хочете досягти.


3
Я хочу +100 на цю відповідь. Молодці.
orithena

@maligree lol, не хвилюйся - це вже зроблено! :)
xxmbabanexx

1
+1 для Beablebone, тому що це 100% відкритий ресурс, і ви маєте можливість "повернути" обладнання та зробити власну друковану плату
portforwardpodcast

5

Щоб оновити чудову відповідь Кшиштофа, Broadcom нарешті публічно випустив якийсь код, ліцензований як 3-клаузний BSD, щоб допомогти створити драйвер GPU з відкритим кодом. Зусилля "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, OLimex OLinuxIno Wifi та OlinuxIno Mini, EOMA68 та чорний Beaglebone.


Особисто я вважаю, що альтернативи не такі вже й великі, багато ODROID дощок вимагають перевірки підпису завантажувача і заважають вам запускати власний код на них. Сім'я TI OMAP3 існує в безпечному режимі, перш ніж виклик вашого коду, а також обмежує те, що ви можете зробити з ним. VPU на RPi насправді досить приємний, я думаю, що це те, що дає йому перевагу перед іншими дошками, і тепер, коли у нас є приємний інструментарій для цього, речі виглядають добре.
Крістіна Брукс

1

Насправді можна багато зробити з завантажувачем U-boot з Raspberry Pi. Ви в основному просто дозволяєте GPU завантажувати ваш ARM співпроцесор SoC із зображенням U-boot як "ОС".

Я знайшов цю статтю корисною як приклад. Я цього ще не зробив, але планую. У мене трапилось запитання, коли я шукав спосіб зробити це сам, і тоді я знайшов статтю, і, схоже, вона може бути корисною для інших, хто шукає подібного.

Є ще одна стаття, яка містить більш обширні інструкції зі створення образу U-boot.


1
Це такий варіант відповіді, який може бути корисним на початку, але через пару років посилання перестають працювати, і немає жодного натяку на те, яким був їхній вміст. Поміркуйте, принаймні, розкажіть, яку гілку U-boot та який компілятор ви використовували.
Дмитро Григор’єв

Дякую Дмитру. Я повернусь до цього незабаром і виправлю це, коли отримаю трохи часу.
Алан Міммс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.