Linux驱动的platform机制

    最近在看SPI、I2C这样简单点的总线驱动程序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。现在Linux中大部分的设备驱动都可以使用这套机制,总线为platform_bus,设备用platform_device表示,驱动用platform_driver进行注册。

    Linux的这种platform driver机制和传统的device_driver机制相比,一个十分明显的优势在于platform机制将本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform_device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性。下面是SPI驱动层次示意图,Linux中的SPI总线可理解为SPI控制器引出的总线:

和传统的驱动一样,platform机制也分为三个步骤:

1、总线注册阶段:

内核启动初始化时的main.c文件中的kernel_init()→do_basic_setup()→driver_init()→platform_bus

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
作为一个初学者,你可以按照以下路线来学习Linux驱动开发: 1. 学习Linux基础知识:熟悉Linux操作系统的基本概念、文件系统、进程管理等。 2. 掌握C语言编程:作为Linux驱动开发的主要语言,你需要熟悉C语言的基本语法和编程技巧。 3. 理解Linux设备模型:学习Linux设备模型,包括字符设备、块设备、网络设备等,了解设备驱动程序的基本原理。 4. 学习Linux内核:深入了解Linux内核的架构、模块机制、调度器等,熟悉内核的编译、调试和配置方法。 5. 开发简单的字符设备驱动:从简单的字符设备驱动入手,了解设备驱动程序的框架和基本操作,例如设备注册、数据传输等。 6. 开发块设备驱动:深入学习块设备驱动程序的实现原理,包括磁盘分区、缓存机制等。 7. 学习Linux驱动框架:掌握常用的Linux驱动框架,例如Platform驱动、USB驱动、I2C驱动等。 8. 调试和优化驱动程序:学习使用调试工具和技术,例如GDB、Kprobe等,以及优化驱动程序的性能和稳定性。 9. 了解特殊设备驱动开发:学习针对特殊设备驱动开发,例如网络设备驱动、显卡驱动等。 10. 深入研究内核源码:阅读和理解Linux内核的源码,通过实践和探索进一步提升自己的驱动开发能力。 记住,Linux驱动开发是一个复杂而庞大的领域,需要不断学习和实践。通过综合运用这些知识和经验,你可以逐步成为一名优秀的Linux驱动程序员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值