久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開發(fā)工具包  2.20
SF32LB55x內(nèi)存使用指南

1. Memory地址空間

HCPU Memory地址空間

名稱 起始地址 結(jié)束地址 大小(字節(jié)) 描述
HPSYS ROM 0x00000000 0x0000FFFF 64*1024
HPSYS ITCM RAM 0x00010000 0x0001FFFF 64*1024
HPSYS Retention RAM 0x00020000 0x0002FFFF 64*1024 可以在standby低功耗時(shí)不掉電
HPSYS SRAM 0x20000000 0x200FFFFF 1024*1024
LPSYS ROM 0x0B000000 0x0B05FFFF 384*1024
LPSYS ITCM RAM 0x0B0FC000 0x0B0FFFFF 16*1024
LPSYS DTCM RAM 0x2B0FC000 0x2B0FFFFF 16*1024
LPSYS SRAM 0x20100000 0x20137FFF 224*1024
QSPI1 0x10000000 0x11FFFFFF EVB的容量為4MByte
QSPI2 0x64000000 0x67FFFFFF EVB的容量為32MByte
QSPI3 0x68000000 0x68FFFFFF EVB未接
QSPI4 0x12000000 0x13FFFFFF LCPU可選flash,EVB未接
PSRAM-OPI 0x60000000 0x61FFFFFF EVB的容量為4MByte
Note
HPSYS SRAM前128KB為DTCM,相比其后的地址空間訪問速度更快

HCPU用于訪問LPSYS Memory的地址轉(zhuǎn)換接口

  • LCPU SRAM地址轉(zhuǎn)換: LCPU_ADDR_2_HCPU_ADDR , 例如調(diào)用LCPU_ADDR_2_HCPU_ADDR(0x20100000)可得到0x20100000
  • LCPU ROM地址轉(zhuǎn)換: LCPU_ROM_ADDR_2_HCPU_ADDR, 例如調(diào)用LCPU_ROM_ADDR_2_HCPU_ADDR(0x00000000)可得到0x0B000000
  • LCPU ITCM地址轉(zhuǎn)換: LCPU_ITCM_ADDR_2_HCPU_ADDR, 例如調(diào)用LCPU_ITCM_ADDR_2_HCPU_ADDR(0x000FC000)可得到0x0B0FC000
  • LCPU DTCM地址轉(zhuǎn)換: LCPU_DTCM_ADDR_2_HCPU_ADDR, 例如調(diào)用LCPU_DTCM_ADDR_2_HCPU_ADDR(0x200FC000)可得到0x2B0FC000

HCPU的代碼可XIP執(zhí)行在QSPI1/QSPI2/QSPI3上,也可以跑在HPSYS ITCM/SRAM/Retention RAM上

LCPU Memory地址空間

名稱 S-Bus 起始地址 S-Bus 結(jié)束地址 C-Bus 起始地址 C-Bus 結(jié)束地址 大小(字節(jié)) 描述
HPSYS SRAM 0x2A000000 0x2A0FFFFF 1024*1024
LPSYS ROM 0x00000000 0x0005FFFF 384*1024
LPSYS ITCM RAM 0x000FC000 0x000FFFFF 16*1024
LPSYS DTCM RAM 0x200FC000 0x200FFFFF 16*1024
LPSYS SRAM 0x20100000 0x20137FFF 0x00100000 0x00137FFF 224*1024
QSPI4 0x12000000 0x13FFFFFF LCPU可選flash,EVB未接

為了提高性能,除了可以使用0x20100000~0x20137FFF地址段訪問LPSYS SRAM外,還可以使用0x00100000~0x00137FFF訪問, 前者使用S-Bus訪問SRAM,后者使用C-Bus訪問SRAM,他們?cè)L問的都是同一片物理SRAM。 例如,可以將代碼分配在0x00100000開始的地址,SRAM剩余的空間則使用S-Bus的地址空間分配給數(shù)據(jù)段使用, 這樣就可以使取指和取數(shù)并行,提高代碼的執(zhí)行效率。 也可以將ITCM和SRAM合并使用,比如代碼起始地址為0x000FC000,超出16K字節(jié)的代碼就會(huì)接著放在SRAM地址0x00100000開始的區(qū)域,剩余的SRAM空間仍舊使用S-Bus地址空間訪問。 具體示例見第4和第5節(jié)。

LCPU用于訪問HPSYS SRAM地址的轉(zhuǎn)換接口,

