本文皆以 uart1 为例

1.Dts 配置:
打开 uart: 在 dts 中添加:
&uart_bb {
status = “okay”;
dma-names = “!tx”, “!rx”;
pinctrl-0 = <&uart1_xfer>;
};
根据需要打开关闭 uart 的 dma 功能,只有数据量大时,才考虑使用 dma 搬运,默认不
使用 dma
dma-names = “tx”, “rx”; 使能 DMA 发送和接收
dma-names = “!tx”, “!rx”; 禁止 DMA 发送和接收
rts 与 cts 需要硬件支持,使能 rts,cts 前请确定硬件有接这两个 pin
pinctrl-0 = <&uart1_xfer, &uart1_cts, &uart1_rts>;//使能 cts,rts,
以上配置完成后,烧录 resource.img 后,板子上会出现/dev/ttyS1 节点

2 调试方法:
2.1 如何测试 uart
通常用两种方式测试: 1:与 pc 通讯
2:自收发测试
2.1.1 与 pc 通讯
通常先将开发板与 pc 通讯,通讯正常后,再与外设通讯。按以下步骤与 pc 通讯: 1:首先开发板上装 uartapk,可网上下载,晚上有很多串口 apk,注意,如果有硬
件流控(即 rts,cts),则需要下载支持硬流控的串口 apk
2:pc 端下载串口工具,如 securecrt
3:通过串口转 usb 小板(淘宝有售),将串口接至 pc 上,securecrt 打开对应端口
(端口号可在“设备管理–>端口”中查看),设置波特率,通常使用 115200
4:开发板端打开串口 apk,设置流控及波特率,打开节点/dev/ttyS1,至此,可使
用 uart 进行通讯
2.1.2 自收发测试
1:首先开发板上装 uartapk,可网上下载,网上有很多串口 apk,注意,如果有硬
件流控(即 rts,cts),则需要下载支持硬流控的串口 apk
2:将 uart 的 tx,rx 互连,若有 cts,rts,将 cts 接地,rts 悬空
3:打开 apk,进行测试
2.2 常见问题及调试方法
2.2.1 串口无法输入或输出
通常无法输入或输出有两种可能
1:串口打开了硬流控,且 cts 未拉低,导致开发板不能输出
2:uart 的 tx 或 rx 复用有问题
排查方法:
使用 io 命令,查看寄存器配置。Io 命令使用方法: 1:向 rk 咨询,获取芯片 trm 手册
2:基本所有的 gpio 复用由 grf 控制器确定,这里以 3288trm 为例:
首先查看 trm 的 System Overview 章节的 Address Mapping 小节,搜 grf 可查到

Grf 寄存器的基地址为 0xff770000
再到 grf 章节,General Register Files (GRF)中,搜索 uart1(或者直接看硬件对应的 gpio),可查到 uart1 是由 GRF_GPIO5B_IOMUX 寄存器控制,查看
GRF_GPIO5B_IOMUX 偏移地址为 0x0050,即实际地址为:
0xff770000+0x0050=0xff770050

3:在串口或 adb 中使用命令:
su
io -4 -r 0xff770050
得到结果:

即可读到该寄存器的值,如下图中的寄存器说明,如果只开了 uart1 的 tx,rx,
未打开 cts,rts,则对应结果的 bit[7:0]应该为 0x05:如有异常,则应该到 dts 中搜索,是否其他驱动复用了这几个 pin 脚
2.2.2 串口输出乱码
输出乱码通常有两种可能: 1:波特率误差较大
2:串口波形异常
检查方法: 如 2.1 中所述将板子和 pc 相连,在板子端输出字符串“UUUUUU”,U 对应的
ascii 码值为 0x55,串口波形为 01010101,此时用示波器测量开发板 uart0 tx
端口,测量输出的波形,如下图所示是输出“U”时的波形:

