查看: 851|回复: 0

​迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

[复制链接]

该用户从未签到

发表于 2015-8-13 08:16:09 | 显示全部楼层 |阅读模式
分享到:
本文转自:https://www.topeetboard.com
视频下载地址:
驱动注册:https://pan.baidu.com/s/1i34HcDB
设备注册:https://pan.baidu.com/s/1kTlGkcR
总线_设备_驱动注册流程详解
注册流程图

file:///C:UsersxunweiAppDataLocalTempksohtmlwps3B72.tmp.jpg• 设备一般都需要先注册,才能注册驱动– 现在越来越多的热拔插设备,反过来了。先注册驱动,设备来了再注册
设备
本节使用的命令
– 查看总线的命令#ls /sys/bus/– 查看设备号的命令#cat /proc/devices
设备都有主设备号和次设备号,否则255个设备号不够用
– 查看杂项设备号的命令#cat /proc/misc设备注册
关于注册设备的一点说明
早先的Linux会使用单独的文件注册设备,现在大多是使用引入的虚拟
平台,使用虚拟平台来注册设备会容易很多 如果大家在网上看到大段的注册设备的代码,可简单了解一下,知道
有这么个东西就成,不用去深究。不要去学习“屠龙技”,现在基本都是直接在平台文件中注册设备
注册设备
注册设备使用结构体platform_device,该结构体在头文件“vim
include/linux/platform_device.h”中。头文件中也有注册设备和卸载设
备的函数,了解即可。


file:///C:UsersxunweiAppDataLocalTempksohtmlwps3B92.tmp.jpg
file:///C:UsersxunweiAppDataLocalTempksohtmlwps3BE1.tmp.jpg
操作过程
– 注册设备。将设备结构体放到平台文件中,会自动注册设备,不用去调用注册设备的函数。
– 在Kconfig文件中添加编译HELLO设备的宏定义(前面教程中已经添加)
– 配置menuconfig中的HELLO宏定义,生成新的.config文件
– 生成新的zImage
注册完之后在虚拟平台总线下可以查到注册的设备
– ls /sys/devices/platform/驱动注册
驱动注册
– 很重要,牢牢掌握,以后写任何Linux驱动都会用到 实验
– 在mini_linux_module的基础上添加驱动注册部分驱动注册——头文件
驱动注册使用结构体platform_driver,该结构体在头文件“vim
include/linux/platform_device.h”中 驱动注册platform_driver_register,驱动卸载函数
platform_driver_unregister也在这个头文件中– 这两个函数的参数都只有结构体platform_driver
驱动注册——注册结构体

file:///C:UsersxunweiAppDataLocalTempksohtmlwps3BF2.tmp.jpg
驱动注册——注册结构体
驱动常见的几种状态,初始化,移除,休眠,复位
– 就像PC一样,有的驱动休眠之后无法使用,有的可以使用;有的系统唤醒之后,驱动需要重新启动才能正常工作,也有直接就可以使用等等
probe函数
– platform_match函数匹配之后,驱动调用的初始化函数 remove函数
– 移除驱动函数 suspend函数
– 悬挂(休眠)驱动函数 resume函数
– 休眠后恢复驱动 device_driver数据结构的两个参数
– name和注册的设备name要一致– owner一般赋值THIS_MODULE
实验
在mini_linux_module的基础上添加驱动注册部分
编译,在开发板上加载和卸载驱动
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-3-29 23:20 , Processed in 0.110662 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.