自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux驱动笔记-WK2124驱动分析

probe函数中的内容设置进程调度参数。sched_param = { .sched_priority = MAX_RT_PRIO / 2 }设置spi_device:通信字长、SPI_MODE_0(WK2124只支持模式0)、设置SPI通信速率,spi_setup()初始化spi_device。申请WK2124要用的GPIO引脚cs、irq、rst。测试WK2124。初始化kthread_worker、kthread_work、设置task_struct进程调度参数。uart_registe

2024-08-29 10:50:33 194

原创 linux驱动笔记-uart驱动

uart_register_driver用于注册UART设备,实际上就是tty_driver的注册,都是将uart的参数传递给tty_driver,后注册字符设备、分配设备文件、将驱动注册到tty_driver链表中。每一个uart端口对应着一个uart_state,该结构体将uart_port与对应的circ_buf联系起来。uart_port存储的是与UART串口硬件相关的信息,需要芯片厂家定义自己的 uart_port 结构并填充它。

2024-08-25 20:04:09 271

原创 linux驱动笔记-tty驱动

struct tty_driver用来描述一个tty驱动,定义在include/linux/tty_driver.h。

2024-08-23 21:31:00 147

原创 linux驱动笔记-gpio子系统

gpio_chip用于抽象一个gpio控制器,包含struct gpio_devic和一系列gpio操作函数,控制器驱动需要实现这些gpio操作函数,将其注册到gpiolib,供gpiolib调用。

2024-08-22 21:02:18 161

原创 linux驱动笔记-pinctrl子系统

pinctrl_dev用于抽象一个pinctrl controller,其中包含pinctrl_desc用于描述具体的pinctrl controller。

2024-08-22 10:42:48 249

原创 linux设备驱动-input子系统

input_dev表示一个输入设备,其中的evbit、keybit表示事件类型和按键值。

2024-08-19 16:28:33 126

原创 linux驱动笔记-spi驱动

spi_controller代表一个spi控制器,其中包含device结构体,spi_message结构体。主机驱动中还需要填充spi_master结构体中的。

2024-08-19 10:18:06 232

原创 linux驱动笔记-device_node生成platform_device

一般情况下只针对根节点下的子节点转换,子节点必须包含compatible属性,子节点的子节点如果不包含compatible属性则不转换。

2024-08-18 11:20:11 135

原创 linux驱动笔记-设备树解析device_node

setup_arch()函数中三个主要函数用于对设备操作:

2024-08-18 11:04:23 235

原创 linux驱动笔记-字符设备驱动

linux中struct cdev来表示一个字符设备。cdev中包含几个重要成员,name、file_operations、dev_t。name用来表示字符设备名称,file_operations表示操作集向用户空间提供操作接口,dev_t代表设备号,前12位代表主设备号,后20位代表次设备号。

2024-08-16 22:03:18 184

原创 linux驱动笔记-I2C驱动

struct i2c_adapter代表一个i2c控制器,本质上也是一个设备,所以包含struct device,其中包含重要成员struct i2c_algorithm,i2c_algorithm 中的master_xfer()用来实现i2c数据通信方法。

2024-08-16 22:02:13 177

原创 linux设备驱动-platform

struct platform_device中包含三个重要属性:const char *name、struct device dev、struct resource *resource。device结构体包含bus_type类型结构体,bus_type结构体实现match()函数,用于匹配设备和驱动。

2024-08-16 20:32:17 158

原创 linux设备驱动笔记--内核定时器

内核版本4.19.132 照着宋宝华LINXU设备驱动中定时器的初始化方法 init_timer编译报错,查看timer.h发现没有这个函数。

2024-06-10 15:52:07 115

原创 linux设备驱动笔记--中断

1)根据中断来源,内部中断和外部中断,内部中断的中断源来自CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。2)根据中断是否可以屏蔽,中断可分为可屏蔽中断与不可屏蔽中断(NMI),可屏蔽中断可以通过设置中断控制器寄存器等方法被屏蔽,屏蔽后,该中断不再得到响应,而不可屏蔽中断不能被屏蔽。3)根据中断入口跳转方法,中断可分为向量中断和非向量中断。

2024-06-10 15:35:57 308

原创 linux设备驱动笔记--异步通知

异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。

2024-06-08 22:08:29 578

原创 linux设备驱动笔记--阻塞与非阻塞I/O

tsk一般为current,指当前进程。

2024-06-08 14:53:56 662

原创 linux设备驱动笔记--避免竞态方法

1.自旋锁实际上是忙等待,锁不可用时,cpu一直循环执行“测试并等待”,直到获得锁。因此,只有在占用锁的时间极短的情况下,使用自旋锁才是合理的。当临界区很大,或有共享设备的时候,需要较长时间占用锁,使用自旋锁会降低系统的性能。2.自旋锁可能导致系统死锁。引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的CPU想第二次获得这个自旋锁,则该CPU将死锁。3.在自旋锁锁定期间不能调用可能引起进程调度的函数。

2024-06-06 20:49:18 212

原创 linux驱动--Regmap框架(基于lm75b温度传感器)

具体驱动程序可参考/driver/hwmon/lm75.c。

2024-05-28 16:18:21 592

原创 设备树range问题

驱动程序中获取到了节点中寄存器的值,使用of_iomap实现虚拟地址映射一直报错,设备树中led_test节点添加了一条range属性就好了。用野火鲁班猫2实现设备树控制led灯实验时,设备树led_test节点中添加了reg属性。

2024-03-19 21:14:57 172

原创 RK3399 uboot命令添加问题

保存文件,再编译uboot,烧写如开发板就可以使用加入的命令或启用相关配置项。

2023-09-23 20:08:19 160 3

空空如也

空空如也

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

TA关注的人

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