测量频率:可看到实际波特率为 57.67k*2=115340
(115340-115200)/115200=0.0012152777777778
误差远小于 2%,因此该波特率可接受,且无乱码
如果波形有异常则需要检查硬件以及查看软件是否需要配置内部上下拉

2.2.3 串口乱码时检查串口时钟
正常常用的串口波特率 rockchip 都是支持的,如 4800,9600,115200 等,准确率
也较高,一般 1.5M 以下的波特率都可以分出来。
也有个别客户会要求使用一些不常见的波特率,此时需要根据波特率计算时钟。
波特率=时钟源/16/DIV。(DIV 是分频系数) Div 是系统会自动为 uart 控制器计算,数值为整数,以 2.2.2 中测量的 115200
波特率为例: 1:在 dts 中我们可看到时钟源:
uart_bt: serial@ff180000 {
compatible = “rockchip,serial”;
reg = <0xff180000 0x100>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <24000000>;//这里设置的为 24M 时钟源
clocks = <&clk_uart0>, <&clk_gates6 8>;
配置好后,开发板开机,可用命令获取当前 uart1 时钟:
cat /d/clk/clk_summary | grep uart1
clk_uart1 2 2 24000000
clk_uart1_div 0 0 594000000
uart1_frac 0 0 29700000
g_pclk_uart1 2 2 74250000
2:根据 baud=clk/16/DIV 计算:
115384=24M/16/13
符合 2.2.2 中的实际测试结果。如果有需要特殊波特率,改时钟的,计算后修
改 clock-frequency 即可
注:在 4.4 的 kernel 版本后,驱动已经可以根据波特率自动计算时钟,但有些
未知情况可能还是会出问题,以相同的方式查看时钟来确定问题点
时钟
2.2.4 波特率与设置的不符或丢失字符
1:由于系统默认使用 ttyS0 或 ttyS1 作为蓝牙通讯使用,因此如果没有关闭蓝牙就
直接使用可能会导致两个问题,一是波特率被蓝牙服务改变,二是蓝牙从串口读取
了数据,导致客户 apk 再读取数据时会出现丢失字符串,此时可先将蓝牙服务关闭,
关闭方法: 1:在 device/rockchip/目录下搜 ttyS,将有关的内容都注释掉
2:在 device/rockchip/目录下搜 BOARD_HAVE_BLUETOOTH
将该属性设置为 false,在到 sdk 根目录下使用命令
get_build_var BOARD_HAVE_BLUETOOTH
确定返回结果为 false,然后重新编译系统
make installclean && make
2:有时个别客户存在两个 apk 同时读一个串口,此时也会导致数据在 apk 上显示
不全,同一时刻只能有一个服务读取串口数据
2.2.5 串口节点权限
可在以下文件中添加节点权限:
sdk\device\rockchip\common\init.connectivity.rc
的 on boot 中添加:
on boot
chmod 0777 /dev/ttyS0
chmod 0777 /dev/ttyS1

Rockchip瑞芯微UART调试指南相关推荐

  1. [基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式]

    基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式 内核menuconfig配置 内核dts配置 文件系统配置和更改 驱动编译 wifi工具编译 libnl库编译 open ...

  2. 【ROCKCHIP瑞芯微芯片平台方案介绍】

    瑞芯微芯片平台方案介绍 RK312X RK356X RK3288 RK3308 RK3326 RK3358 RK3399 RK3588 RV1126和RV1109 欢迎加入我们 这里是对本团队做了多年 ...

  3. Rockchip(瑞芯微)平台高速上手指南

    原址 Buildroot开发 Buildroot开发基础 具体的开发技巧可到Buildroot官网学习. Buildroot官网:https://buildroot.org/ 查看Buildroot开 ...

  4. 探索瑞芯微RKNanoD芯片获索尼音箱,采用无线连接稳定无延迟

    索尼在音频行业的成就相信大家都有目共睹,索尼HT-Z9F音响系统是持续热卖的产品,这套音响系统由一个中置回音壁以及一个重低音音箱组成,搭配"VERTICAL SURROUND ENGINE垂 ...

  5. 从全志和瑞芯微财报看半导体行业内幕(一)

    珠海全志科技和福州瑞芯微电子都是中国最优秀的IC设计公司之一.两家都是白手起家,自力更生,筚路蓝缕,没靠政府补贴做大做强的民营企业. 这两家公司都是设计基于ARM架构的应用处理器,除了没有基带技术,跟 ...

  6. 瑞芯微rockchip PX30触摸屏调试记录

    系列文章目录 瑞芯微rockchip PX30 串口调试记录 瑞芯微rockchip PX30 显示屏调试 瑞芯微rockchip PX30触摸屏调试记录 瑞芯微rockchip PX30 QT环境搭 ...

  7. Banana Pi BPI-R2 Pro 开源路由器采用瑞芯微Rockchip RK3568芯片方案设计

    Banana Pi BPI-R2 Pro 开源路由器采用Rockchip RK3568芯片方案设计, 板载2GB LPDDR4内存和16GB eMMC存储,支持2个USB 3.0接口,5千兆网口.M. ...

  8. Camera | 3.瑞芯微平台MIPI摄像头常用调试命令

    瑞芯微专栏 前面2篇我们讲解了camera的一些基础概念和知识. 本文主要讲述在瑞芯微平台上摄像头开发常用的调试命令. 0.环境 soc : rk3568 board: EVB1-DDR4-V10 软 ...

  9. 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息

    [瑞芯微Rockchip Linux平台]SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息 1. 获取本机的蓝牙mac地址 __get_bt_mac_addr() ...

  10. 瑞芯微Rockchip出品的驱动安装助手DriverAssitant v4.6

    关键词: 瑞芯微 Rockchip  RK3308  RK3399  驱动安装  DriverAssitant  V4.6  MASKROM  LOADER 驱动安装比较简单,直接点击"驱动 ...

最新文章

  1. oracle非常量不能用于privot_Oracle 行转列(pivot、wm_concat、decode)使用总结(转载)...
  2. 实现多条件模糊查询SQL语句
  3. A-FRAME初体验
  4. [ERR] Not all 16384 slots are covered by nodes.
  5. ABAP代码自动完成实现原理
  6. ANSIBLE--handlers的概念
  7. 烂泥:团购网站的购买流程
  8. 关于Oracle数据库的SQL语句使用时的一些技巧。
  9. rsa加解密及加签验签
  10. 计算机网络课程设计报告
  11. 中国科学院大学计算机在职博士招生,中国科学院在职博士研究生如何报考?
  12. GaussDB系列数据库简介
  13. 声艺fx16调音台怎么样_声艺调音台FX16II使用说明书.doc
  14. 网页国际化处理(中英文切换)
  15. Java 无限级递归生成树级菜单
  16. VM16-ubuntu16桥接网络频繁掉线
  17. 广东惠州港口吞吐量稳中有升
  18. 系统的软中断CPU使用率升高,我该怎么办?
  19. Debian学习笔记——硬件
  20. 快速构建后台管理系统-GUNS学习系列之guns-lite-代码生成工具

热门文章

  1. 几个例子理解博弈论与纳什均衡
  2. java基础jdk,jre,jvm作业-答案
  3. 【BZOJ3197】[Sdoi2013]assassin 树同构+动态规划+KM
  4. AFFF3%水成膜泡沫灭火剂生产厂家分析品牌哪家好数据说明
  5. OV9281+RK3399Pro 双摄像头移植
  6. 高等代数 具有度量的线性空间(第10章)5 正交空间与辛空间
  7. NOIP2017普及组★跳房子
  8. 介绍一种冷门但简单的双拼方案——紫光双拼
  9. 谈谈小游戏加载优化及资源分配
  10. 本地IP与网络IP的区别与查询方式