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系统需要回调的函数。用以保证系统能够正常进入低功耗模式。

时间: 2024-08-09 22:02:14

Linux Driver porting的步骤的相关文章

I.MX6 bq27441 driver porting

/************************************************************************** * I.MX6 bq27441 driver porting * 声明: * 本文主要记录bq27441电池检测芯片驱动遇到的一些问题以及解决方法. * * 2016-1-28 深圳 南山平山村 曾剑锋 ************************************************************************

Driver Porting and Configuration for A20

Driver Porting and Configuration Porting I/O Control Driver The I/O control driver is built as a module, can be used for controlling common peripherals, such as LED, push button, buzzer. Copy io_control_dev to your ubuntu system, compile it with your

学习linux/unix编程方法的建议,学习Linux的四个步骤(转)

解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐<高级unix环境编程>,黑话叫APUE还有<unix网络编程>这时候

Centos linux php扩展安装步骤

使用phpinfo()函数输出PHP信息,然后找到Configuration File (php.ini) apachectl 其设计意图是帮助管理员控制Apache httpd后台守护进程的功能. Centos linux php扩展安装步骤1 首先进入到php源码包中 cd /opt/php-5.1.2/ext/zlib 2 在zlib文件夹下产生configure文件 (php安装目录/opt/php/)/opt/php/bin/phpize 3 配置编译 ./configure --wi

linux & windows porting

1. linux   int snprintf(char *restrict buf, size_t n, const char * restrict   format, ...); windows  int _snprintf( 2. 头文件都是string. h windows平台:函数:stricmp(char *str1, char *str2), strnicmp(char *str1, char *str2, size_t n).Linux平台: 函数:strcasecmp(char

I.MX6 PMU MMPF0100 driver porting

/************************************************************************** * I.MX6 MMPF0100 driver porting * 说明: * 虽然主板上有MMPF0100芯片,却没有注册设备并使用该PMU驱动,真是浪费, * 当然因为需要,所以将PMU的驱动注册起来. * * 2016-3-31 深圳 南山平山村 曾剑锋 *******************************************

虚拟机软件及Linux操作系统安装操作步骤

虚拟机软件及Linux操作系统安装操作步骤 一.虚拟机软件的安装 在Windows系统系安装适合的Windows版本的VMware Workstation后,就可以在VMware Workstation上创建虚拟机了,之后运行创建的虚拟机即可在虚拟机上安装CentOS Linux操作系统的过程和在实际生产环境下安装是一样的. 1.创建一个VM虚拟机实践 1.1.创建一个新的虚拟机 1)虚拟机软件安装完毕后,双击桌面上的VMwareWorkstation图标或者在开始菜单里到VMware Work

I.MX6 Linux udev porting

/*********************************************************************** * I.MX6 Linux udev porting * 声明: * 在嵌入式产品上,我们可以使用mdev来解决热插拔的问题,同时也经常看到 * udev,所以尝试来移植一下,但是最终发现她会丢失内核阶段产生的uevent, * 这导致无法生成内核阶段产生的设备节点,目前采用了mdev来做完成内核阶段的 * 设备节点生成,之后使用udev完成热插拔,这

ubuntu14.04 android develop environment setup for android and linux driver

//For android and linux driver// 1,install ubuntu14.04 usb boot, CD boot, vmware workstation install, etc take usb boot for an example, download Universal-USB-Installer-1.9.5.6.exe and ubuntu-14.04.2-desktop-amd64.iso at windows xp platform. i take m