Raspberry PI без ОС на нем?

9

Я много делал с Arduino в последнее время. Это очень просто, потому что вы можете напрямую выполнять на нем код C ++ без необходимости использования операционных систем или драйверов.

Я провел некоторое исследование и AFAIK, вы обычно устанавливаете Linux на Raspberry PI и создаете сценарии Python или двоичные файлы C ++ для него.

Вопрос: возможно ли выполнить код на нем без какой-либо операционной системы, но при этом использовать карты HDMI и SD?

bytecode77
источник
2
Возможно, вам будет проще делать голые проекты на меньшем и менее мощном, но более полностью документированном процессоре ARM. Хотя остерегайтесь плохо реализованных, проприетарных отладочных адаптеров на дешевых платах разработчика - иногда они получают открытые драйверы с обратной инженерией, или вы можете купить настоящий jtag или использовать серийный загрузчик. По крайней мере, с пи вы должны ожидать хорошей поддержки набора инструментов.
Крис Страттон

Ответы:

16

Запустите код на RaPi без ОС: нет проблем. Дэвид Уэлч выполнил тяжелую работу, проверь его гитуб . По сути, вы можете взять стандартные файлы запуска и заменить kernel.img файлом, который вы хотите запустить. Чтобы избежать «танца с SD-карты», вы можете запустить загрузчик, который получает изображение для запуска по последовательной линии. Я добавил автоматическую перезагрузку, чтобы вы могли запустить новый образ «без рук». Если вы хотите пойти по этому пути, у меня есть еще немного информации.

Запустите свое собственное приложение и используйте экран и SD-карту : это проблема. Вся информация доступна в источниках Linux, и есть люди, работающие над этим (проверьте DexO ?), Поэтому я предполагаю, что через полгода или около того эта информация станет общеизвестной. Но сейчас я бы сказал, что это, вероятно, слишком много работы.

Воутер ван Оойен
источник
Интересно, как процессор может загрузить ядро ​​с SD-карты без соответствующих драйверов для SD-карты и файловой системы?
bytecode77
1
Основные необходимые вам файлы (которые можно загрузить с сайта RaPi отдельно или в составе дистрибутива Linux) включают файл запуска для графического процессора. Предположительно, в GPU есть встроенный bootROM, который позволяет ему читать SD, загружать свой код, загружать kernel.img и активировать процессор ARM.
Воутер ван Оойен
@DevilsChild - во многих CPU встроены базовые загрузчики, в части TI Davinci, с которой я работаю, есть «ROM bootloader», который может работать через последовательный порт или с SD-карты. SD-карты используют базовый интерфейс SPI.
Джон U
5

Это всегда возможно, но вам придется написать свои собственные драйверы для HDMI и SD-интерфейса и, возможно, файловую систему для последнего.

stevenvh
источник
1
На самом деле это было бы чрезвычайно сложно, поскольку сначала запускается графический процессор, а затем ему нужно загрузить двоичные двоичные объекты Broadcom, чтобы запустить процессор. Также, если я правильно помню, драйверы GPU и прошивки тоже с закрытым исходным кодом.
AndrejaKo
Есть ли драйверы, которые можно было бы включить, чтобы они работали? Есть идеи?
bytecode77
@Devils Дитя, я не уверен, насколько это было бы легко или насколько все задокументировано. Я думаю, что вы, возможно, сможете использовать существующий загрузчик, чтобы загрузить собственный образ ОС и запустить процессор, но тогда проблема, о которой Стивенвх написал в ответе, показывает: вам нужно написать драйверы, и большая часть документации для них не существует. т доступно.
AndrejaKo
@DevilsChild - существующие драйверы, скорее всего, будут написаны для конкретной ОС, и если вы хотите интегрировать их в свое собственное программное обеспечение, ему потребуются некоторые его функции. В конце вы будете писать (ограниченную) копию ОС. Кроме того, AndrejaKo указывает, что это будет очень сложно, и прошивка с закрытым исходным кодом не облегчает работу. Почему вы не хотите ОС?
Стивенв
1
@DevilsChild Важное различие между одноплатным компьютером и виртуальной машиной состоит в том, что вы можете разместить плату где-то, кроме физического расположения машины, на которой размещена виртуальная машина; также он имеет тенденцию иметь лучший реальный ввод / вывод. Но виртуальные машины и более специализированные эмуляторы или симуляторы часто играют важную роль, например, позволяют программной команде начать работу до того, как аппаратное обеспечение существует, или избегают борьбы с единственной платой-прототипом, которая была вручную переработана для обеспечения работоспособности или работы. регрессионные тесты без привязки коллекции физических устройств ...
Крис Страттон,
3

Все они сказали, но самый простой путь - запустить дистрибутив Linux, который делает то, что вы хотите и максимально минималистично, а затем убрать все, что вам не нужно.

Довольно скоро он перестанет быть Linux и станет загрузчиком с поддержкой SD и HDMI. По сути, это неотличимо от того, о чем вы просите во всех отношениях, за исключением того,
что оно было извлечено из дистрибутива Linux (но уже не Linux) и
- вы сами этого не делали.

Если вы не сделаете это полностью самостоятельно, это будет крайне важно, это кажется очень логичным подходом.

Рассел МакМахон
источник
0

Если вы хотите запрограммировать «Raspberry Pi as Arduino», проверьте wiringPi. Проверьте мою статью на http://www.jating.in/efyarticle/EFYArticle.pdf .

1) Я сделал так, чтобы он выглядел и работал как Arduino, используя один кабель для преобразования USB в последовательный порт, а также для подачи питания на плату. так что достаточно только одного USB-кабеля, как Arduino.

2) Я сделал небольшую утилиту, которая при запуске загружает код проводки Пи по последовательной линии (фактически любой текстовый файл :-)), компилирует и выполняет его.,

Если вы хотите, вы можете запускать его при каждой загрузке, изменяя файл .bashrc, поэтому каждый раз, когда он загружается, он будет ждать нового файла. Я не предоставил ссылку на код утилиты, но вы можете найти ее по адресу http://www.jating.in/efyarticle/

Джатин Ганди
источник