字符设备驱动开发基础

一.  简介

本文简单了解一下,在字符设备驱动开发开始前对其一些基本认识。简单了解一下,应用程序与驱动的交互原理,以及字符设备驱动开发流程。

二.  字符设备驱动开发流程

1.  Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx(xxx 是具体的驱动文件名字)的文件进行相应的操作即可实

现对硬件的操作。

例如,/dev/led。应用程序调用open函数打开设备,比如 led。通过write函数向/dev/led写数据,假如 1表示打开,写 0表示关闭。如果要关闭设备,那么就是 close()函数。

2.  编写驱动的时候,也需要编写驱动对应的open、close,write函数。例如,字符设备驱动file_operations 结构体,这个结构体就描述了字符设备驱动操作的一个集合。

3. 驱动是分驱动框架的,要按照驱动框架来编写。

驱动最终是被应用调用的,在写驱动的时候要考虑应用开发的便利性。

驱动是分驱动框架的,要按照驱动框架来编写,对于字符设备驱动来说,重点编写应用程序对应的open、close、read、write() 等函数。

三.  应用程序和驱动的交互原理

1.  驱动做了什么?

驱动就是获取外设、或者传感器数据,也会控制外设。将一些数据会提交给应用程序。

Linux驱动编译既要编写一个驱动,还要我们编写一个简单的测试应用程序,APP。

单片机下驱动和应用都是放到一个文件里面,也就是杂糅到一起。Linux下驱动和应用是完全分开的。

2.  用户空间(用户态)和内核空间(内核态):

Linux操作系统内核 和驱动程序 运行在内核空间,应用程序运行在用户空间。

3.  应用程序和驱动的交互

应用程序想要访问内核资源,怎么办?

有三种方法:系统调用、异常(中断)和陷入。

应用程序不会直接调用系统调用,而是通过API函数来间接的调用系统调用,比如POSIX、API和C库等。unix类操作系统中最常用的编程接口就是POSIX。

每个系统调用都有一个系统调用号。系统调用处于内核空间,应用程序无法直接访问,因此需要“陷入“到内核,方法就是软中断。陷入内核以后还要指定系统调用号。

应用程序的系统调用如下结构图所示:

可以看出,左边一列调用关系:应用程序直接进行的系统调用,例如,open() 函数。

右边一列调用关系:应用程序首先调用 C库里面的函数,C库中的函数最终调用系统调用函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据爬虫:获取申万一级行业数据

目录 1. 获取访问接口 2. 链接网址 3. 链接名单 免责声明:本文由作者参考相关资料,并结合自身实践和思考独立完成,对全文内容的准确性、完整性或可靠性不作任何保证。同时,文中提及的数据仅作为举例使用,不构成推荐…

网站高性能架构设计——高性能数据库集群

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能数据库简介 1.高性能数据库方式 读写分离:将访问压力分散到集群中的多个节点,没有分散存储压力 分库分表&…

Unity_使用FairyGUI搭建登录页面

