自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 [Linux内核驱动]proc

proc是Linux上的一种虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以更改其中某些文件来改变内核的运行状态。

2024-06-30 19:26:19 325

原创 [Linux内核驱动]platform

这里只是简单介绍,更详细的内容在中。Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,为了达到所有硬件都可以按照总线设备驱动模型来实现驱动,Linux从2.6起就加入了 platform 设备驱动,在内核中建立一条虚拟的总线platform,它可以将那些不依赖于传统总线(如PCI, USB, I2C等)的设备,虚拟的挂在了platform总线上,达到统一。

2024-06-30 19:25:36 278

原创 [Linux内核驱动]数据类型

Wall。

2024-06-30 19:24:05 346

原创 [Linux内核驱动]工作队列

工作队列的使用方法和tasklet类似,但是工作队列的执行上下文是内核线程,可以调度和睡眠。使用工作队列构造下面数据表,并通过设备读取。

2024-06-30 19:23:00 354

原创 [Linux内核驱动]tasklet

使用tasklet构建下面的数据表。

2024-06-30 19:22:02 268

原创 [Linux内核驱动]中断

对于中断处理,linux将其分为两个部分——上半部(top half)和下半部(bottom half)。上半部用于完成尽量少的比较紧急的任务并在清除中断标志后进行“登记中断”的工作,即将下半部处理程序挂到该设备的下半部执行队列中。一般来说,上半部被设计成不可中断,下半部可以被新的中断打断。下半部几乎做了中断处理程序的所有工作,下半部相对来说不是非常紧急的工作,而且相对耗时,不在硬件中断服务程序中执行。实现下半部的机制一般有tasklet,工作队列、软中断和线程化irq。

2024-06-30 19:20:52 301

原创 [Linux内核驱动]定时器应用

使用定时器构造下面的数据表。

2024-06-30 19:20:00 264

原创 [Linux内核驱动]定时器

Linux内核中的定时器是通过timer_list结构体来表示的。该结构体包含了一些字段,用于记录定时器的到期时间、回调函数等。

2024-06-30 19:18:58 211

原创 [Linux内核驱动]延时

jiffies(系统时钟中断计数器)是一个全局变量,用于跟踪自系统启动以来经过的“滴答数”(tick counts)。每个“滴答”对应一个时钟中断的周期,这个周期的长度由内核配置中的 HZ 值决定。因此,jiffies 可以用来计算两个时间点之间的时间差,或者确定某个事件自上次发生以来已经过了多少时间。由于 jiffies 是一个无符号整数,因此它有一个最大值(这取决于 jiffies 的数据类型和大小)。

2024-06-30 19:17:46 374

原创 [Linux内核驱动]异步通知

异步通知:一旦设备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态,类似于“中断”。Linux中通过信号来通知应用程序。

2024-06-30 19:16:55 109

原创 [Linux内核驱动]轮询操作

关于用户空间的轮询操作,poll,select,epoll等自行查询,这里只简单介绍设备驱动中的poll函数这个函数主要进行下面两项工作poll_table。

2024-06-30 18:40:19 123

原创 [Linux内核驱动]应用

更多详细内容可以查看我的设计一个FIFO的globalmem。

2024-06-30 18:38:26 274

原创 [Linux内核驱动]等待队列

Linux内核的等待队列(Wait Queue)是重要的数据结构,与进程调度机制紧密相关联,可以用来同步对系统资源的访问、异步事件通知、跨进程通信等。在Linux中,等待队列以循环链表为基础结构,包括两种数据结构:等待队列头(wait queue head)和等待队列元素(wait queue),整个等待队列由等待队列头进行管理。

2024-06-22 12:33:23 130

原创 [Linux内核驱动]应用

创建10个同样globalmem设备,都在同一个globalmem类中,可以在下看到每个设备都使用互斥锁mutex实现基本的open,release,read,write,ioctl,llseek操作使用一个4k大小的mem存储数据。

2024-06-22 12:31:32 115

原创 [Linux内核驱动]ioctl

ioctl 是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设 ioctl() 命令的方式实现。

2024-06-21 19:31:05 429

原创 [Linux内核驱动]信号量

对应操作系统中的经典概念PV操作,信号量的值可以是0、1或n。

2024-06-21 19:28:11 246

原创 [Linux内核驱动]Makefile

【代码】[Linux内核驱动]Makefile。

2024-06-21 19:25:39 92

原创 [Linux内核驱动]自旋锁

Linux内核驱动中自旋锁的简单应用

2024-06-21 19:20:32 249

原创 [Linux内核驱动]创建字符设备

创建一个简单的字符设备

2024-06-21 19:14:58 630

原创 [Linux内核驱动]内存动态申请

Linux内核驱动的内存动态申请

2024-06-21 19:13:30 807

原创 [Linux内核驱动]导出符号

在Linux内核中,导出符号(Exported symbols)是指内核模块可以访问的符号,这些符号通常是函数或变量。当内核模块需要调用内核中定义的函数或访问内核中定义的变量时,这些函数或变量必须被导出。导出的符号可以在文件中查看。

2024-06-21 19:11:54 272

原创 [Linux内核驱动]模块参数

目录下将出现以此模块名为名的目录。当模块参数权限为0时,表示此参数不存在对应的文件节点,此时无法通过文件节点来修改参数的值。对于权限不为0的参数,目录下将出现。可以用过 module_param(参数名,参数类型,参数读/写权限)的形式向模块传递参数,如果不传递,参数将使用模块内定义的缺省值。目录,里面包含以参数名为名的文件,文件中保存了参数的值。除此之外,模块也可以拥有参数数组,形式为。在装载内核模块是,用户可以通过。为模块定义一个参数。对于被内置的模块,无法。更多内容可以查看我的。

