在flash程序中,有这样的一段语句:<br />int DownloadData(void)<br />{<br /> int i;<br /> U16 checkSum=0,dnCS;<br /> U32 fileSize=10;<br /> U8 *downPt;<br /><br /> downPt=(U8 *)downloadAddress;<br /> <br /> Uart_Printf("downloadAddress=%x\n",downloadAddress);<br /><br /> Uart_Printf("Download the plain binary file(.BHC) to be written\n");<br /> Uart_Printf(".BHC file format: <n+6>(4)+(n)+CS(2)\n");<br /> Uart_Printf("To transmit .BHC file : wkocm2 xxx.BHC /1 /g /d:1\n");<br /> Uart_Printf("Or, to transmit .BIN file: wkocm2 xxx.BIN /1 /d:1\n");<br /> Uart_Printf("Download methods: COM:8Bit,NP,1STOP\n");<br /> <br /> Uart_Printf("\nSTATUS:");<br /> rINTMSK=~BIT_GLOBAL;<br /> RdURXH0(); //To remove overrun error state.<br /><br /> i=0; <br /> while(i<fileSize)<br /> {<br /> while(!(rUTRSTAT0&0x1));<br /> *(downPt+i)=RdURXH0();<br /> if(i==3)<br /> {<br /> fileSize=*((U8 *)(downloadAddress+0))+<br /> (*((U8 *)(downloadAddress+1))<<8)+<br /> (*((U8 *)(downloadAddress+2))<<16)+<br /> (*((U8 *)(downloadAddress+3))<<24);<br /> }<br /> <br /> if((i%1000)==0)<br /> WrUTXH0('#');<br /> i++;<br /> }<br /><br /> downloadProgramSize=fileSize-6;<br /><br /> for(i=4;i<(fileSize-2);i++) <br /> {<br /> checkSum+=*((U8 *)(i+downloadAddress));<br /> }<br /><br /> dnCS=*((U8 *)(downloadAddress+fileSize-2))+<br /> (*( (U8 *)(downloadAddress+fileSize-1) )<<8);<br /><br /> if(checkSum!=dnCS)<br /> {<br /> Uart_Printf("Checksum Error!!! MEM:%x DN:%x\n",checkSum,dnCS);<br /> return 0;<br /> }<br /><br /> Uart_Printf("\nDownload O.K.\n");<br /> return 1;<br />}<br />这个是把串口数据传到内存中的一短代码,对吧?<br />可是里面的这个语句确定了文件大小:<br />fileSize=*((U8 *)(downloadAddress+0))+<br /> (*((U8 *)(downloadAddress+1))<<8)+<br /> (*((U8 *)(downloadAddress+2))<<16)+<br /> (*((U8 *)(downloadAddress+3))<<24);<br />也就是说BIN文件的前四位包含了文件的大小信息?请高手回答对不对!<br />而语句:<br /> dnCS=*((U8 *)(downloadAddress+fileSize-2))+<br /> (*( (U8 *)(downloadAddress+fileSize-1) )<<8);<br />说明了BIN文件的后两位包含了文件的相加和信息,对不对,请指教!!!<br /><br /><br /><br /> |
|