100ask 韦东山 驱动大全 子系统 v4l2 学习笔记

总结 数据采集流程 设置好长宽之后,摄像头可能不支持,需要检查长宽参数是否被修改。 app 根据自身处理能力的快慢,指定申请的 buffer 数量。 一般使用链表的形式来组织 buffer,app 从 out 链表中拿数据,拿完之后,放入 in 链表;驱动从 in 链表中拿到 buffer,...

3399 gentoo

找到可以参考的资料就两个,一个是 firefly, 一个是 pine64。 https://github.com/54shady/kernel_drivers_examples/tree/Firefly_RK3399

100ask 韦东山 驱动大全 子系统 usb 学习笔记

总结 usb 框架 usb 每一级都可以是 hub 或者 设备,但是 hub 最多6级,第7级只能是设备。 app 可以通过两种方法来访问硬件 app -> usb device driver -> usb host driver -> host 硬件 -> devi...

100ask 韦东山 驱动大全 子系统 spi 学习笔记

总结 整体 spi 分为 soc 上面的 spi master 和 外接的 spi device. 在设备树中,spi 节点本身是 spi master, 子节点就是对应的 spi device. 加载驱动的时候,根据 compitble 识别到 spi master, 并作为 platfor...

100ask 韦东山 驱动大全 子系统 pci 学习笔记

总结 pci 和 pcie 都是对地址进行转换,转换情况需要上电后,写到配置寄存器中。一般这种中间设备成为 pci 桥,相关驱动是 pci_host. pci 通过地址线的方式,来选通桥后的设备。 pcie桥本身内部端口有地址,端口后只接一个设备,选通的其实是端口。 针对通过本级 pci/pc...

100ask 韦东山 驱动大全 子系统 uart 学习笔记

总结 分层 主要分为三层, 最下面的厂商硬件相关驱动 drivers\tty\serial\imx.c 中间的行规层 drivers\tty\n_tty.c, 用于决定换行等特殊字符是否生效 上层 tty drivers\tty\tty_io.c 结构体 uart 驱动中关键结构体 ua...

100ask 韦东山 驱动大全 子系统 interrupt 学习笔记

异常与中断的概念及处理流程 异常向量表 _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _d...

100ask 韦东山 驱动大全 子系统 gpio 学习笔记

GPIO子系统视频介绍 参考资料: Linux 5.x内核文档 Linux-5.4\Documentation\driver-api Linux-5.4\Documentation\devicetree\bindings\gpio\gpio.txt Linux 4.x内核文档 Linu...

100ask 韦东山 驱动大全 子系统 pinctrl 学习笔记

介绍 参考资料: Linux 5.x内核文档 Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt Linux 4.x内核文档 Documentation\pinctrl.txt Documentation\dev...

驱动开发中,某些 api 的区别和关联

字符设备注册 register_chrdev 和 cdev_init + cdev_add 是 Linux 内核中用于注册字符设备的两种不同方法。它们在 使用场景 和 实现方式 上有显著区别。 register_chrdev 特点 一次性注册: 通过一个函数调用完成字符设备的注册。 自动分...