elizeu escreveu:andre_teprom escreveu:elizeu escreveu:Agora realmente não entendi mesmo.. eu disse que preciso usar a serial padrão ( apenas uma serial). Mas esta esta sendo usada pelo terminal serial, eu gostaria de desabilitar esta porta para que eu possa usar com meu programa de comunicação.
Entendi, você não quer desabilitar os dispositivos seriais, mas apenas impedir que durante a inicialização sejam abertos por outro processo. Nesse caso, não bastaria você apagar os arquivos ttyS0.conf e tty1.conf na pasta /etc/init/ ? Não sei se seria necessário mais alguma outra etapa, mas testa aí.
+++
Muito grato por estar tentando ajudar .
Caros Amigos .. Finalmente consegui resolver o problema ..para desativar o uso da serial (uart0) tem que editar arquivo script.bin
no meu caso:
o comando
mount /dev/nanda /mnt ( porque estou usando a NAND)decompilar o arquivo script.bin para script.fex
bin2fex script.bin script.fex
editar o aquivo desabilitando o debug
ai ja aproveitei tambem e habilitei a ttyS2
Feito isto recompilar o script.fex para script.bin
fex2bin script.fex script.bindei um boot e pronto.
vejam o resultado do dmesg antes e depois.
Obs.: o
fex2bin e bin2fex tem que baixar o codigo e compilar.Antes de altaera o arquivo .fex
linaro@cubieboard:/mnt$ sudo dmesg |grep tty
[ 0.000000] Kernel command line: console=ttyS0,115200 console=tty1 root=/dev/nandc loglevel=5 rootwait
[ 0.000000] console [tty1] enabled
[ 0.658682] sunxi-uart.0: ttyS0 at MMIO 0x1c28000 (irq = 1) is a U6_16550A
[ 0.665868] console [ttyS0] enabled
[ 0.696480] sunxi-uart.2: ttyS1 at MMIO 0x1c28800 (irq = 3) is a U6_16550A
[ 27.616594] init: tty1 main process (470) killed by TERM signal
linaro@cubieboard:/mnt$ sudo reboot
depois de alterado o arquivo .fex
linaro@cubieboard:~$ sudo dmesg | grep tty
[ 0.000000] Kernel command line: console=ttyS0,115200 console=tty1 root=/dev/nandc loglevel=5 rootwait
[ 0.000000] console [tty1] enabled
[ 0.658722] sunxi-uart.0: ttyS0 at MMIO 0x1c28000 (irq = 1) is a U6_16550A
[ 0.665913] console [ttyS0] enabled
[ 0.696540] sunxi-uart.2: ttyS1 at MMIO 0x1c28800 (irq = 3) is a U6_16550A
[ 0.727130] sunxi-uart.3: ttyS2 at MMIO 0x1c28c00 (irq = 4) is a U6_16550A
[ 11.128606] init: tty1 main process (456) killed by TERM signal
[uart_para3]
uart_used = 1
uart_port = 3
uart_type = 2
uart_tx = port:PG06<4><1><default><default> Pino 13 (que fica entre o RJ 45 e a saida USB
uart_rx = port:PG07<4><1><default><default> Pino 14
para a comuncação estou usando em testes este codigo
- Código: Selecionar todos
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
int main(int argc,char** argv)
{
struct termios tio;
struct termios stdio;
struct termios old_stdio;
int tty_fd;
unsigned char c='D';
tcgetattr(STDOUT_FILENO,&old_stdio);
printf("Please start with %s /dev/ttyS1 (for example)\n",argv[0]);
memset(&stdio,0,sizeof(stdio));
stdio.c_iflag=0;
stdio.c_oflag=0;
stdio.c_cflag=0;
stdio.c_lflag=0;
stdio.c_cc[VMIN]=1;
stdio.c_cc[VTIME]=0;
tcsetattr(STDOUT_FILENO,TCSANOW,&stdio);
tcsetattr(STDOUT_FILENO,TCSAFLUSH,&stdio);
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
memset(&tio,0,sizeof(tio));
tio.c_iflag=0;
tio.c_oflag=0;
tio.c_cflag=CS8|CREAD|CLOCAL; // 8n1
tio.c_lflag=0;
tio.c_cc[VMIN]=1;
tio.c_cc[VTIME]=5;
tty_fd=open(argv[1], O_RDWR | O_NONBLOCK);
cfsetospeed(&tio,B115200); // 115200 baud
cfsetispeed(&tio,B115200); // 115200 baud
tcsetattr(tty_fd,TCSANOW,&tio);
while (c!='q')
{
if (read(tty_fd,&c,1)>0) write(STDOUT_FILENO,&c,1);
if (read(STDIN_FILENO,&c,1)>0) write(tty_fd,&c,1);
}
close(tty_fd);
tcsetattr(STDOUT_FILENO,TCSANOW,&old_stdio);
return EXIT_SUCCESS;
}