Hi,
have anybody an idea? I want set the UART Baudrate to 1.25MB with ioctl.
But the Flag "ASYNC_SPD_CUST", don't reach the kernel. On the other hand
the return of the Kernel, reading the "struct serial" don’t reach the
User space.
I have seen with printk()in Module serial_core.c, that baud_base in
struct is set from kernel to 2,500,000Bd. But don’t see it in user space
in my application. Is there the possibility that "copy_to_user" doesn’t
work in "static int uart_get_info" in "serial_core.c".
Here are the Application-Code snipped. Perhaps there is something wrong?
fd=open_port();
struct termios newtio;
struct serial_struct new_serdrvinfo;
// Set baudrate to 38400:
cfsetispeed(&newtio, B38400);
cfsetospeed(&newtio, B38400);
tcsetattr(fd, TCSANOW, &newtio );
// Change serial driver settings:
ioctl(fd, TIOCGSERIAL, &new_serdrvinfo);
// custom Baudrate=9600
// set custom divisor (2,500,000Mhz/9600Bd = 260;
new_serdrvinfo.custom_divisor = 260;
new_serdrvinfo.flags |= ASYNC_SPD_CUST;
ioctl(fd, TIOCSSERIAL, &new_serdrvinfo);
close(fd);
printf("custom_divisor = %d \n", new_serdrvinfo.custom_divisor);
printf("baud_base = %d \n", new_serdrvinfo.baud_base);
I'm running Linux 2.6.23.atmel.4, Avr32AP7000, the Hardware is like
STK1000.
Know some bode the problem und can help?
Many Thanks
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.