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