linux驱动基本认知

一、为什么要学习linux驱动?

树莓派中厂家会给一个库叫wiringPi库,这个库可以让我们来点灯,做超声波,做串口等等,然而有些芯片厂家不一定有会提供库,那么开发者就必须要学会自己开发。

二、linux中一切皆文件

linux中一切皆文件,其中包括鼠标,键盘,屏幕,led,flash,内存,网卡等等的设备,普通的IO口,串口等等(在/dev底下可以看到)

对文件的操作用到的api无非就是open,read,write,close。

那么这些函数是如何区分鼠标还是键盘等等。

首先在内核中会有一个驱动链表来管理所有设备的驱动

fd=open(“/dev/pin4”,权限)用来调用引脚4的驱动,那么如何找到相关的驱动,有两个东西供我们查找,一是文件名,二是设备号(包含主设备号和次设备号)。

Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。

设备号

三、驱动代码开发

驱动代码开发就两件事

  1. 添加驱动(1.设备名 2.设备号 3.设备驱动函数------操作寄存器去调用IO口 )

  1. 调用驱动

流程:

当用户层调用open,write等函数时 (例如:open(“/dev/pin4”, O_RDWR)),系统发生一次软中断,触发sys_call(系统调用处理入口)(中断号是0x80),接下来根据设备名找到设备号找到虚拟文件系统的sys_open,sys_open会找到引脚四驱动程序里的open函数,我们在引脚四里面肯定是进行寄存器操作。

学习笔记,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值