如何把变量保存在SRAM中指定地址
本帖最后由 sy12138 于 2022-11-2 10:24 编辑#每日话题#
如图可以看到,代码先给数组 p_data、cmp_addr 和变量 RSRAM_DATA 指定了地址,此时函数 Delay(uint32_t count)和 Run_In_Sram_test(void) 没有指定地址,存放地址由编译器自动分配;
双击打开 map 文件,可以看到,此时 p_data、cmp_addr 和 RSRAM_DATA 都存放到了指定的 SRAM 地址,而 Run_In_Sram_test()和 Delay()由编译器分配到了 0x0800xxxx 的地址,仍旧存放在 Flash 里面
将函数保存在SRAM中也是类似,使用 void 函数名(void) __attribute__((section(".ARM.__at_地址")));的方式,可以将函数定义到指定地址
打开 map 文件可以看到,Run_In_Sram_test()和 Delay()已分别指定到了 0x10000401 和0x10000801,此时指令是存到了 SRAM 虚拟的前 64K,与前面定义的数组和变量错开了一个区域。
扩展内存,外加SRAM或者SDRAM了吗 本帖最后由 GGG3 于 2022-11-1 14:58 编辑
biechedan 发表于 2022-11-1 12:07
扩展内存,外加SRAM或者SDRAM了吗
看起来应该没有 怎么保存后备RAM数据 data段与bss段是怎么加载到SRAM中 cemaj 发表于 2022-11-1 15:03
怎么保存后备RAM数据
你说的是BKP区吗?这部分在不掉电情况下是自动保存的 mickit 发表于 2022-11-1 15:24
data段与bss段是怎么加载到SRAM中
bss段直接清0,data段直接从FLASH中复制。 全局变量,就在SRAM中,保存到特定位置,有毛用。 mickit 发表于 2022-11-1 15:24
data段与bss段是怎么加载到SRAM中
在进入main()函数之前由C库函数__main()自动加载,__main()在启动文件中调用,执行完之后会跳转到main()函数 要程序放到sram中运行么? pattywu 发表于 2022-11-1 15:36
全局变量,就在SRAM中,保存到特定位置,有毛用。
SRAM数据在STOP2模式下不保存,可以把变量保存在R-SRAM防止丢失,这里只是提供存放的方法 everyrobin 发表于 2022-11-1 15:51
要程序放到sram中运行么?
不需要的 mdk 如何配置sram mollylawrence 发表于 2022-11-1 16:29
mdk 如何配置sram
如何定义变量使其能在SRAM中? 通常,我们会将栈区 STACK 分配到内部 SRAM,用来保存某些程序所用到的局部变量 临时变量一般都是存在RAM中的吧?
页:
[1]
2