linux 块设备驱动实例,linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)...

编程入门 行业动态 更新时间:2024-10-10 05:22:18

linux 块设备驱动<a href=https://www.elefans.com/category/jswz/34/1771375.html style=实例,linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)..."/>

linux 块设备驱动实例,linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)...

块设备驱动的模型还是基本基于字符设备驱动的,可以简单理解为块设备仅仅增加了操作缓冲区,对用户请求顺序进行队列重拍等等。字符设备驱动的相关分析可以查看本博客相关的博文。

按照本博客的行文习惯,在具体分析块设备驱动代码之前,我们会从整体上了解一下研究对象的特征,以及用户空间的使用方法。下面我们就自己写一个小工具(可以读取Rom中任意一个物理扇区的内容)来分析一下高通的分区信息。

在用户空间看到的块设备当然是以块设备节点展现的,如下图。其中mmcblk开头的就是今天我们分析的重点,可以看到这些文件名分为三类:mmcblk0、mmcblk0pX、mmcblk0rpmb。其中mmcblk0是设备节点,其余的为该设备的分区节点(mmcblk0rpmb RPMB是Replay Protected Memory Block的缩写,他的存在目的是用来给系统存放一些特殊的、需要进行访问授权的数据。暂时不做考虑)。Mmcblk0是当前系统的第一个mmc设备(为我们的eMMC存储器),如果插入tf卡,应该会出现mmcblk1设备。

下面我们来实现一个用户空间的小程序来读取eMMC中的原始数据进行分析。

我们在external/文件夹下建立radia_test.c、android.mk,代码如下:

radia_test.c/*************************************************************************

File Name: radia_test.c

Author: [email protected]

Created Time: 2017.6.9

brief:adjust audio parameters

************************************************************************/

#include

#include

#include

#include

#include

#include

#include

#include

#include

//extern int errno;

int get_disk_sector(int fd){

int sectorsize;

ioctl(fd, BLKSSZGET, §orsize) ;

return sectorsize;

}

/**

* read_disk_sector:

* @dev: raw disk FILE *

* @sector:

* return is the disk sectorsize

* */

int read_disk_sector(int fd, unsigned long sector, char **p){

int sectorsize;

FILE *fp;

/* get disk sector size */

sectorsize = get_disk_sector(fd);

if (sectorsize == 0){

fprintf(stderr, "get disk sector size failed\n");

return (-1);

}

/* seek it */

lseek(fd, 0 ,SEEK_SET);

//注,在offset设置得过大时,lseek可能返回OVERFLOW的错误,但实际上,它已经执行了定位,只是返回的值超出了范围。返回值为-1时,此时要判断一下错误号

if (lseek(fd, (sectorsize * sector), SEEK_CUR) == -1 ){

fprintf(stderr, "seek to %d failed\n"

, sectorsize * sector);

return (-1);

}

/* read it */

*p = (char *)malloc(sectorsize);

if (*p == NULL){

fprintf(stderr, "malloc memory fa

更多推荐

linux 块设备驱动实例,linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)...

本文发布于:2024-03-24 00:04:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1744432.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实例   设备   由浅入深   分区   高通

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!