自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】GPIO子系统

如果pinctrl子系统将一个 PIN 复用为 GPIO 的话,那么接下来要用到 gpio 子系统了。gpio 子系统顾名思义,就是用于初始化 GPIO 并且提供相应的 API 函数,比如设置 GPIO为输入输出,设置读取 GPIO 的值等。

2025-02-18 21:10:47 1186

原创 【Linux】Pinctrl子系统

许多SoC内部都包含pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。

2024-12-19 14:36:50 1345

原创 【Linux】设备树

文件.dts是一种ASCII文本格式的设备树描述,在ARM Linux上,一个.dts文件对应一个ARM的设备,一般放置在内核的/arch/arm/boot/dts/目录中。值得注意的是,在/arch/power/boot/dts/、/arch/openrisc/boot/dts/等目录中,也存在大量的.dts文件,这证明DTS不是ARM的专利。

2024-12-13 16:22:59 1124

原创 【Linux】Linux驱动的软件架构思想

所谓的"probe”,是指在Linux内核中,如果存在相同名称的device和device_driver(注:还存在其它方式),内核就会执行device_driver中的probe回调函数,而该函数就是所有driver的入口,可以执行诸如硬件设备初始化、字符设备注册、设备文件操作ops注册等动作。注1:在设备模型中,名称是一个非常重要的变量,任何注册到内核中的设备,都必须有一个合法的名称,可以在初始化时给出,也可以由内核根据“bus name + device ID”的方式创造。平台相关的数据指针。

2024-12-08 21:36:11 1098

原创 【Linux】中断与时钟

所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停当前程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自于CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。

2024-12-02 20:19:41 930

原创 【Linux】异步通知与异步I/O

异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点类似硬件的中断,实际上信号是软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。

2024-11-19 14:45:59 1220

原创 【Linux】阻塞与非阻塞I/O

tsk是进程结构体,一般是current。

2024-11-19 10:03:00 1131

原创 【Linux】并发控制

并发指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致静态。 在单CPU范围内避免竞态的一种简单而有效的办法就是进入临界区之前屏蔽系统的中断,但是在驱动编程中不值得推荐,驱动通常需要考虑跨平台特点二部假定自己在单核上运行。 中断屏蔽可以保证正在执行的内核执行路径不被中断处理程序所抢占,防止某些竞态条件的发生。具体而言,中断屏蔽将使得中断与进程之间的并发不再发生,而且,由于Linux内核的进程调度都是通过中断实

2024-11-03 01:35:49 962

原创 【Linux】字符设备驱动

cdev结构体的dev_t成员定义了设备号,为32为,其中12位为主设备号,20位为次设备号。cdev结构体的另一个重要成员定义了字符设备驱动提供给虚拟文件系统的接口函数。

2024-10-31 20:49:03 905

原创 【Linux】文件系统与设备文件

调用open函数可以打开或创建一个文件。

2024-10-28 22:39:23 981

原创 【Linux】内核模块

来修饰模块卸载函数,可以告诉内核如果相关的模块被直接被编译进内核(即build-in),则cleanup_function()函数就会被省略,直接不链进最后的镜像。#define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) /* 所有人可读,用户可读|用户组可读|其他可读 */命令卸载掉某模块时,模块的卸载函数会被自动被内核执行,完成与模块加载函数相反的功能。(函数名)”的形式被指定,一般来说,模块卸载函数完成与模块加载函数相反的功能。

2024-10-26 20:21:27 1016

原创 【Linux】 Kconfig

在编译内核时,需要配置内核,可以使用以下命令进行配置内核:配置内核方式有3种(任选其一):(3)直接修改.config使用make menuconfig命令后,就会出现下图一个配置界面,可以根据需要进行配置。

2024-10-23 09:06:41 1288 1

STM32F407 STOP模式

STM32F407 STOP模式

2023-07-08

STM32F407 PVD中断

STM32F407 PVD中断

2023-07-08

空空如也

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

TA关注的人

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