stm32 F40x CCM数据区的使用

1. CCM需要打开总线时钟

2. CCM可以作为堆和栈使用

使用分散加载文件直接操作即可

1     RW_CCMRAM1 0x10000000    {
2         .ANY (HEAP)
3         .ANY (STACK)
4     }

3. CCM无法作为中断向量映射区

为进一步提高对数据的处理性能,在STM32F4 中设有CCM 存贮器。

与常规的存贮器不同,CCM 存贮器是CPU 独享的存贮器。CCM 存贮器与CPU 之间的数据传输不经过总线矩阵,以提高CPU 对CCM存贮的访问效率。

这样的组织结构也决定了,只有CPU 才能够访问CCM 存贮器,而DMA 以及其它的外设与CCM 存贮器之间没有数据通道,也就无法对其访问。

在通常的应用中,适合将程序的栈放在CCM 存贮器中,以提高中断的响应速度,以及对子程序的调用速度。

同时,如果使用C语言编程,函数的局部变量是定义在栈上的,所以把栈放在CCM 存贮器中,也可以提高CPU 对函数的局部变量的访问速度。

对于一些算法的实现,比如DSP 计算或浮点数计算,适合于把参与计算数据及计算出的结果存放在CCM 存贮存器中,这样可以提高计算的效率。

如果希望动态的管理CCM 存贮器,则最好将其与常规存贮器加以区分。因为两种存贮器的属性不同,用途也不同。CCM 存贮器不能由DMA 访问,

而常规存贮器会降低CPU 对数据的处理效率。

博客园:http://www.cnblogs.com/linux-farmer/
原文地址:https://www.cnblogs.com/linux-farmer/p/7387512.html