Firefly开源社区

标题: Firefly Prime 串口的波特率Uart0 只能是9600,如何修改 [打印本页]

作者: hzl    时间: 2016-5-27 10:20
标题: Firefly Prime 串口的波特率Uart0 只能是9600,如何修改
参考网站
http://wiki.t-firefly.com/index.php/FirePrime/UART
该网站对串口的配置进行了详细的说明。
FirePrime 开发板内置 3 路 UART,分别为 uart0,uart1,uart2。Uart0对应的是ttyS0。
然后在android中init.connectivity.rc文件修改权限,


然后编译,生成img文件,烧写到firefly prime开发板中。
通过串口线与PC机相连,在PC端打开secureCRT软件,然后编写apk对串口ttyS0进行写操作。
目前遇到的问题是:
      1、apk代码打开ttyS0的波特率是115200, secureCRT设置波特率为11520,不能接收到正确的数据。
      2、apk代码打开ttyS0的波特率是9600,secureCRT设置波特率为9600,能够接收到正确的数据。
     由于目前应用需要速度考虑原因,需要将波特率改为 115200,因此想问下这个如何修改呢?
额外:
      按照http://wiki.t-firefly.com/index.php/FirePrime/UART网站设置ttyS1,能够以波特率115200正常工作。




作者: 54zw    时间: 2016-5-27 18:04
本帖最后由 54zw 于 2016-5-27 18:39 编辑

修改源代码kernel/drivers/tty/serial/serial_core.c里这个函数int uart_register_driver(struct uart_driver *drv)里
这个地方改为:normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
修改为:normal->init_termios.c_cflag = B115200 | CS8 | CREAD | HUPCL | CLOCAL;

如果是APK的话其实可以在APK里重新设置波特率,上面这样改只是将默认的9600改为11520


作者: hzl    时间: 2016-5-30 15:28
谢谢54zw朋友的回答,这个方法也是可行。
我自己找到另外一种方法,是利用busybox 里面的stty函数,在init.rc

然后重新编译源代码,烧写到设备中,这样开机串口的波特率也可以设置为115200,希望对其他人有帮助,再次谢谢54zw朋友的解答。





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1