PI de framboesa sem SO?

9

Eu tenho feito muito com o Arduino recentemente. É muito simples, porque você pode executar diretamente o código C ++ nele, sem a necessidade de sistemas operacionais ou drivers.

Eu fiz algumas pesquisas e o AFAIK, você geralmente instala o Linux no Raspberry PI e cria scripts python ou binários C ++ nele.

Pergunta: É possível executar o código nele sem nenhum sistema operacional, mas ainda sendo possível usar os cartões HDMI e SD?

bytecode77
fonte
2
Você pode achar mais fácil realizar projetos bare-metal em um processador ARM menor e menos capaz, mas mais completamente documentado. Embora esteja atento a adaptadores de depuração proprietários mal implementados em placas de desenvolvimento baratas - às vezes, esses drivers são de engenharia reversa ou você pode comprar um jtag real ou usar um carregador de inicialização serial. Pelo menos com o pi, você deve esperar um bom suporte da cadeia de ferramentas.
Chris Stratton

Respostas:

16

Execute o código no RaPi sem SO: Não há problema. David Welch fez o trabalho pesado, verifique seu gitub . Basicamente, você pode pegar os arquivos de inicialização padrão e substituir o kernel.img pelo arquivo que deseja executar. Para evitar a 'dança do cartão SD', você pode executar um gerenciador de inicialização que receba a imagem a ser executada em uma linha serial. Eu adicionei uma reinicialização automática, para que você possa executar uma nova imagem 'hands-off'. Se você quiser seguir esse caminho, tenho mais algumas informações.

Execute seu próprio aplicativo bare-metal e use a tela e o cartão SD : isso é um problema. Todas as informações estão disponíveis nas fontes do Linux, e há pessoas trabalhando nisso (verifique o DexOs ?), Então suponho que daqui a meio ano ou mais, essas informações serão de conhecimento comum. Mas, por enquanto, eu diria que isso provavelmente é muito trabalho.

Wouter van Ooijen
fonte
Gostaria de saber como a CPU pode carregar o kernel do cartão SD sem os drivers apropriados para o cartão SD e o sistema de arquivos?
bytecode77
11
Os arquivos básicos que você precisa (e pode ser baixado do site RaPi, sozinho ou como parte de uma distribuição Linux) incluem um arquivo de inicialização para a GPU. Presumivelmente, a GPU possui um bootROM interno que permite ler o SD, carregar seu código, carregar o kernel.img e ativar a CPU do ARM.
Wouter van Ooijen
@DevilsChild - muitas CPUs possuem bootloaders básicos integrados, a parte da TI Davinci com a qual estou trabalhando tem um "ROM bootloader" que pode funcionar em série ou no cartão SD. Os cartões SD usam uma interface SPI básica.
John
5

É sempre possível, mas você precisará escrever seus próprios drivers para a interface HDMI e SD e, possivelmente, um sistema de arquivos para o último.

stevenvh
fonte
11
Na verdade, seria extremamente complicado, pois é a GPU que inicia primeiro e depois precisa carregar alguns blobs binários da Broadcom para iniciar a CPU. Além disso, se bem me lembro, os drivers e o firmware da GPU também são de código fechado.
precisa saber é o seguinte
Existem drivers disponíveis que podem ser incluídos para que funcionem? Qualquer ideia?
precisa
@Devils Child Não sei ao certo como seria fácil ou como está documentado tudo. Acho que você pode usar o carregador de inicialização existente para carregar sua própria imagem do sistema operacional e iniciar a CPU, mas o problema que Stevenvh escreveu na resposta mostra: Você precisará escrever drivers e a maior parte da documentação para eles não é ' t disponível.
precisa saber é o seguinte
@DevilsChild - os drivers existentes provavelmente serão gravados para um sistema operacional específico e, se você quiser integrá-los ao seu próprio software, precisará de algumas de suas funcionalidades. No final, você estará escrevendo uma cópia (limitada) do sistema operacional. Além disso, o AndrejaKo indica que será muito difícil, e o firmware de código fechado não facilita as coisas. Por que você não quer um sistema operacional?
Stevenvh 07/07/2012
11
@DevilsChild a diferença importante entre um computador de placa única e uma VM é que você pode colocar a placa em outro lugar que não seja o local físico da máquina que hospeda a VM; também tende a ter melhores E / S do mundo real. Porém, as VMs e emuladores ou simuladores mais especializados geralmente têm um papel importante, como deixar a equipe de software começar a trabalhar antes que o hardware exista, ou evitar que eles briguem pela única placa protótipo que foi retrabalhada manualmente para ser funcional ou em execução testes de regressão sem ocupar a coleção de dispositivos físicos ...
Chris Stratton
3

O que todos disseram, mas o caminho MAIS FÁCIL é executar uma distribuição Linux que faça o que você quer e seja o mais minimalista possível e, em seguida, retire o que você não quiser.

Em breve, ele deixará de ser Linux e se tornará um carregador de inicialização com suporte a SD e HDMI. Isso é essencialmente indistinguível do que você está pedindo em todos os aspectos, exceto
- ele foi extraído de uma distribuição Linux (mas não é mais Linux) e
- você não fez isso sozinho.

A menos que seja totalmente de sua inteira importância, isso parece uma abordagem muito lógica.

Russell McMahon
fonte
0

Se você deseja programar "Raspberry Pi como Arduino", consulte a fiaçãoPi. Confira meu artigo em http://www.jating.in/efyarticle/EFYArticle.pdf .

1) Eu fiz com que parecesse e funcionasse como o Arduino, usando um único cabo para fazer a conversão de USB para serial e fornecer energia à placa também. Portanto, apenas um cabo USB é suficiente, assim como o Arduino.

2) Criei um pequeno utilitário que, quando executado, carrega a fiação do código Pi na linha serial (na verdade, qualquer arquivo de texto :-)), compila e executa.,

Se você quiser, pode executá-lo em todas as inicializações, modificando o arquivo .bashrc; assim, toda vez que for inicializado, estará aguardando um novo arquivo. Não forneci nenhum link do código do utilitário, mas você pode encontrá-lo em http://www.jating.in/efyarticle/

Jatin Gandhi
fonte