softdevice设置keil部分

需要先烧写softDevice,当然烧写什么样的你自定。

然后你的程序是跟在softDevice后面的,但是keil并不知道这点。所以需要手动设置

先来到options fof target----target

       接下来说下原理,我们的程序要紧跟在softDevice后。softDevice有一定的大小(我一直试着找到那篇文档里面有说各个版本的softDevice的ROM RAM占用大小,但是我还没找到,要是你知道了,我还不知道,请告诉我)。这里给出两个数据。

S110两个版本的ROM占用

                                   6.0.0--------80K

                                   7.0.0--------84K 或者88k(也可能是80k)参照某文档

 

RAM我还不知道,根据某文档的话,s110 ROM都是80k , RAM都是8K。可以根据这个配置,反正我这样配可以用

 

所以,现在的目标是要设置好这些,你的程序放在哪?你的程序用哪的内存?

 

我们刚才已经打开了options fof target----target

可以看到下面的IROM1 和 IRAM1前面已经勾上,这就是设置ROM / RAM空间的地方。

我们假设现在要烧写的是使用 80K ROM 和 8K RAM的softDevice。

NRF51822的ROM为256K ,RAM为16K,RAM基地址0x20000000

其中RAM有基地址,也就是操作内存位置=基地址+被操作内存序数

 

那么,我们放程序的地方就是 80K  ROM开始的地方,RAM就是8K RAM开始的地方

ROM的计算:      起始位置(dec 80)*(dec 1024)=(dec 81920)=(hex 14000)

                            大小计算((dec 256)-(dec 80))*(dec 1024)= (dec 180224)=(hex 2C000)

RAM的计算:     

                            起始位置(dec 8)*(dec 1024)+基地址=(dec 8192)=(hex 2000)+基地址 =0x20002000

                            大小计算((dec 16)-(dec 8))*(dec 1024)= (dec 8192)=(hex 2000)

 

所以根据计算填入就OK了。

如图:

 

在官方的文档中还有一些设置,我并没有关注,原因是不按他们的设置也能用,可能是我个人还有一些东西没有发现,还没调到。如果出现问题,请以官方文档为主

你可能感兴趣的:(BLE)