求助!关于44b0的flash操作!!!

[复制链接]
2034|2
 楼主| snowtx 发表于 2008-2-22 12:45 | 显示全部楼层 |阅读模式
在flash程序中,有这样的一段语句:<br />int&nbsp;DownloadData(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;U16&nbsp;checkSum=0,dnCS;<br />&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;fileSize=10;<br />&nbsp;&nbsp;&nbsp;&nbsp;U8&nbsp;*downPt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;downPt=(U8&nbsp;*)downloadAddress;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;downloadAddress=%x\n&quot;,downloadAddress);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Download&nbsp;the&nbsp;plain&nbsp;binary&nbsp;file(.BHC)&nbsp;to&nbsp;be&nbsp;written\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;.BHC&nbsp;file&nbsp;format:&nbsp;&ltn+6&gt(4)+(n)+CS(2)\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;To&nbsp;transmit&nbsp;.BHC&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;wkocm2&nbsp;xxx.BHC&nbsp;/1&nbsp;/g&nbsp;/d:1\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Or,&nbsp;to&nbsp;transmit&nbsp;.BIN&nbsp;file:&nbsp;wkocm2&nbsp;xxx.BIN&nbsp;/1&nbsp;/d:1\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Download&nbsp;methods:&nbsp;COM:8Bit,NP,1STOP\n&quot;);<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\nSTATUS:&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK=~BIT_GLOBAL;<br />&nbsp;&nbsp;&nbsp;&nbsp;RdURXH0();&nbsp;//To&nbsp;remove&nbsp;overrun&nbsp;error&nbsp;state.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;i=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(i&ltfileSize)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!(rUTRSTAT0&0x1));<br />&nbsp;&nbsp;&nbsp;&nbsp;*(downPt+i)=RdURXH0();<br />&nbsp;&nbsp;&nbsp;&nbsp;if(i==3)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileSize=*((U8&nbsp;*)(downloadAddress+0))+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+1))&lt&lt8)+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+2))&lt&lt16)+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+3))&lt&lt24);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if((i%1000)==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WrUTXH0('#');<br />&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;downloadProgramSize=fileSize-6;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=4;i&lt(fileSize-2);i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkSum+=*((U8&nbsp;*)(i+downloadAddress));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;dnCS=*((U8&nbsp;*)(downloadAddress+fileSize-2))+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(&nbsp;(U8&nbsp;*)(downloadAddress+fileSize-1)&nbsp;)&lt&lt8);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(checkSum!=dnCS)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Checksum&nbsp;Error!!!&nbsp;MEM:%x&nbsp;DN:%x\n&quot;,checkSum,dnCS);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\nDownload&nbsp;O.K.\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />}<br />这个是把串口数据传到内存中的一短代码,对吧?<br />可是里面的这个语句确定了文件大小:<br />fileSize=*((U8&nbsp;*)(downloadAddress+0))+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+1))&lt&lt8)+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+2))&lt&lt16)+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((U8&nbsp;*)(downloadAddress+3))&lt&lt24);<br />也就是说BIN文件的前四位包含了文件的大小信息?请高手回答对不对!<br />而语句:<br />&nbsp;&nbsp;&nbsp;&nbsp;dnCS=*((U8&nbsp;*)(downloadAddress+fileSize-2))+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(&nbsp;(U8&nbsp;*)(downloadAddress+fileSize-1)&nbsp;)&lt&lt8);<br />说明了BIN文件的后两位包含了文件的相加和信息,对不对,请指教!!!<br /><br /><br /><br />
dld2 发表于 2008-2-22 13:55 | 显示全部楼层

lz不是很明白吗

有啥好问的?!
 楼主| snowtx 发表于 2008-2-23 00:06 | 显示全部楼层

snowtx

呵呵,以前不了解,学习的时候突然发现了不敢确定!<br />还有什么别的像这样的小知识,请各位大虾给小弟说说,不胜感激!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部