运行标准的write函数会出现Segmentation fault,求指导
sd_fd =open(Nand_To_SD, O_RDWR|O_NONBLOCK);if(sd_fd<0)
{ printf(Nand_To_SD "Fail");
close(sd_fd);
exit(1);
}
else
printf(Nand_To_SD "Open SUCCESS .\n ");
lseek(sd_fd,(0)*SECTOR_SIZE,SEEK_SET);
if((ret=write(sd_fd,(UINT32)buffer1,32*512)) == 32*512)//运行这里就会出错。buffer;
{
//checksum += Calculate_Checksum((INT8S*)&buffer, 512);
printf("ptr=0x%x checksum = 0x%x .\n ",*ptr,checksum);
}
Nand_To_SD这个代表的是一个TF卡下面的一个bin文件,打开成功,我要把buffer1数组中的数据写入也是成功的,但是写入完毕会Segmentation fault。不清楚什么问题。 是u32 buffer,还是u8 buffer? 另外,你的(UINT32)buffer1是什么意思?地址是32位的?然后你就给转成32位数,你直接if((ret=write(sd_fd,buffer1,32*512)) == 32*512)不就完了 lixuyongzd 发表于 2014-4-15 15:30
另外,你的(UINT32)buffer1是什么意思?地址是32位的?然后你就给转成32位数,你直接if((ret=write(sd_fd,b ...
不好意思,公司的网速打不开网页,半天回复不了,我定义的buffer默认是INT8U的,(UINT32)只是转换一下而已,按照您说的试了一下,不是这个问题。 你这是什么编译环境呀? 本帖最后由 chenshichao541 于 2014-4-15 16:51 编辑
lixuyongzd 发表于 2014-4-15 16:33
你这是什么编译环境呀?
在虚拟机下面的,谢谢您的帮忙。我在看看什么原因,前面用的都很正常的。
页:
[1]