打印

EEPROM问题2

[复制链接]
1364|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
win2000_li|  楼主 | 2008-5-16 22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位同仁,在写EEPROM时,为了计算偏移量.是不是要定义一个数据的格式.

比如: 头(0x55)+长度(LEN)+数据(Data)

在下一次写数据的时候,在开始址地址找起走,直到找到最后一个。来计算偏

移量。再写到这个偏移量+开始地址的下一个地址。

还是有其它办法,请兄弟指点。

就是计算要写EEPROM的偏移量。

请大家帮忙!!!

相关帖子

沙发
win2000_li|  楼主 | 2008-5-17 08:59 | 只看该作者

请大家帮忙!!!

以下这段程序是我从飞思卡尔AW32 copy过来的,但是水平太差没有看懂。

请兄弟们指点一下啊!

/****************************************************************** 
*  Function Description:  get cur eeprom emulator data 
*  Return: 0x0 - 0x200     valid offset to latest data package 
*          EEPROM_EMPTY    No data available 
*          EEPROM_INVALID  Data corruption, need erase
*******************************************************************/
static UINT16 get_cur_eeprom_offset()
{
    UINT16 prev_len, cur_len;
    UINT16 cur_offset;
    UINT8 *addr;
    
    /* searching from start */
    cur_offset = 0;
    prev_len = 0;
    addr = (UINT8*)EEPROM_EMUL_START;
    cur_len = *(UINT16 *)addr;
    while((cur_len < EEPROM_EMUL_SIZE - 4) && (cur_offset < EEPROM_EMUL_SIZE - 2))
    {
        prev_len = cur_len;
        cur_offset += cur_len + 2;
        addr = (UINT8 *)(EEPROM_EMUL_START + cur_offset);
        cur_len = *(UINT16 *)addr;
    }
    
    /* correct last data package start with len + data + padding */
    if((cur_len == 0xffff) && (cur_offset < EEPROM_EMUL_SIZE - 1))
        cur_offset -= prev_len + 2;
    else
        cur_offset = EEPROM_INVALID;
    
    /* return correct offset for the last data package available */
    return cur_offset;
}

使用特权

评论回复
板凳
win2000_li|  楼主 | 2008-5-19 13:54 | 只看该作者

顶起啊!!!!!!!!!!!

为什么没有人理我啊?????

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

粉丝