
驱动学习笔记
文章平均质量分 83
驱动子系统
内核分析笔记
拥抱技术
展开
-
mmc子系统框架
Linux kernel把mmc,sd以及sdio三者的驱动代码整合在一起,俗称mmc子系统。源码位于drivers/mmc下。其下有三个子目录,分别是:card、core、host,其中,card用于构建一个块设备作为上层与mmc子系统沟通的桥梁;core抽象了mmc,sd,sdio三者的通用操作;host则是各类平台上的host驱动代码,包括如TI Omap的omap_hsmmc,三星的s3cmci等。具体的SOC,会根据实际情况再次封装(比如rk3288采用新思designwave的IP),就重新封装原创 2022-04-20 11:51:49 · 2475 阅读 · 2 评论 -
驱动程序基石:异步通知
驱动程序基石:异步通知原创 2022-09-13 10:08:10 · 760 阅读 · 3 评论 -
驱动程序基石:POLL机制
Linux APP 系统调用,基本都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用 open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。对于系统调用 poll 或 select,它们对应的内核函数都是 sys_poll。分析sys_poll,即可理解 poll 机制。大致的调用流程如下所示:原创 2022-09-12 20:11:41 · 1120 阅读 · 0 评论 -
块设备驱动框架的总结(flash为例)
整体框架:flash驱动的编写流程:原创 2022-04-16 09:23:34 · 447 阅读 · 0 评论 -
字符驱动、输入子系统、platform总线、LCD驱动、USB驱动
大部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大容量的SDRAM是需要初始化后才能使用的,这点大家务必要搞清楚。这点在我做过移植的处理器:s3c2410(arm920t),s3c2440(arm920t),at91rm9200(arm920t),at91sam9260(arm926t)上都是这样的。在s3c原创 2021-10-09 11:08:49 · 3245 阅读 · 1 评论 -
RTC实时时钟驱动
linux中的RTC驱动位于drivers/rtc下,里面包含了许多开发平台的RTC驱动,我们这里是以S3C24xx为主,所以它的RTC驱动为rtc-s3c.c30.Linux-RTC驱动分析及使用 - 诺谦 - 博客园1.进入./drivers/rtc/rtc-s3c.c还是首先进入入口函数,如下图所示:这里注册了一个“s3c2410-rtc”名称的平台设备驱动而“s3c2410-rtc”的平台设备,在./arch/arm/plat-s3c24xx/dev.c里定义了,但在这没有注原创 2021-11-17 21:24:47 · 1584 阅读 · 0 评论 -
IIC驱动
1. I2C体系结构分析1.1首先进入linux内核的driver/i2c目录下,如下图所示:其中重要的文件介绍如下:1)algos文件夹(algorithms)里面保存I2C的通信方面的算法2)busses文件夹里面保存I2C总线驱动相关的文件,比如i2c-omap.c、 i2c-versatile.c、 i2c-s3c2410.c等。3)chips文件夹里面保存I2C设备驱动相关的文件4)i2c-core.c这个文件实现了I2C核心的功能(I2C总线的初...原创 2021-11-17 11:48:23 · 2563 阅读 · 0 评论 -
内存控制器(以位宽为16的NOR FLASH举例)
CPU 执行的指令:“ldr r0,[某个地址 A]”,ldr 是装载 4个字节,这是从这个地址里读取某个数据存到 r0 里去。A 地址的 1 字节数据。A+1 地址的 1 字节数据。A+2 地址的 1 字节数据。A+3 地址的 1 字节数据。即, ldr 是得到 4 个地址上的数据共4字节。“ ldb r0,[某个地址B]”, ldb是装载1个字节。对CPU来说一个地址对应的数据是 1 字节。B 地址的 1 字节数据。例1:Mov R1,#0Ldr R0,[R1]从R1把的地方原创 2021-11-15 21:40:16 · 1120 阅读 · 0 评论 -
第19课:nand flash驱动
1、参考自带的nand flash驱动,位于drivers/mtd/nand/s3c2410.c中1.1 为什么nand在mtd目录下?因为mtd(memory technology device存储技术设备)是用于访问memory设备(ROM、flash )的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。1.2首先来看s3c2410.c的入口函数:static int __init ...原创 2021-10-24 10:43:05 · 2715 阅读 · 0 评论 -
第18课:块设备驱动--用内存模拟磁盘
框架:app: open, read, write, "1.txt"---------------------------------------------------------------- 文件的读写文件系统: vfat, ext2, ext3, yaffs2, jffs2 (把文件的读写转换为扇区的读写)----------------------ll_rw_block------------------------...原创 2021-10-23 09:59:34 · 861 阅读 · 0 评论