寄存器信息 5.1.2.2 2.emmc 信息 5.1.2.3 3、性能验证节点 5.2 常见问题 Linux MMC 开发指南 1 前言 1.1 文档简介 介绍 Linux 内核中 SD/MMC 子系统的接口及使用方法...1.3 适用范围 产品名称 内核版本 驱动文件 A133 Linux-5.4 sunxi_mmc* h616 Linux-5.4 sunxi_mmc* v853 Linux-4.9 sunxi_mmc*...R853 Linux-4.9 sunxi_mmc* F133 Linux-5.4 sunxi_mmc* 2 模块介绍 2.1 模块功能介绍 Linux 提供了 MMC 子系统来实现对各种 SD/MMC...MMC/SD card 层负主要是按照 LINUX 块设备驱动程序的框架实现一个卡的块设备驱动。负责块设备请求的处理,以及请求队列的管理。...MMC/SD core 层负责通信协议的处理,包括 SD/MMC/eMMC/SDIO,为上一层提供具体读写接口,同时为下一层提供 host 端接口。
在mmc_of_parse函数,路径是drivers\mmc\core\core.c,of_property_read_bool函数读broken-cd字段,如果读到,就给host设置MMC_CAP_NEEDS_POLL...INIT_DELAYED_WORK(&host->detect, mmc_rescan); mmc_rescan就是扫描卡的函数 void mmc_rescan(struct work_struct *...(host); mmc_power_off(host); mmc_release_host(host); goto out; } mmc_claim_host(host); for...; } mmc_release_host(host); out: if (host->caps & MMC_CAP_NEEDS_POLL) mmc_schedule_delayed_work...号主:一枚机械专业本科生,经历了转行,从外包逆袭到芯片原厂的Linux驱动开发工程师,深入操作系统的世界,贯彻终身学习、终身成长的理念。
读写锁 与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。 读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3....不加锁状态 读写锁特性: 1. 读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。 2....那么读写锁会阻塞随后的读模式锁请求。优先满足写模式锁。读锁、写锁并行阻塞,写锁优先级高 读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。...读写锁非常适合于对数据结构读的次数远大于写的情况。...函数 以读方式请求读写锁。
一、读写锁是什么?...读写锁其实还是一种锁,是给一段临界区代码加锁,但是此加锁是在进行写操作的时候才会互斥,而在进行读的时候是可以共享的进行访问临界区的 ps:读写锁本质上是一种自旋锁 二、为什么需要读写锁?...如果每次操作都给此段代码加锁,太浪费时间了而且也很浪费资源,降低程序的效率,因为读操作不会修改数据,只是做一些查询,所以在读的时候不用给此段代码加锁,可以共享的访问,只有涉及到写的时候,互斥的访问就好了 三、读写锁的行为...读写之间是互斥的—–>读的时候写阻塞,写的时候读阻塞,而且读和写在竞争锁的时候,写会优先得到锁 四、自旋锁&挂起等待是锁?...---->读和写在同时竞争锁的时候,写会优先的得到锁 互斥---->读的时候写阻塞,写的时候读阻塞 4.相关函数 (1)pthread_rwlock_init()—->初始化函数 功能:初始化读写锁
对应代码: drivers/mmc/core/mmc.c(提供接口), drivers/mmc/core/mmc-ops.c(提供和mmc type card协议相关的操作), drivers/mmc.../core/mmc-ops.h 2、另外,这里继续强调一下mmc的概念 mmc core是指mmc subsystem的核心实现,这里的mmc是表示mmc总线、接口、设备相关的一种统称,可以理解为一种软件架构...而mmc type card则是指mmc卡或者emmc。 总之,这里的mmc是两种概念概念,需要自己先消化一下。 3、mmc总线和mmc_bus 在本文里面这两个是不同的概念。...原型:int mmc_attach_mmc(struct mmc_host *host) 2、mmc type card协议相关操作 mmc_ops提供了部分和mmc type card协议相关操作,这些操作会在...三、接口代码说明 1、mmc_attach_mmc实现 用于通过mmc_host获取mmc type card信息,初始化mmc_card,并进行部分驱动,最后将其注册到mmc_bus上。
一:mmc的命令例如以下: 1:对mmc读操作 mmc read addr blk# cnt 2:对mmc写操作 mmc write addr blk# cnt 3:对...mmc擦除操作 mmc erase blk# cnt 4:又一次搜索mmc设备 mmc rescan 5:列出mmc的分区 mmc part – lists available partition oncurrent...显示boot分区号 mmc bootpart [dev] [part] – show or setboot partition 8:列出当前的mmc设备 mmc list – lists available...: 3 分析:boot中配置了四个mmc资源,SD卡是2,EMMC是3 3:mmc dev[dev] [part] – show or set current mmc device [partition...] 输入: mmc dev 3 显演示样例如以下: mmc3(part 0) is current device 分析:表示当前处于EMMC设备的第0个分区 输入: mmc dev 3 1 显演示样例如以下
learn the auth of Linux.
一、说明 1、mmc core概述 mmc core主模块是mmc core的实现核心。也是本章的重点内容。 对应代码位置drivers/mmc/core/core.c。...二、API总览 1、mmc core初始化相关 mmc_init & mmc_exit (模块内使用) 2、mmc host的管理和维护相关 mmc_claim_host & mmc_try_claim_host...& mmc_release_host (模块内使用) mmc_power_up & mmc_power_off mmc_start_host & mmc_stop_host mmc_power_save_host...) mmc_hw_reset & mmc_hw_reset_check & mmc_card_awake & mmc_card_sleep mmc_card_is_prog_state mmc_can_erase...5、host的mmc总线相关 mmc_resume_bus mmc_attach_bus & mmc_detach_bus 6、mmc请求相关 mmc_request_done mmc_wait_for_req
MMC/SD卡简单SPI模式驱动 1. SPI模式下CRC检验无效的。 2. 命令格式是6个字节,采用大端法进行数据传输。 3. 第一个是(命令号|0x40)。 4....7).返回R1,即MMC的回复。 (完) 7. MMC卡初始化函数 1).SPI初始化。 2).发送74个时钟以上。 3).发送命令CMD0. 4).不断发送时钟信号等回复0x01.成功。...5).再不断发送命令CMD1,等回复0x00,成功则MMC卡初始化成功。 (完) 8.MMC卡读函数。 1).不断发送命令CMD17。 2).等待0x00,则成功。...3).再不断发送时钟信号,当收到0xfe时,说明可以读512字节数据,也可以通过命令设置读写数据长度。 4).读512字节数据。 5).发送CRC校验,2个字节,虽然校验无效,但一定要发送。...(完) 基于LPC2124芯片的MMC/SD卡SPI模式简单读写实验。 附加说明:MMC卡在SPI模式与SD卡的SPI模式是一样。
使用hdparm工具或者time、dd命令测试硬盘读写性能 # hdparm for i in {0..9}; do hdparm -tT /dev/sdc; done root in summer
Window系统中查看一个文件是否为可执行文件,是通过扩展名(.exe、.bat 等),但在 Linux 系统中,文件是否能被执行,是通过看此文件是否具有 x 权限来决定的。...的用户访问权限应用到sakia作为所有者 将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net chown -R sakia:net /tmp/sco chmod 修改文件和文件夹读写执行属性
浅析 Linux 文件 IO 读写 Linux的文件IO子系统是Linux中最复杂的一个子系统(没有之一)。...读者可以参考以下这个图: image.png https://www.thomas-krenn.com/de/wikiDE/images/2/2d/Linux-storage-stack-diagram_v4.0...Linux的IO调度器称为evelator(电梯),因为Linus开始实现这个系统的时候,使用的就是电梯算法。
Linux下mmc_test测试工具使用 很多朋友也都有疑问,如何在Linux下,测试emmc/sd模块呢? 当然,mmc core提供了mmc_test.c来作为mmc driver的测试文件。...如何使用mmc_test.c测试文件测试mmc 驱动呢?...mmc_test工具测试,需要将mmc设备绑定到该mmc_test驱动上。...2.1、查看驱动编号 通过下面命令,查询对应的mmc编号,如下:mmc0:0001,忽略掉\ ls /sys/bus/mmc/drivers/mmcblk/mmc0\:0001/ 2.2、解绑mmc原驱动...echo mmc0:0001 > /sys/bus/mmc/drivers/mmcblk/unbind 2.3、绑定mmc_test驱动 echo mmc0:0001 > /sys/bus/mmc
1.了解MMC卡 MMC卡是有由美国SANDISK公司和德国西门子公司在 1997年 共同开发研制的一种多功能存储卡。...MMC卡在一定程度上改善了CF卡读写速度较慢的缺点,并且体积轻巧, 尺寸为 32mm×24mm×1.4mm, 重量不足 2克。其抗冲击性强,可反复读写30万次。...工作在52MHz、 × 8 bit模式下,数据传输率可达52MB/s,由于后来推出的SD卡标准中保留了设备对MMC卡的兼容,所以虽然使用MMC卡的设备无法使用SD卡,但使用SD卡的设备却可以轻易使用MMC...卡,Pretec公司今年宣布了符合MMC4.0标准的极速2GB MMC存储卡的问世,使得MMC卡的容量开始接近CF卡。...在MMC卡本来就很小的基础上,形状正好是MMC卡的一半,长度比MMC卡的一半长一点(MMC的长度为32mm,RS-MMC的长度为18mm)。通过在后面安装专用适配器还可以用作MMC卡。
Linux下读写boot分区 因为boot分区中一般存放的是bootloader或者相关配置参数,这些参数一般是不允许修改的,所以默认情况下是能读boot分区,不能写。...2.1 使能读写 如果需要些则需要,修改/sys/block/mmcblk0boot1/force_ro。...在Linux下/dev/mmcblk0boot1就表示切换到boot分区了,在uboot下需要先切换到boot分区。...3.2 读取boot分区 uboot中读取boot分区,首先需要将分区切换到boot分区,然后读写分区,最后将分区切换回原来分区。...free(addr); return ret; } 至此可以在Linux和Uboot下对boot分区进行操作,进行bootloader烧写或者进行重要数据更新
安装 Bash 如果你在使用 Linux,你可能已经有了 Bash。如果没有,你可以在你的软件仓库里找到它。...在 Windows 上,有几种方法可以体验 Bash,包括微软官方支持的 Windows Subsystem for Linux(WSL)。 安装 Bash 后,打开你最喜欢的文本编辑器并准备开始。
生猛干货 从系统安装到程序员必备的Linux技能,还原真实工作场景,手把手带你实战演练 ?...IO速度 有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策....下面是两种测试方法: (1)使用hdparm命令 这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has..., with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的....bs是每次读或写的大小,即一个块的大小,count是读写块的数量,相乘就是读写数据量大小。 数据量越大越准确,多次测试取平均值。
/include/linux/mmc/card.h下面。...位于kernel/include/linux/mmc/host.h下面。 4.2.6.struct mmc_request用于描述读写MMC卡的请求,它包括命令,数据以及请求完成后的回调函数。...位于kernel/drivers/mmc/card/queue.h中。 4.2.8.struct mmc_data描述了MMC卡读写的数据相关信息,如:请求,操作命令,数据以及状态等。...位于kernel/include/linux/mmc/core.h中。...4.4.2.卡中数据读写涉及到的函数 mmc_blk_issue_rq(card/block.c) mmc_wait_for_req(core/core.c) mmc_start_request
4.MMC卡读写速度越来越慢,远不如刚买会的时候同样是存储设备,手机中的MMC存储卡和电脑中的一样,用了一段时间以后回因为频繁的删除和拷贝回出现磁盘碎片从而影响读写速度然而,硬盘的磁盘格式是FAT32或...NTFS,手机中的MMC卡是FAT16的.因此,手机通过电脑的磁盘碎片整理后往往会出现一系列的错误,严重的回在MMC卡插入手机中抱错.其实我们只需要将MMC卡中的隐藏文件拷贝将卡格式化然后将文件拷入即可...7.1GB的MMC卡,拷入600MB的文件,在电脑上无法将存储卡安全移除,于是拔除,储存卡装入手机后显示” 卡已损坏” ,如再将卡连接pc,pc不识别!
先附上读写eMMC大体经过,目的在于了解过程,具体细节不作过多分析。...buffer_head描述的数据转换成bio描述(block I/O),传到general block layer,所以对于general block layer接收到的就是一个初始化好的bio,里面描述了需要读写数据的信息...->req'. */ mmc_put_card(card); return ret; } 暂且仅关注读写请求,通过判断request的成员cmd_flags,执行mmc_blk_issue_rw_rq...下发读写请求。...读写的大概流程。
领取专属 10元无门槛券
手把手带您无忧上云