今天在做STM32外挂SRAM的测试,遇到一些问题记录下来
1 如何让变量定义到外部SRAM里
最简单的,修改好FSMC的初始化程序后,在option里加上SRAM的地址和大小,将default选项勾上,每个文件用默认设置,定义的变量就全部到SRAM里了
2 如何将一部分变量定义到SRAM,一部分定义到内部RAM里
方法一:
直接修改文件的属性,文件的option选项里选择将ZI变量和RW变量定义到SRAM里,这样这个文件所有的变量就会定义到外部SRAM,而其他文件的变量定义在内部RAM。
另外我尝试过修改分组的option选项,不知道为什么会警告:
L6314W: "No section matches pattern xxx.o (ZI)"
所以保险一些还是每个文件单独设置。
方法二:
修改分散加载文件,文件怎么打开自行百度,增加以下内容:
RW_RAM1 0x68000000 0x00100000 {
*(ext_sram)
}
修改完后在options选项卡的linker页面中,去掉“Use Memory Layout frem Target Dialog”选项,否则会以默认的分散加载文件编译。
然后定义变量是在后面增加 __attribute__((section("ext_sram")))或者 __attribute__((section("ext_sram"), zero_init))
第一种是未初始化的变量,第二种是初始化为0的变量。