SDK版本:
nRF5_SDK_17.1.0_ddde560
编译环境:
MDK V5.35.0.0
NordicSemiconductor::nRF_DeviceFamilyPack V8.40.3
例程:nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs\ble_app_uart_pca10056_s140.uvprojx
STEP1:打开工程,切换到 nrf52840_xxaa ,此工程是APP工程。
STEP2:参照下图配置,主要是配置APP工程的编程算法,和UICR区域的擦除算法。
STEP3:切换到协议栈工程,注意不要编译此工程,会报错。
STEP4:
STEP5:第一次烧录先切换到协议栈工程(不要编译),执行【Flash】->【Erase】,先擦除Flash,然后执行【Flash】->Download 下载蓝牙协议栈。
注意:STEP5只需要执行一次就好了,不需要每次执行,因为APP和协议栈在Flash的不同区域,后面我们下载APP,擦除APP不会影响到协议栈的代码空间。相反,擦除协议栈会擦除整片Flash区域。
STEP6:切换到APP工程,擦除,下载,调试,快乐的编写代码吧!
根据上面步骤设置好后,有可能会出线烧录失败的情况,这个时候要检查下APP和协议栈的IROM 和IRAM的地址空间有没有重叠。按照官方地址设置。不同版本SDK的协议栈栈大小不一样,所以APP的起始地址也是不一样的,要注意。我的SDK版本设置如下图:
FLASH 和RAM的空间分布如下:
假设你的NRF52840主板和烧录器已经连接OK。SDK你也已经下载好。