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?


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.


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.


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.



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/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.