本文介绍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下按扇区读写块设备,Linux下按扇区读写块设备相关推荐

  1. linux读写usb host,LINUX下USB1.1设备学习小记(3)_host与device

    各位还记得"任何传输都是由host发起的"这句话么~ 在usb设备插入pc中到拔出usb设备,都是由host进行询问的 一个usb鼠标的工作流程可以表达如下: usb鼠标插入pc中 ...

  2. Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块

    目录 前言 第一部分 Linux文件系统堆栈 VFS数据结构 文件系统初始化顺序 Dentries 打开文件-说起来容易做起来难! 虚拟文件系统 前言 第二部分 Linux文件系统堆栈 当我们键入&q ...

  3. 基于块的linux驱动程序,基于块的Linux驱动程序 块设备驱动 centos内核编译过程 操作系统课程设计...

    操作系统的课程设计,本人也是一头雾水地做完了课程设计,在这里贴下操作过程,放下当时参考的一篇CSDN文章链接:https://blog.csdn.net/cxy_chen/article/detail ...

  4. linux 查看led设备,Linux下LedButton设备驱动——详细设计

    数据结构 点击(此处)折叠或打开 struct pca9555_led { u8 id; struct i2c_client *client; char *name; struct led_class ...

  5. Linux下的硬件驱动——USB设备(下)

    Linux下的硬件驱动--USB设备(下)(驱动开发部分) 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 级别: 初级 赵明, 联想软件设计中心嵌入式研发处 ...

  6. linux mtd 块设备,Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别...

    转:http://www.crifan.com/linux_system_in__dev__mtd_and__dev__mtdblock_distinction_character_devices_a ...

  7. linux dd命令制作软盘,[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin -镜像文件 .img - 软盘设备 /dev/fd0...

    本文将利用linux的dd命令往软盘的0道0面1扇区(即主引导扇区)写入数据: 实现在屏幕上显示asm这个三个字符的功能: 由于Ubuntu系统以软盘(floppy disk)作为启动盘,当选择系统从 ...

  8. Linux 设备树下的 platform 驱动示例

    1.简介 基于总线.设备和驱动这样的驱动框架,Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动. Linux 总线设备和驱动模式 2 ...

  9. linux终端输入lsblk无命令,使用Linux的lsblk命令列出块设备信息

    lsblk(列出块设备)命令用于列出所有可用块设备的信息,但是,它不会列出RAM盘的信息.块设备有硬盘,闪存盘,CD-ROM等等. 如何安装lsblk lsblk命令包含在util-linux-ng包 ...

  10. S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作。

    这篇文档算上期末复习这段时间其实拖了有好久了,因为从一开始接触linux的i2c驱动体系我就各种凌乱,因为起初脑海中既没有整体框架也不熟悉相关体系下的结构,所以四处乱看,经常性的在看内核代码时看着看着 ...

最新文章

  1. OpenCV学习笔记(二):3种常用访问图像中像素的方式
  2. python 判断是否有余数_判断多个坐标是否在同一条直线上|Python练习系列[13]
  3. php5.3 延迟静态绑定 static关键字
  4. 如何在TensorFlow中通过深度学习构建年龄和性别的多任务预测器
  5. [白开水]-maven的命令程序mvn脚本分析
  6. 炫天塔罗占卜结果......
  7. 给GridView分页
  8. python单向循环链表_python实现单向循环链表 -- 详细思路分析
  9. 计算机web程序开发,基于WEB的计算机应用基础考试系统的开发与设计
  10. 连接Access数据库的Provider错误
  11. 最长回文子串问题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
  12. Oracle数据库 - 安装教程
  13. MAX30102学习笔记(下)
  14. 走进龙芯3A3000(三)在Gentoo N64上安装xorg-server
  15. 10个值得推荐的免费设计模板网站
  16. 第1章 Cookie模拟登录(1.1 模拟登录的原理)
  17. 程序员真的需要读研究生么?
  18. 卸载xampp并重装mysql
  19. 钟情于物流企业信息化
  20. android 应用程序Activity管理类

热门文章

  1. Fedora13安装Gnome-shell
  2. 关于对cross-browser支持的一些看法
  3. Visual Studio 2005 Beta 2 will ship on April 25th
  4. OllyDbg完全教程
  5. boost智能指针之shared_ptr,scoped_ptr,intrusive_ptr,weak_ptr源码简析
  6. Zedboard学习(六):XADC读取数据
  7. main函数中argc的区别argv
  8. 【机器学习入门笔记0:OpenCV+TensorFlow学习内容(目录)】20190122
  9. Apollo 8 — ConfigService 异步轮询接口的实现
  10. tcpdump抓取mysql语句