nRF52832 — Keil中如何配置RAM地址

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 XX  作       者:ZHS(文化人)

 XX  联系方式:文章末尾Chat快问

 XX  版权声明:原创文章,欢迎评论和转载~转载时能告诉我一声就最好了

 XX  要说的话:作者水平有限,难免有不足之处,恳请指正!

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

写在前面:在使用Keil过程中,有时需要自己手动配置RAM地址,那么如何根据SoftDevice的大小计算呢?

1、烧录报错:

      当更改了芯片型号或者新建工程时,烧录会提示:Error: Flash Download failed - "Cortex-M0",如图:

nRF52832 — Keil中如何配置RAM地址

      这种错误的其中一个原因就是RAM地址配置不对,此时打开“Options for Target”选项,你会发现如下图:

      nRF52832 — Keil中如何配置RAM地址

2、通用配置:

       如果错误真的是RAM地址配置不对导致的,那怎么去解决呢?答案是重新配置RAM地址,这里提供一组针对nRF51822的通用的配置,填入之后,就可以正常烧录了。

       nRF52832 — Keil中如何配置RAM地址

3、RAM地址计算:

       如果不想使用通用配置,或者更换了平台(nRF52832)呢?

       接下来我要讲如何根据SoftDevice计算RAM地址区域:

       1)先在RAM开始区域设置一个较小的值,让程序运行时报错;

       nRF52832 — Keil中如何配置RAM地址

       2)在如图处设置断点,报错时候会卡在这里,然后读app_ram_base变量的值;

    nRF52832 — Keil中如何配置RAM地址

       3)这个就是你可以使用的RAM区域的最小起始地址;

       4)RAM的大小就是用片上RAM总大小减去这个值;

       5)举个例子:假如RAM 区域的起始地址是0x20000000,SoftDevice用了0x1ff8字节,就是0x20000000~0x20001ff7,那你用户RAM就得从0x20001ff8开始,比如nRF51822QFAA的RAM大小16K,就是0x4000-0x1FF8=0x2008;

       6)就是说RAM区域从起始地址0x20000000开始,是给SD和用户ram用的,SD放在前面,剩下的就是用户内存的~~;

       7)以上举例都是指nRF51822,nRF52832计算原理相同;