查看: 29425|回复: 32

NV区之我见(1)

[复制链接]
俗透了 发表于 2010-6-4 11:33:27 | 显示全部楼层 |阅读模式
花了点时间静下心对NV区结构作了一番推理,推理过程是一边推一边做笔记,也就是说后面有可能否定前面的结论,但是最后的结论应该是正确的。

#define OSAL_NV_PAGE_SIZE       2048
NV页空间大小2048个字节

#define Z_EXTADDR_LEN   8
ZigBee物理扩展地址64位 占8个字节的空间

#define OSAL_NV_IEEE_OFFSET    (OSAL_NV_PAGE_SIZE - Z_EXTADDR_LEN)
如此看来8个字节IEEE地址在NV区的存放地址偏移量应为:2048-8 = 2040

#define OSAL_NV_PAGE_FREE      (OSAL_NV_PAGE_SIZE - Z_EXTADDR_LEN)
OSAL_NV_PAGE_FREE  NV页空闲的空间2048-8 = 2040,显然是表明除了8个预定给扩展地址,其余均为空闲可用


/* The last Flash page will reserve an IEEE addr block at the end of the page where the tools know
* to program the IEEE.
*/
最后一个闪存页存放IEEE地址块,并且在此页的末端,目前为止,我还无法确定,是一个页面尺寸2048个字节还是整个NV区的尺寸为2048个字节。

#define OSAL_NV_IEEE_PAGE       63
从上面的一段话,我们可以知道IEEE地址块是存放在最后一个NV页上,如此看来,页索引是0-63,也就是说NV区共有64个页面,2048字节算是2K,那么64个NV页面应该就是128K,正符合cc2430 128K的特性,这样我们就可以理解了,无论是程序代码还是非易失量都存放在这些规范好的64个NV页面里。其实,应用开发人员最关心的是那些与程序运行相关的非易失参数值存放在哪里。到此,显然我们可以知道,所有非易失参量均存放在最后一个NV页,其余的NV页为存放代码的空间。

回过头重复这两句话:
#define OSAL_NV_IEEE_OFFSET    (OSAL_NV_PAGE_SIZE - Z_EXTADDR_LEN)
#define OSAL_NV_IEEE_PAGE       63

初步推理结论:可以解释为8字节的IEEE地址存放在非易失区第63页第2040开始的连续8个字节。
outman 发表于 2010-6-4 11:43:52 | 显示全部楼层
强烈支持原创,楼主努力~
qianxiao 发表于 2010-6-8 08:46:08 | 显示全部楼层
很有道理啊!谢谢分享经验!
品味开心茶 发表于 2010-6-8 11:27:22 | 显示全部楼层
支持,这样的读书笔记才对我们很有作用,谢谢楼主!
xingqing 发表于 2010-8-4 21:56:29 | 显示全部楼层
楼主真是厉害 小弟顶下  也希望楼主能坚持写下去 嘿嘿
teny 发表于 2010-9-10 13:43:09 | 显示全部楼层
真的分析得不错,很严谨
时光 发表于 2010-9-11 09:48:21 | 显示全部楼层
本帖最后由 时光 于 2010-9-11 09:52 编辑

能分析出来,还能与大家分享这更不错!  我想我们当中很多人,能做到前面一点但往往就忽视了笔记和分享,假如留久不看很快就会忘掉,所以良好的学习习惯很重要。
li359700725 发表于 2010-9-29 15:03:32 | 显示全部楼层
顶你拉。。呵呵,谢谢啊
beckham 发表于 2010-11-2 15:41:01 | 显示全部楼层
谢谢 分享 学习了
zmzweb 发表于 2010-11-17 10:41:47 | 显示全部楼层
谢谢 学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表