驱动的简单入门

本人现在学习驱动,所写仅是笔记作用。

 驱动,简单来说,就是沟通上层和物理层的中间媒介。

 打个比方,上层想要打开个led灯,上层的想法就是:我调用了一个类似open_on()的API函数,就能明显看到开发板的灯就亮了。他不管底层是怎么实现的,他理所当然认为,是他调用这个API函数就足够完成LED灯亮的任务了。

下层呢,它只知道,初始化寄存器,配置输出模式,你给它写一个低电平(假设低电平亮),LED灯就亮了,你给它写一个写个高电平,它就灭了。

驱动的作用呢,就是给上层屏蔽下层的差异,无论你今天拿到的是什么板子,只需要调用的是同样的一个函数,LED灯就能够亮了(假如板子都有LED灯)。驱动接收上层的指令,转化成物理层认识的指令。完成驱动底层设备正常运行,这就是驱动存在的必要性。

 

说完了原理,说说驱动的实现代码逻辑(传统操作驱动的方法)。

1、分配/设置/注册file_operations

2、入口函数led_init()

3、出口函数led_exit()

4、module_init(led_init) 

     module_exit(led_exit)

5、申明遵循GPL协议MODULE_LICENSE("GPL")

以上5步是传统驱动的基本框架。搭好了上层和对下层的媒介,后面只需要往框架里面填补对物理成的具体操作和接受上层的数据处理这些逻辑即可。

之后呢,在file_oprations 结构体中的open、write、read等函数真正对物理层的操作。

至此,简单地实现了一个驱动。原理是这样,但其他的驱动程序和逻辑会比这个复杂很多。

参考资料,来自韦东山的个人博客

https://blog.csdn.net/thisway_diy/article/details/84336346

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Android驱动入门,你可以按照以下步骤进行学习: 1. 了解Linux内核:Android的驱动是基于Linux内核的,因此了解Linux内核的基本概念、体系结构和驱动模型是很重要的。你可以学习一些Linux内核的基础知识,如进程管理、内存管理、设备驱动等。 2. 学习Linux设备驱动开发:Android设备驱动也是基于Linux设备驱动模型的,因此你需要了解Linux设备驱动的开发。可以学习一些Linux设备驱动的基本概念,如字符设备、块设备、网络设备等,以及对应的编程接口。 3. 理解Android架构:Android系统由多个层次组成,包括Linux内核、硬件抽象层(HAL)、运行时库、应用框架等。了解Android系统的整体架构有助于你理解Android设备驱动的位置和作用。 4. 学习Android HAL开发:硬件抽象层(HAL)是Android系统与硬件之间的接口层,负责将硬件特定的操作转换为通用的接口供上层使用。你可以学习如何编写和实现HAL模块,以及与硬件交互的方法。 5. 掌握Android驱动开发工具和环境:Android设备驱动的开发通常需要使用一些工具和环境,如交叉编译工具链、调试工具等。你可以学习如何设置和使用这些工具和环境,以便进行驱动的开发和调试。 6. 实践和调试:最好的学习方式是通过实践来深入理解和掌握知识。你可以选择一些简单驱动进行实践,然后通过调试工具来调试和验证你的驱动代码。 希望以上步骤对你入门Android驱动有所帮助!如果还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值