美文网首页
SRAM问题

SRAM问题

作者: RGW | 来源:发表于2017-03-09 10:39 被阅读42次

    http://www.openedv.com/thread-66659-1-1.html

    为了提高同步性,SRAM分两部分;上半部分只能system bus访问。是否说程序能用的SRAM只能是下半部分?

    3.5.3.4 SRAM accessesThe SRAM is split into two logical arrays that are 32-bits wide.• SRAM_L — Accessible by the code bus of the Cortex-M4 core and by the backdoorport.• SRAM_U — Accessible by the system bus of the Cortex-M4 core and by the backdoor port.

    由于Kinetis K系列芯片使用的是ARM Cortex M4内核,其使用哈弗架构,内部的SRAM被分成了两部分,通过不同的总线访问。也就是说,SRAM分成了两部分,虽然逻辑地址是连续的,但是这两部分SRAM不能当成一个连续空间来使用。因此,请避免将heap大小设置超过1/2 SRAM大小,否则在使用过程中会产生错误。

    谢谢回复。这样有个问题,全局变量包括heap 都是占用SRAM_L内存;如何使用SRAM_U内存? 需要评估全局变量大小,栈和堆的大小,不要跨界使用就可以。客户可以参考IAR工程的链接配置文件,将RAM区域分成两部分,根据实际使用情况选择合适的放置区域:/-Sizes-/define symbol ICFEDIT_size_cstack = 0x1000;define symbol ICFEDIT_size_heap = 0x200;define symbol ICFEDIT_region_RAM_start = 0x1FFF0410;define symbol ICFEDIT_region_RAM_end = 0x20000000;define symbol region_RAM2_start = 0x20000000;define symbol region_RAM2_end = 0x20010000;define region RAM_region = mem:[from ICFEDIT_region_RAM_start to ICFEDIT_region_RAM_end] | mem:[from region_RAM2_start to region_RAM2_end];place in RAM_region { readwrite, block CodeRelocateRam, block CSTACK, block HEAP };一般的工程只需要使用使用SRAM_L,客户需要根据实际使用情况来调整,同一个函数或者变量不要跨界(0x2000_0000)就行。祝顺利。

    相关文章

      网友评论

          本文标题:SRAM问题

          本文链接:https://www.haomeiwen.com/subject/nmhrpttx.html