线程中讨论的其他部件:TMS320F28.0023万,
大家好,
我正在 使用TMS320F28.0023万开发软件。
我们希望将闪存中存储的变量用作持久性变量。
我已经研究并发现我可以使用以下程序在FRAM中声明一个持久性变量。 是否也有方法在闪存中创建持久性变量?
"#pragma persistent(x)个"
此致。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好,
我正在 使用TMS320F28.0023万开发软件。
我们希望将闪存中存储的变量用作持久性变量。
我已经研究并发现我可以使用以下程序在FRAM中声明一个持久性变量。 是否也有方法在闪存中创建持久性变量?
"#pragma persistent(x)个"
此致。
2000 flash-a-persistent-variable"]是否28.0023万是否有办法在闪存中创建永久变量[?TI-CGT-C2000_prag.0.LTS 21.6 编译器允许 使用持久性pragma,这会导致将数据变量放置在 ".TI.PERTI"节中。
但是,编译器生成的用于修改持久性变量的汇编程序只是假定变量位于可写内存中。 例如,为TMS320F28.0023万创建的以下测试:
#pragma PERSISTENT (num_boots) int num_boots = 0; int main(void) { num_boots++; return num_boots; }导致汇编程序:
||main||: .dwcfi cfa_offset, -2 .dwcfi save_reg_to_mem, 26, 0 .dwpsn file "../main.c",line 13,column 5,is_stmt,isa 0 MOVW DP,#||num_boots|| ; [CPU_ARAU] INC @||num_boots|| ; [CPU_ALU] |13| .dwpsn file "../main.c",line 15,column 2,is_stmt,isa 0 MOV AL,@||num_boots|| ; [CPU_ALU] |15| .dwpsn file "../main.c",line 16,column 1,is_stmt,isa 0 $C$DW$3 .dwtag DW_TAG_TI_branch .dwattr $C$DW$3, DW_AT_low_pc(0x00) .dwattr $C$DW$3, DW_AT_TI_return LRETR ; [CPU_ALU] ; return occurs ; []由于C2000器件中的闪存需要擦除和编程操作,即不像MSP430 FRAM器件那样具有可写字节,因此,在闪存中标记为持久性的变量将无法由正在运行的程序进行修改。
另外,在CCS 11.1 安装中搜索模板链接器.cmd文件时,对于 基于MSP430 FRAM的器件,只会在链接器命令文件中找到".TI.PERSISTICE"部分。
也就是说,看不到任何支持FRAM的C2000器件,因此不清楚 TI-CGT-C2000 _C2000_FRAM.0.LTS 21.6 编译器为何允许永久pragma。
PS
我是嵌入式开发的初学者,因此我的帖子可能毫无意义。 抱歉。
经过大量的研究,我发现闪存中的写入数量有限制。
因此,我找到了一个文档,其中指出,如果您想在关机/重置后仍保留该值,则使用Flash的常用方法如下。
(1)启动时将闪存中存储的值保存到RAM变量中
(2)定期将RAM变量的值写入闪存
在CCS中是否可以执行此类流程?
如果是这样,如果您能同时提供处理样本,将会非常有帮助。
提前感谢您的参与。
您好,Manabe:
是的, 您可以使用您提到的方法-启动时从闪存复制,并根据需要将程序复制到闪存。
您可以根据需要在运行时使用闪存API将这些值编程到闪存中。 请查看此C2000Ware示例,了解闪存API的使用情况: C2000Ware_x_xx_xx_xx\driverlib\f28002x\examples\flash\flashapi_ex1_programming.c.</s>2.8002万
谢谢,此致,
Vamsi