使用winhex查看SD卡文件的物理扇区地址

一、前言

最近在一个工程中需要读取存放在SD卡中的图片数据,在格式化了SD卡之后,我把.bin格式的图片数据使用读卡器移动到了SD卡中。然后将读取SD卡的程序的bit流下载进了FPGA中,之前是可以正常读取数据的,可是这次我用ILA监测读取的数据时,发现读取的数据全都是0,但是一些标志信号如读取开始、读取有效等都是正确的,说明读取动作是没有问题的。

于是我就思考为什么会出现这种情况?最后发现是代码中设置的要读取的文件的物理扇区地址不对,可能是因为格式化之后再次将图片数据拷贝到SD卡时,物理扇区地址发生了变化。 使用FPGA读取SD卡中的数据时,必须设置正确的物理扇区地址,否则读取会出错,所以需要查看SD卡文件的正确的物理扇区地址,可以使用一个叫winhex的软件。下面就简单的介绍一下如何使用该软件查看。

二、查看文件的物理扇区地址

工具—打开磁盘—选择SD卡所在的磁盘(如下面红框)—确定!!!
在这里插入图片描述
由下面两张图可以看出,引导扇区的逻辑扇区地址是0,物理扇区地址时8192;其他文件的物理扇区地址=逻辑扇区地址+引导扇区的物理地址。如98560=90368+8192
在这里插入图片描述
在这里插入图片描述

三、查看文件内容

双击.bin文件,即可查看文件中的数据。
在这里插入图片描述

四、上板验证

在这里插入图片描述
在这里插入图片描述
上图是设置物理扇区地址的代码,在其他地方switch被赋值成了2'b11’,所以此处读取数据的起始物理扇区地址是98560,从下面的波形图中也可以看出起始地址就是98560。
在这里插入图片描述
在这里插入图片描述
读取出的第一个有效数据是6B4D(十六进制),这和第三部分红框里偏移地址为0和1处的数据是一致的。因为代码里一次读取16位数据,所以这里一次会读取出偏移地址为0和1两个地址处的数据。

posted @ 2021-04-22 23:20  耐心的小黑  阅读(245)  评论(0编辑  收藏  举报