LCPU的代碼可以運(yùn)行在LPSYS的ITCM/DTCM/SRAM上,需要由HCPU上的用戶程序搬到對(duì)應(yīng)的地址空間

QSPI1地址空間注意事項(xiàng)

Bootloader使用0x10000000開始的12kbyte作為Flash配置表,默認(rèn)的Flash配置表指定的Flash1地址規(guī)劃如下,用戶程序起始地址為0x10020000。 如果使用自定義的Flash配置表,則必須保證不使用最開始的12kbyte,避免改寫Flash配置表,其它地址空間可隨意使用。

名稱 起始地址 結(jié)束地址 大小(字節(jié)) 描述
Flash配置表 0x10000000 0x10004FFF 20*1024
校準(zhǔn)表 0x10005000 0x10006FFF 8*1024
保留 0x10007000 0x1000FFFF 36*1024
bootrom patch 0x10010000 0x1001FFFF 64*1024
User Code 0x10020000

HPSYS SRAM地址空間注意事項(xiàng)

Bootloader使用下表所示的RAM地址空間,當(dāng)使用Bootloader引導(dǎo)用戶程序在RAM中執(zhí)行時(shí),RAM程序不能使用0x20040000地址,避免搬移后又被bootloader改寫。 如果引導(dǎo)用戶程序在Flash上執(zhí)行,則沒有這個(gè)限制。

bootloader RAM地址空間
名稱 起始地址 結(jié)束地址 大小(字節(jié)) 描述
DATA 0x20040000 0x2004FFFF 64*1024 bootrom數(shù)據(jù)
PATCH CODE 0x20050000 0x2005FFFF 64*1024 Patch代碼
PATCH DATA 0x20060000 0x2006FFFF 64*1024 Patch數(shù)據(jù)

2. HPSYS Memory性能對(duì)比

名稱 頻率(MHz) 說明
HCLK 240
PSRAM-OPI 120 DDR
FLASH1 96
FLASH2 80

一般而言,DMA訪問SRAM效率最高,eDMA訪問PSRAM/FLASH效率最高,具體吞吐率性能如下表所示,其中memcpy不能使用microlib,F(xiàn)LASH1和FLASH2使能了CACHE,PSRAM未使能CACHE。

目的 memcpy(MB/s) eDMA(MB/s) DMA(MB/s)
SRAM SRAM 405.54 430.17 446.35
PSRAM SRAM 43.34 125.54 53.23
FLASH1 SRAM 46.41 43.17 25.50
FLASH2 SRAM 36.30 36.13 21.24
SRAM PSRAM 48.05 187.01 47.70
PSRAM PSRAM 20.99 76.72 12.96
FLASH1 PSRAM 26.84 42.97 12.51
FLASH2 PSRAM 24.94 36.14 21.25

3. HCPU EPIC性能

名稱 頻率(MHz) 說明
HCLK 240
PSRAM-OPI 120 DDR
FLASH1 96
FLASH2 80

以下未作說明,顏色格式均為RGB565

Alpha混疊

前景 輸出 性能(cycle/pixel ) 吞吐率(Mpixel/s)
SRAM SRAM 1.41 170.16
PSRAM SRAM 4.80 50.05
FLASH1 SRAM 14.93 16.07
FLASH2 SRAM 17.83 13.46
SRAM PSRAM 2.54 94.51
PSRAM PSRAM 7.40 32.46
FLASH1 PSRAM 14.90 16.11
FLASH2 PSRAM 17.83 13.46
Note
上表為使用HAL_EPIC_BlendStart/HAL_EPIC_BlendStart_IT接口的性能,若使用HAL_EPIC_Rotate_IT/HAL_EPIC_Rotate, SRAM作為前景時(shí)性能會(huì)有50%的損失,其它情況會(huì)有20%損失

縮小

前景 輸出 性能(cycle/pixel ) 吞吐率(Mpixel/s)
SRAM SRAM 4.59 52.24
PSRAM SRAM 12.82 18.72
FLASH1 SRAM 41.19 5.82
FLASH2 SRAM 49.43 4.85
SRAM PSRAM 4.63 51.88
PSRAM PSRAM 12.81 18.73
FLASH1 PSRAM 41.22 5.82
FLASH2 PSRAM 49.47 4.85
Note
前景圖大小為88*88,縮放系數(shù)為1400

旋轉(zhuǎn)

