Linux下如何绕过文件系统读写SD卡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下如何绕过文件系统读写SD卡相关的知识,希望对你有一定的参考价值。

最近在一个SD卡测试的小程序,16G的卡,有4G左右用于系统,剩下10G(/dev/block/mmcblk0p5)左右用作用户存储数据,需对该空间进行读写测试。如果将该分区mnt到文件系统,采用open,read,write的方式也可以,但是比较慢。老板想绕过文件系统,不mnt该分区,进行读写。 在网上搜索了一下,大概可以使用ioctl()函数调用相关层的driver实现类似的功能,目前linux-2.6已经自带了SD卡的驱动在/kernel/driver/mmc下面有三个文件夹,Card,Core,Host分别对应着块设备请求处理层,host接口通信协议等,主机驱动程序,我从用户空间发起调用,类似open(/dev/block/mmcblk0p1/file,...),但问题是都没办法把这三层驱动需要的参数传递进去,不知道块设备驱动层block,或者更往上的file_operations能不能实现,调用哪一层比较合适,用户空间能穿进去的文件参数有限?

参考技术A 距离文件系统最近的Generic Block Layer里的函数适不适合ioctl()调用,有哪些接口函数,需要传递哪些参数,哪位高人知道,多谢了 查看原帖>>本回答被提问者采纳

SD卡读写模块的操作命令

参考技术A

命令 名称 说明 CHECK_EXIST 检测模块及SD卡 测试与SD卡模块通讯是否正常,SD卡模块中是否已插入SD卡。 GET_DISK_SIZE 查询SD卡容量查询 获取SD卡容量以及可用空间信息 DISK_FORMAT 格式化SD卡 对SD卡进行格式化 GET_DIR_FIRST 查询第一目录项 获取当前目录下的第一个目录项 GET_DIR_NEXT 查询下一目录项 获取当前目录下的下一个目标项 MAKE_DIR 创建目录 在当前目录下创建一个子目录 REMOVE_DIR 删除目录 在当前目录下删除一个子目录 ENTER_DIR 进入目录 在当前目录下进入一个子目录 BACK_TO_ROOT 回根目录 当前目录回到根目录 MAKE_FILE 创建文件 在当前目录下创建一个文件 REMOVE_FILE 删除文件 在当前目录下删除一个文件 FILE_OPEN 打开文件 在当前目录下打开一个文件 FILE_CLOSE 关闭文件 关闭已打开的一个文件 FILE_GET_LEN 查询文件长度 查询已打开的一个文件长度 FILE_READ 读文件内容 读取已打开文件的内容(可连续读) FILE_CLEAR 清空文件内容 清空已打开文件的内容 FILE_APPEND 追加文件内容 在已打开文件的未尾追加内容 RENAME_DIR 更改目录名称 更改当前目录下一个子目录的名称 NOTICE_CUR_TIME 更新时间 更新模块的当前实时时间 FILE_SEEK 文件定位 移动已打开文件的当前读取位置 ENTER_SLEEP 进入睡眠 让模块进行功功耗状态

以上是关于Linux下如何绕过文件系统读写SD卡的主要内容,如果未能解决你的问题,请参考以下文章

SD卡文件读取(FAT文件模式)

Linux中U盘和SD卡加载卸载命令

linux环境上SD卡怎么读写

arm Linux 如何自动检测并mount SD卡,以及如何得知已经mount

Android 6.0 读写SD卡权限问题

linux怎么读取SD卡CID?