pasos para installing instalar desde linux embedded binary terminal

linux - para - Datos binarios sobre terminal serial



pasos para instalar arduino en ubuntu (6)

¿No puedes simplemente configurar la terminal en bruto?

Eche un vistazo a este tutorial .

Mi única forma de comunicación con mi dispositivo integrado es un puerto serie. Por defecto, Linux incorporado usa este puerto como terminal. ¿Cómo desactivo este terminal y uso el enlace serie para transferir datos binarios? Escuché sobre comandos como rx y tx pero no puedo encontrarlos.

Creo que puedo leer () desde y escribir () cosas en / dev / tty, pero quiero asegurarme de que no haya ningún mensaje de error o cualquier otro problema con mi flujo de datos.


Para desactivar la consola Linux, debe cambiar la línea de comandos de Linux creada por el gestor de arranque desde: console = / dev / ttyS? a: consola = nulo


Puede ejecutar en el terminal un comando que transferirá los datos a través de un protocolo de nivel de aplicación. Los comandos rx y tx a los que se refiere implementan el protocolo de transferencia de archivos XMODEM . Podría ser una solución, si los datos binarios que desea transferir consisten en archivos, las demandas de rendimiento son bajas y no le importa la carga administrativa de ejecutar los comandos. Alternativamente, es posible que desee multiplexar el puerto serie para manejar tanto la transferencia de datos como el terminal. Deshabilite el comando del controlador del terminal serie (getty) y ejecute el protocolo PPP sobre la línea serie para establecer una conexión IP con su dispositivo. A continuación, puede iniciar sesión en el dispositivo a través de ssh o telnet y transferir sus datos a través de un socket IP.


Puede usar una aplicación como xmodem para transferir archivos a través de cualquier terminal. Es el puerto serie que hablas desde un terminal, o también es la consola del kernel.

Si tu kernel no es ruidoso, entonces puedes usar tu conexión actual para hacer una transferencia similar a xmodem. En el lado del host, puede usar kermit, que es bueno AND scriptable.

Si desea hacer que su puerto serie esté en bruto, y tiene el descriptor de archivo ttyfd abierto, aquí hay una forma de hacerlo:

struct termios tty, orig_tty; ... if(tcgetattr(ttyfd, &tty) < 0) { // error checking } // backup tty, make it raw and apply changes orig_tty = tty; cfmakeraw(&tty); if(tcsetattr(ttyfd, TCSAFLUSH, &tty) < 0) { // error checking } ... //end of program or error path : tcsetattr(ttyfd, TCSAFLUSH, &orig_tty)

No olvide restablecer la configuración al final de su programa si aún desea un buen terminal con buen funcionamiento.


Sí, todos sus puertos serie están en /dev/ttyxx . Tenga en cuenta que /dev/tty es un acceso directo que representa su terminal actual, no un puerto serie específico. A menudo, estos son propiedad de root y requieren que usted tenga privilegios o esté en el grupo adm para acceder al dispositivo directamente desde su aplicación.

Es posible que desee chown el dispositivo para que pueda acceder a él. No estoy seguro de cuál es la consecuencia de cambiar la propiedad del dispositivo; IIRC, es fácil de hacer y funciona muy bien. La alternativa es usar setuid para elevar su programa a un estado privilegiado.

Hay un programa llamado getty que permite a los usuarios iniciar sesión desde un puerto serie. Tu inittab iniciará getty en puertos seriales para que las personas puedan iniciar sesión.

Desea deshabilitar getty . En algunos casos, hay un administrador de puertos que ayuda a hacer esto.

En algunos casos, puede cambiar su inittab para usar mgetty , que es una versión más inteligente y fácil de controlar de getty .


Como han implicado las otras notas, hay varias cosas para verificar, recopiladas aquí:

  1. Asegúrese de que el kernel de Linux no esté utilizando el puerto serie. Asegúrese de que no haya ninguna opción console = en el comando bootload en su archivo grub. Por lo general, no está allí por defecto.
  2. Asegúrese de que no se ejecuta getty en el puerto serie. Busque en / etc / inittab una entrada para / dev / ttyS0 (puerto serie A) y coméntelo si está allí.
  3. Asegúrese de que / dev / ttyS0 sea legible y escribible por su proceso. Puede crear un usuario específico bajo el cual se ejecuta el programa de control, y que posee el / dev / ttyS0, luego chmod 700 / dev / ttyS0. Esto ayudará a asegurar que algún otro usuario / programa tampoco intente usar el puerto serie.
  4. Use open () en ttyS0 para obtener un fd, luego use la familia de rutinas tcsetattr para establecer la velocidad y la disciplina de la línea.

Es probable que los programas de terminal no le sean útiles a menos que pueda ejecutar el mismo programa en el dispositivo incorporado para administrar el otro extremo de la conexión.