2019-04-12

关键词: rk3128 OTG、rk3128外接鼠标U盘、RK外接鼠标U盘

本篇文章是笔者根据自己当前所掌握知识对 rk3128 平台 USB 接口接鼠标实现输入功能调试的一个记录,不对文章所述内容的绝对、完全正确性负责。


1、前言

笔者最近有点烦。无端端接到公司让调试 rk3128 平台样机的任务,虽说自己是 Android 系统集成开发出身,但那也是 2 年前的事了,笔者现在单恋 bigdata ,只想静静地和它厮守余生好吗!不过牢骚归牢骚,既然是领导派的任务,那还是要做的。那既然都做了,不输出点什么又让我很不自在。

今天这个问题的起因是因为我们的样机条件实在是太差了,没有配置触摸屏,仅一块显示屏。无法输入的话接下来的工作可不好做啊。于是就想到了外接鼠标,通过鼠标来模拟触摸输入的方式来控制 Android 系统。而我们这块样机,刚刚好 OTG 功能是不正常的,于是就将这一调试过程记录下来,以期后续能给遇到有同样问题的同学一些启发。

笔者手里的样机是 rk3128 平台的样机,运行 Android 4.4 操作系统。问题的现象自然就是插上鼠标和 U 盘以后不能正常工作与识别。下面是排错过程

2、Debug

调试过程无非就两个方向:1. 检查硬件; 2. 检查软件 。 依据笔者多年被坑经验来看:作为一名软件开发,但凡样机出现一些匪夷所思的问题,稍微检查一下我们的代码没有发现问题以后,就要怀疑硬件了。而作为一名要经常和各种硬件设备打交道的程序员来说,掌握一些基础的硬件开发知识也是很有必要的,这些基础的硬件知识,往往能让我们在怼硬件时更理直气壮一些。

2.1、硬件问题排查

原理图、PCB 图检查

这个工作一般和我们程序员无关。主要是因为大多数程序员都不懂。不过这块问题比较 “玄学” ,像笔者就遇到过,硬件检查了多次,确认自己画的图和芯片厂商给的电路参考图没什么出入了,但是最后还是查出来某个元器件电压值差了一点。虽然这种情况比较少见,但实在排查不出原因的时候,也可以作为一个分析点切入进去。

电压检查

通常,鼠标和 U盘 的工作电压都是 5V 。在前面确认到电路图没有什么问题以后可以来测量一下 USB 接口的供电电压。

usb 原理图

通常,在上面两步都检查过了没有问题以后,就可以来软件层面排查了。

2.2、软件问题排查

基础功能确认

通常样机在初期阶段都会有非常多的问题,甚至有不少连系统都不能正常启动的。所以我们首先要确保我们的系统是能稳定运行的。如何确认?有屏幕看能否正常进入到 Android Launcher 界面。没屏幕的看串口,看通过串口能否正常与系统交互,串口控制台进程一般是在 5 ~ 8 秒后就启动了。如果很不幸你的控制台进程默认是关闭状态的,那我们还可以看内核打印。rk3128 平台在系统稳定运行以后可以在内核中看到以下三条打印

1. 开机动画结束打印

service.bootanim.exit 属性的设置。

2. 以太网口启动打印

eth0: PHY ...

3. 系统健康管家进程的监控打印

healthd: ...   这个监控打印在系统运行稳定以后每分钟打印一次。

驱动检查

在 Linux 内核启动初期就是去执行各种驱动程序。可以适当关注一下开机时的系统内核打印,看看是否有报什么错误信息。这一块没有什么标准的,如果真的是这里出了问题,问题的确认就要看自己的造化了。

dts 配置检查

在软件层面上,比较大可能都是这一块出了问题。

USB 接口的默认配置信息位于

./kernel/arch/arm/boot/dts/rk312x.dtsi

rk3128 平台的 USB 默认配置

默认的配置信息通常是不会有问题的,主要看看自定义的 dts 中是否有修改默认配置的情况。笔者这里确实是发现了 usb-mode 栏的值被修改了。

usb-mode 默认值被修改

笔者这边,将这个 rockchip,usb-mode 的值改成 1 以后问题就解决了

在串口中也可以通过命令来读取这个 usb-mode 的值。

cat /sys/bus/platform/drivers/usb20_otg/force_usb_mode

在拥有权限的情况下,可以直接通过 echo 命令来更改这个文件的值以动态修改 USB 模式。

echo  > /sys/bus/platform/drivers/usb20_otg/force_usb_mode
echo 2 > /sys/bus/platform/drivers/usb20_otg/force_usb_mode

USB 的几种工作模式

USB 设备的通信模式为 主/从 通信模式。只有当主设备(usb-mode: Host )与从设备(usb-mode: Device )连接时,才能成功建立数据通信。而我们的鼠标、U盘在 USB 通信中都属于 从设备 。因此,我们的开发板就必须设置为 主设备 才可让这些设备正常工作。


参考: [RK3288][Android6.0] USB OTG模式及切换

