| 以下这段程序是我从飞思卡尔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 /> |