前景 輸出 性能(cycle/pixel ) 吞吐率(Mpixel/s)
SRAM SRAM 15.90 15.69
PSRAM SRAM 136.27 1.76
FLASH1 SRAM 254.80 0.94
FLASH2 SRAM 313.40 0.76
SRAM PSRAM 15.29 15.7
PSRAM PSRAM 139.11 1.72
FLASH1 PSRAM 254.80 0.94
FLASH2 PSRAM 313.42 0.76
Note
旋轉(zhuǎn)角度為45°

填充

輸出 性能(cycle/pixel ) 吞吐率(Mpixel/s)
SRAM 1.31 183.55
PSRAM 2.79 85.95
Note
填充單色且透明度為255

4. 應(yīng)用程序Memory規(guī)劃及定制接口

$SDK_ROOT/drivers/cmsis/sf32lb55x/mem_map.h中定義了以下一些接口用于規(guī)劃應(yīng)用程序的Memory使用, 除了在頭文件和C文件,也可以在link文件中使用這些宏,這樣便于保證地址規(guī)劃的一致性。

HCPU Flash和SRAM地址規(guī)劃表

說明 默認(rèn)值 說明
HCPU_FLASH_CODE_START_ADDR HCPU應(yīng)用程序XIP代碼段起始地址 0x10020000(沒有DFU)或者0x10100000 (有DFU)
HCPU_FLASH_CODE_SIZE HCPU應(yīng)用程序XIP代碼段大小 896KB
HCPU_FLASH2_IMG_START_ADDR 圖片資源起始地址 0x64000000
HCPU_FLASH2_IMG_SIZE 圖片資源大小 4MB
HCPU_FLASH2_FONT_START_ADDR 字體資源起始地址 0x64400000
HCPU_FLASH2_FONT_SIZE 字體資源大小 12MB
HCPU_RAM_DATA_START_ADDR HCPU應(yīng)用程序數(shù)據(jù)段起始地址 0x20000000
HCPU_RAM_DATA_SIZE HCPU應(yīng)用程序數(shù)據(jù)段大小 1007KB
HCPU_RO_DATA_START_ADDR HCPU應(yīng)用程序RAM代碼段起始地址 0x200FBC00 用于存放需要做在SRAM中執(zhí)行的代碼
HCPU_RO_DATA_SIZE HCPU應(yīng)用程序RAM代碼段大小 16KB
HCPU2LCPU_MB_CH2_BUF_START_ADDR HCPU2LCPU mailbox2共享buffer起始地址 0x200FFC00
HCPU2LCPU_MB_CH2_BUF_SIZE HCPU2LCPU mailbox2共享buffer大小 512B
HCPU2LCPU_MB_CH1_BUF_START_ADDR HCPU2LCPU mailbox1共享buffer起始地址 0x200FFE00
HCPU2LCPU_MB_CH1_BUF_SIZE HCPU2LCPU mailbox1共享buffer大小 512B

HCPU由rt_malloc可分配的heap空間大小取決于HCPU應(yīng)用程序數(shù)據(jù)段中靜態(tài)變量占用了多大的空間, 比如靜態(tài)變量如果占用了500KB,則heap空間就剩下1007-500=507KB。

OTA地址規(guī)劃表

說明 默認(rèn)值 說明
DFU_FLASH_CODE_START_ADDR DFU程序代碼段起始地址 0x10020000
DFU_FLASH_CODE_SIZE DFU程序代碼段大小 256KB
DFU_RES_FLASH_CODE_START_ADDR 應(yīng)用程序升級(jí)區(qū)起始地址 0x10060000
DFU_RES_FLASH_CODE_SIZE 應(yīng)用程序升級(jí)區(qū)大小 640KB
HCPU_FLASH2_IMG_UPGRADE_START_ADDR 圖片資源升級(jí)區(qū)起始地址 0x65000000
HCPU_FLASH2_IMG_UPGRADE_SIZE 圖片資源升級(jí)區(qū)大小 1MB
HCPU_FLASH2_FONT_UPGRADE_START_ADDR 字體資源升級(jí)區(qū)起始地址 0x65100000
HCPU_FLASH2_FONT_UPGRADE_SIZE 字體資源升級(jí)區(qū)大小 3MB

LCPU SRAM地址規(guī)劃表

