一段DSP代码,两个问题,敬请指点<br /><br /><br />Uint16 data_buff[256]={0x1234,0x5678,0xaa55,0x55aa};<br />Uint16 FAT32data_buff[512];<br />unsigned long lb2bb(unsigned char *dat,unsigned char len);<br />void main()<br />{<br /> Uint32 i, temp=0;<br /> unsigned char BPB_temp=0x00;<br /> struct FAT32_Init_Arg *arg;<br /> struct FAT32_BPB *bpb=(struct FAT32_BPB *)(FAT32data_buff);<br /> CSL_init();<br /> <br /> SdRead_Sector(temp,data_buff); <br /> <br /> asm(" nop ");<br /><br /> if(FAT32data_buff[0]==0xeb && FAT32data_buff[2]==0x90)<br /> asm(" nop ") ;<br /> BPB_temp=lb2bb((bpb->BPB_FATSz32),4);<br /> arg->FATsectors =BPB_temp; <br /> asm(" nop "); A处<br /> arg->FirstDirClust =lb2bb((bpb->BPB_RootClus) ,4);<br /> asm(" nop ");<br /> arg->BytesPerSector =lb2bb((bpb->BPB_BytesPerSec),2); B处 <br /> asm(" nop "); //每扇区字节数<br /> arg->SectorsPerClust =lb2bb((bpb->BPB_SecPerClus) ,1); C处<br /> asm(" nop ");<br /> arg->FirstFATSector =lb2bb((bpb->BPB_RsvdSecCnt) ,2)+arg->BPB_Sector_No;//第一个FAT表扇区<br /> asm(" nop ");<br /><br />1 程序执行到A处,BPB_temp类型为unsigned char ,数值0x792,而结构体的arg->FirstDirClust类型为unsigned int ,数据值变为0x1C12,不是所希望的0x792,不知道怎么回事,请指点一下。<br />2 程序执行A,B,都没有问题,但是执行到C就抛飞,与硬件仿真器自动断开,lb2bb在A和B都没有问题而在C处怎么存在问题?<br />3 Arg和bpb都是512字节的变量,CMD中设置-heap大小为1000字节。<br /> |
|