Linux驱动
_Pioneer_
这个作者很懒,什么都没留下…
展开
-
7.生成杂项设备节点
7.1 介绍杂项设备是主设备号是10的封装好了的设备。杂项设备部分初始化文件(强制编译的简单的):drivers/char/ misc.c7.2 杂项设备注册文件1.杂项设备注册头文件---------- include/linux/miscdevice.h结构体miscdevice:– .minor设备号:一般设为MISC_DYNAMIC_MINOR系统自动取– .name生成设备节点的名称:取其他名字都行– .fops指向一个设备节点文件,就是file_operations定义的结构体原创 2021-02-15 16:39:52 · 192 阅读 · 0 评论 -
6.注册驱动
6.1 介绍platform_driver结构体在头文件“vim include/linux/platform_device.h”中probe函数:platform_match函数匹配之后,驱动调用的初始化函数remove函数:移除驱动函数suspend函数:悬挂(休眠)驱动函数resume函数:休眠后恢复驱动函数结构体的两个参数:name和注册的设备name要一致,owner一般赋值THIS_MODULEplatform_driver_register(struct platform_dr原创 2021-02-15 16:28:43 · 152 阅读 · 0 评论 -
5.注册设备
5.1 介绍注册设备使用结构体platform_device,该结构体在头文件“vim include/linux/platform_device.h”中(kernel3.0路径中)5.2 添加设备到平台总线(模仿led驱动)vim arch/arm/mach-exynos/mach-itop4412.c进入平台文件。在里面查找宏定义“LEDS_CTL”,仿照着LEDS代码在它前面添加一个设备“hello_ctl”在Kconfig 中添加“HELLO_CTL”宏到 menuconfig 中将其原创 2021-02-15 16:23:47 · 349 阅读 · 0 评论 -
4.总线-设备-驱动注册
设备注册,驱动注册是对中的,为了确保代码编译进内核的。总线:ls /sys/bus/ 查看Linux总线。platform:platform是Linux总线下的虚拟总线,上面挂靠着n个设备、n个驱动。设备信息通过结构体platform_device, 驱动信息通过结构体platform_driver,每个结构体里面都有ID、name、probe(),linux通过函数platfor_match()来对比设备和驱动的name,失败则注册失败,成功则调用函数probe,进行初始化工作(注册设备节点,调用原创 2021-01-31 21:03:38 · 95 阅读 · 0 评论 -
3.makefile编译
在向内核中添加驱动的时候要完成 3 项工作,包括:1)在 Kconfig 中添加新代码对应项目的编译条件;2)将驱动源码添加到对应的目录中;3)在目录 Makefile 中文件中增加针对新代码的编译条目。3.1 编译器路径的设置进入/home/topeet/android4.0/iTop4412_Kernel_3.0,输入make,编译内核生成二进制文件。使用命令“cd”,使用命令“vim .bashrc”打开环境变量文件“.bashrc”。进入最底行,可以看到,在环境变量文件中编译器路径设置原创 2021-01-31 20:23:41 · 367 阅读 · 1 评论 -
2.menuconfig
2.1 步骤路径/home/topeet/android4.0/iTop4412_Kernel_3.0#输入: make Menuconfig输入“/”,可以进入搜索界面,查找相关项目根据查得的路径,找到该文件,进行勾选(空格键)若修改过,则生成新的“.config”文件2.2 “.config”文件和menuconfigmennuconfig相关驱动是否被勾选裁剪,最终体现在“.config”文件相关宏定义是否被注释掉。2.3 “Kconfig”文件和menuconfigLED驱动的Kc原创 2021-01-31 20:18:14 · 216 阅读 · 0 评论 -
1.第一条“hello driver”程序
1.1 相关函数printk函数例:printk(KERN_EMERG “HELLO WORLD enter!\n”);只有当日志级别小于控制台级别时,才会在控制台打印出来日志级别有8种:#define KERN_EMERG “<0>” /* system is unusable /#define KERN_ALERT “<1>” / action must be taken immediately*/#define KERN_CRIT “<2>” /* c原创 2021-01-31 20:13:51 · 111 阅读 · 0 评论