1:input输入设备驱动移植
共性特点:
驱动层望hal层 输出input事件。
1> 触摸屏驱动移植
之前碰到过换了个适配器电源,触摸屏就好了。
而且触摸芯片会受电磁干扰等。
而且对Android系统的触摸事件往上面输入的框架顺序很熟悉,比如在hal层会到哪里。
2>av接口的显示器遥控器驱动
自己写了个遥控器驱动程序。不断读串口芯片,有遥控器发来的信号数据后,把它转成input事件输出到上层Android系统上。
2:音频codec
矽望经历:
1:从无到有移植了一款sgtl5000 codec芯片的驱动,把它从imx6 android 4.3上移植到rk3288 android 4.4上,测试speaker播放声音已经成功。
耳机插孔 --> 这两个链路都连接到 codec上面,然后codec会由i2s和i2c通道连接到imx6上。
speaker --> 功放芯片 --->
2:就是测试耳机里面有无pop音出现,有的解决方法应该是在Android的hal层,里面具体对pcm音频流进行操作时,在具体播放pcm 流之间适当进行mute操作。
3:就是在对日的平板电脑定制项目中,有个音频track无法调节音量大小,所以比葫芦画瓢,在Android的fwk层,找到相关的配置文件,修改后,可以在Android图形界面上,
加入一个滑动旋钮,可以调节该音量大小了。
博泰经历:
车载公司的音频设备更复杂些。
一种是输入音频流,中间经过讯飞的语音识别芯片,再接入codec,再接入cpu。
还有一种是carlife车机互联项目,手机通过usb和车机相连,然后手机的音频流输入到车机上,然后经过车机的codec,最后从车机的speaker出来。
1:carlife项目出现车机播放carlife音乐,声音有很重的pop音。最后经过在Android系统的不同地方记录pcm音频数据流的方法,再回放该Android系统不同阶段位置处的音频流,
发现是Android系统里面hal层的carlife模块造成的声音出问题了。
2:输入音频流,爆过一个车机不能正常识别语音输入的问题。结果用示波器查板子上各个位置的输入音频流是否正确,最后发现是讯飞芯片的问题。
3:车机在经过carlife播放音乐时,发现播放音乐有pop音,最后定位到是Android播放音乐的前端线程位于后台group里面,是Android cgroup分组不当导致的。
sdio接口的 wifi驱动移植
在希望的imx6开发版上加入新的wiki驱动,然后通过搞gpio,还有串口层测试wiki是否正常,还有Android hal层测试WiFi是否正常,。
还有跟硬件人员一块电表,示波器测量WiFi的pin脚,看看是否正常,还有跟fae交流。
最后终于WiFi移植好了。
ddr校准
富士通经历:
移植好uclinux的fm3开发版上,执行某些shell命令时,会出错。当初采用板子交叉验证的方式,最后一层层的排查,
靠着uboot里面的内存测试命令,最后发现是sdram驱动的问题。sdram驱动地址线有问题,没有配对正确的寻址范围。
希望经历:
新板子的ddr必须做校准,不做校准的话,板子上Android系统会莫名其妙地崩溃掉。
用飞思卡尔的方法做校准。
有时候ddr会工作在低ddr频率下面没问题,但是高频率ddr下面就有问题了。
涉及到uboot的启动。uboot启动的第一阶段和第二阶段。第一阶段在imx6的sram里面执行,里面会有ddr初始化程序。
ddr搞好后,会接着把uboot的第二阶段代码拷贝到ddr中,在ddr中执行。
该阶段也可以进行ddr测试,测试下板子的ddr工作是否正常。
博泰经历:
ddr校准出问题了,可以根据校准的出错,判定出是imx6的哪根地址线或者数据线的问题。
而且还要跑下高低温的ddr 测试。
lvds,av接口,hdmi接口和mipi接口的显示屏驱动移植。
就是imx6芯片上有上面这些接口的pin脚,然后pin脚配置好gpio后,测试下gpio功能正常后(陈晓辉有独特的测试方法),
然后示波器看到有图像信号输出,图像信号会发给fae,让他们确认是否正确。有错误的话,要怀疑是板子问题,还是示波器问题。
期间,终于论证是示波器的问题了(因为我们的示波器采样频率只有300-400Mhz).
然后mipi屏比较特殊点,得主动发送mipi唤醒命令(在qq上问别人要到个mipi屏的i2c配置发送命令代码),其实这个完全可以问fae要的。
(主要还是当时自己比较嫩,比较喜欢钻研,没有重视交流,不过后来这个缺点已经改了。)
还解决过一个av屏幕的图像显示上下跳动或者闪烁的问题。最后排查到是imx6 fb显示驱动某些代码模块没考虑到并发重入的情况,就是没有加锁呗。
其实我们还有个work around的方法,在我们的脚本开启显示屏显示功能的地方前面,加上sleep 3s操作。
会拿电表,示波器和硬件人员一块测试看看板子的触摸芯片是否能够正常工作,当然是要看spec了。