Raspberry PI sans OS dessus?

9

J'ai fait beaucoup de choses avec Arduino récemment. C'est très simple car vous pouvez exécuter directement du code C ++ dessus sans avoir besoin de systèmes d'exploitation ou de pilotes.

J'ai fait quelques recherches et AFAIK, vous installez généralement Linux sur le Raspberry PI et créez des scripts python ou des binaires C ++ dessus.

Question: Est-il possible d'exécuter du code dessus sans aucun système d'exploitation, tout en étant capable d'utiliser des cartes HDMI et SD?

bytecode77
la source
2
Vous pouvez trouver plus facile de faire des projets bare-metal sur un processeur ARM plus petit et moins performant, mais plus complètement documenté. Bien que méfiez-vous des adaptateurs de débogage propriétaires mal mis en œuvre sur les cartes de développement bon marché - parfois, ils obtiennent des pilotes ouverts de rétro-ingénierie, ou vous pouvez acheter un vrai jtag ou utiliser un chargeur de démarrage série. Au moins avec le pi, vous devriez pouvoir vous attendre à un bon support de la chaîne d'outils.
Chris Stratton

Réponses:

16

Exécutez le code sur le RaPi sans OS: Pas de problème. David Welch a fait le travail de grognement, vérifiez son gitub . Fondamentalement, vous pouvez prendre les fichiers de démarrage standard et remplacer le kernel.img par le fichier que vous souhaitez exécuter. Pour éviter la «danse de la carte SD», vous pouvez exécuter un chargeur de démarrage qui reçoit l'image à exécuter sur une ligne série. J'ai ajouté un redémarrage automatique, vous pouvez donc exécuter une nouvelle image `` mains libres ''. Si vous voulez suivre cette voie, j'ai plus d'informations.

Exécutez votre propre application bare-metal et utilisez l'écran et la carte SD : c'est un problème. Toutes les informations sont disponibles en profondeur dans les sources Linux, et il y a des personnes qui y travaillent (vérifiez DexOs ?), Donc je suppose que dans environ six mois , ces informations seront de notoriété publique . Mais pour l'instant, je dirais que c'est probablement trop de travail.

Wouter van Ooijen
la source
Je me demande comment le CPU peut charger le noyau depuis la carte SD sans les pilotes appropriés pour la carte SD et le système de fichiers?
bytecode77
1
Les fichiers de base dont vous avez besoin (et peuvent être téléchargés à partir du site RaPi, seul ou dans le cadre d'une distribution Linux) incluent un fichier de démarrage pour le GPU. Vraisemblablement, le GPU a une bootROM intégrée qui lui permet de lire la SD, de charger son code, de charger le kernel.img et d'activer le processeur ARM.
Wouter van Ooijen
@DevilsChild - de nombreux processeurs ont des chargeurs de démarrage de base intégrés, la partie TI Davinci avec laquelle je travaille a un "chargeur de démarrage ROM" qui peut fonctionner en série ou à partir d'une carte SD. Les cartes SD utilisent une interface SPI de base.
John U
5

C'est toujours possible, mais vous devrez écrire vos propres pilotes pour le HDMI et l'interface SD, et éventuellement un système de fichiers pour ce dernier aussi.

stevenvh
la source
1
En fait, ce serait extrêmement compliqué car c'est le GPU qui démarre en premier et doit ensuite charger certains blobs binaires de Broadcom pour démarrer le CPU. De plus, si je me souviens bien, les pilotes GPU et le firmware sont également à source fermée.
AndrejaKo
Y a-t-il des pilotes disponibles qui pourraient être inclus pour que cela fonctionne? Une idée?
bytecode77
@Devils Child Je ne suis pas sûr de la facilité ni de la documentation de tout. Je pense que vous pourrez peut-être utiliser le chargeur de démarrage existant pour charger votre propre image de système d'exploitation et démarrer le processeur, mais le problème que Stevenvh a écrit dans la réponse montre: vous aurez besoin d'écrire des pilotes et la plupart de la documentation pour eux n'est pas '' t disponible.
AndrejaKo
@DevilsChild - les pilotes existants seront très probablement écrits pour un système d'exploitation spécifique, et si vous souhaitez les intégrer dans votre propre logiciel, il aura besoin de certaines de ses fonctionnalités. À la fin, vous écrirez une copie (limitée) du système d'exploitation. De plus, AndrejaKo indique que ce sera très difficile et que le micrologiciel à source fermée ne facilite pas les choses. Pourquoi ne voulez-vous pas un OS?
stevenvh
1
@DevilsChild la différence importante entre un ordinateur à carte unique et une machine virtuelle est que vous pouvez placer la carte ailleurs qu'à l'emplacement physique de la machine hébergeant la machine virtuelle; il a également tendance à avoir de meilleures E / S dans le monde réel. Mais les machines virtuelles et les émulateurs ou simulateurs plus spécialisés ont souvent un rôle important, comme laisser l'équipe logicielle commencer à travailler avant que le matériel n'existe, ou éviter de les faire se battre pour la seule carte prototype qui a été retravaillée à la main pour être fonctionnelle, ou en cours d'exécution. tests de régression sans lier la collection d'appareils physiques ...
Chris Stratton
3

Ce qu'ils ont tous dit, mais le chemin le plus simple est d'exécuter une distribution Linux qui fait ce que vous voulez et est aussi minimaliste que possible, puis supprimez tout ce que vous ne voulez pas.

Très bientôt, il cessera d'être Linux et deviendra un chargeur de démarrage avec prise en charge SD et HDMI. Cela est essentiellement indiscernable de ce que vous demandez à tous égards, sauf
- il a été extrait d'une distribution Linux (mais n'est plus Linux) et
- vous ne l'avez pas fait vous-même.

À moins que le faire vous-même complètement soit d'une importance capitale, cela semble être une approche très logique.

Russell McMahon
la source
0

Si vous souhaitez programmer "Raspberry Pi comme Arduino", consultez le câblagePi. Consultez mon article à http://www.jating.in/efyarticle/EFYArticle.pdf .

1) Je l'ai fait ressembler et fonctionner comme Arduino, en utilisant un seul câble pour effectuer la conversion USB-série et également alimenter la carte. donc un seul câble USB suffit comme Arduino.

2) J'ai fait un petit utilitaire qui, une fois exécuté, chargera le code Pi de câblage sur la ligne série (en fait, n'importe quel fichier texte :-)), le compile et l'exécute.,

Si vous le souhaitez, vous pouvez l'exécuter à chaque démarrage en modifiant le fichier .bashrc, donc à chaque démarrage, il attendra un nouveau fichier. Je n'ai fourni aucun lien vers le code de l'utilitaire, mais vous pouvez le trouver sur http://www.jating.in/efyarticle/

Jatin Gandhi
la source