Thread 中讨论的其他器件:SYSBIOS
您好!
我将 uartecho 项目导入 CCS、并 添加一些代码来测试如何将数据保存到闪存区域。
因此、我按如下方式更改了.cmd 文件:
--stack_size=8192 /* C stack is also used for ISR stack */
HEAPSIZE = 0x20000; /* Size of heap buffer used by HeapMem */
MEMORY
{
FLASH (RX) : origin = 0x00000000, length = 0x000FF000
MYDATA (RW) : origin = 0x000FF000, length = 0x00001000
SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}
/* Section allocation in memory */
SECTIONS
{
.text : > FLASH
.const : > FLASH
.rodata : > FLASH
.cinit : > FLASH
.init_array : > FLASH
myvars : {} > MYDATA
.TI.ramfunc : {} load=FLASH, run=SRAM, table(BINIT)
.data : > SRAM
.bss : > SRAM
.sysmem : > SRAM
/* Heap buffer used by HeapMem */
.priheap : {
__primary_heap_start__ = .;
. += HEAPSIZE;
__primary_heap_end__ = .;
} > SRAM align 8
.stack : > SRAM (HIGH)
}
请注意 MyData 和 myvars。
我将以下代码片段放入 uartecho.c 中:
/* pragmas to define the variables in flash */ #pragma DATA_SECTION(var1, "myvars"); #pragma RETAIN(var1) uint32_t var1 = 125; #pragma DATA_SECTION(var2, "myvars"); #pragma RETAIN(var2) uint32_t var2 = 300;
我编译了项目并开始调试。 然后、我立即看到以下调试会话屏幕截图。
程序运行进入退出状态、然后挂起。

出于测试目的、我通过添加 const 修改了变量 var1和 var2的属性。
const uint32_t var1 = 125;
const uint32_t var2 = 300;
然后 uartecho 程序运行良好。
这意味着我不能更改/修改闪存中特定位置的内容。
如何动态更改闪存中定义的 var1和 var2的内容?
任何提示/建议都将提前得到认可。
HaeSeung

