¿Cómo Embedded Processor gestiona simultáneamente varias interfaces como ZigBee, RF, Serial y USB junto con WLAN en el sondeo y la gestión de datos?

Los procesadores integrados generalmente tienen algún sistema operativo (a veces RTOS) ejecutándose en él. Los sistemas operativos proporcionan una mayor abstracción de las cosas. Consideraremos un procesador integrado en un automóvil de alta tecnología con comunicaciones inalámbricas (Zigbee y WLAN), comunicación serial USB, etc. presente en él.

En muchos procesadores integrados, se ejecutará un sistema operativo como Linux. El sistema operativo crearía diferentes procesos, hilos para el procesamiento exitoso, la gestión de datos.

Zigbee, WLAN se comunicaría a través de un controlador de dispositivo específico para cada hardware (por ejemplo: xbee versión 2 tiene su controlador para Linux y esto debería ejecutarse en el sistema operativo) la pila de software de red general presente en el sistema operativo. Si desea enviar una canción a través del zigbee hw a otro zigbee, ambos deben establecer primero la comunicación. Y luego, a través de un protocolo ftp o tftp que se ejecuta en ambos procesadores integrados, se puede enviar el archivo.

Las interfaces serían administradas por el proceso io que se ejecuta en su sistema operativo. El sistema operativo que se ejecuta en su procesador host se comunicaría a través de los buses de comunicación serie como USB, SPI o PCIe a su hardware de radio: Zigbee, WLAB. Los hardwares de radio carecen de inteligencia. Simplemente puede realizar tareas según las instrucciones del procesador host. Por lo tanto, los paquetes que enviará zigbee o wlan se prepararán a nivel del sistema operativo hasta la capa 3 (aquí se agregarán encabezados IP) y se entregarán al controlador específico para cada hardware. Un controlador cfgdot11 agregaría los encabezados 802.11 y entregaría este paquete al firmware que se ejecuta en su conjunto de chips wlan ofrecido por Qualcomm o Broadcom o Marvell. Lo contrario ocurre para la recepción de un paquete.

¡La programación de sockets es necesaria para manejar diferentes aplicaciones! Supongo que el envío del archivo de música a través de un servidor tftp se enviaría al número de socket de destino como 69.

Espero haber respondido / aclarado, al menos parcialmente, con respecto a esta pregunta. La explicación de todo esto es difícil para mí escribirla como una sola respuesta.

Hay una distinción importante que hacer de su pregunta: RF, serie y USB son interfaces, pero Zigbee no es una interfaz. Zigbee es una pila de red que se ubicará sobre una interfaz RF específica. Lo mismo con WLAN, este es un concepto de red inalámbrica que se ubicará sobre una interfaz RF.

Que fuera del camino, la gran mayoría de los procesadores integrados no manejan estas interfaces simultáneamente. La mayoría de los procesadores integrados son dispositivos de un solo núcleo que procesan una sola tarea / subproceso a la vez. Estos dispositivos pueden funcionar lo suficientemente rápido (decenas a cientos de MHz de velocidad de procesamiento) que pueden dividir el tiempo de utilización del procesador entre cada una de las interfaces que está utilizando en su aplicación y crear la apariencia de operación simultánea **.

En un nivel muy bajo, la mayoría de los últimos procesadores integrados incluyen soporte de hardware para tareas de interfaz simples. Para algo como recibir múltiples bytes de datos, el procesador no es necesario para la porción de recepción real de la operación: el hardware de la interfaz (por ejemplo, la radio o el puerto serie) moverá automáticamente los datos a un búfer y notificará a la CPU con una interrupción o marca de que hay datos que deben procesarse. Este procesamiento real de los datos es la operación que se divide en tiempo, ya que esta es la parte que requiere tiempo de CPU para determinar cómo deben manejarse los datos.

En el caso de Zigbee, un ejemplo de esto sería si tiene un nodo de enrutamiento que recibe múltiples paquetes. Al recibir el primer paquete (es decir, cuando el periférico de radio del procesador envía una interrupción a la CPU que indica que hay un paquete para procesar), la pila del protocolo Zigbee analizará el paquete y tomará una decisión sobre cómo manejar estos datos En Zigbee esto podría significar:

> determinar si el paquete es unidifusión, multidifusión o difusión. Cada uno se maneja de manera diferente.

> Si es unidifusión con una dirección de destino específica, ¿es el paquete para este nodo o necesita ser reenviado (enrutado) a través de la red?

> Si el paquete es para este nodo, ¿qué está indicando? ¿hay algo más que hacer? Si es así, entonces haz eso.

Mientras se procesa ese primer paquete, la interfaz de RF puede recibir otro paquete, enviar una interrupción a la CPU y poner el nuevo paquete en una cola para procesarlo más tarde. Este nuevo paquete no se procesa al mismo tiempo que el paquete anterior.

Aquí es donde puede comenzar a ver problemas de rendimiento con el procesador incorporado. Si hay un gran número de paquetes enviados en la red, el tiempo que tarda el dispositivo en responder a un evento puede ser bastante largo (varios segundos). Si el dispositivo no tiene una gran cantidad de memoria, se puede llenar la cola de paquetes en espera y se perderán todos los mensajes nuevos.

Aquí es donde entrará la experiencia de un ingeniero de firmware. El diseño de un sistema integrado para superar estos desafíos es realmente el problema central de diseño que todos los diseñadores de sistemas integrados deben superar. Hay muchas formas de abordar esto, y la correcta dependerá de su aplicación específica. En última instancia, para responder a su pregunta, si está creando un sistema embebido, esto depende de usted.

** Hay algunas excepciones en las que este no es el caso, y algunos procesos de bajo nivel pueden ser acelerados por hardware para que sucedan en realidad simultáneamente, sin embargo, esto depende en gran medida de la arquitectura del procesador incorporado que se esté utilizando. Un ejemplo de esto sería el uso de DMA. Si tiene un flujo de datos asíncrono en un puerto serie, la mayoría de los procesadores ARM le permitirán usar la señal de interrupción del puerto serie para activar automáticamente una transferencia DMA (de los datos entrantes recibidos en el puerto serie que se mueven a la RAM). Mientras el procesador no esté accediendo a la RAM al mismo tiempo (por ejemplo, ejecución de código directamente desde caché y flash), estos eventos sucederán simultáneamente.

Depende del chip, algunos tienen controladores dedicados para los puertos, pero la multitarea en un solo núcleo utiliza un sistema donde cambian las tareas extremadamente rápido.