É possível executar software em tempo real?

60

Eu sei que ele roda o Linux e há patches em tempo real disponíveis para o Linux. Esses patches funcionariam?

Alguém já tentou outro sistema operacional em tempo real no Raspberry Pi?

A idéia é usar o conselho para trabalhos de regulamentação e controle que são críticos em termos de tempo.

Lars Pötter
fonte
2
Eu acho que a única razão única que vem à mente por que você não poderia ser se a solução de GPU fechada atrapalhasse. Desde que você decida simplesmente ignorar a GPU enquanto estiver em suas tarefas em tempo real, acho que as extensões em tempo real podem ser feitas para funcionar.
22630 Chris Stratton
7
Todo o sistema raspberry pi não está aberto para você modificar; a questão seria se a parte que não está (a GPU) estaria disposta a ficar fora do caminho enquanto você estiver executando suas tarefas em tempo real, ou se isso inevitavelmente exigirá ciclos de barramento para acessar ram ou até "atenção" "do núcleo do ARM de uma maneira que frustraria as metas de tempo difícil.
Chris Stratton
4
Aparentemente, o RISCOS é bastante adequado para determinadas aplicações em tempo real e sua porta Raspberry Pi está indo bem. * 8 ')
Mark Booth
4
O RISCOS não é um sistema operacional em tempo real (de acordo com o seu link da Wikipedia), então como isso poderia ajudar?
Lars Pötter
4
O patch CONFIG_PREEMPT_RT foi demonstrado em vários processadores ARM executando o Linux. Pode haver alguns problemas de latência, mas eles devem ser mensuráveis ​​na ordem de microssegundos.
Breakthrough

Respostas:

16

Talvez você esteja interessado em executar o Xenomai no RaspberryPi. Aqui você pode encontrar um tutorial sobre como fazer isso. Em poucas palavras, o Xenomai é um projeto que criou o kernel Linux personalizado (eles fornecem patches que devem ser aplicados às fontes do kernel), permitindo que ele execute outro kernel (núcleo Xenomai) que é em tempo real. Isso possibilita a execução de aplicativos Xenomai em uma ampla variedade de hardwares, sem a necessidade de escrever drivers para eles (já que o Linux está trabalhando em uma ampla variedade de hardwares). Isso permite gravar aplicativos de espaço de usuário RT usando algumas APIs de RT diferentes disponíveis.

Krzysztof Adamski
fonte
11
Qual é a frequência máxima que posso obter com esta ferramenta? Estou interessado em controlar um motor DC a uma taxa de arredondamento 1 kHz
Nicolás Arias
19

No kernel do Linux, a ativação PREEMPT_RTfornecerá latências limitadas e APIs em tempo real. Além de configurar PREEMPT_RT, as políticas SCHED_FIFOe SCHED_RRtambém precisam ser selecionadas. E os aplicativos precisam definir parâmetros em tempo real chamando APIs apropriadas ou usando utilitários apropriados.

De acordo com um treinamento de elétrons livres: Realtime no Embedded Linux , PREEMPT_RT foi um projeto que agrega recursos em tempo real ao kernel. Ele foi totalmente dobrado no fluxo do kernel 2.6.33 e 3.0. Veja o documento, você encontrará tudo.

Basicamente, existem duas abordagens para trazer recursos em tempo real ao kernel do Linux:

  • Modifique dentro do kernel, que é o PREEMPT_RTprojeto.
  • Correm lado a lado o tempo real parte com um kernel normal e abaixo do kernel normal, houve três gerações: RTLinux, RTAI, e Xenomai. ( Aedoscomo Aviomencionado abaixo?)

Editar:

minghua
fonte
2
Bem-vindo ao Raspberry Pi, boa resposta! O RT PREEMPT patchby Ingo Molnar, usado junto com o suporte High Resolution Timers(HRT) , permite que o kernel atinja recursos em tempo real . Atualmente, seu suporte alcança 3.4.11 kernels , e as "boas notícias" são que o patch "está encolhendo", então parece que a maior parte está sendo incluída nas fontes principais do kernel. Você pode encontrar um excelente tutorial sobre como aplicá-lo e usá-lo aqui .
Avio
11
E não se esqueça de citar Adeos entre as alternativas para fornecer suporte rígido em tempo real no Linux.
Avio
2
Devo mencionar que fazer o PREEMPT_RT trabalhar com o kernel do Raspberry Pi não é um assunto simples, basta aplicar o patch produz um kernel que não funciona. Além disso, existem muitos drivers novos no kernel do Raspberry Pi, e esses drivers não foram testados com PREEMPT_RT, nem foram eliminados de longos períodos de espera de bloqueio. Isso é muito um trabalho em andamento, é isso.
Nakedible 29/09/12
2
Alguma atualização sobre este? Os drivers agora são estáveis ​​o suficiente para usar esse patch do kernel? Eu adoraria um tutorial de trabalho para pessoas que ainda não compilaram um kernel.
fabb
@fabb: Mesmo depois de muitos anos, ainda haverá drivers que apresentam falhas em relação ao requisito de RT. Você só descobrirá executando-o. A propósito, recentemente, vejo algumas falhas na rede, uma vez que aumentamos as prioridades de alguns aplicativos de espaço do usuário, o que é inesperado. Embora todos esses tipos de situações sejam altamente específicos de configuração e aplicativo.
Minghua
6

