在nRF52840程序下载运行时报错,查看错误码#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation
原因是协议栈内存不足,需要修改
选择project-Options for Target...
点击"Target"标签
在IRAM1里面进行修改,那修改的值是多少呢?
在如图处设置断点,报错时候会卡在这里,然后读app_ram_base变量的值;
这个就是你可以使用的RAM区域的最小起始地址;
RAM的大小就是用片上RAM总大小减去这个值;
举个例子:假如RAM 区域的起始地址是0x20000000,SoftDevice用了0x1ff8字节,就是0x20000000~0x20001ff7,那你用户RAM就得从0x20001ff8开始,比如nRF51822QFAA的RAM大小16K,就是0x4000-0x1FF8=0x2008;
就是说RAM区域从起始地址0x20000000开始,是给SD和用户ram用的,SD放在前面,剩下的就是用户内存的~~;