本文介绍Linux下按扇区读写块设备(示例TF卡),实际应用是在Android系统上,主要方法如下:

1、找到sdcard的挂载点,在android2.1系统下应该为/dev/block/mmcblk0p1,或是/dev/block/mmcblk0,而不是/sdcard或/mnt/sdcard

2、修改权限,默认是没有权限按扇区读写块设备的(下文打开句柄为空),连接手机到计算机,通过adb Shell进入手机,将/dev/block/mmcblk0p1权限设置成777,命令如下:

chmod 777 -R /dev/block/mmcblk0p1

3、编写读写程序,示例代码如下

int     fd = open("/dev/block/mmcblk0", O_RDWR|O_DIRECT,606);

4、编译并安装到手机上,就可以对扇区直接操作。

附读写扇区程序(参数第一个是文件句柄,第二个是读写缓冲区):

int WriteSectors(int fd, char *p){
//lseek(fd, 0 ,SEEK_SET);
//if (lseek(fd, 1024, SEEK_CUR) == -1 ){
// return (-1);//seek failed
//}

if (lseek(fd, 1024 ,SEEK_SET) == -1 ){
return (-1);//seek failed
}

return write(fd, p, 512);
}

int ReadSectors(int fd, char *p){

//lseek(fd, 0 ,SEEK_SET);
//if (lseek(fd, 1024, SEEK_CUR) == -1 ){
// return (-1);//seek failed
//}

if (lseek(fd, 1024 ,SEEK_SET) == -1 ){
return (-1);//seek failed
}

return read(fd, p, 512);
}
上面的发送接收缓冲区必须符合内存对齐:

char* iobuf = NULL;

iobuf = memalign(getpagesize(),getpagesize());//2.6version = 512;
---------------------
作者:xrdeng
来源:CSDN
原文:https://blog.csdn.net/xuerongdeng/article/details/78289132
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux下按扇区读写块设备的更多相关文章

  1. Linux下的硬件驱动——USB设备(转载)

    usb_bulk_msg函数 当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbs 提 ...

  2. Linux以列表格式显示块设备

    Linux以列表格式显示块设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MO ...

  3. Linux下unix socket 读写 抓包

    Linux下unix socket 读写 抓包-ubuntuer-ChinaUnix博客 http://blog.chinaunix.net/uid-9950859-id-247877.html

  4. linux一切皆文件之块设备文件(四)

    一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列) 2.操作这些不同的类型就像操作文件一样,比如增删改查等 3.块设备是 ...

  5. 测试linux下磁盘的读写速率

    1) 通过df -h命令查看磁盘情况 Filesystem            Size  Used Avail Use% Mounted on/dev/sda4             289G  ...

  6. Linux 下测试磁盘读写 I/O 速度的方法汇总

    在分布式异构存储系统中,我们经常会需要测量获取不同节点中硬盘/磁盘的读写 I/O 速度,下面是 Linux 系统下一些常用测试方法(之后不定期更新): 1.使用 hdparm 命令这是一个是用来获取A ...

  7. linux下如何使用USB存储设备

    如何在Linux环境中使用USB接口的 存储 设备?这是各大电脑论坛上出现得比较多的一个问题,同此可见这也是摆在许多电脑玩家面前的一道难题. 本文就为您提供一套完美的解决方案,通过下面的方法,您仅可以 ...

  8. Linux下对inode和块的理解

    基本概念 首先讲下inode和块的基本概念.在Linux系统中,文件由元数据和数据块组成.数据块就是多个连续性的扇区(sector),扇区是文件存储的最小单位(每个512字节).块(block)的大小 ...

  9. Linux 下使用umount强行卸载设备

    卸载NFS,结果出现无法卸载的情况 [root@localhost /]# umount /udisk/ umount: /udisk: device is busy umount: /udisk: ...

随机推荐

  1. Kali Linux安装

    Kali Linux 安装过程参考:https://blog.csdn.net/qq_40950957/article/details/80468030 安装完成后,apt-get install 安 ...

  2. js 判断当前操作系统是ios还是android还是电脑端

    js判断客户端是否是IOS或者是Android //如果返回true 则说明是Android function is_weixin() { var ua = window.navigator.user ...

  3. windows Apache服务器简单配置虚拟域名(转载)

    1.找到apache目录下的conf下的extra下的httpd-vhosts.conf虚拟主机配置文件 将下面的代码复制粘贴到最下面:   #<VirtualHost *:80>#   ...

  4. 七牛免费SSL证书申请全流程

    购买证书 在七牛ssl 首页点击购买 购买限免证书 补全订单信息 免费证书,随意填写,问题不大 购买成功,查看订单详情,获取 TXT 值信息 添加 DNS TXT 验证 根据上一步,查看证书订单详情, ...

  5. 9、BOM (浏览器对象模型)

    1.认识BOM js 三个部分: 1.ECMAScript标准 ECMA5 ECMA6 2.BOM Browser Object Model 浏览器对象模型 3.DOM 文档对象类型 window对象 ...

  6. 利用XML语法 SQL 列转行

    --行转列 固定xml语法 declare @xml xml ; set @xml=cast('<v>2</v><v>4</v><v>3&l ...

  7. Gym 102056I - Misunderstood … Missing - [DP][The 2018 ICPC Asia-East Continent Final Problem I]

    题目链接:https://codeforces.com/gym/102056/problem/I Warm sunshine, cool wind and a fine day, while the ...

  8. POJ 1321 - 棋盘问题 - [经典DFS]

    题目链接:http://poj.org/problem?id=1321 Time Limit: 1000MS Memory Limit: 10000K Description 在一个给定形状的棋盘(形 ...

  9. 作业2:git使用

    作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远端库地址:https://github.com/yellow ...

  10. 3、Finished with error: FormatException: Bad UTF-8 encoding 0xc3 (at offset 169)

    这是由于 app 的版本为 release 找不到 keystore 文件, 我们只需要在 app 下的 build.gradle 文件中修改为 signingConfigs.debug 即可: bu ...