ameba-sram sdram

ameba-sram sdram

<-ameba-overview

*如有任何工程问题,请填写工程单,并发正式邮件,问题解决速度可提高10%。


--》

ameba1 SRAM 512KB, 系统每次复位后会将code从Flash拉取到SRAM再执行;

amebaZ SRAM 256KB,具备XIP,系统每次复位后直接从Flash执行。

目前有2MB SDRAM的只有两个型号:8195A和8711AM


--》计算SDRAM使用情况:

参考该文件:application.map




--》SDK与内存相关默认配置:

1、默认heap为60K,上限值为124KB(4.0c),查看该处数值:configTOTAL_HEAP_SIZE

2、默认使用的freertos的heap_5.c

3、修改ameba1和amebaZ内存配置如下:

此处的0x301b5000是首地址,因为8195A 有2M SDRAM,地址范围在0x3000000~0x301FFFFF

当需要的SDRAM heap加大时,一定要修改首地址。

#if (defined CONFIG_PLATFORM_8195A)
HeapRegion_t xHeapRegions[] =
{
    { (uint8_t*)0x10002300, 0x3D00 },    // Image1 recycle heap
    { ucHeap, sizeof(ucHeap) },         // Defines a block from ucHeap
#if 0
    { (uint8_t*)0x301b5000, 300*1024 }, // SDRAM heap
#endif        
    { NULL, 0 }                             // Terminates the array.
};
#elif (defined CONFIG_PLATFORM_8711B)
#include "rtl8710b_boot.h"
extern BOOT_EXPORT_SYMB_TABLE boot_export_symbol;
HeapRegion_t xHeapRegions[] =
{
    { 0, 0},    // Image1 reserved ,length will be corrected in pvPortMalloc()
    { ucHeap, sizeof(ucHeap) },     // Defines a block from ucHeap
#if (CONFIG_ENABLE_RDP == 0)    
    { (uint8_t*)0x1003f000, 0x1000},    // RDP reserved
#endif    
    { NULL, 0 }                     // Terminates the array.

};


4、推荐heap分配函数:

pvPortMalloc

vPortFree

或者:

RtlMalloc
RtlMfree




猜你喜欢

转载自blog.csdn.net/lxdongabc/article/details/79975699