STM32F4xx系列MCU基本上具有三个不同的RAM块(RAM1(112k),RAM2(16k),内核耦合存储器(64k))映射到特定地址。所有这些都可以由CPU透明地用作数据RAM。 (基本原理是,所有三个RAM可以同时运行,因此,例如,您可以进行一次往返RAM1的DMA传输,一次往返RAM2的DMA传输以及CPU对CCM的访问而无任何争用。)
在ld
链接描述文件中,您可以定义相应的部分,并让gcc通过__attribute__((section("name"))
在其中放置变量。
我想要实现的是让ld自动分配变量,首先填充RAM1,然后填充RAM2,再填充CCM。 (RAM1和RAM2在地址空间中是连续的,CCM是分开的。)
所以,我想
似乎我需要ld .data
节放入RAM1中,等到RAM2填满后再放入CCM。那可能吗?还是我必须将所有不适合RAM1的变量显式地放入RAM2或CCM?