TI中文支持网
TI专业的中文技术问题搜集分享网站

在线等—TMS570LS1227 FEE读写数据,重新上电后数据丢失

Other Parts Discussed in Thread:UNIFLASH

下面这段代码是我仿照例程写的FEE测试程序,程序运行后,
void eeprom_test(uint8_t offset)
{
 uint8_t testData[8];
 uint8_t readData[8];
 int32_t index;
 int32_t cycle=0;
 uint32_t eep_delay_cnt=0;
 Std_ReturnType oResult=E_NOT_OK;
 uint16 Status;

 
  do
  {
   TI_Fee_MainFunction();
   eep_delay();
   Status=TI_Fee_GetStatus(0);
   eep_delay_cnt++;
  }
  while(Status!=IDLE);
  TI_Fee_Read(1,0,readData,8);

  do
  {
   TI_Fee_MainFunction();
   eep_delay();
   Status=TI_Fee_GetStatus(0);
   eep_delay_cnt++;
  }while(Status!=IDLE);
  offset++;                                         //break1*******************
  for(index=0;index<8;index++)
  {
   testData[index] = index+offset;
  }
  TI_Fee_WriteAsync(1, testData);
  do
  {
   TI_Fee_MainFunction();
   eep_delay();
   Status=TI_Fee_GetStatus(0);
  }
  while(Status!=IDLE);
  TI_Fee_WriteSync(1, testData);
  /* Read the block with unknown length */
  do
  {
   TI_Fee_MainFunction();
   eep_delay();
   Status=TI_Fee_GetStatus(0);
   eep_delay_cnt++;
  }
  while(Status!=IDLE);
  TI_Fee_Read(1,0,readData,8);
  do
  {
   TI_Fee_MainFunction();
   eep_delay();
   Status=TI_Fee_GetStatus(0);
   eep_delay_cnt++;
  }while(Status!=IDLE); //至此,读数据才完全生效
 
}   ///break2*********************************
在程序中的break1和break2处设置断点,能查看到读取出来的数据(readData)与写入的数据一致,restart运行时,再break1处可以正常读取出数据,
但是如果重新load程序时,再break1处读取不到数据。
请问这是什么情况?急急急。。。。在线等。谢谢!!!
Susan Yang:

请您尝试一下,使用uniflash来烧录程序,之后使用uniflash的read memory 来查看是否正常写入了数据

,

user1658391:

是否我表述的不清楚,程序并没有丢失,只是保存在FEE中的数据丢失了,我想肯定时我得操作流程或配置有误,可是又不知道错在哪里

,

user1658391:

通过memory查看,看得到数据写进去了,但是地址好像不是从0xf0200000开始的,除了数据之外,还有好多其他的数据,不知道是什么,图片粘贴不了。

但是重新debug程序后,再看Memory Browser,原来地址中的数据又全部恢复成FF了,这是怎么回事

,

Susan Yang:

看起来程序没什么问题。您是否调用了TI_Fee_Format?

另外图片粘贴的话,您可以使用右下角的“使用高级编辑器编辑文本”以附件形式上传

,

Susan Yang:

另外我手边没有这个板子,不好测试。所以我在E2E英文版发了个帖子咨询对应的专家,您可以跟踪/补充

e2e.ti.com/…/944068

,

user1658391:

1106.新建 Microsoft Word 文档.docx

,

user1658391:

我上传了一个附件,包含debug过程中的截图,请帮我更新进去,谢谢!

,

Susan Yang:

已经更新了,明天应该会有回复

,

user1658391:

我用HAL Code Generation中提供的例子重新测试了,并注释掉 以下这几条语句
/* Invalidate a written block*/
//TI_Fee_InvalidateBlock(BlockNumber);
//do
//{
//TI_Fee_MainFunction();
//delay();
//Status=TI_Fee_GetStatus(0);
//}
//while(Status!=IDLE);
/* Format bank 7 */// TI_Fee_Format(0xA5A5A5A5U);

测试现象和上述所描述一致,只要重新debug,0xf0200000处上次写入的数据就会自动变成0xFF,已经过多次确认。
期待答案,项目推进到此处时,无法继续了

,

Susan Yang:

看英文论坛的回复,您解决了问题?

,

user1658391:

是的,我解决了这个问题,但是还有一个问题需要向您请教!
HAL Code Generation软件默认只能配置16个block,而我需要做至少24个block,请问我应该如何扩展?
我尝试将ti_fee_cfg.h文件中将TI_FEE_NUMBER_OF_BLOCKS改为17,并将ti_fee_cfg.c中的Fee_BlockConfiguration初始化到17个block/*Block 17 */{/* Block number*/17U,/* Block size*/64U,/* Block immediate data used*/TRUE,/* Number of write cycles*/0x8U,/* Device Index*/0x00000000U,/* Number of DataSets*/1U,/* EEP number*/0U},
但是,当我对第17个block进行写操作时,软件跑死了。
请问有没有扩展block的说明文档?

,

Susan Yang:

您可以看一下

processors.wiki.ti.com/…/TI_FEE

需要您手动添加

processors.wiki.ti.com/…/TI_FEE_User_Guide.pdf

使用的是 ti_fee_cfg.h & ti_fee_cfg.c,单纯看您的代码,感觉没错

,

Susan Yang:

在ti_fee_cfg.c中有如下说明,不知您是否修改了TI_FEE_TOTAL_BLOCKS_DATASETS?

/* If project needs more than 16 blocks, add additional blocks here and alsomodify TI_FEE_TOTAL_BLOCKS_DATASETS and TI_FEE_NUMBER_OF_BLOCKS in ti_fee_cfg.h*/
/** @def TI_FEE_TOTAL_BLOCKS_DATASETS
*@brief Alias name for total number of blocks and datasets
*/
#define TI_FEE_TOTAL_BLOCKS_DATASETS16U

,

f zl:

您好,我同样遇到了掉电后Flash数据丢失的问题,请问您是怎么解决的?

赞(0)
未经允许不得转载:TI中文支持网 » 在线等—TMS570LS1227 FEE读写数据,重新上电后数据丢失
分享到: 更多 (0)