Unity_使用FairyGUI搭建登录页面 1. 使用FairyGUI准备一个UI界面,例如:以下登录 2. 发布导出(发布路径设置为Unity的Asset下任何路径) 3. Unity编辑器安装FairyGUI包资源(在资源商店找见并存储为我的资源,…

百度智能云战略与咨询高级总监詹颖:每个人都能在大模型驱动的数字化生态中找到立足之地

“ 大模型是皇冠上的明珠。 ” 整理 | 王娴 编辑 | 云舒 出品|极新 2023年11月28日,极新AIGC行业峰会在北京东升国际科学园顺利召开,百度智能云战略与咨询高级总监詹颖女士在会上做了题为《生成式 AI 驱动企业应用创新》的演讲。 重点…

了解宝宝健康第一步:做好华大基因无创产前筛查检测

近年来,高龄产妇明显增加,多因素的影响导致出生缺陷发生率呈总体上升趋势,出生缺陷已经成为重大公共卫生问题之一,更是影响人口质量的重要风险因素。孕前、孕期到产后的出生缺陷综合防控三级体系中,做好产前筛查是阻断…

通过fpmarkets与自媒体导师学习经验,避免踩坑

举一个例子,从fpmarkets与自媒体导师学习的负面经验,避免各位投资者踩坑。这个要从fpmarkets刚踏入外汇交易市场的第二年说起,偶然的一次,当fpmarkets看到一个可以不用花钱就可以学习交易培训课程时,就如同中了大奖一样…

【STM32单片机】贪吃蛇游戏设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用IIC OLED模块、按键等。 主要功能: 系统运行后,OLED显示游戏界面,可通过K1-K4键控制蛇的方向,当蛇吃…

【腾讯云 HAI域探秘】借助高性能服务HAI快速学会Stable Diffusion生成AIGC图片——必会技能【微调】

目录 Stable Diffusion基本使用方法 学术加速测试 配置中文插件 Prompt与Negative prompt 采样器说明 人像生成 水光效果 微调的使用 图像生成种子/seed使用 附加/Extra 微调实例测试 图生图微调 ​编辑 使用蒙版微调 Stable Diffusion基本使用方法 环境配置&am…

【机器学习】亚马逊云科技基础知识:以推荐系统为例。你知道机器学习的关键所在么?| 机器学习管道的各个阶段及工作:以Amazon呼叫中心转接问题为例讲解

有的时候,暂时的失利比暂时胜利要好得多。 ————经典网剧《mao pian》,邵半仙儿 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP

大象慧云:从设立分部到迁移总部 与贵阳贵安共筑税务数字化未来

近年来,贵阳贵安着力提升政务服务水平,通过擦亮“贵人服务”品牌,持续优化营商环境。在这样的环境下,再加上“大数据基因”,对于希望在大数据领域大展拳脚的企业来说,贵阳贵安无疑成为了一个极具吸引力的选…

【ZYNQ】AXI4总线接口协议学习

建议翻看着底部的参考文档资料和本文一起辅助阅读 本文带你详细的了解AXI总线协议,并且基于官方手册,能够提高你的手册阅读能力。 什么是AXI AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM 公司所提…

自激活T细胞为肿瘤免疫治疗提供新思路—高分文献分享

CD28是在所有小鼠和人类T细胞上表达的共刺激受体,用来调节T细胞受体(TCR) 的响应。异常的CD28 信号传导是癌症、自身免疫和病毒感染中T细胞功能障碍的决定性特征之一。早期的一些研究表明CD28对CD4 T细胞更重要,但也有越来越多的研究者发现其对CD8 T细胞…

HAT(CVPR 2023):Hybrid Attention Transformer for Image Restoration

HAT ​ 论文地址:HAT: Hybrid Attention Transformer for Image Restoration ​ 代码地址:XPixelGroup/HAT: CVPR2023 - Activating More Pixels in Image Super-Resolution Transformer 摘要 ​ 通过归因分析attribution analysis method - Local …

智能科技企业网站搭建的作用是什么

随着科学技术快速提升,各种智能产品随之而来,每个赛道里都涌入了大量企业商家,有些热门产品更是广受关注,对企业来说,形象、品牌、信息等方面需要完美呈现到用户眼前,而网站无疑是很好的工具。 企业通过【…

lwIP 细节之四:recv 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…

常用whl文件地址整理

文章目录 一、Deep Graph Library(DGL)二、torch torchvision torchaudio三、numpy四、pandas可留言其他whl文件地址,不定期更新 一、Deep Graph Library(DGL) DGL是一个专门用于深度学习图形的Python包, 一款面向图神…

代码随想录算法训练营第50天| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

JAVA代码编写 123.买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 **注意:**你不能同时参与多笔交易(你必须在再次购买前出…

HDPE硅芯管材具有优异的耐腐蚀性、耐磨损性和耐老化性

HDPE硅芯管材作为一种优质的管道材料,具有许多突出的性能。其中,其优异的耐腐蚀性、耐磨损性和耐老化性是其主要特点之一。 首先,HDPE硅芯管材具有出色的耐腐蚀性。它的高密度聚乙烯(HDPE)材料具有良好的耐腐蚀性能&a…

2023快速上手新红利项目:短剧分销推广CPS

短剧分销推广CPS是一个新红利项目,对于新手小白来说也可以快速上手。 以下是一些建议,帮助新手小白更好地进行短剧分销推广CPS: 学习基础知识:了解短剧的基本概念、制作流程和推广方式。了解短剧的市场需求和受众群体&#xff0c…

STM32F030C8读取CS1237采集模拟

STM32F030C8读取CS1237采集模拟 Chapter1 【问题解决记录】STM32F030C8读取CS1237采集模拟问题描述原因分析:解决方案: Chapter2 CS1237 STM32控制程序以及原理图需要注意事项 Chapter1 【问题解决记录】STM32F030C8读取CS1237采集模拟 原文链接&#x…