当使用Clion开发STM32时,与Keil不同的点很多,这里使用的是ST官方的CLT工具链,也就是GCC编译,因此相比Keil,多了个链接文件(.ld),因此如果你在外扩了SRAM/SDRAM的时候,如果想要显式声明一个大数组而不是通过指针去访问,就需要去修改.ld文件里的内容,

链接文件是为了给链接器看如何分配管理内存还有Flash用的,因此在链接文件前面,需要声明有哪些存储空间以及大小还有属性
所以我们在配置好FMC/FSMC后需要手动来.ld文件里面添加一行以声明你外扩的RAM,但是在声明之后,链接器只是知道有这么一块空间而不知道该把什么样的数据以什么样的形式链接到这块空间,因此我们还需要写Section,
这里规定了各个数据都应该放在哪里


因此我们需要创建一个存在于外部RAM上的数组就需要创建一个Section

到这里,链接器就满足知道外部RAM也知道什么样的数据该放在这里,下一步我们需要让链接器知道,我们要创建的数组就是这一类数据,
使用关键字attribute__来指定某一个section,这样链接器就知道该把这个数组以32位对齐的方式链接到外部SDRAM了,
当我们使用H7的时候链接器可能会默认把定义的变量链接到DTCMRAM里面


,这是一块直接位于内核的RAM,有单独的数据总线,访问速度远大于其他RAM,但是大小有限,因此也可以通过直接修改.ld让链接器把数据默认存储在普通的片内SRAM
823

被折叠的 条评论
为什么被折叠?