說明 默認(rèn)值
LCPU_RAM_CODE_START_ADDR LCPU應(yīng)用程序代碼段起始地址 0x000FC000
LCPU_RAM_CODE_SIZE LCPU應(yīng)用程序代碼段大小 140KB
LPSYS_RAM_SIZE LCPU應(yīng)用程序代碼與數(shù)據(jù)段總大小 160KB
LCPU2HCPU_MB_CH1_BUF_START_ADDR LCPU2HCPU mailbox2共享buffer起始地址 0x20123C00
LCPU2HCPU_MB_CH1_BUF_SIZE LCPU2HCPU mailbox2共享buffer大小 512B
LCPU2HCPU_MB_CH2_BUF_START_ADDR LCPU2HCPU mailbox1共享buffer起始地址 0x20123E00
LCPU2HCPU_MB_CH2_BUF_SIZE LCPU2HCPU mailbox1共享buffer大小 512B

LCPU由rt_malloc可分配的heap空間大小取決于LCPU應(yīng)用程序代碼與靜態(tài)變量占用了多大的空間, 比如代碼和靜態(tài)變量總共占用了120KB,則heap空間就剩下160-120=40KB。

如果需要修改默認(rèn)值,可以在工程的Kconfig中增加如下的CUSTOM_MEM_MAP選項(xiàng), 運(yùn)行menucofig并保存設(shè)置后rtconfig.h中就會(huì)增加一個(gè)CUSTOM_MEM_MAP開關(guān), 這樣mem_map.h就能包含custom_mem_map.h,可以在custom_mem_map.h中重定義需要修改的宏。

config CUSTOM_MEM_MAP
bool
default y

4.1 低功耗相關(guān)接口

為了實(shí)現(xiàn)低功耗的Standby模式,HCPU工程的link.sct文件定義一些PM框架使用的接口, 例如example/pm/ble/ec-lb555/hcpu/linker_scripts/link_flash.sct. 如果硬件平臺(tái)支持PSRAM,則需要在link文件中定義如下的區(qū)域,SDK會(huì)使用RW_PSRAM2作為睡眠時(shí)數(shù)據(jù)的備份區(qū)域, 該區(qū)域中的數(shù)據(jù)在睡眠時(shí)無(wú)法保存,對(duì)于需要保存的數(shù)據(jù)可以將其放在RW_PSRAM1區(qū)。

RW_PSRAM1 PSRAM_BASE UNINIT{ ; ZI data, retained
.o (.l2_ret_data_*)
.o (.l2_ret_bss_*)
.o (.l2_cache_ret_data_*)
.o (.l2_cache_ret_bss_*)
}
RW_PSRAM2 +0 UNINIT{ ; ZI data, not retained and reused by SRAM retention
.o (.nand_cache)
.o (.l2_non_ret_data_*)
.o (.l2_non_ret_bss_*)
.o (.l2_cache_non_ret_data_*)
.o (.l2_cache_non_ret_bss_*)
}
ScatterAssert((ImageLength(RW_PSRAM1)+ImageLength(RW_PSRAM2))<PSRAM_SIZE)

類似的,SRAM也分為RW_IRAM0和RW_IRAM1區(qū),RW_IRAM0中的數(shù)據(jù)在standby睡眠模式時(shí)會(huì)丟失,而RW_IRAM1中數(shù)據(jù)在standby睡眠時(shí)不會(huì)丟失

RW_IRAM0 HCPU_RAM_DATA_START_ADDR UNINIT { ; ZI data, not retained
#ifdef BSP_USING_PM
.o (non_ret) ; non-retention section
.o (STACK) ; ISR stack
#endif
.o (.l1_non_ret_data_*)
.o (.l1_non_ret_bss_*)
#ifndef BSP_USING_PSRAM
.o (.l2_non_ret_data_*)
.o (.l2_non_ret_bss_*)
.o (.l2_cache_non_ret_data_*)
.o (.l2_cache_non_ret_bss_*)
.o (.nand_cache)
#endif
}
RW_IRAM1 +0 { ; RW data retained
.o (.l1_ret_data_*)
.o (.l1_ret_bss_*)
.ANY (+RW +ZI)
}

此外,HCPU還有64KB的Retention RAM,在link.sct文件中由RW_IRAM_RET區(qū)域指定, 對(duì)于沒有PSRAM的硬件平臺(tái),該區(qū)域被用來(lái)備份睡眠時(shí)需要保存的SRAM數(shù)據(jù)。