rockchip 3128 平台USB接口鼠标U盘功能调试日记的更多相关文章

  1. 将PS/2接口鼠标改造成USB接口鼠标

    改造接线图 不是所有PS/2鼠标都可以改为USB鼠标的,可以改的PS/2鼠标的特征: A.早期PS/2鼠标电路板一般带有两块集成电路,(一块光电感应,一块按键或USB协议转换,和一只24M的晶体振荡器 ...

  2. USB接口介绍

        USB设备系统分为两个部分,USB Host端和USB Device端,以USB接口的U盘为例子,U盘自身是一个USB Device,PC机的USB接口以及相关的控制电路为USB Host部分 ...

  3. USB接口禁用小工具v1.0.1

    由论坛用户原创制作的一个USB接口工具, 可选择手动/自动启动或者禁止启动模式, 开启禁止启动模式后USB接口将关闭识别功能, 有效防止U盘设备侵入,对于机房实验室设施来说相当管用. 下载地址:htt ...

  4. 笔记本USB接口案例分析和是实现

    笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能.在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以 ...

  5. 【转】重装win7后,所有USB接口无法使用(鼠标、键盘、U盘)

    转自:https://blog.csdn.net/u010887744/article/details/45270245 今天给一朋友重装系统,华硕FX50J,修改BIOS重装了win7,结果所有US ...

  6. 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。

    接口的多态使用 接口应用实例:U盘.打印机可以使用共同的USB接口,插入到电脑上实现各自的功能.

  7. 突发小事件,USB接口问题

    昨天遇到的突发事件,突然USB接口全部瘫了,键盘鼠标全部不能用,换到别人电脑上可以,吓尿了,以为本子主板挂了,但是发现插U盘竟然可以识别而且可以打开,感觉可能是静电问题,果然,彻底关机,拔掉电池,然后 ...

  8. USB接口无法识别设备

    http://windows.microsoft.com/zh-cn/windows/answers?tId=14fa1e44-0a19-48ef-9ba7-b7e512a837a4 小琼子 提问 2 ...

  9. 下一代USB接口将支持双向拔插,于明年亮相

    近日,USB接口标准制定组织表示新一代USB接口将于明年年中亮相,而其名称目前被暂定为了USB Type-C.该组织表示USB Type-C标准将允许制造商采用更纤薄的接口设计,在实用性大大提高的同时 ...

随机推荐

  1. 个人对【依赖倒置(DIP)】、【控制反转(IOC)】、【依赖注入(DI)】浅显理解

    一.依赖倒置(Dependency Inversion Principle) 依赖倒置是面向对象设计领域的一种软件设计原则.(其他的设计原则还有:单一职责原则.开放封闭原则.里式替换原则.接口分离原则 ...

  2. 学JAVA第十三天,方法、方法重载及构造函数

    今天终于不讲狗跳楼的问题了,今天讲了方法,方法重载及构造函数及构造函数重载的课程了. 这里说了有参好无参的,下面讲构造函数重载和方法重载. 其实,这上面写的这些方法,就相当一个模板.想要快速做出产品就 ...

  3. EditText搜索关键字,返回结果匹配关键字改变颜色

    自己项目 用到EditText搜索结果关键字改变颜色,就研究了一下,2种方法实现,发现一个好用的工具类,在代码中一行调用这个方法,直接实现需求. KeywordUtil.java工具类. packag ...

  4. 利用Navicat高效率postgresql转mysql数据库

    本人很喜欢postgresql数据库,也一直认为postgresql比mysql要更好更强大. 可生态环境太差了,无奈,最近要把一个小站转成mysql数据库. 小站主要表数据110万,pg_dump备 ...

  5. Review: Command-line about Git

    Git shanzm

  6. MySQL基础知识-安装MySQL

    前导: 昨天去参加了一个面试,公司不太大,是一家日资企业,在国内有几家分公司,面试官问到了MySQL的基本操作和性能优化,说了一大堆,倒是比较轻松的过了,但是面试结束之后,想了一下,基本操作忘的还是挺 ...

  7. Win32 Ime

    Win32 Ime API: ImmGetContext: 获取指定窗口的当前的输入上下文,然后再尝试访问上下文中的信息.应用程序应该定期使用这个功能获取窗口的当前的输入上下文.若hWnd参数为零,将 ...

  8. matlab导入txt数据画图

    因为最近需要观察txt保存的一堆数据,则需要使用这些数据画图.强大的matlab分分钟解决了. 实例数据:data.txt 步骤: ①打开matlab -> HOME(主页) -> Imp ...

  9. 阿狸V任务页面爬取数据解析

    需求: 爬取:https://v.taobao.com/v/content/video 所有主播详情页信息 首页分析 分析可以得知数据是通过ajax请求获取的. 分析请求头 详情页分析 详情页和详情页 ...

  10. 【spring源码分析】IOC容器初始化(八)

    前言:在上文bean加载过程中还要一个非常重要的方法没有分析createBean,该方法非常重要,因此特意提出来单独分析. createBean方法定义在AbstractBeanFactory中: 该 ...