chenshichao541 发表于 2014-4-15 15:07:31

运行标准的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。不清楚什么问题。

lixuyongzd 发表于 2014-4-15 15:27:44

是u32 buffer,还是u8 buffer?

lixuyongzd 发表于 2014-4-15 15:30:00

另外,你的(UINT32)buffer1是什么意思?地址是32位的?然后你就给转成32位数,你直接if((ret=write(sd_fd,buffer1,32*512)) == 32*512)不就完了

chenshichao541 发表于 2014-4-15 16:18:55

lixuyongzd 发表于 2014-4-15 15:30
另外,你的(UINT32)buffer1是什么意思?地址是32位的?然后你就给转成32位数,你直接if((ret=write(sd_fd,b ...

不好意思,公司的网速打不开网页,半天回复不了,我定义的buffer默认是INT8U的,(UINT32)只是转换一下而已,按照您说的试了一下,不是这个问题。

lixuyongzd 发表于 2014-4-15 16:33:59

你这是什么编译环境呀?

chenshichao541 发表于 2014-4-15 16:46:18

本帖最后由 chenshichao541 于 2014-4-15 16:51 编辑

lixuyongzd 发表于 2014-4-15 16:33
你这是什么编译环境呀?

在虚拟机下面的,谢谢您的帮忙。我在看看什么原因,前面用的都很正常的。
页: [1]
查看完整版本: 运行标准的write函数会出现Segmentation fault,求指导