打印

computer00 你的 AT89C51SND

[复制链接]
1968|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
88088|  楼主 | 2007-12-17 19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 file_system.c file  文件



unsigned long int get_next_sector(void)  //根据当前簇号,获取下一个扇区地址
{
 unsigned long int LBA;
 unsigned  int i;
 LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);  //计算扇区地址
 i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors; //计算偏移地址



解析一下为什么这样计算
谢谢 computer00

相关帖子

沙发
88088|  楼主 | 2007-12-18 10:38 | 只看该作者

等待 computer00 你的解答

使用特权

评论回复
板凳
88088|  楼主 | 2007-12-18 18:03 | 只看该作者

问题还没有解决 不能沉

使用特权

评论回复
地板
computer00| | 2007-12-18 19:36 | 只看该作者

因为是FAT32文件系统,所以一个簇号需要4字节保存

因此每个扇区能保存的簇号个数就是:((dbr[driver_number].bytes_per_sectors)/4)个。
根据簇号,可以计算出它在哪个扇区。就是用它去除以每个扇区的簇号数。

LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);  //计算扇区地址

计算出在哪个扇区了,用总数减去前面整数个扇区,就是偏移量了

i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors; //计算偏移地址



这样给定一个簇号,我们就可以计算出它在FAT中的第几扇区,以及在该扇区中的偏移量。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

102

帖子

1

粉丝