nRF52840等nRF52系列keil 環(huán)境:ROM與RAM 開(kāi)始地址及大小設(shè)置
芯片型號(hào):nRF52840
模塊型號(hào):RF-BM-ND05/RF-BM-ND06
硬件: NORDIC nRF 52840 DK (FLASH ROM: 1MB, RAM: 256 KB)
協(xié)議棧: s140_nrf52_6.1.0
Keil: u version ver 5.23.0.0
1. 設(shè)置界面;
IROM1 對(duì)應(yīng) 1MB FLASH ROM; IRAM1 對(duì)應(yīng) 256KB RAM.
2. 于 s140 包中文件 s140_nrf52_6.1.0_release-notes.pdf 查到, s140 協(xié)議棧分別占用 FLASH ROM,RAM 尺寸;
3. IROM1 start address 開(kāi)始地址和 size 尺寸設(shè)置算法
IROM1 Start Address 開(kāi)始地址: 0x26000, 152KB=152 * 1024 bytes = 155648 bytes = 0x26000 bytes.
IROM1 Size: 1MB - 152KB = (1024 - 152) * 1024 bytes = 892928 bytes = 0xDA000 bytes.
4. 剩余 FLASH ROM 尺寸, 用于存放: Code + RO-data + RW-data, 留意編譯時(shí)這三者字節(jié)數(shù),注意其總和不得超過(guò)剩余 FLASH ROM;
5. s140 協(xié)議棧最小需求 RAM 是 5.54KB ( 0x1628 bytes), 但實(shí)際 RAM 空間需求還依賴 sd_ble_enable() 配置;
先在RAM開(kāi)始區(qū)域設(shè)置一個(gè)較小的開(kāi)始值,讓程序運(yùn)行時(shí)報(bào)錯(cuò), nrf_sdh_ble.c 中設(shè)置斷點(diǎn), 查看真實(shí) RAM 需求的開(kāi)始地址;
6. IRAM1 Start Address 開(kāi)始地址設(shè)置為上述調(diào)試獲取的值 (變量: p_app_ram_start);
7. IRAM1 Size 算法
IRAM1 Size 按上述調(diào)試顯示,可快捷設(shè)置為值 ram_end_address_get() - (*p_app_ram_start);
RAM 總尺寸 256 KB = 256 * 1024 bytes = 262144 bytes = 0x40000 bytes.
注: RAM 起始基地址是 0x2000 0000;
假設(shè) IRAM1 Start Address: 0x2001 8000, 則 IRAM1 Size = 0x40000 - 0x18000 bytes = 28000 bytes
8. 存放 s140 協(xié)議棧后, 剩余 RAM 用于應(yīng)用程序運(yùn)行; 剩余 RAM 空間尺寸須 > (pZI-data + RW-data).
9. KEIL 編譯輸出參考 (Code,RO-data,RW-data,ZI-data )
10. 備注, 關(guān)于 NRF_LOG_DEBUG 輸出于sdk_config.h 中配置