RW_IRAM_RET HPSYS_RETM_BASE HPSYS_RETM_SIZE {
.o (.l1_ret_text_*)
.o (.l1_ret_rodata_*)
.o (.retm_bss_*)
.o (.retm_data_*)
idle.o (.bss.rt_thread_stack)
bf0_hal_rcc.o (.text.*)
#ifdef BSP_USING_PM
bf0_pm_a0.o (.text.sifli_light_handler)
bf0_pm_a0.o (.text.sifli_deep_handler)
bf0_pm_a0.o (.text.sifli_standby_handler)
drv_io.o (.text.*)
bf0_hal_gpio.o (.text.*)
#endif
drv_psram.o(.bss.bf0_psram_handle)
}

為了便于指定變量存放的區(qū)域,比如有些變量的值在睡眠時(shí)需要保存,而有些變量不需要,可以使用middleware/include/mem_section.h中定義的宏來(lái)指示變量存放的位置。 例如,下面的代碼將變量g_ble_db指定到了L1_NON_RET_BSS段,也就是RW_IRAM0中,這樣睡眠時(shí)就不會(huì)保存該變量的數(shù)據(jù)。

static struct fdb_kvdb g_ble_db;

5. HCPU與LCPU項(xiàng)目?jī)?nèi)存規(guī)劃實(shí)例

$SDK_ROOT/example/ble/ancs_dualcore/project/ec-lb555/為例,

5.1 HCPU

示例的HCPU使用mem_map.h中默認(rèn)的宏定義,代碼存放和執(zhí)行地址為0x10020000,如果想將代碼編譯到0x10060000地址,BIN大小增加到1024KB,可以按以下幾個(gè)步驟修改代碼,

1) 修改hcpu/Kconfig

mainmenu "Sifli Configuration"
config SIFLI_SDK
string
option env="SIFLI_SDK"
default "."
#SDK configuration
source "$SIFLI_SDK/Kconfig"
config BF0_HCPU
bool
default y
config CUSTOM_MEM_MAP
bool
default y

2) 執(zhí)行menuconfig,保存配置并退出,確認(rèn)更新后的rtconfig.h里增加了CUSTOM_MEM_MAP

3) 在hcpu/linker_scripts目錄下新建custom_mem_map.h,內(nèi)容如下

#ifndef __CUSTOM_MEM_MAP__
#define __CUSTOM_MEM_MAP__
#undef HCPU_FLASH_CODE_START_ADDR
#undef HCPU_FLASH_CODE_SIZE
#define HCPU_FLASH_CODE_START_ADDR 0x10060000
#define HCPU_FLASH_CODE_SIZE (1024*1024)
#endif /* __CUSTOM_MEM_MAP__ */

4) 修改hcpu/board/SConscript,給已有的path列表,增加一個(gè)路徑‘[cwd + ’/../linker_scripts']`

path = [cwd]
path += [cwd + '/ports']
path += [cwd + '/../linker_scripts'] //<-增加

5) 在命令行執(zhí)行scons –clean刪除原來(lái)的編譯結(jié)果,再執(zhí)行scons -j8編譯新的程序, 查看build目錄下生成bf0_ap.map可以看到HCPU代碼的加載和執(zhí)行地址都已經(jīng)變?yōu)?x10060000

系統(tǒng)heap的起始地址由map文件里的段名Image$$RW_IRAM1$$ZI$$Limit指示,結(jié)束地址為ER_IROM1_EX段的起始地址,即0x200FBC00

