| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> linux系统-树莓派内核驱动 -> 正文阅读 |
|
[系统运维]linux系统-树莓派内核驱动 |
驱动模块概述用户空间linux 一切皆文件 对于文件的API的控制有:open、read、write 这些API能打开不同硬件设备,并控制,是因为不同设备有不同的设备驱动 编辑设备驱动就只有两个功能:
2、调用驱动 驱动实现路径: 用户层:open(”/dev/pin4”,O_RDWR)——> 从用户空间到内核空间会发生一次软中断,中断号:0x80 为了快速响应用汇编去实现了sys_call 内核层:sys_call——> sys_call去调用VFS里的sys_open VFS:sys_open——> sys_open根据设备名,去找到对应的主设备号,次设备号,再去找到pin4引脚的设备驱动里的open 驱动pin4:open——> open就的对寄存器的操作,驱动IO口 APP应用层APP: CP指令,FTP项目,实现各种功能的应用层的软件 APP需要基础: C语言,C库 C库功能: 文件,进程,进程间通信,线程,网络,界面(GTK) 打开设备: fd=open(”/dev/pin4”,O_RDWR); 1、需要有设备文件名,pin4
C library & C库提供了APP支配内核工作的接口,由此处封装实现各种功能 open、read、write、fork、pthread、socket
内核空间应用层open调用: 调用VFS虚拟文件系统: sys_open、sys_read、sys_write 进程、内存、线程、网络、设备驱动 设备驱动有驱动链表管理所有设备的驱动 有两个功能:
驱动程序是在内核中呈现链表的形式存在 驱动插入链表的顺序,也是通过设备号进行检索
对应的驱动控制对应的设备 硬件磁盘.txt、pin4、pin5、pin6 驱动框架应用基础的驱动框架:
static:限定作用域,限定变量只能当前文件使用,防止其它文件内也有同样的变量名之后造成冲突 可以用命令来生成设备
pin4测试驱动框架:
上层驱动程序:
printk(“pin4_write\n”); 相当于printf函数效果,只不过是需要用dmesg查看内核打印信息 启用模块编译因为是字符设备,所以需要把编写的pin4driver.c 代码C文件拷贝到内核文件里的char文件夹下 cp pin4driver.c /home/yangyingchun/SYSTEM/linux-rpi-4.14.y/drivers/char/. 模块编译: 1、因为是把驱动文件拷贝到了 /home/yangyingchun/SYSTEM/linux-rpi-4.14.y/drivers/char/ 告诉编译器,要编译该驱动文件 vi Makefile 新添加一行,添加驱动编译模块 2、编译内核驱动 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make modules 生成pin4driver.ko文件 3、拷贝驱动模块pin4driver.ko文件到树莓派 scp drivers/char/pin4driver.ko pi@192.168.1.105:/home/pi 拷贝测试程序: 转到树莓派操作 4、加载内核驱动 5、查看当前内核模块,看驱动设备模块是否加载成功 6、给驱动模块pin4driver.ko文件权限 7、执行测试程序 ./pin4test 8、查看内核打印信息 dmesg 9、卸载驱动 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:52:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |