hm2_eth - Controlador HAL de LinuxCNC para las tarjetas Mesa Electronics Ethernet Anything IO, con firmware HostMot2.
loadrt hm2_eth [config="str[,str...]"] [board_ip=ip[,ip...]] [board_mac=mac[,mac...]] |
config [predeterminado: ""]
Cadenas de configuración de HostMot2, descritas en la página de manual de hostmot2 (9).
board_ip [predeterminado: ""]
La dirección IP de la (s) tarjeta (s), separadas por comas. En una tarjeta nueva, la dirección es 192.168.1.121.
hm2_eth es un controlador de dispositivo que interconecta tarjetas Mesa’s ethernet based Anything I/O (con el firmware HostMot2) y LinuxCNC HAL
Las tarjetas compatibles son: 7i76E, 7I80DB, 7I80HD, 7i92, 7i93, 7i96.
La tarjeta debe tener su hardware cargado en la tarjeta mediante el programa mesaflash (1).
hm2_eth solo está disponible cuando linuxcnc está configurado con "uspace" en tiempo real.
hm2_eth debe usarse en una interfaz de red dedicada, con solo un cable entre la PC y la tarjeta. Las interfaces de red inalámbricas y USB no son adecuadas.
Estas instrucciones asumen que su interfaz de red dedicada es "eth1", 192.168.1/24 es una red privada no utilizada, que la tarjeta hostmot2 está utilizando la dirección predeterminada de 192.168.1.121, que está utilizando Debian 7 o similar, y que no usa iptables. Si alguno de estos es falso, usted necesita modificar las instrucciones en consecuencia. Después de seguir todas las instrucciones, reinicie para que los cambios surtan efecto.
Es particularmente importante verificar que la red 192.168.1/24 no sea la red privada utilizada por su enrutador de Internet, porque este es un valor de uso común. Si usa otra red, también necesitará reconfigurar la tarjeta hostmot2 para usar una dirección IP en esa red utilizando la utilidad mesaflash (1) y cambiar la configuración de puentes. Por lo general, elegirá una de las redes en el espacio privado de direcciones IPv4. Una alternativa común es la dirección PC 10.10.10.1, y la dirección hostmot2 10.10.10.10.
El uso de la interfaz Ethernet dedicada mientras linuxcnc se está ejecutando puede causar violación de garantÃas en tiempo real. hm2_eth mitigará automáticamente la mayorÃa de causas accidentales de interferencia.
Configurar
red con dirección estática
Agregue estas lÃneas al archivo
/etc/network/interfaces para configurar eth1 con una
dirección estática:
auto eth1
iface eth1 inet static
address 192.168.1.1
hardware-irq-coalesce-rx-usecs 0
Si bien Ethernet es bastante resistente al ruido eléctrico, muchos sistemas tienen una recepción de paquetes 100% perfecta. El controlador hm2_eth tiene una capacidad limitada para manejar paquetes perdidos. La pérdida de paquetes se detecta transmitiendo un recuento de paquetes esperados de lectura o escritura con cada solicitud y verificando el valor con cada respuesta de lectura. Cuando se detecta un paquete perdido, el pin packet-error se activa en ese ciclo, se aumenta el pin packet-error-level , y si alcanza un umbral, entonces se señala un error de E/S de bajo nivel permanente.
Sin embargo, no todas las funciones especiales de hm2 saben cómo recuperarse adecuadamente de la pérdida de paquetes. Por ejemplo, la función especial del encoder no gestiona correctamente la función de Ãndice cuando se pierden paquetes. El autor cree que esto puede conducir a fallas raras en home-to-index, lo que puede tener graves consecuencias.
Por otro lado, los sistemas pid-stepper se ejecutarán correctamente durante perÃodos prolongados de tiempo con pérdida de paquetes del orden de .01%, siempre que el error de siguimiento se aumentó lo suficiente como para tener retroalimentación de posición obsoleta no desencadena error de seguimiento. Alterando la configuración HAL para que durante la pérdida transitoria de paquetes el valor de retroalimentación de movimiento y pid es igual al valor del comando, en lugar del valor de retroalimentación obsoleto, parece mejorar la sintonÃa. Esto puede ser logrado con un componente mux2 (9) para cada señal de retroalimentación, utilizando packet-error como entrada sel del mux2.
Además
de los pines documentados en hostmot2(9),
hm2_eth(9) crea pines adicionales:
(bit, out)
hm2_<BoardType>.<BoardNum>.packet-error
Este pin es VERDADERO cuando el ciclo más reciente detectó un error de lectura o escritura, y FALSO en otros momentos.
(s32, out) hm2_<BoardType>.<BoardNum>.packet-error-level
Este pin muestra el nivel de error actual, con números más altos que indican un mayor número de errores detectados recientemente. El nivel de error siempre está en el rango de 0 a paquete-error-limit, inclusive.
(bit, out) hm2_<BoardType>.<BoardNum>.packet-error-exceeded
Este pin es VERDADERO cuando el nivel de error actual es igual al máximo, y FALSO en otros momentos.
Además
de los parámetros documentados en
hostmot2(9), hm2_eth(9) crea
parámetros adicionales:
(s32, rw)
hm2_<BoardType>.<BoardNum>.packet-error-decrement
La cantidad deducida de packet-error-level en un ciclo sin errores de lectura o escritura detectados, sin bajar de cero.
(s32, rw) hm2_<BoardType>.<BoardNum>.packet-error-increment
La cantidad agregada a packet-error-level en un ciclo sin deteccion de errores de lectura o escritura, sin sobrepasar packet-error-limit.
(s32, rw) hm2_<BoardType>.<BoardNum>.packet-error-limit
El nivel en el que un error de lectura o escritura detectado se trata como error permanente. Cuando se alcanza este nivel de error, el pin io-error de la tarjeta se convierte en VERDADERO y la condición debe restablecerse manualmente.
(s32, rw) hm2_<BoardType>.<BoardNum>.packet-read-timeout
El tiempo que debe transcurrir antes de que se agote el tiempo de espera de una solicitud de lectura. Si el valor es menor o igual a 0, se interpreta como el 80% del perÃodo del hilo. Si el valor es inferior a 100, se interpreta como un porcentaje del perÃodo del hilo. De lo contrario, se interpreta como un tiempo en nanosegundos. En En cualquier caso, el tiempo de espera nunca es inferior a 100 microsegundos.
Establecer este valor demasiado bajo puede causar errores de lectura espurios. Configurándolo demasiado alto puede causar errores de retraso en tiempo real.
hm2_eth usa una cadena de iptables llamada "hm2-eth-rules-output" para controlar el acceso a la interfaz de red mientras hal se está ejecutando. La cadena se crea si no existe, y se inserta un salto a ella al comienzo de la cadena OUTPUT si ya no está allÃ. Si tiene una configuración de iptables existente, puede insertar un salto directo OUTPUT a hm2-eth-rules-output en un orden apropiado para su red local
En la salida (normal), hm2_eth eliminará las reglas. Después de un CRASH, puede borrar manualmente las reglas con sudo iptables -F hm2-eth-rules-output; Las reglas también se eliminan mediante un reinicio.
"hardware-irq-coalesce-rx-usecs" disminuye el tiempo de espera para recibir un paquete en la mayorÃa de los sistemas, pero al menos en algunos NIC Marvel-chipset es dañino. Si la lÃnea no mejora el rendimiento del sistema, quÃtela. Un reinicio es necesario para que el valor se restablezca a su valor predeterminado de encendido. Esto requiere que se instale el paquete ethtool.
Algunas funciones hostmot2, como uart, están codificadas de una manera que provoca latencia cuando se usa con hm2_eth.
En la 7i92, los pines HAL para los LED se llaman CR01..CR04, pero las serigrafÃas son CR3..CR6. Dependiendo del firmware FPGA, los LED pueden inicialmente estar bajo el control del motor ethernet. Esto se puede cambiar hasta el ciclo de encendido con
elbpcom 01D914000000
Dependiendo de la versión del firmware, este controlador puede causar el error de hardware de que LED se encenderá aunque el controlador y el hardware funcionen normalmente. Según los informes, esto se solucionará en futuras actualizaciones de bitfiles de Mesa.
hostmot2(9),elbpcom(1)
GPL