O que é uma boa referência para o driver Ethernet sem um sistema operacional?

8

Em breve, trabalharei na implementação de Ethernet para um recurso bare metal (sem SO) em um processador baseado em ARM. Estou um pouco familiarizado com o modelo de driver Ethernet no livro Linux Device Drivers, mas estou me perguntando se há uma referência para implementar um driver Ethernet para um SoC executado com uma pilha de software personalizada.

Existem implementações de referência para os processadores de arquitetura ARM ou alguma orientação sobre como implementar um driver Ethernet em um processador ARM?

netskink
fonte
3
Que tipo de SoC você tem em mente? Suspeito que muitos fornecerão uma implementação de referência se suportarem redes.
Aurora0001
1
Atmel, TI, etc. Será ARM, mas não tem certeza de qual fornecedor. Você tem alguma sugestão?
Netskink
É difícil dizer sem um pouco mais de contexto sobre o seu caso de uso. Dê uma olhada no wiki da tag [hardware] para obter orientações sobre como fazer uma pergunta de seleção de hardware , ou talvez dê uma olhada em Selecionando um microcontrolador para um projeto de coleta de dados operado por bateria . Se você quiser alguma orientação, sinta-se à vontade para fazer outra pergunta, desde que inclua seus requisitos!
Aurora0001
6
Como regra geral, é melhor explicar por que você está fazendo algo como parte da sua pergunta, em vez de fazer apenas a pergunta que você alcançou no final do seu processo. Alguém poderá sugerir uma abordagem diferente (se você fez uma suposição imprecisa no seu raciocínio).
Sean Houlihane
Observe que as soluções de rede "incorporadas" da classe de microcontroladores ainda não são necessariamente mais baratas que as pequenas de "sistema operacional completo" que são executadas em chips de commodity. Ambos tendem a ser dolorosos - os pequenos sistemas para serem configurados com os serviços de que você precisa, especialmente se houver alterações no curso do requisito original ou algo que não se comporte como anunciado, enquanto isso, a abordagem completa do sistema operacional pode demorar muito para ser concluída. lute com o essencial, sem componentes ou serviços indesejados.
Chris Stratton

Respostas:

3

É um pouco difícil dizer o que você procura quando solicita bare metal, principalmente quando você não especifica a arquitetura ...

Para um aplicativo incorporado, usando um sistema operacional leve (dependendo do que você considera um sistema operacional), procure na fonte mbed um dispositivo semelhante ao que você está interessado (assumindo um microcontrolador ARM Cortex-M).

A documentação mais recente dos sockets de rede mbed está aqui, embora isso não descreva as implementações HAL que são específicas para os dispositivos (elas provavelmente são contribuídas pelos fabricantes dos dispositivos).

Isso pode estar próximo o suficiente para que o bare metal seja usado diretamente. Caso contrário, o fornecedor do dispositivo quase certamente fornecerá um exemplo de implementação de baixo nível dentro de sua própria estrutura.

Sean Houlihane
fonte
2
Caso contrário, o fornecedor do dispositivo quase certamente fornecerá um exemplo de implementação de baixo nível dentro de sua própria estrutura. Com muitos SBCs fabricados na China, como os baseados nos chips Allwinner, você tem sorte se eles fornecerem um binário Linux em funcionamento.
DepressedDaniel
@DepressedDaniel - O OP parece estar perguntando sobre um SoC que ele planeja construir em um dispositivo, em vez de um SBC pré-construído com base na CPU de um telefone. Ele também está pedindo para onde olhar antes de escolher o seu fornecedor ....
Sean Houlihane
1
Sean, que parece um bom exemplo de implementação a ser usado. Vou sinalizar esta resposta como a resposta correta para isso. Como alternativa, eu estava olhando para algo como freeRTOS, mas ainda não comecei a olhar o código. Também estou interessado em um wiki, documento online ou livro neste momento. Algo que eu poderia ler antes de pular o código. Você tem uma boa sugestão para isso também?
Netskink
@netskink Desculpe, a implementação do driver não é minha área. Adicionado um link para a documentação do usuário, acho que ajuda.
Sean Houlihane
1
Obrigado Sean. Suas respostas me ajudaram consideravelmente. Eu agradeço.
Netskink
4

Se você tem certeza sobre o uso do ARM, pode dar uma olhada nos Drivers Ethernet para ARM do Keil . É bastante promissor.

O RL-TCPnet inclui vários drivers de rede Ethernet. Eles estão localizados no diretório \ Keil \ ARM \ RL \ TCPnet \ Drivers:

  • LAN91C111.C - para o SMSC LAN91C111 Ethernet Controller usado na placa de avaliação Phytec phyCore LPC229x.
  • EMAC_SAM7X.C - para o controlador Ethernet EMAC Atmel AT91SAM7X no chip usado na placa de avaliação Atmel AT91SAM7X-EK.
  • STR9_ENET.C - para o controlador Ethernet ENET ST STR912 no chip usado na placa de avaliação Keil MCBSTR9.
  • LPC23_EMAC.c - para o NXP (fundado pela Philips) Controladores Ethernet EMAC LPC2368 e LPC2378 no chip usados ​​no painel de avaliação Keil MCB2300.
  • LPC24_EMAC.c - para o NXP (fundado pela Philips) Controladores EMAC Ethernet LPC2468 e LPC2478 no chip usados ​​na placa de avaliação Keil MCB2400.
  • LM3S_EMAC.c - para os controladores EMAC Ethernet Luminary Micro LM3S6962 e LM3S8962 no chip usados ​​nas placas de avaliação Luminary Micro EK-LM3S6965 e EK-LM3S8962.

Como você pode ver, existem exemplos de drivers Ethernet para várias placas de avaliação que possuem chips diferentes de diferentes fabricantes. Como Atmel, NXP ou ST Microelectonics.

Bence Kaulics
fonte