看了下 halcogen的对里面的函数不是很理解
- 读写函数 异步和同步的区别
- TI_Fee_MainFunction() 这个函数的作用是什么? 例子里面每次操作后面都有 这段:
do
{
TI_Fee_MainFunction();
delay();
Status=TI_Fee_GetStatus(0);
}
while(Status!=IDLE);这段是什么意思? delay我们准备换成定时器 而不是让程序死在这边 这部大概要多少毫秒? 我们的程序是安全相关的 while(Status!=IDLE);这个死循环我们也得改掉 -
最后面 这个 TI_Fee_Format(0xA5A5A5A5U); 这个格式化操作是什么作用
cc liu1:
回复 Sam Zhang:
感谢你的回答 对我帮助很大
还有两个小问题
1.同步都写的语句走完,是不是都写就结束了,不需要像异步那样 循环调用mainfunction?
2.最后的那个格式化 是不是清除bank7上面的内容?那invalidate函数的功能又是什么呢?还是两个要配合使用?
Sam Zhang:
回复 cc liu1:
1.是的。
2.是的,清除整个FEE上的内容。invalidate将这个block进行invalidate操作,相当于没有写东西在里面。这两个不是配合在一起的。
cc liu1:
回复 Sam Zhang:
感谢你的解答
你说的 “invalidate将这个block进行invalidate操作” 将某个block无效,可否理解成 擦出指定的block?
Sam Zhang:
回复 cc liu1:
可以。
jie xia:
回复 Sam Zhang:
1.这个block 应该怎么理解呢?存储浮点数和整形数,这个block的大小是不是也要改变?
2.现在使用的芯片是TMS570LS1224,Flash 只有BANK0和BANK7,如果存储数据,我不是用FEE(BANK7),而是用BANK0,是否可以?若可以,相对FEE之下,是否有哪些不好的地方? 应该怎么操作?要注意哪些问题?
Sam Zhang:
回复 jie xia:
可以参考下FEE的User Guide。
不建议用BANK0来存储数据,同一个bank不能同时进行指令的执行和数据擦写。一般用BANK0来存储程序,BANK7来模拟EEPROM进行数据存储。
jie xia:
回复 Sam Zhang:
谢谢您的回复,对于HALCOGEN 产生的关于FEE的代码我还有些疑问:
1. 写入的时候使用 TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]); 函数, 但是 SpecialRamBlock 中有100 Bytes 的值,Block 的大小是8 Bytes,他是如何写入100个Bytes的值的呢? 根据实测的情况看只写入了 与 Block 大小对应Bytes的数据。
2. 根据手册上的说法,Virtual Sector Header 有16 bytes ,Data Block Header 有 24 Bytes, 但是为什么我这边看到 地址是 0xF0200000 对应的是16Bytes 的数据,后面地址是 0xF0200010 ,16Bytes 对应的值都是 1,然后是 24Bytes 的Data Block Header 接着是与Block 大小对应Bytes 的数据(Sector 1的起始地址是0xF0200000)。请问 地址 0xF0200010 这里的16Bytes 的 1 对应的什么?
3.关于读取数据的时候,我先调用I_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]); 写入一批数据,然后将SpecialRamBlock 的 下标由0改为8, 再写入一批数据,然后调用TI_Fee_Read(BlockNumber,BlockOffset,Read_Ptr,Length); 读取数据,BlockOffset = 4; Length = 1; 结果读取出来的值是14,理论上应该是12,这是为什么?另外,我第一次写入再读取的时候,数据是正常的读取的是4。 怎样读取不同Block 的数据呢?这里的不同包括Block的编号和Block 所在的位置。
jie xia:
回复 Sam Zhang:
对于上面提到的第三个问题更新一下,读取的数据是正确的,但是,第二次写入数据后,第一个Block 的数据就会变成 Invalid 状态,那怎么读取这一部分的内容呢?
TI中文支持网

