PCB抄板技术网


首页 -- PCB抄板-- PCB技术-- 芯片解密-- 新闻技术 --关于我们
 
PCB抄板技术网 >> 芯片解密 >> 当前位置

使用 CCM 导致以太网通信失败

问题:
该问题由某客户提出,发生在STM32F407IGT6 器件上。据其工程师讲述:在其产品设计中使用了STM32 的以太网接口进行通信。在软件最初的调试中,该接口工作正常。后来为了满足软件对内存容量的需求,启用了STM32 的CCM 存贮器,但启用后发现以太网接口不能通信。所使用的开发工具为Keil MDK,

调研:
进一步了解得知,在其软件中,使用了动态内存对以太网的数据报文进行了缓存,并且数据在以太网MAC 和内存中的缓存之间的传输是通过以太网的DMA 功能进行的。于是,修改内存分配如表(二),然后得新测试。测试结果表明,以太网接口可以正常通信了。
结论:
对STM32 的CCM 存贮器使用不当。因为以太网的DMA 与CCM 存贮器之间没有数据通道,它们之间的数据传输数据是不能实现的。
处理:
修改内存分配,如表(二)。
建议:
  为进一步提高对数据的处理性能,在STM32F4 中设有CCM 存贮器。与常规的存贮器不同,CCM 存贮器是CPU 独享的存贮器。CCM 存贮器与CPU 之间的数据传输不经过总线矩阵,以提高CPU 对CCM存贮的访问效率,如图(一)所示。这样的组织结构也决定了,只有CPU 才能够访问CCM 存贮器,而DMA 以及其它的外设与CCM 存贮器之间没有数据通道,也就无法对其访问。在通常的应用中,适合将程序的栈放在CCM 存贮器中,以提高中断的响应速度,以及对子程序的调用速度。同时,如果使用C语言编程,函数的局部变量是定义在栈上的,所以把栈放在CCM 存贮器中,也可以提高CPU 对函数的局部变量的访问速度。对于一些算法的实现,比如DSP 计算或浮点数计算,适合于把参与计算数据及计算出的结果存放在CCM 存贮存器中,这样可以提高计算的效率。如果希望动态的管理CCM 存贮器,则最好将其与常规存贮器加以区分。因为两种存贮器的属性不同,用途也不同。CCM 存贮器不能由DMA 访问,而常规存贮器会降低CPU 对数据的处理效率。

返回顶部


2013-2015 PCB抄板技术网 All Rights Reserved.
如有任何问题和建议请联系:498187676@qq.com

深圳市协同电子有限公司 版权所有
电话:0755-88820678 QQ: 498187676 地址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1618(李朗软件园对面)
手机:13713820066 联系人:周工

 

 


站点地图

粤ICP备12084176号-11