¿Cuál es una buena referencia para el controlador Ethernet sin un sistema operativo?

8

Pronto trabajaré en una implementación de Ethernet para una capacidad básica (sin SO) en un procesador basado en ARM. Estoy algo familiarizado con el modelo de controlador de Ethernet en el libro de controladores de dispositivo de Linux, pero me pregunto si hay una referencia para implementar un controlador de Ethernet para un SoC ejecutado con una pila de software personalizada.

¿Hay implementaciones de referencia para procesadores de arquitectura ARM o hay alguna guía sobre cómo implementar un controlador Ethernet en un procesador ARM?

netskink
fuente
3
¿Qué tipo de SoC tienes en mente? Sospecho que muchos proporcionarán una implementación de referencia si admiten redes.
Aurora0001
1
Atmel, TI, etc. Será ARM pero no estoy seguro de qué proveedor. ¿Tienes alguna sugerencia?
netskink 01 de
Es difícil de decir sin un poco más de contexto sobre su caso de uso. Eche un vistazo al wiki de la etiqueta [hardware] para obtener orientación sobre cómo hacer una pregunta de selección de hardware , o quizás eche un vistazo a Seleccionar un microcontrolador para un proyecto de recolección de datos que funciona con batería . Sin embargo, si desea orientación, no dude en hacer otra pregunta siempre que incluya sus requisitos.
Aurora0001
66
Como regla general, es mejor explicar por qué está haciendo algo como parte de su pregunta, en lugar de hacer solo la pregunta que llegó al final de su proceso. Entonces, alguien podría sugerir un enfoque diferente (si hiciste una suposición inexacta en tu razonamiento).
Sean Houlihane
Tenga en cuenta que las soluciones de red "integradas" de clase microcontroladora no son necesariamente aún más baratas que las pequeñas "sistema operativo completo" que se ejecutan en chips de productos básicos. Ambos tienden a ser dolorosos: los pequeños sistemas para configurarse con los servicios que necesita, especialmente si hay cambios a mitad de camino del requisito original o algo que no se comporta como se anuncia, mientras que el enfoque del sistema operativo completo puede llevar mucho tiempo para lucha hasta los elementos esenciales que deseas, sin componentes o servicios no deseados restantes.
Chris Stratton

Respuestas:

3

Es un poco difícil saber qué estás buscando cuando pides metal desnudo, especialmente cuando no especificas la arquitectura ...

Para una aplicación integrada, utilizando un sistema operativo liviano (dependiendo de lo que considere un sistema operativo), busque en la fuente mbed un dispositivo similar al que le interesa (suponiendo un microcontrolador ARM Cortex-M).

La última documentación de mbed Network Sockets está aquí, aunque eso no describe las implementaciones de HAL que son específicas de los dispositivos (probablemente sean contribuidas por los fabricantes de dispositivos).

Esto puede estar lo suficientemente cerca del metal desnudo como para usarlo directamente. De lo contrario, el proveedor del dispositivo seguramente proporcionará una implementación de ejemplo de bajo nivel dentro de su propio marco.

Sean Houlihane
fuente
2
De lo contrario, el proveedor del dispositivo seguramente proporcionará una implementación de ejemplo de bajo nivel dentro de su propio marco. Con una gran cantidad de SBC fabricados en China, como los basados ​​en chips Allwinner, tienes suerte si te proporcionan un binario de Linux que funcione.
Deprimido Daniel
@DepressedDaniel: el OP parece estar preguntando sobre un SoC que planea construir en un dispositivo, en lugar de un SBC preconstruido basado en una CPU del teléfono. También está preguntando dónde buscar antes de seleccionar su proveedor ...
Sean Houlihane
1
Sean que parece un buen ejemplo de implementación para usar. Marcaré esta respuesta como la respuesta correcta para eso. Alternativamente, iba a mirar algo como freeRTOS, pero aún no he comenzado a mirar el código. También estoy interesado en una wiki, un documento en línea o un libro en este momento. Algo que pude leer antes de saltar al código. ¿Tienes una buena sugerencia para eso también?
netskink 01 de
@netskink Lo siento, la implementación del controlador no es mi área. Se agregó un enlace a la documentación del usuario, creo que ayuda.
Sean Houlihane
1
Gracias Sean Sus respuestas me ayudaron considerablemente. Lo aprecio.
netskink 02 de
4

Si está seguro de usar ARM, puede echar un vistazo a los controladores Ethernet de Keil para ARM . Es bastante prometedor.

RL-TCPnet incluye varios controladores de red Ethernet. Estos se encuentran en el directorio \ Keil \ ARM \ RL \ TCPnet \ Drivers:

  • LAN91C111.C: para el controlador Ethernet LANC SMSC111 de SMSC utilizado en la placa de evaluación Phytec phyCore LPC229x.
  • EMAC_SAM7X.C: para el controlador Ethernet EMAC en chip Atmel AT91SAM7X utilizado en la placa de evaluación Atmel AT91SAM7X-EK.
  • STR9_ENET.C: para el controlador Ethernet ENET ST STR912 en chip utilizado en la placa de evaluación Keil MCBSTR9.
  • LPC23_EMAC.c: para los controladores Ethernet EMAC LPC2368 y LPC2378 NXP (fundado por Philips) utilizados en la placa de evaluación Keil MCB2300.
  • LPC24_EMAC.c: para los controladores Ethernet EMAC LPC2468 y LPC2478 en chip NXP (fundado por Philips) utilizados en la placa de evaluación Keil MCB2400.
  • LM3S_EMAC.c: para los controladores Ethernet EMAC en chip Luminary Micro LM3S6962 y LM3S8962 utilizados en las placas de evaluación Luminary Micro EK-LM3S6965 y EK-LM3S8962.

Como puede ver, hay ejemplos de controladores de Ethernet para varias placas de evaluación que tienen diferentes chips de diferentes fabricantes. Como Atmel, NXP o ST Microelectonics.

Bence Kaulics
fuente