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

原创 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
2447
2

原创 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
2551

原创 第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
2686

原创 第18课:块设备驱动--用内存模拟磁盘
框架:app: open, read, write, "1.txt"---------------------------------------------------------------- 文件的读写文件系统: vfat, ext2, ext3, yaffs2, jffs2 (把文件的读写转换为扇区的读写)----------------------ll_rw_block------------------------...
2021-10-23 09:59:34
852

原创 字符驱动、输入子系统、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
3230
1
原创 驱动程序基石: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
1107
原创 rockchip的adc按键驱动
设备树:adc-keys { compatible = "adc-keys"; io-channels = <&saradc 2>; //adc选用的是saradc通道2 io-channel-names = "buttons"; poll-interval = <100>; keyup-thr};
2022-04-12 21:09:44
4405
原创 rockchip的pwm驱动框架
首先看设备树的pwm节点:vi rk3399.dtsi:pwm0: pwm@ff420000 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420000 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "active"; pinctrl-0 = <
2022-04-12 20:22:28
1050
原创 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
1568
原创 内存控制器(以位宽为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
1107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人