#ifndef __ARCS_MEMAP_HEADER__ #define __ARCS_MEMAP_HEADER__ #define __KB__(x) ((x) * 1024) #define __MB__(x) ((x) * 1024 * 1024) #if CONFIG_ARCS_AP_CORE #define MEM_ILM_BASE 0x00080000 #define MEM_ILM_SIZE (__KB__(16)) #define MEM_DLM_BASE 0x00100000 #define MEM_DLM_SIZE (__KB__(8)) #else #define MEM_ILM_BASE 0x00280000 #define MEM_ILM_SIZE (__KB__(16)) #define MEM_DLM_BASE 0x00300000 #define MEM_DLM_SIZE (__KB__(8)) #endif #define MEM_BTRAM_BASE 0x200C0000 #define MEM_BTRAM_SIZE (__KB__(24)) /* FLASH 分配 */ #define MEM_TOTAL_FLASH_SIZE __MB__(16) #define MEM_AP_FLASH_BASE 0x30040000 #define MEM_AP_FLASH_SIZE __KB__(1024) #define MEM_CP_FLASH_BASE (0x30000000 + __MB__(6)) #define MEM_CP_FLASH_SIZE __MB__(8) /* PSRAM 分配 */ #define MEM_AP_PSRAM_BASE 0x28000000 #define MEM_AP_PSRAM_SIZE __MB__(8) #define MEM_CP_PSRAM_BASE ((MEM_AP_PSRAM_BASE) + (MEM_AP_PSRAM_SIZE)) #define MEM_CP_PSRAM_SIZE __MB__(8) #if CONFIG_ARCS_AP_CORE #define MEM_PSRAM_BASE MEM_AP_PSRAM_BASE #define MEM_PSRAM_SIZE MEM_AP_PSRAM_SIZE #else #define MEM_PSRAM_BASE MEM_CP_PSRAM_BASE #define MEM_PSRAM_SIZE MEM_CP_PSRAM_SIZE #endif #if CONFIG_ARCS_AP_CORE #define MEM_FLASH_BASE MEM_AP_FLASH_BASE #define MEM_FLASH_SIZE MEM_AP_FLASH_SIZE #else #define MEM_FLASH_BASE MEM_CP_FLASH_BASE #define MEM_FLASH_SIZE MEM_CP_FLASH_SIZE #endif #define __MEM_TOTAL_SRAM_START__ 0x20000080 //暂留128(0x80)字节给WiFi硬件 #define __MEM_TOTAL_SRAM_END__ 0x20050000 /** * SRAM 应用侧分配 * -------------------------------------------- * 0x20000000 | CP-WIFI-RAM(这段内存必须在 0x20000000 + 256KB区间) * | | * (256K) | CP-SRAM * | | * | | AP-WIFI-RAM (这段内存必须在 0x20000000 + 256KB区间) * -------------- | * 0x20040000 | 接在CP核上的SRAM(总计64K) * (8K) | IPC共享内存 * (28K) | LUNA CODE & DATA * -------------- | * 0x20048800 | 接在AP核上的SRAM(总计384K) * (64K) | AP-SRAM * -------------------------------------------- * 0x20058800 | AP算法使用(HardCode) * | | * (350K) | ALGO * | | * -------------------------------------------- * 0x200B0000 | * | | * (24K) | LUNA 核专属内存 * | | * -------------------------------------------- * 0x200C0000 */ /* 独立给算法使用 */ #define MEM_APRAM_BASE 0x20058800 #define MEM_APRAM_SIZE (__KB__(350)) /* 注意,修改以下内存时, 必须与CP保持同步修改 */ #define MEM_CP_WIFI_RAM_BASE __MEM_TOTAL_SRAM_START__ #define MEM_CP_WIFI_RAM_SIZE (__KB__(96) - 128) //暂留128(0x80)字节给WiFi硬件 #define MEM_CP_SRAM_BASE ((MEM_CP_WIFI_RAM_BASE) + (MEM_CP_WIFI_RAM_SIZE)) #define MEM_CP_SRAM_SIZE (__KB__(160)) #define MEM_AP_WIFI_RAM_BASE ((MEM_CP_SRAM_BASE) + (MEM_CP_SRAM_SIZE)) #define MEM_AP_WIFI_RAM_SIZE (__KB__(0)) #define MEM_IPC_BASE ((MEM_AP_WIFI_RAM_BASE) + (MEM_AP_WIFI_RAM_SIZE)) #define MEM_IPC_SIZE (__KB__(8)) #define MEM_LUNA_BASE ((MEM_IPC_BASE) + (MEM_IPC_SIZE)) #define MEM_LUNA_SIZE (__KB__(28)) #define MEM_AP_SRAM_BASE ((MEM_LUNA_BASE) + (MEM_LUNA_SIZE)) #define MEM_AP_SRAM_SIZE (__KB__(62)) #if CONFIG_ARCS_CP_CORE #define MEM_SRAM_BASE MEM_CP_SRAM_BASE #define MEM_SRAM_SIZE MEM_CP_SRAM_SIZE #define MEM_WFRAM_BASE MEM_CP_WIFI_RAM_BASE #define MEM_WFRAM_SIZE MEM_CP_WIFI_RAM_SIZE #else #define MEM_SRAM_BASE MEM_AP_SRAM_BASE #define MEM_SRAM_SIZE MEM_AP_SRAM_SIZE #define MEM_WFRAM_BASE MEM_AP_WIFI_RAM_BASE #define MEM_WFRAM_SIZE MEM_AP_WIFI_RAM_SIZE #endif /* 检查下内存是否超出 */ #if (MEM_IPC_BASE + MEM_IPC_SIZE) > __MEM_TOTAL_SRAM_END__ #error "mem sram overflow" #endif /* wifi sram 必须要在 0x20000000 ~ 0x20040000之间 */ #if (MEM_CP_WIFI_RAM_BASE < 0x20000000) || ((MEM_CP_WIFI_RAM_BASE + MEM_CP_WIFI_RAM_SIZE) > (0x20000000 + __KB__(256))) #error "cp wifi sram error" #endif /* wifi sram 必须要在 0x20000000 ~ 0x20040000之间 */ #if (MEM_AP_WIFI_RAM_BASE < 0x20000000) || ((MEM_AP_WIFI_RAM_BASE + MEM_AP_WIFI_RAM_SIZE) > (0x20000000 + __KB__(256))) #error "ap wifi sram error" #endif /* luna code & instruction & data 必须要在 0x20040000 ~ 0x200B0000 + 448(KB)之间 */ #if (MEM_LUNA_BASE < 0x20040000) || ((MEM_LUNA_BASE + MEM_LUNA_SIZE) > (0x20040000 + __KB__(448))) #error "ap luna sram error" #endif /* 根据实际需要调整 */ #if CONFIG_ARCS_AP_CORE /* 这个是SRAM HEAP大小的定义, 该heap从SRAM中分配 */ #define SRAM_HEAP_SIZE (__KB__(5)) // /* WIFI校准数据大小 */ // #define MEM_WIFI_CALIBRATION_SIZE (__KB__(16)) // #define MEM_WIFI_TRACE_SIZE (__KB__(1)) #define MEM_WIFI_CALIBRATION_SIZE (__KB__(16)) #define MEM_WIFI_TRACE_SIZE (__KB__(0)) #define MEM_WIFI_LA_DUMP_SIZE (__KB__(32)) /* 中断栈 */ #define MEM_INTERRUPT_STACK_SIZE (4 * 1024) #else /* 在CP侧, 没有wifi的校准数据与跟踪数据, 这里定义为0 */ #define MEM_WIFI_CALIBRATION_SIZE (__KB__(0)) #define MEM_WIFI_TRACE_SIZE (__KB__(0)) /* 中断栈 */ #define MEM_INTERRUPT_STACK_SIZE (4 * 1024) #endif #endif//__ARCS_MEMAP_HEADER__