rockchip 3128 平台USB接口鼠标U盘功能调试日记
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盘功能调试日记的更多相关文章
- 将PS/2接口鼠标改造成USB接口鼠标
改造接线图 不是所有PS/2鼠标都可以改为USB鼠标的,可以改的PS/2鼠标的特征: A.早期PS/2鼠标电路板一般带有两块集成电路,(一块光电感应,一块按键或USB协议转换,和一只24M的晶体振荡器 ...
- USB接口介绍
USB设备系统分为两个部分,USB Host端和USB Device端,以USB接口的U盘为例子,U盘自身是一个USB Device,PC机的USB接口以及相关的控制电路为USB Host部分 ...
- USB接口禁用小工具v1.0.1
由论坛用户原创制作的一个USB接口工具, 可选择手动/自动启动或者禁止启动模式, 开启禁止启动模式后USB接口将关闭识别功能, 有效防止U盘设备侵入,对于机房实验室设施来说相当管用. 下载地址:htt ...
- 笔记本USB接口案例分析和是实现
笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能.在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以 ...
- 【转】重装win7后,所有USB接口无法使用(鼠标、键盘、U盘)
转自:https://blog.csdn.net/u010887744/article/details/45270245 今天给一朋友重装系统,华硕FX50J,修改BIOS重装了win7,结果所有US ...
- 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。
接口的多态使用 接口应用实例:U盘.打印机可以使用共同的USB接口,插入到电脑上实现各自的功能.
- 突发小事件,USB接口问题
昨天遇到的突发事件,突然USB接口全部瘫了,键盘鼠标全部不能用,换到别人电脑上可以,吓尿了,以为本子主板挂了,但是发现插U盘竟然可以识别而且可以打开,感觉可能是静电问题,果然,彻底关机,拔掉电池,然后 ...
- USB接口无法识别设备
http://windows.microsoft.com/zh-cn/windows/answers?tId=14fa1e44-0a19-48ef-9ba7-b7e512a837a4 小琼子 提问 2 ...
- 下一代USB接口将支持双向拔插,于明年亮相
近日,USB接口标准制定组织表示新一代USB接口将于明年年中亮相,而其名称目前被暂定为了USB Type-C.该组织表示USB Type-C标准将允许制造商采用更纤薄的接口设计,在实用性大大提高的同时 ...
随机推荐
- C#枚举的简单使用
枚举这个名词大家都听过,很多小伙伴也使用过, 那么枚举在开发中能做什么,使用它后能给程序代码带来什么改变,为什么用枚举. 各位看官且坐下,听我一一道来. 为什么使用枚举? 1.枚举能够使代码更加清晰, ...
- DS控件库 DS开放式下拉列表
在一些场合中,需要使用组合式下拉列表控件,比如带treeivew的combobox,但是代码较多,使用不便.为此,本人制作了一个超级易用的DS开放式下拉列表. 以下演示使用过程. Private Su ...
- 根据点击事件去选取电脑中.rvt文件
private void button_Click(object sender, RoutedEventArgs e) { //这个选出来是文件夹 //选择文件 var openFileDialog ...
- 2019/1.7 js面向对象笔记
面向对象 1.构造函数里的属性怎么看?看this,谁前面有this谁就是属性. num不是属性,是私有作用域下的私有变量. 2.如何查找面向对象中的this 1.构造函数的this指向实例对象 2.如 ...
- 关于获取URL中传值的解决方法--升级版
这次页面之间的传值是升级版本,为什么是升级版本呢,因为这次页面的传值不一样了.大家可以看一下我原来的文章<关于获取URL中传值的解决方法> 其实上次就已经比较清楚的介绍了页面之间的传值,但 ...
- web前端图片上传(3)--filereader
这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...
- 剑指前端(前端入门笔记)——Date类型
Date类型 ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的.为此,Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的 ...
- [转载]编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数
[转载]编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数 转载自:https://blog.csdn.net/one_money/article/details/56921 ...
- Python笔记-面向对象编程
1.类和实例 面向-对象的三大特点:数据封装.继承和多态 在Python中,所有数据类型都可以视为对象,当然也可以自定义对象.自定义的对象数据类型就是面向对象中的类(Class)的概念. 假设我们要处 ...
- OpenCV尝试
我们来尝试,使用OpenCV来读入本地的一张图片,并使用库函数将其水平翻转.垂直翻转以及边缘提取,后将结果文件存入本地. 工具:VS2017 OpenCV4.0.1 怎么配置opencv/报错怎么办 ...