以下这段程序是我从飞思卡尔AW32 copy过来的,但是水平太差没有看懂。<br /><br />请兄弟们指点一下啊!<br /><br />/****************************************************************** <br />* Function Description: get cur eeprom emulator data <br />* Return: 0x0 - 0x200 valid offset to latest data package <br />* EEPROM_EMPTY No data available <br />* EEPROM_INVALID Data corruption, need erase<br />*******************************************************************/<br />static UINT16 get_cur_eeprom_offset()<br />{<br /> UINT16 prev_len, cur_len;<br /> UINT16 cur_offset;<br /> UINT8 *addr;<br /> <br /> /* searching from start */<br /> cur_offset = 0;<br /> prev_len = 0;<br /> addr = (UINT8*)EEPROM_EMUL_START;<br /> cur_len = *(UINT16 *)addr;<br /> while((cur_len < EEPROM_EMUL_SIZE - 4) && (cur_offset < EEPROM_EMUL_SIZE - 2))<br /> {<br /> prev_len = cur_len;<br /> cur_offset += cur_len + 2;<br /> addr = (UINT8 *)(EEPROM_EMUL_START + cur_offset);<br /> cur_len = *(UINT16 *)addr;<br /> }<br /> <br /> /* correct last data package start with len + data + padding */<br /> if((cur_len == 0xffff) && (cur_offset < EEPROM_EMUL_SIZE - 1))<br /> cur_offset -= prev_len + 2;<br /> else<br /> cur_offset = EEPROM_INVALID;<br /> <br /> /* return correct offset for the last data package available */<br /> return cur_offset;<br />}<br />
|