本帖最后由 bill 于 2017-4-27 16:40 编辑
在CubieBoard6上有uart0-uart7共7组uart口,uart2和uart3分别被蓝牙和调试串口所用,目前验证空置能用的uart口有uart0和uart4,下面会在CB6(android)平台和PC(ubuntu)平台相互传输数据来验证uart口是否能通。
第一步,先在kernel下的dts文件中把uart0和uart4口打开。- serial@b0120000 {
- clock-frequency = <48000000>;
- pinctrl-names = "default";
- pinctrl-0 = <&serial0_state_default>;
- // actions,enable-dma-rx;
- status = "okay";
- };
复制代码- serial@b0128000 {
- clock-frequency = <48000000>;
- pinctrl-names = "default";
- pinctrl-0 = <&serial4_state_default>;
- // actions,enable-dma-rx;
- status = "okay";
- };
复制代码 另外发现uart4串口定义需要修改才能使用,这个需要查看cpu的datasheet,发现在MFP_CTL3寄存器的11、 10 、9 和8位可以设置成UART4,所以在kernel下的dts文件的加上"mfp3_11_10" //UART4_RX "mfp3_9_8"//UART_TX.- serial4_state_default: serial4_default{
- serial_4{
- actions,groups = "mfp3_11_10" ,"mfp3_9_8", "uart4_dummy";
- actions,function = "uart4";
- };
- };
复制代码 第二步,编译kernel,生成dtb文件,文件目录如下
owl/out/s500_android_gb5_wxga/kernel/arch/arm/boot/dts/actduino_s500_lcd_1280x800.dtb
将该文件push到CB6的misc目录下,替换掉原有的kernel.dtb文件,重启即可生效
重启后,dts配置成功生效,用串口查看CB6 会出现/dev/ttyS0和/dev/ttyS4两个节点,并给予节点权限第三步,搭建测试环境,连接pc和CB6
在CB6安卓上安装apk(serialport apk,在网上搜索即可)
PC(ubuntu):直接在软件中心下载serial port terminal工具
根据原理图、丝印图和拓展pin定义表找到相应的UART0_TX、UART0_RX、UART4_TX和UART4_RX,原理图等硬件资料都能在论坛的“国内下载”找到。
根据下列2张图找到UART0_TX 、UART0_RX和GND,用串口线连接好PC和CB6。
在PC(ubuntu)上打开刚下载的串口工具,配置好端口(本机是ttyUSB0)和波特率(115200),并在CB6上打开串口工具apk,同样配置好端口(ttyS0 对应UART0)和波特率(115200)
UART0发送测试:
CB6上的apk界面如下,点击“send01010101”发送数据到PC(ubuntu)
PC(ubuntu)串口工具会接收数据,表示uart0口发送数据没问题,UART0_TX可用,如下图所示
UART0接收测试:
另外在PC(ubuntu下),用串口工具发送数据
点击CB6串口APK的“Console”按钮,如下图,CB6正常接收到数据,表示UART0_RX可用
同理UART4的验证也是一样,找到CB6上对应的拓展pin,和主机PC互联,其他步骤都基本一致。
另外PC是windows系统也是可以测试的,只是工具不同,其他都大同小异
|