nRF52840等nRF52系列keil 环境:ROM与RAM 开始地址及大小设置

2020-11-16 16:58:58 信驰达科技

芯片型号:nRF52840

?樾秃牛RF-BM-ND05/RF-BM-ND06

        硬件: NORDIC nRF 52840 DK (FLASH ROM: 1MB, RAM: 256 KB)

        协议栈: s140_nrf52_6.1.0

        Keil: u version ver 5.23.0.0

        1. 设置界面;

        IROM1 对应 1MB FLASH ROM; IRAM1 对应 256KB RAM.

蓝牙?榉桨干

 

        2. 于 s140 包中文件 s140_nrf52_6.1.0_release-notes.pdf 查到, s140 协议栈分别占用 FLASH ROM,RAM 尺寸;

蓝牙?榉桨干

 

        3. IROM1 start address 开始地址和 size 尺寸设置算法

        IROM1 Start Address 开始地址: 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, 留意编译时这三者字节数,注意其总和不得超过剩余 FLASH ROM;

 

        5. s140 协议栈最小需求 RAM 是 5.54KB ( 0x1628 bytes), 但实际 RAM 空间需求还依赖 sd_ble_enable() 配置;
先在RAM开始区域设置一个较小的开始值,让程序运行时报错, nrf_sdh_ble.c 中设置断点, 查看真实 RAM 需求的开始地址;

蓝牙?榉桨干

 

        6. IRAM1 Start Address 开始地址设置为上述调试获取的值 (变量: p_app_ram_start); 

 

        7. IRAM1 Size 算法

        IRAM1 Size 按上述调试显示,可快捷设置为值 ram_end_address_get() - (*p_app_ram_start);

        RAM 总尺寸 256 KB = 256 * 1024 bytes = 262144 bytes = 0x40000 bytes.

        注: RAM 起始基地址是 0x2000 0000;

        假设 IRAM1 Start Address: 0x2001 8000,  则 IRAM1 Size = 0x40000 - 0x18000 bytes = 28000 bytes

 

        8. 存放 s140 协议栈后, 剩余 RAM 用于应用程序运行; 剩余 RAM 空间尺寸须 > (pZI-data + RW-data).

 

        9. KEIL 编译输出参考 (Code,RO-data,RW-data,ZI-data )

蓝牙?榉桨干

        10. 备注, 关于 NRF_LOG_DEBUG 输出于sdk_config.h 中配置

蓝牙?榉桨干