博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
博泰和希望电子两家初创公司的嵌入式开发经历
阅读量:2352 次
发布时间:2019-05-10

本文共 2097 字,大约阅读时间需要 6 分钟。

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了。

 

转载地址:http://qkrvb.baihongyu.com/

你可能感兴趣的文章
Go语言基础入门--if,for,range,switch
查看>>
Go语言基础入门--函数,错误处理
查看>>
VIM 学习系列之基本命令,常用命令
查看>>
轻松搭建安全、轻量、极速、简约的博客Eiblog
查看>>
Golang包管理工具Glide,你值得拥有
查看>>
Glide命令,如何使用glide,glide.lock
查看>>
耗时整整一天,整理出的超详细清晰的vim,vimrc配置
查看>>
Git 学习笔记、相关命令、问答
查看>>
HTTPS 免费证书,免费 ssl 证书,FreeSSL.cn 申请多种免费证书
查看>>
SSH Config 那些你所知道和不知道的事
查看>>
10 分钟理解什么是 OAuth 2.0 协议
查看>>
docker volume 容器卷的那些事(一)
查看>>
docker volume 容器卷的那些事(二)
查看>>
首日报名爆满超300 向C++大师Lippman提问征集
查看>>
如何降低白噪声对网站用户体验的影响?
查看>>
TUP Masters第七期:C++大师Lippman论编程新范式Hugo
查看>>
[TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案
查看>>
Avangate SaaS模式开启全球软件新营销之门
查看>>
如何降低白噪声对网站用户体验的影响?
查看>>
17173总经理赵佳:媒体移动化需抓住三大要素
查看>>