加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux驱动编写(其他的驱动代码)

发布时间:2022-11-22 11:12:18 所属栏目:Linux 来源:
导读:  linux里面的代码很多,要全部说完,那是不现实的。在实际工作中,我们基本上需要什么驱动,就移植什么驱动。linux系统下bus-host-device模式一直没有变过,大家只要抓住这个基本原则就可以了。

  1、其他
  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里面的代码linux 驱动,
 
  声卡部分就要搞懂sound/core里面的代码,
 
  搞gpu既要弄懂drivers/gpu/drm里面的通用代码等等。
 
  如果要精通这些驱动的话,那了解这些框架或者协议都是少不了的工作。
 
  7、ko文件是什么文件
 
  就是一个elf文件,如果对驱动有怀疑,直接objdump反汇编好了
 
  8、驱动编译在内核和外面有什么区别
 
  没有区别
 
  9、驱动实在看不懂,怎么办
 
  放在一边,过几个星期再看好了
 
  10、编写驱动的优缺点
 
  优点就是可以接触到soc、os、协议和硬件,缺点就是驱动本身就是八股文,在提高个人软件架构能力方面作用有限。
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!