Image$$RW_IRAM1$$ZI$$Limit 0x2000721c Number 0 anon$$obj.o ABSOLUTE
Execution Region ER_IROM1_EX (Exec base: 0x200fbc00, Load base: 0x10095e6c, Size: 0x00001ab4, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x10060000, Load base: 0x10060000, Size: 0x00032d28, Max: 0x00100000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x10060000 0x10060000 0x000007c0 Data RO 175 RESET startup_bf0_hcpu.o
0x100607c0 0x100607c0 0x00000008 Code RO 5163 * !!!main c_w.l(__main.o)
0x100607c8 0x100607c8 0x00000034 Code RO 5592 !!!scatter c_w.l(__scatter.o)

5.2 LCPU

一般而言,LCPU默認(rèn)的memory規(guī)劃已經(jīng)可以滿足大部分應(yīng)用的需求,無(wú)需定制。 例如在lcpu/linker_scripts/link_lcpu.sct中可以看到,代碼和數(shù)據(jù)段是緊密存放,雖然使用了宏LCPU_RAM_CODE_SIZE限定了代碼段最大不能超過140KB, 但如果實(shí)際代碼段只使用100KB,則數(shù)據(jù)段起始地址就是(0x200FC000+100*1024)=0x20115000,并不會(huì)浪費(fèi)空間, 同時(shí)為了避免RW變量load地址和exec地址的錯(cuò)位導(dǎo)致帶初值的變量初始化錯(cuò)誤,RW區(qū)使用不壓縮格式

LR_IROM1 LCPU_RAM_CODE_START_ADDR LCPU_RAM_CODE_SIZE { ; load region size_region
ER_IROM1 LCPU_RAM_CODE_START_ADDR LCPU_RAM_CODE_SIZE { ; load address = execution address
.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 AlignExpr(LPSYS_RAM_BASE+ImageLength(ER_IROM1), 16) ALIGN 16 NOCOMPRESS { ; RW data
.ANY (+RW +ZI)
}
; Load Address must be equal to Exec Address
ScatterAssert((LoadBase(RW_IRAM1) OR 0x20000000) == ImageBase(RW_IRAM1)) ; <- 檢查load地址與exec地址是否相同
ScatterAssert((ImageLength(ER_IROM1)+ImageLength(RW_IRAM1)+LCPU_MBOX_SIZE)<LPSYS_RAM_SIZE)
}

以下為生成的map文件片段,代碼段的加載和執(zhí)行地址從0x000FC000開始,數(shù)據(jù)段的執(zhí)行地址從0x201095A0開始,加載地址為0x001095A0, 由前文的LCPU的Memory地址空間可知,他們指向了同一片物理memory。

Execution Region ER_IROM1 (Exec base: 0x000fc000, Load base: 0x000fc000, Size: 0x0000d598, Max: 0x00023800, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x000fc000 0x000fc000 0x00000100 Data RO 178 RESET startup_bf0_lcpu.o
0x000fc100 0x000fc100 0x00000000 Code RO 3293 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x000fc100 0x000fc100 0x00000004 Code RO 3346 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
0x000fc104 0x000fc104 0x00000004 Code RO 3349 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x000fc108 0x000fc108 0x00000000 Code RO 3351 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
...
0x00109560 0x00109560 0x00000008 Data RO 988 .sifli_reg.1 ble_connection_manager.o
0x00109568 0x00109568 0x00000008 Data RO 326 .sifli_reg.1.end bf0_ble_common.o
0x00109570 0x00109570 0x00000020 Data RO 3419 Region$$Table anon$$obj.o
0x00109590 0x00109590 0x00000008 Data RO 877 SerialTranExport bf0_sibles_weather_service.o
Execution Region RW_IRAM1 (Exec base: 0x201095a0, Load base: 0x001095a0, Size: 0x000045b8, Max: 0xffffffff, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x201095a0 0x001095a0 0x00000004 Data RW 3299 .data mc_w.l(rand.o)
0x201095a4 0x001095a4 0x0000006c Data RW 42 .data..L_MergedGlobals main.o
0x20109610 0x00109610 0x00000024 Data RW 1204 .data..L_MergedGlobals drv_usart.o
0x20109634 0x00109634 0x00000020 Data RW 1320 .data..L_MergedGlobals drv_i2c.o
...
0x201098a8 0x001098a8 0x00000010 Data RW 267 .data.pin_service_cb pin_service.o
0x201098b8 0x001098b8 0x00000014 Data RW 1093 .data.sifli_pm bf0_pm_a0.o
0x201098cc 0x001098cc 0x00000010 Data RW 3273 .data.sys_service_config sifli_lib.lib(data_service.o)
0x201098dc - 0x0000001c Zero RW 824 .bss..L_MergedGlobals bf0_sibles_serial_trans_service.o

系統(tǒng)heap的起始地址由map文件里的段名Image$$RW_IRAM1$$ZI$$Limit指示,結(jié)束地址為0x20123C00,即mailbox buffer的起始地址,可見LCPU可用的heap大小為90280字節(jié)。

Image$$RW_IRAM1$$ZI$$Limit 0x2010db58 Number 0 anon$$obj.o ABSOLUTE
L1_NON_RET_BSS_SECT_END
#define L1_NON_RET_BSS_SECT_END
Definition: mem_section.h:143
data
uint8_t data[]
Definition: bf0_ble_ancs.h:227
L1_NON_RET_BSS_SECT_BEGIN
#define L1_NON_RET_BSS_SECT_BEGIN(section_name)
Definition: mem_section.h:141