随笔分类 -  linux 驱动

摘要:使用海思平台应该知道通常会在uboot中设置blkdevparts=mmcblk0:512K(boot),512K(env),512K(bl31),13M(kernel),96M(rootfs) 类似参数表示emmc的分区,这个blkdevparts参数包含bootargs参数中。bootargs参 阅读全文
posted @ 2025-04-09 17:52 YYFaGe 阅读(368) 评论(0) 推荐(0)
摘要:sd、emmc都是在mmc基础上演化而来的,sdio是在sd上发展而来的。他们三则有很多相似之处。在linux中都是在mmc框架中处理。sdio卡主要是使用sdio接口的wifi、蓝牙等设备。 一、卡识别 在卡识别阶段,主控会用默认电压(所有sd卡都支持的电压)和默认时钟频率(所有sd卡都支持的频率 阅读全文
posted @ 2025-02-08 17:13 YYFaGe 阅读(386) 评论(0) 推荐(0)
摘要:tty驱动中的结构体 tty中的结构体关系比较复杂,整理了下面的关系图: 阅读全文
posted @ 2023-08-25 14:44 YYFaGe 阅读(60) 评论(0) 推荐(0)
摘要:注:该文档对应的linux版本为linux 4.9,以arm AMBA-PL011的uart驱动为例 参考文章:https://blog.csdn.net/lizuobin2/article/details/51773305?ops_request_misc=%257B%2522request%25 阅读全文
posted @ 2023-08-14 13:59 YYFaGe 阅读(811) 评论(0) 推荐(0)
摘要:linux/include/fs.h struct fasync_struct { spinlock_t fa_lock; int magic; int fa_fd; struct fasync_struct *fa_next; /* singly linked list */ struct fil 阅读全文
posted @ 2023-01-16 18:42 YYFaGe 阅读(128) 评论(0) 推荐(0)
摘要:一、网络设备基本结构 网络设备的系统框图如下所示: mac:工作在网络模型的数据链路层,通过rgmii或rmii接口连接phy,mac控制器中的mdio控制器提供mdio接口,用于访问phy寄存器。 phy:工作在网络模型的物理层,是IEEE802.3规定的一个标准模块。IEEE802.3规定了 地 阅读全文
posted @ 2022-05-19 18:01 YYFaGe 阅读(5271) 评论(0) 推荐(1)
摘要:一、pci/pcie体系架构概述 pci和pcie详细介绍参考《PCI Express体系结构导读》和https://www.cnblogs.com/YYFaGe/p/15408417.html 1.1 PCI总系体系结构 x86架构的PCI总线结构如下所示: 在soc架构的芯片中,HOST主桥则集 阅读全文
posted @ 2022-04-26 18:33 YYFaGe 阅读(9504) 评论(0) 推荐(2)
摘要:i2c接口使用 下面以hi3559a为例说明如何i2c接口,例如要在i2c_bus0下挂一个ap3216c传感器,向i2c_bus0节点添加ap3216c节点即可。如下所示: 向\Hi3559AV100_SDK_V2.0.3.0\package\osdrv\opensource\kernel\lin 阅读全文
posted @ 2022-04-01 17:59 YYFaGe 阅读(296) 评论(0) 推荐(0)
摘要:一、简介 设备树上的设备节点都是以platform_device的形式加载到系统中的,内核中有设备对应的驱动platform_driver 。 linux 自动注册了一个平台总线和平台设备分别平台总线是/sys/bus/platform,平台设备是/sys/devices/platform。其实平台 阅读全文
posted @ 2022-03-23 09:55 YYFaGe 阅读(597) 评论(0) 推荐(0)
摘要:linux 通过device和driver分别管理系统中的设备和驱动,用bus将设备和驱动关联起来,bus可以看成是设备和驱动的媒介,可以匹配设备和驱动。这样设备和驱动可以独立加载,互不影响。sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。我们都知道设备和对应 阅读全文
posted @ 2022-03-08 11:18 YYFaGe 阅读(2105) 评论(0) 推荐(0)
摘要:一、linux MMC驱动pr_debug开启方法 linux的的mmc驱动在kerner/drivers/mmc 中,mmc驱动源码中有pr_debug打印信息,这个打印信息默认是不打印的,如果要打印则需要手动开启。pr_debug函数定义在kernel/include/linux/printk. 阅读全文
posted @ 2022-02-17 16:35 YYFaGe 阅读(1486) 评论(0) 推荐(0)
摘要:1、查看usb设备信息: cat /sys/kernel/debug/usb/devices 阅读全文
posted @ 2021-09-08 09:50 YYFaGe 阅读(342) 评论(0) 推荐(0)
摘要:一、i2c总线及linux对i2c总线的描述 一个i2c总线如下图所示,一般一个主控制器会挂载若干个i2c设备。 i2c总线分为两部分,一部分是soc中的i2c控制器,另一部分是i2c设备。linux中用了四个结构体来描述这两个部分,分别是: struct i2c_adapter 代表soc的i2c 阅读全文
posted @ 2021-03-17 14:38 YYFaGe 阅读(534) 评论(0) 推荐(0)
摘要:一、早期计算机的终端设备 早期计算机通常用电传打印机充当终端设备,终端设备的作用就是接受用户的输入并传递给计算机,接受计算机的反馈返回给用户。如下图所示: 后来电传打印机被键盘和显示器取代,linux为了支持这种外部终端设备的连接,提供了终端设备接口“tty”,下面以海思hi3559开发板为例说明串 阅读全文
posted @ 2021-03-08 12:02 YYFaGe 阅读(335) 评论(0) 推荐(0)
摘要:一、nand flash 和emmc的区别 nand flash试一块存储介质,需要外接一个nand flash控制器来驱动nand flash,nand flash控制器一般集成在soc中。控制器集成了nand flash读写协议、时序、ecc等,使用前需要先配置好控制器,然后通过控制器开驱动na 阅读全文
posted @ 2021-02-23 10:33 YYFaGe 阅读(1084) 评论(0) 推荐(0)
摘要:一、linux驱动的分离和分层 为提高linux驱动可重用性和可移植性。下图以i2c驱动为例说明linux驱动的分离和分层思想。由于不同芯片的i2c控制器不同,所以不同厂家会提供自己的i2c控制器驱动,不同设备它们的i2c接口驱动也不一样,所以不同设备厂家也会提供各自的设备驱动,linux则提供统一 阅读全文
posted @ 2021-02-22 11:41 YYFaGe 阅读(503) 评论(0) 推荐(0)
摘要:一、设备树作用 设备树存在的目的是将soc的uart、i2c、spi等外设信息以设备树文件的形式独立出内核,系统启动时,内核会将设备树读入。 二、dts、dtsi、dtb、dtc关系 设备树有.dts和.dtsi两种文件形式,.dtsi是.dts的公共部分,被dts包含。dtc是dts的编译器,将d 阅读全文
posted @ 2021-02-19 11:56 YYFaGe 阅读(1083) 评论(0) 推荐(0)