51822存储理解

51822存储理解

本博客最后修改时间:2018年8月10日20:13:31

一、开发环境
keil版本 :keil5.12.0.0
SDK版本:12.3
IC :51822
仿真器 :J-link

二、基础知识
1.51822RAM和ROM空间有多大?

51822有不同的RAM空间的版本,可通过此链接查看[http://infocenter.nordicsemi.com/index.jsp]附图如下
这里写图片描述

2.如何填写IROM和IRAM Size?

我这里使用的是S130_V2.0.1版本的协议栈,通过协议栈查看如何填入【https://www.nordicsemi.com/eng/nordic/Products/nRF51822/S130-SD-v2/53724

This version of the SoftDevice contains the Master Boot Record (MBR) version 1.0.3.
The combined MBR and SoftDevice memory requirements for this version are as follows:
Flash: 108 kB (0x1B000 bytes).
RAM: 4.95 kB (0x13C8 bytes) (minimum required memory - actual requirements are dependent upon the configuration
chosen at sd_ble_enable() time).
ROM的Size要根据自己编写的代码的大小来计算,如果要升级则下面详细讲解
RAM协议栈运行需要占用一些,如果自己增加的服务和特征值超过了协议栈预留的大小则需修改协议栈初始化下的属性表大小
注意4字节对齐,来修改RAM的start,然后和后面的Size对应。

三、51822存储自己的一些理解
这里讲一下自己双buf升级的理解
注意:
51822是按页对齐的,一页的大小为1024个字节

如果要使用稳定的ota这些是必不可少的
BT stack(0x00000 - 0x1B000)
buf1(需自己计算)
buf2(需自己计算)
数据存储区3page,page大小在fds中自己配置
bootloader:(0x5000,起始地址为0x3AC00)
boot setting:(0x400 一页)

这里我设置的 fds存储page的大小为512(word)-> 2048Byte
所以通过bootloader往上加得到swap的地址为0x3A400

再往上加还有两个page 1024(word)得到页结束地址为0x39400

计算到此处只剩下buf区了,注意要页对齐
我们用0x39400 - 0x1B000 = 2 * 0xF200
因为0xF200不是 0x400的整数倍,所以要补充一个页对齐(0x400)
所以补充后的地址为0x39000

然后计算出buf的大小0xF000
如下图所示
这里写图片描述
这里写图片描述
注意:
自己的代码编译后的大小不要超过此值
boot的ROM不需要修改,RAM根据自己的芯片来选

以上只是自己的理解,有什么不对的地方希望各位大牛 批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值