TI中文支持网
TI专业的中文技术问题搜集分享网站

fread函数不能读取.bin文件

代码如下

FILE *fid;
unsigned int bin_data[DATA_SIZE];
unsigned int bytes_read, i;

unsigned long int offset=0; 
unsigned long int temp;
unsigned int spi_val;

fid = fopen("../gpio.bin", "rb");

if (fid == NULL)
{
exit(0);
}

do

{
bytes_read = fread(bin_data, 1, DATA_SIZE, fid);
for (i=0; i<bytes_read; i++)
{
spiflash_write_byte(offset, bin_data[i]);
spi_val = spiflash_read_byte(offset);
if (bin_data[i] != spi_val)
{
printf("Error: Offset %ld reads as %2x instead of %2x\n", offset, spi_val, bin_data[i]);
}
offset++;
}
printf("Total of %ld bytes written.\n", offset);
} while (bytes_read > 0);

fclose(fid);

以上程序运行之后bytes_read为0,所以程序会直接跳出上面的循环。我用

fseek(fid,0,SEE_END);

len=ftell(fid);

计算出gpio.bin文件大小为1070个字节,所以.bin文件应该不是空的。但是用fgetc(fid)一个字节一个字节的读文件,读出来的所有数都为0xffff。

请教一下,出现这样的情况是哪里有问题啊??万分感谢

Shine:

参考一下下面的文档。http://www.ti.com/lit/an/spra757/spra757.pdf

Meng Huang1:

回复 Shine:

文档我看过了,我把程序作了如下修改:

fid=fopen("gpio.bin","rb");

if(fid==NULL)

{    exit(0);

}

for (i=0;i<DATA_SIZE;i++)

{  bin_data[i]=fgetc(fid);

  bin_data[i]=(fgetc(fid)<<8);

  SPI_WriteByte(addr,bin_data[i]);

  spi_val=SPI_ReadByte(addr);

  if(bin_data[i]!=spi_val)

{  exit(0);

}

addr=addr+2;

}

以上程序fgetc()函数读出的数据总是0xFFFF,请问老师这是为什么呢?

.out转换成.bin的.cmd文件如下:

gpio.out

-boot

-V5510:2

-serial8

-e  _c_int00

-b

-o gpio.bin

不知以上,cmd文件是否正确。

谢谢老师

Shine:

回复 Meng Huang1:

用fread函数读。

Meng Huang1:

回复 Shine:

fread读不进去,并且返回值是0

Shine:

回复 Meng Huang1:

1.看一下有没有包含stdio.h头文件 2. 确定fopen成功打开文件,返回值是非0

 

Meng Huang1:

回复 Shine:

包含了stdio.h头文件

也用

if(fid==NULL)

{    exit(0);

}

语句确保了fopen成功打开文件

赞(0)
未经允许不得转载:TI中文支持网 » fread函数不能读取.bin文件
分享到: 更多 (0)