【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

linux里面的代码很多,要全部说完,那是不现实的。在实际工作中,我们基本上需要什么驱动,就移植什么驱动。linux系统下bus-host-device模式一直没有变过,大家只要抓住这个基本原则就可以了。

1、其他还有什么重要的驱动

gpio驱动,位于drivers/gpio,主要用作键盘输入

leds驱动,位于drivers/leds,常用做开机显示或者是网口显示

uart驱动,位于drivers/tty/serial,这是最基础的驱动,可以没有lcd屏幕,但是不能没有串口

rtc驱动, 位于drivers/rtc,主要用于定时时钟

crypto驱动,位于drivers/crypto,常用于加密、校验或者纠错的驱动框架

i2c驱动,位于drivers/i2c,可用于pmu、时钟等设备

spi驱动,位于drivers/spi,可用于flash设备等

ps:

早期调试的时候,gpio和uart特别重要,除了jtag之外,基本上就剩gpio和uart这两种调试方法了。

如果是总线协议,一般直接到对应drivers/[bus]即可完成适配。

如果是device,一般用对应总线的函数注册一下也行,比如module_platform_driver,module_spi_driver等等。

当然,有的时候也会写成platform_register_driver、scsi_register_driver这种形式。

当然最简单的方法还是 module_init 和 module_exit这两个函数。

2、如果驱动不稳定,应该保存在哪个目录

drivers/staging

3、android特有的一些驱动,放在什么地方

drivers/android

4、一般如何写驱动

a、找相同目录下的一个近似文件

b、删除框架外的一切代码

c、自定义数据结构、注意包含class设备结构体

d、根据芯片手册,填充寄存器内容

e、在驱动中添加打印信息

f、调试驱动,可能使用到示波器和万用表、协议分析仪等等

g、使用第三方软件工具对驱动做压力测试

5、如何阅读驱动代码

a、结合Kconfig和Makefile一起阅读

b、分清驱动和协议,比如v4l2和media设备、alsa和asoc设备等等

c、大多数设备按照bus-host-device都可以快速厘清关系

d、快速寻找设备的接口注册信息

e、找到设备中断信息,搞定中断和接口如何互动

f、注意readl和writel函数,这部分参考spec手册

g、可以利用platform机制编写很多虚拟设备驱动,验证自己的想法

6、复杂的驱动怎么阅读

部分设备驱动的理解不依赖驱动本身,而是依赖于协议,比如

usb就要搞懂drivers/usb/core下面的代码,

media设备就要搞懂drivers/media/v4l2的代码,

sd卡就要搞懂drivers/mmc/core里面的代码,

声卡部分就要搞懂sound/core里面的代码,

搞gpu既要弄懂drivers/gpu/drm里面的通用代码等等。

如果要精通这些驱动的话,那了解这些框架或者协议都是少不了的工作。

7、ko文件是什么文件

就是一个elf文件,如果对驱动有怀疑,直接objdump反汇编好了

8、驱动编译在内核和外面有什么区别

没有区别

9、驱动实在看不懂,怎么办

放在一边,过几个星期再看好了

10、编写驱动的优缺点

优点就是可以接触到soc、os、协议和硬件,缺点就是驱动本身就是八股文,在提高个人软件架构能力方面作用有限

linux驱动编写(其他的驱动代码)相关推荐

  1. Linux运行911,韦东山-Linux下编写GT911触摸驱动 - 百问网嵌入式问答社区

    源码在最下面 问题一:资源获取Gt911数据手册 在韦老师给的资料里,路径为\06_Datasheet\Extend_modules\7寸LCD模块\电容触控芯片GT911 Datasheet_121 ...

  2. linux驱动编写(pwm驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说,就是单位时间内的方波越多, ...

  3. android Sensor 驱动编写--opt3001光感驱动为例

    分析Android sensor Android sensor Framework 层以及APP如何读取sensor 数据.网上有很多文章不再累述. 由于我使用的是Android 5.1(kernel ...

  4. linux驱动编写(声卡驱动之asoc移植)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] Linux下面的声卡驱动很复杂,根本不是一篇博客能够说清楚的.所以,本片文章的目的就是让同学门快 ...

  5. linux驱动编写(lcd驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有些嵌入式设备是不需要lcd的,比如路由器.但是,还有些设备是需要lcd显示内容的,比如游戏机. ...

  6. Linux下编写ENC28J60网卡驱动,完善网络设备框架

    一.框架模型 linux下设备驱动都有一套标准的结构,字符设备,块设备,网络设备都是自己的一套框架.编写驱动只需要把内核的框架搞清楚,然后照着结构填入参数,注册进内核,在应用层就可以按照标准的形式调用 ...

  7. linux驱动编写(触摸屏驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多.但是随着触摸屏手机.即智能手机的流行,触 ...

  8. linux驱动编写(dma驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] linux下面的驱动虽然什么样的情形都有,但是dma驱动却并不少见.dma可以有很多的好处,其中 ...

  9. linux 触摸屏驱动课程设计,linux驱动编写(触摸屏驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多.但是随着触摸屏手机.即智能手机的流行,触 ...

  10. linux驱动编写(摄像头驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 对于现代嵌入式设备,特别是手机来说,摄像头是很重要的一个设备.很多同学买手机,一看颜值,第二就看 ...

最新文章

  1. 牛客国庆集训派对Day6 B.Board
  2. SSHFD:IBM提出的单阶段人体跌倒检测网络
  3. Android控件美化Shape
  4. 第十五届全国大学生智能车竞赛浙江赛区隆重开幕
  5. xp snapshot.
  6. java中foreach怎么访问,Java对象阵列Foreach方法访问
  7. float 与 double、隐式类型转换、switch、重写与重载、Java 与 C++ 的区别、JRE or JDK
  8. 八十六、从拓扑排序探究有向图
  9. Invitation Cards POJ - 1511 SPFA(dijkstra+反向建图+邻接表(下标过大)+输入输出用stdio(iostream超时))
  10. 1001 害死人不偿命的(3n+1)猜想 (15分)
  11. (29)System Verilog进程间同步(旗语semaphore)
  12. 剖析《Linux 平均负载:解开谜团》
  13. Amos24程序安装及注意事项
  14. c语言怎么学自学,初学者如何学习c语言,带你玩转C语言
  15. PowerDesign使用
  16. 2013考研数学复习指南(理工类)-陈文灯
  17. 计算机主机电源灯不亮,电脑主机开不了机、电源灯不亮解决方法与技巧
  18. pvs-stdio ue4_PlatformIO中的PVS-Studio集成
  19. Codeforces A. XXXXX (数学 / 双指针) (Round #649 Div.2)
  20. 如何查询idea当前项目所有打断点的位置

热门文章

  1. redis-cli批量删除时的坑
  2. 记录一次linux病毒清除过程
  3. Android TabHost中Activity之间传递数据
  4. 字符编码原理 ASCII,Unicode和UTF-8 - - ITeye技术网站
  5. 自学stm32的一些个人经验
  6. 【主席树】bzoj1112: [POI2008]砖块Klo
  7. 通过CrawlSpider对招聘网站进行整站爬取(拉勾网实战)
  8. 【Android界面实现】Drawable Animation 使用介绍
  9. [原创软件]手机截屏及格式转换工具
  10. RDLC报表开发分组笔记