- 博客(13)
- 收藏
- 关注
原创 mmc:uboot下emmc的调试命令
用beyond compare比较result.bin和result_rd.bin,如果二者二进制一致,则功能测试正常。从仿真器中导出DDR 0x8000000处的数据到windows文件result_rd.bin。从仿真器加载result.bin(任意bin文件)到DDR 0x10000000处。将之前加载的bin文件写入mmc中刚才擦除的block中,长度为1008。将之前写入mmc block中的数据读出到DDR 0x8000000处。擦除从第4096个block开始的1008个block。
2022-11-11 19:26:53 3064 1
原创 Linux DMA子系统(3):DMA设备驱动(consumer)
上文从DMA控制器驱动的角度去分析了DMA Engine,即从provider的角度,本文将从需要使用DMA传输的设备驱动的角度,即consumer的角度去分析DMA Engine,看看DMA Engine为client driver提供了哪些功能和API。
2022-09-22 20:48:27 2776
原创 Linux DMA子系统(2):DMA控制器驱动(provider)
本文将从DMA控制器驱动(provider)的角度来介绍DMA Engine,包括重要的结构体和API接口。DMA控制器驱动主要作用是管理channel并响应client driver(consumer)的传输请求并控制DMA 控制器执行传输。
2022-09-22 16:45:23 2000
原创 Linux DMA子系统(1):DMA Engine体系结构
DMA(direct memory access),即不经过CPU,直接访问内存。因为不管是memory和memory之间还是memory和设备之间进行数据搬运,对CPU来说都是枯燥乏味的,且非常浪费CPU的时间,造成CPU无法及时处理一些实时的事件。因此,为了解放CPU,可以让CPU在搬运数据的这段时间可以去做更有意义的事情,工程师们就设计出来一种专门用来搬运数据的器件,即DMA控制器,让它来协助CPU进行数据搬运工作,下图是DMA的硬件示意图。
2022-09-21 17:48:01 2543
原创 Linux SPI子系统(4):SPI设备驱动层
前面介绍了SPI体系结构中的SPI核心层以及SPI控制器驱动层,现在介绍下最后一个组成,即SPI设备驱动层。我们用一个SPI接口的nor flash设备驱动进行分析。
2022-09-16 11:35:53 1196
原创 Linux SPI子系统(3):SPI控制器驱动层
SPI控制器驱动是对SPI硬件体系结构中控制器端的实现,本文以路径为drivers/spi/spi-st-ssc4.c的SPI控制器驱动为例,简单分析下SPI控制器驱动。
2022-09-15 21:13:37 740
原创 Linux SPI子系统(2):SPI核心层
上次简单介绍了下Linux SPI子系统的系统结构,主要有3部分组成,分别是SPI核心、SPI总线驱动(控制器驱动)以及SPI设备驱动。SPI核心层代码位于drivers/spi/spi.c,头文件位于include/linux/spi/spi.h,SPI核心提供了SPI总线驱动和设备驱动的注册、注销方法,并提供一些需要控制器驱动实现的回调函数。本文主要介绍SPI核心层,包括重要的数据结构和API。
2022-09-15 17:01:12 2290
原创 Linux SPI子系统(1):体系结构
Linux SPI体系结构和I2C很类似,都分为3个组成部分,分别是SPI核心、SPI总线驱动(控制器驱动)、SPI设备驱动,体系结构见下图。Linux SPI体系结构。
2022-09-14 17:51:25 714
原创 Linux MTD子系统(1):系统层次分析
MTD(memory technology device),即内存技术设备,是Linux针对flash设备(nor flash、nand flash等)设计的标准化硬件驱动框架,MTD为了使flash设备的驱动更加简单,因此在上层和硬件之间提供了一个抽象的接口,这样可以在是用不同的flash设备时可以使用相同的API;MTD所有源码位于/drivers/mtd目录下。MTD子系统的框架分层如上图所示,从上到下主要分为四层,分别为设备节点层、MTD设备层、MTD原始设备层以及flash硬件驱动层。设备节点层:
2022-08-02 14:16:00 1694
原创 flash: qspi nand flash调试命令
需要说明的是,nandflash是需要根据块对齐来进行擦除操作,根据页对齐来进行读、写操作,我调试的nandflash的blocksize=128kb,pagesize=2kb。
2022-07-25 20:02:15 869
原创 flash:qspi nor flash的调试命令
sf命令。在进行擦除、读、写nor flash前,必须先进行sf probe,probe成功后才能够进行其他操作。 把nor flash中偏移为0x700000,长度为0x100000的区域擦除。把数据0x23,写入内存偏移为0x8000000,写入长度为0x100。把内存偏移为0x8000000,长度为0x100的数据打印出来。 把内存偏移为0x8000000的数据,写入nor flash中偏移为0x700000,写入长度为0x100。把nor flash中偏移为0x70
2022-07-13 12:59:03 1588
原创 flash:uboot下sf(nor flash)的流程
uboot下sf命令:sf probe 1000000 0x2103重点看下这个函数:spi_get_bus_and_cs(busnum, cs, max_hz, spi_mode,"jedec_spi_nor", str, &bus, &slave);在UCLASS_SPI对应的udevice列表中查找符合seq的udevice,其中,uclass_foreach_dev(dev, uc)是一个宏,会创建一个 for() 循环,该循环按从头到尾的顺序遍历uclass中的可用设备。一
2022-07-06 16:33:38 3145 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人