嵌入式学习59-ARM7(自动设备号和混杂设备)

2024-04-26 10:20

本文主要是介绍嵌入式学习59-ARM7(自动设备号和混杂设备),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

知识零碎:

                头文件查找:  /arm/路径下的头文件

                          linux驱动程序的编写,编译,运行过程

--------------------------------------------------------------------------------------------------------------------------------    1.编写  key_misc_driver1.c文件                                                                                                          2. 修改Makefile文件中的obj-m,填入.c文件,改为.o文件

           

 3.   make clean 清除上次生成的.o一系列文件                                                                                         make   生成新的.o系列文件                                                                                                          4.  cp   key_misc_driver1.ko  ~/nfs/rootfs                                                                                          5.  arm-linux-gcc   -oapp  main.c    交叉编译器编译                                                                          6.   内核代码   insmod    key_misc_driver1.ko       插入模块                                                              7. ./app 运行                                                                                                                                        8.  rmmod    key_misc_driver1  删除模块

简述字符设备驱动框架?                                                                                                 ←(背)

总结:

=====设备驱动初始化函数=====
(1)申请字符设备号(alloc_chrdev_region)->dev_t
(2)字符设备初始化(cdev_init)->fops<->led_dev
(3)添加设备号(cdev_add)->字符设备文件操作结构体led_dev<->dev_t
(4)创建设备结点-创建类(class_create)-类下创建设备(device_create)
(5)寄存器映射(ioremap)
(6)裸机设备初始化(led_init)

=====字符设备文件操作结构体函数=====
(1)【copy_from_user】:用户空间写入寄存器
(2)逻辑设备驱动(led_on)


=====字符设备驱动卸载函数=====
是字符设备驱动初始化函数的逆过程
                                                                                                                                 ←(背诵详细版)

=========================================================================

(Linux环境下的字符设备驱动都是围绕cdev这个结构展开的,它本身是linux系统对字符设备的抽象,所以重点就是cdev的初始化。                                                                                                    1.我们首先初始化file_operrations结构体的初始化                                                                        方便用户层在进行系统调用时进行内核调用完成对设备的控制   

 2.然后申请设备号,用alloc——chadev——region,有了设备号就可以用cdevinit进行初始化   

 3.初始化之后通过cdev——add将设备添加到内核中,这样我们就完成了cdev的初始化。)

                                                                                                                             ←(简略理解版)


 

自动获得设备号函数

alloc  chardev  region:分配字符设备区域                                                                                         *dev:设备号的数据类型(unsigned int)                                                                                          baseminor:申请的子设备号从几开始                                                                                                 count:申请子设备号的个数                                                                                                                *name: 设备起名                         

                                                                   

---------------------------------------------------------------------------------------------------------------------------------

     cdev:类型名

12(高位)   20(低位)                         

 特殊:                                                                                                                                                         所有的主设备号都是10号

           混杂设备是字符设备的一种。

这篇关于嵌入式学习59-ARM7(自动设备号和混杂设备)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1