代码如下
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成功打开文件
TI中文支持网

