TIwilliam hill官网
直播中

严岩

7年用户 181经验值
私信 关注
[问答]

关于eeprom emulation

你好,能否提供基于TMS470MF06607的关于eeprom仿真模块的配置步骤和案例代码?万分感谢!

回帖(4)

刘丹

2018-6-21 08:24:34
Hi Forever,
      您可以参考HALCoGen中的Help Tips,里面有您需要的EEPROM的读写参考例程和具体步骤:
首先下载最新HALCoGen,链接如下:http://www.ti.com/tool/halcogen 
安装完毕之后,您可以在安装路径下面可以看到Help 文件夹:

打开后看到:

最后在TMS470M的Help工具中就可以看到您需要的EEPROM例程了:

谢谢!
                                                                         If my reply answers your question, please click on Verify Answer.Thanks
Best Regards,
SZ
举报

严岩

2018-6-21 08:29:49
引用: huzp_bbs 发表于 2018-6-21 08:24
Hi Forever,
      您可以参考HALCoGen中的Help Tips,里面有您需要的EEPROM的读写参考例程和具体步骤:
首先下载最新HALCoGen,链接如下:http://www.ti.com/tool/halcogen 

你好,感谢你详细的解答,我已初步调试成功,但由于HCG生成代码太多,没有时间一一详细查看,无法准确理解其含义。其是否主要用以自动实现此FLASH空间划分多区域的EEPROM重复利用??想跟你再确认一下
1.HCG的FEE选项中第二配置页,共16个FEE BLOCK,每个最多80bytes,合计1280bytes,而一个FEE FLASH SECTOR有16Kbytes,差不多有15倍的空余空间。此空余空间是否由HCG生成的代码来自动完成对SECTOR区间划分成约16个页,来提高FLASH模拟EEPROM的耐久性?若确实如此,那是否意味着要考虑合计的FEE BLOCK容量不能超过16K/16页=1024bytes?
2.SECTOR最多可设置5个,但在HCG的代码里没有看到可人为选择SECTOR的函数,是否意味着自动完成了模拟EEPROM前一个SECTOR写满后,转入下一个SECTOR,再将前一个SECTOR擦除的功能?
3.自动生成代码有许多WARING,如下图,虽不影响使用但看着不舒服,如何消除?
举报

李麒铭

2018-6-21 08:42:59
引用: toomuchsnow 发表于 2018-6-21 08:29
你好,感谢你详细的解答,我已初步调试成功,但由于HCG生成代码太多,没有时间一一详细查看,无法准确理解其含义。其是否主要用以自动实现此FLASH空间划分多区域的EEPROM重复利用??想跟你再确认一下
1.HCG的FEE选项中第二配置页,共16个FEE BLOCK,每个最多80bytes,合计1280bytes,而一个FEE FLASH SECTOR有16Kbytes,差 ...

Hi Forever,
    我来说一下我的理解哈。
    Block是指需要保存的数据对象,比如在一个应用中,要保存两个数据,[时间] (8byte) 和[地点] (16byte),那么就设置两个Block,[时间]对应block 1, [地点]对应block 2。
    在HALCoGen中,需要配置两个Block,并且把它们的长度也设置好。
    如何计算空间,需要看我们的Virtual Sector一页中是如何设置的。
 
   
    比如默认的设置,那么Virtual Sector 1 对应 (Real) Flash Sector 0。长度是16KB。
    接下来,假设每次都是[时间]和[地点]同时需要更新保存的话,(为了算方便,我没有考虑overhead的长度),那么每次要存储8+16 = 24个byte。
    16KB/24byte ~= 682次。
     也就是说大概保存682次后,Virtual Sector 1就被写满了。(当然,如果考虑overhead的话,次数会比682少一些。)
     FEE driver会自动切换到Virtual Sector 2, 并把Virtual Sector 1 全部擦除。
     切换过程中,FEE driver会保留最后写入的[时间]和[地点]的值到Virtual Sector 2。
     对于TMS470的FEE driver,还有一个叫做"Maximum Number of Links”的参数,这个参数是用来更加快速的切换Virtual Sector时使用的。
     如果你打开driver的代码就会发现,让Driver去检查是否Virtual Sector已经写满的速度比较慢,而如果用户指定这个Link的数字的话,(Link最大只能设置256...)
     Driver 判断是否要切换Virtual Sector的速度会比较快一些。
      如果您对操作速度要求不高,那么Max. Link参数可以设置成0,这样就不会检查Link数了。
举报

李麒铭

2018-6-21 08:48:54
引用: testd27 发表于 2018-6-21 08:42
Hi Forever,
    我来说一下我的理解哈。
    Block是指需要保存的数据对象,比如在一个应用中,要保存两个数据,[时间] (8byte) 和[地点] (16byte),那么就设置两个Block,[时间]对应block 1, [地点]对应block 2。

关于Warning,我这里看到有3类:
1. 关于.sysmem的warning,应该只有一条,这个warning是因为FEE driver中使用到了heap,但是默认的链接选项中没有分配heap空间。
    解决它可以在[项目属性]->[Build]->[ARM Linker]->[Basic Option]中加入Heap的长度设置,如0x800。

    或者在对应的.cmd文件中设置也可以。
   2. "*** variable is declared but never used" warning,这类警告是因为local变量没有被使用到,主要是因为ECC功能的宏命令开关问题。
       如果您有时间,可以在这些变量声明的地方也加入宏开关。
    3. “ enumerated type mixed with another type”是因为代码中给某些枚举类型的变量赋值了整数值造成的,逻辑上没有错误,如果不希望看到warning,可以在赋值的整数类型前面做类型转换。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分