打印

紧急求助~~~~SD卡的fat32文件系统读BPB数据不正常~~~

[复制链接]
2704|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
li543117|  楼主 | 2008-9-15 13:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做的SD卡的fat32文件系统,普通的正常读写没有任何问题,譬如利用欧冠测试数据写入到某个扇区,然后回读比较,结果均正常,读取硬件信息,结果正常,但是读取BPB数据就不正常:512BYTE的0扇区数据,前510全为0,理论上不正常,后面两位为0x55,0xaa,结果又正常。

我现在怀疑可能是我读取BPB扇区的位置不对,如果有哪位知道是在哪个位置读取的请指教一下~~

下面有读取BPB数据的程序,请大虾帮忙分析分析~~~

void fnSD_InitDrive(void)
{
    MMC_read_sector(0,buffers.currentsector.u8data);//在0扇区处读取BPB数据
    buffers.SectorCurrentlyLoaded=0xFFFFFFFF;
    
}

uint8_t MMC_read_sector(uint32_t addr,uint8_t *Buffer)
{
    uint8_t temp;
    uint32_t i;
    
    SPI_TransferByte(0xff);
    temp = Write_Command_MMC(MMC_READ_BLOCK,addr<<9);
    if(temp != 0x00)
    {
        return(READ_BLOCK_ERROR);
    }
    
    while(SPI_TransferByte(0xff) != 0xfe);
    
    for(i=0;i<512;i++)
    {
        *Buffer++ = SPI_TransferByte(0xff);
    }
    SPI_TransferByte(0xff);
    SPI_TransferByte(0xff);
    
    return (1);
}

相关帖子

沙发
linnaldf| | 2008-9-20 14:05 | 只看该作者

你是用什么格式化SD卡的啊?

你的代码有格式化程序吗?还是通过windows来格式化?
FAT32支持隐藏扇区,保留扇区,BPB是在隐藏扇区之后的,BPB之后的第一个扇区也是有作用的,具体可以看看FAT规范,BPB之后的第6个扇区是BPB的备份扇区。你可以试试读前32个物理扇区的内容,用超级终端打印出来,如果格式化正确的话,肯定可以读取到BPB的。

使用特权

评论回复
板凳
xkleee| | 2008-9-20 16:39 | 只看该作者

RE

BPB未必在逻辑0扇区,如果逻辑0扇区前3字节为0,就读取第446后面的16字节的分区表,计算出BPB所在的扇区。

使用特权

评论回复
地板
linnaldf| | 2008-9-20 18:06 | 只看该作者

人家那是SD卡

一般硬盘才有分区表,SD卡插到电脑上,当作是一个分区使用,就像U盘一样,其上面那来的分区表?BPB在逻辑扇区1,也就是隐藏扇区之后。如果没有隐藏扇区,逻辑扇区序号跟物理扇区序号是相等的,否则FAT系统扇区所对应的物理扇区序号等于隐藏扇区加上逻辑扇区序号

使用特权

评论回复
5
linnaldf| | 2008-9-20 18:29 | 只看该作者

用winhex软件看一下很快就知道BPB在那个扇区了

使用特权

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

本版积分规则

32

主题

52

帖子

0

粉丝