2024-06-21 19:01:43 243

原创 [Linux内核驱动]模块的加载和卸载

最简单的内核模块,包括内核模块的加载和卸载。

2024-06-21 18:59:52 260

原创 Linux设备驱动platform驱动

更全面的内容可以查看我的提供了示例代码。

2024-05-29 15:57:36 562

原创 Linux设备驱动PCI总线

PCI(外部设备互联)总线是有Intel推出的一种局部总线,作为一种通用的总线接口标准PCI Host Bridge(PCI桥):PCI Host Bridge是PCI总线的起始点,它连接主机系统的CPU和内存与PCI总线之间的桥接器。PCI主机桥负责管理和控制PCI总线,并提供对PCI设备的访问和配置功能。PCI Bridge(PCI桥接器):PCI Bridge用于连接不同的PCI总线段,扩展PCI总线的拓扑结构。

2024-05-29 15:55:18 402

原创 Linux设备驱动I2C

更全面内容可以查看我的。

2024-05-29 15:52:44 529

原创 Linux设备驱动SPI总线

更全面内容可以查看我的SPI 驱动的框架与I2C类似,都是分为主机控制器驱动和设备驱动,我们需要实现的是具体设备的驱动,主机控制器的驱动由Linux内核实现,也需要了解。

2024-05-29 15:48:55 381

原创 Linux内核驱动USB总线

更多内容可以查看我的Linux USB分为主机控制器(Host Controller)和USB设备控制器(UDC)。所有的USB传输,都是从USB主机这方发起的;USB设备没有"主动"通知USB主机的能力。

2024-05-29 15:40:39 932

原创 Linux input输入子系统

上面结构体的链表的关系如下面两图所示(这个图好难画-.-,就在网上找了一个,原文连接当我们使用注册一个设备的时候,就会将设备添加到链表中,同时便利进行匹配,匹配成功就会调用函数进行连接input_event: 表示一个输入事件evdev_client: 表示一个用户空间的应用程序或实体设备与输入设备之间的连接evdev: 输入设备驱动程序的接口实现,应用程序可以通过evdev与evdev_client之间的交互,实现输入事件的读取和输入。

2024-05-29 15:28:32 1234

原创 Linux设备驱动开发

Linux设备驱动开发,字符设备驱动,块设备驱动

2024-05-18 19:50:24 218

原创 基于STM32的PWM呼吸灯

使用正点原子的STM32精英板(STM32F103ZET6)

2023-12-04 11:46:00 420

原创 ubuntu切换内核版本

在最后一行加入2. 更新配置。

2023-12-04 11:34:43 1203

原创 【问题解决】esp32烧录报错rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2)) waiting

在 ESP32 的芯片引脚图中,GPIO0 引脚位于芯片的第19号引脚,对应开发板上的 D3 引脚。需要注意的是,如果您在将 GPIO0 引脚连接到 GND 引脚时,同时按下了 ESP32 开发板上的 RESET 按钮,ESP32 将进入串口下载模式,以等待程序的烧录。因此,在进行串口下载时,通常需要将 GPIO0 引脚连接到 GND 引脚,以将 ESP32 切换到上传程序模式。我的开发板上并没有D3引脚,最终通过关闭串口助手,并重新烧录,按下RST,在打开串口助手后成功。

2023-12-04 11:32:42 2991 1

原创 基于Qt5开发的停车场管理系统

车牌识别使用的是百度智能云的车牌识别AI数据库使用的是华为云的云数据库。

2023-12-02 15:31:55 1578

原创 D1-H哪吒开发板GPIO使用

简要介绍的D1-H开发板GPIO的使用,给出了使用GPIO的c语言函数

2023-12-02 14:17:34 425

原创 ubuntu报错:由于没有公钥,无法验证下列签名

ubuntu系统,在执行。可以执行下面命令解决。

2023-12-02 13:13:58 1114 1

原创 基于STM32的温室控制系统

使用正点原子精英板(STM32F103ZET6),开发的温室控制系统,详细介绍了引脚配置和使用方法,并附赠源码

2023-12-02 12:44:20 982

原创 在ubuntu上安装/卸载libreoffice

添加官方PPA安装。

2023-12-01 14:49:32 876 1

原创 在ubuntu上挂载WebDAV

重新登录以使更改生效。可以注销并重新登录,也可以使用以下命令重新启动。不在当前用户的用户组列表中,则需要将其添加到该列表中。工具挂载 WebDAV 文件共享了。

2023-12-01 14:21:38 1749 1

原创 在docker上搭建D1-H哪吒开发板环境

使用docker创建的ubuntu14.04容器搭建D1-H哪吒开发板环境,对一些可能出现的错误给出了解决方法

2023-11-25 13:28:50 453

基于Qt5开发的停车场管理系统源码

> 车牌识别使用的是百度智能云的车牌识别AI > 数据库使用的是华为云的云数据库 ## 功能 - 车辆进入便道需要识别车辆的车牌号码。 - 记录从便道进入停车场的车辆的信息,比如车辆的车牌号码、入场时间。 - 车辆离场时,需要识别车辆的车牌号码,计算离场时间并计费;如便道有车,开始驱动车辆入场。 - 计费定价维护 - 统计功能:车场车辆数、空车位数量、便道车数量;时间段内收费总额;指定车进出记录。 - 维护功能:计费方式维护。

2023-12-08

基于STM32的温室控制系统

使用正点原子精英板(STM32F103ZET6),开发的温室控制系统,详细介绍了引脚配置和使用方法,并附赠源码

2023-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除