ameba-sram sdram
ameba-sram sdram
*如有任何工程问题,请填写工程单,并发正式邮件,问题解决速度可提高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