O Wyolum mas o aLaMode (eu o chamo Almond Pi) para caber no topo do Pi de maneira empilhável. Ele possui um relógio em tempo real, usa um aTiny 328, alimenta o GPIO Real UART / power e é lavável de várias maneiras. É ótimo porque o Pi pode fazer o que você quiser, servidor da Web / banco de dados, enquanto o Arduino é executado em tempo real.

insira a descrição da imagem aqui

Piotr Kula
fonte
11
Pode parecer um pouco impraticável ter 2 microcontroladores funcionando, mas por outro lado, isso garante operação em tempo real se as outras abordagens não forem rápidas o suficiente.
Fabb
11
Alguma dica de como o RPi se comunicaria corretamente com o outro µC sem diminuir a velocidade do loop de controle?
Fabb
11
Sim, mas o µC teria que pesquisar o UART, eu acho, para não permitir que as interrupções do UART adiem a interrupção do timer do loop de controle. Eu pesquisaria o UART no início do loop de controle e garantiria que não lesse muitos bytes para que não demorasse muito? Ou os buffers UART podem transbordar com muita facilidade dessa maneira? Ou a frequência do loop de controle seria muito mais alta que a velocidade UART que ler um byte por loop, se disponível, seria mais do que suficiente?
Fabb
11
Boa sugestão. BTW Raspberry Pi Alamode já é um trocadilho. O modo Ala é quando você coloca sorvete na torta.
Dan
11
Realmente ? Ele Ele. Eu me perguntava o que aquilo significava. Faz sentido agora :)
Piotr Kula
2

A melhor solução que eu já vi para isso é o X10i - Painel de Controle em Tempo Real para Raspberry Pi da Heber.

O X10i é um controlador universal, poderoso e seguro em tempo real que permite o controle de várias entradas / saídas, via USB, de qualquer sistema de PC. Agora, Heber oferece suporte em muitas linguagens de programação para tornar ainda mais fácil para programadores, inventores e desenvolvedores a conexão com o mundo externo a partir de seu PC.

O link acima fornece uma documentação excelente e abrangente e eles tentam manter os drivers atualizados com a versão mais recente do Debian para Pi.

Jivings
fonte
Então você precisa de um conector de fita do Pi para isso? Não é possível encontrar uma foto de aluguel, mas parece muito volumosa. Ele tem muitos exemplos, o que é bom, suponho. +1
Piotr Kula
Não posso dizer que o usei, mas espero que sim, embora pareça me lembrar do cara usando uma interface USB na demo. É bastante volumoso, embora sim.
Jivings
1

Aqui está um artigo (francês traduzido pelo google translate) sobre o Raspberry Pi em execução com o Xenomai .

Pierre-Jean Coudert
fonte
5
Olá. Normalmente, desencorajamos respostas que são simplesmente links, caso a página vinculada se mova. Você poderia resumir as informações nessa página na sua resposta? Você pode incluir o link como referência. Obrigado!
Jivings 26/10/12
1

RODOS é mais uma opção. É um projeto de código aberto desenvolvido pelo Centro Aeroespacial Alemão e pela equipe e estudantes da Universidade do Prof. Montenegro.

Está usando C ++, é completamente escrito da maneira orientada a objeto e suporta ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

Atualmente, ele é usado nas máquinas satélite TET e LoTTo, se eu não entendi errado.

É claro que eu preferiria executá-lo acima do Linux (o que é possível) para ter o melhor dos dois mundos - mas as questões em TEMPO REAL permanecem, porque não tenho certeza se é possível que o Linux possa fornecer a API correta.

Para obter o RODOS, é necessário escrever uma mensagem ao Prof. Sergio Montenegro ou ao DLR (Centro Aeroespacial Alemão).

Radagast
fonte
1

além do linux, existem sistemas operacionais em tempo real. bastante popular entre os de código aberto é o ChibiOS / RT:

é um RTOS (sistema operacional em tempo real) completo, portátil, de código aberto, compacto e extremamente rápido

uma breve introdução está em http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction . sendo diferente do Linux, você também pode gostar das leituras de

Bem, existem algumas opções de design que devem ser explicadas e contribuem para tornar o ChibiOS / RT um design peculiar. Nada realmente novo em si, mas o todo é interessante.

ou não. se você gosta - experimentar o pi pode valer a experiência em https://github.com/steve-bate/ChibiOS-RPi :

Garfo ChibiOS para experimentação PI de framboesa.

o autor adiciona um bom guia em

http://www.stevebate.net/chibios-rpi/GettingStarted.html

pessoalmente, quando se trata de rtos, para mim o linux é como transportar equipamentos entre alpinos para as necessidades comuns do país. você pode simplesmente não precisar. até um pi pode ser demais. confira http://forum.arduino.cc/index.php?topic=144715.0 para ainda menos peso :)

nervosismo
fonte