一、以两例芯片介绍驱动目的
驱动是啥?从硬件上看就是以一定的规则让芯片运作起来,从软件上看就是一个或几个.c文件。拿一些显示信号转换芯片(9211,9611,96111uxc等等)来说,首先需要了解这类芯片的作用。
生活中有各种不同的显示器,手机屏幕、电脑显示器、电视机等等,虽然都能显示同一画面,但是其内部接收到的这些画面信号是不一样的,各种显示器有特定的信号输入才会正常显示
以上为官方发布的图片,lt9611芯片将两路MIPI DSI/CSI转换为HDMI1.4信号,lt9211将MIPI信号转换为LVDS信号输出。因为模块发出的是mipi信号,一般手机屏幕直接接受mipi信号就可以显示,而电脑电视机显示屏一般都是hdmi信号,LVDS屏幕接受lvds信号显示,所以这类芯片的作用就是将mipi信号转换成不同信号输入至不同显示器。(不用在意信号具体怎么产生,只需要了解这个概念)
所以驱动的目的也很明显:正确转换信号并可以输出,换句话说就是让这个芯片跑起来。
二、如何让芯片运行
在了解驱动目的之后,就需要具体了解芯片的pin脚功能和一些时序操作。
上图为网图(侵删),需要先熟悉上面两份资料:硬件原理图与芯片手册(都会提供),数据手册会告诉你如何上电,上多少V的电压以及相应pin脚的功能;硬件原理图告诉你芯片的pin脚具体连接到我模块的哪一个脚(芯片连接着模块,我们只能通过模块的脚来控制芯片)。按照这样的规则给芯片上电后它就可以工作了,具体咋上电,就是上文所说的几个.c文件需要做的了,这里不细说。了解大概就行。
三、验证以及测试工具
驱动工程师与纯软件工程师不同,不仅需要具备debug能力还需要会使用示波器、电压表,当然有焊接能力更好。调试好芯片后最直接的测试方法就是看功能是否完善了,调lvds的9211就去拿一块lvds屏幕接上看有没有显示,调9611就去接电脑显示屏。如果失败了就需要借助软件的日志来看问题(其实就是加了很多的printf),与此同时可以喊硬件来帮你量一下电是否都正常,基本靠这两种办法就可以调试出来了,其他偏的问题怪的问题先不管。
量电需要的测试工具上面也提过:电压表,示波器等,不会用的跟硬件学,次数多了就熟练了。不会看原理图的也找师傅或者硬件学一下,很快就能懂。
四、客户定制的功能
其实整个驱动介绍到这已经结束了,驱动能正常运行芯片正常工作了,但总是会遇到一些客户想要定制功能。这也算驱动工程的一部分了,新手一般不会接触此类问题,调试这种功能需要具备一定程序的编写能力、分析问题的能力以及资源搜索的能力。之后会列举一两个示例介绍。
五、结语
第一章无需懂具体技术细节,从宏观的角度能理解驱动是啥,要干什么就可以了,接下来几章会从基本的操作具体讲,还是需要提醒一下:多熟悉C语言的指针与结构体,能手写带和不带头节点的单链表增删改查就足够了。