Linux Driver porting的步骤

1. 认真阅读IC的spec,我们需要从中读出一些有用的信息。
    1) IC正确的(或者可以说精确的)上电时序,这其中包括,Host端控制IC时存在几个pin(regulator, GPIO等),这几个pin严格的上点时序是怎么样的。
    2)IC上电时,是否需要发送一定的初始化序列,来保证IC的正常工作。
    3)IC的正常工作时的工作原理及工作模式等。
2. Driver编写:
    Linux driver的编写一般分为两个部分:一个为DTS, 另一个为真正的driver code。
    DTS:一般从device的spec中,我们可以得知,真正drive这颗IC所需要的所有资源。一般我们会将这些资源,全部填充到DTS node里。这些资源在系统boot的时候会被driver进行解析和资源申请。
    Driver code:以下是driver porting中几个比较重要的函数,需要注意。
                        xxx_init() 这个是一定会被系统加载的,因为它被编译到.init段中,一般这个函数,只会做一件事情,就是注册driver。
                        xxx_probe() 这个函数一般在driver match成功后,被系统调用的。而在这个函数中做的事情比较多,主要分三个方面的任务:一是对DTS的分析及资源的申请工作。二是,对于device的default工作模式进行设置,包括上电时序和模式选择等。三是,对于文件系统的注册(因为在Linux系统中,所有kernel与上层的交互都是通过文件系统来完成的)。
                        xxx_suspend() /xxx_resume()这是Power management系统需要回调的函数。用以保证系统能够正常进入低功耗模式。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。