今天解决了一个小问题,如何在linux驱动中访问mtd设备。
正常的访问,都是用户空间通过,open( /dev/mtd*, ) read(), write(), close() 来访问的。
这次由于在驱动中需要读取/dev/mtd4的一个sector, 这个sector是之前用来备份SD 卡的mbr的。
1. 访问的第一步是获得mtd设备,这有两种方法:
方法1:根据mtd number, 也就是分区号,
函数如下:
struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num)
/**
* get_mtd_device - obtain a validated handle for an MTD device
* @mtd: last known address of the required MTD device
* @num: internal device number of the required MTD device
*
* Given a number and NULL address, return the num'th entry in the device
* table, if any. Given an address and num == -1, search the device table
* for a device with that address and return if it's still present. Given
* both, return the num'th driver only if its address matches. Return
* error code if not.
*/
struct mtd_info *ge

本文介绍了如何在Linux驱动程序中访问MTD(Memory Technology Device)设备,特别是针对/dev/mtd4分区读取sector的场景。通过两种方法获取mtd设备,一是使用mtd number,二是使用mtd name。接着详细说明了使用mtd_info结构体的read()函数进行读操作,并提到了msdos_magic_present()函数用于检查MBR的签名。
最低0.47元/天 解锁文章
1252

被折叠的 条评论
为什么被折叠?



