zigbee协议栈flash操作

zigbee协议栈flash操作

ID:1210573

大小:125.37 KB

页数:15页

时间:2017-11-08

zigbee协议栈flash操作_第1页
zigbee协议栈flash操作_第2页
zigbee协议栈flash操作_第3页
zigbee协议栈flash操作_第4页
zigbee协议栈flash操作_第5页
资源描述:

《zigbee协议栈flash操作》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、z-stack的flash驱动。在分析flash驱动之前,需要熟读cc2530的datasheet关于flashcontroller那一章节!我们先从hal_flash.c文件中的HalFlashRead函数开始:voidHalFlashRead(uint8pg,uint16offset,uint8*buf,uint16cnt){ //CalculatetheoffsetintothecontainingflashbankasitgetsmappedintoXDATA. uint8*ptr=(uint8*)(offset+HAL_FLASH_P

2、AGE_MAP)+              ((pg%HAL_FLASH_PAGE_PER_BANK)*HAL_FLASH_PAGE_SIZE); uint8memctr=MEMCTR; //Savetorestore.#if!definedHAL_OAD_BOOT_CODE halIntState_tis;#endif pg/=HAL_FLASH_PAGE_PER_BANK; //Calculatetheflashbankfromtheflashpage.#if!definedHAL_OAD_BOOT_CODE HAL_ENTER_CRIT

3、ICAL_SECTION(is);#endif //CalculateandmapthecontainingflashbankintoXDATA. MEMCTR=(MEMCTR&0xF8)

4、pg; while(cnt--) {   *buf++=*ptr++; } MEMCTR=memctr;#if!definedHAL_OAD_BOOT_CODE HAL_EXIT_CRITICAL_SECTION(is);#endif} 在讲解这个函数之前,先说一下z-stack中对flash的布局。z-stack将256KBflash的最末八个字节作为zi

5、gbee中的IEEE地址,当然在这八个字节之后还有16个字节lockbits,这些flash的lock所需要用的,每2kb(1page)的flash有1bit的lock位,那么256kb的flash有128个2kb,当然也就有128(16X8)位的lockbits了。从F8w2530.xcl文件中可以看出:-D_IEEE_ADDRESS_SPACE_START=(((_NR_OF_BANKS+1)*_FIRST_BANK_ADDR)-0x18)-D_IEEE_ADDRESS_SPACE_END=(_IEEE_ADDRESS_SPACE_STAR

6、T+7)-Z(CODE)IEEE_ADDRESS_SPACE=_IEEE_ADDRESS_SPACE_START-_IEEE_ADDRESS_SPACE_END注:0x18=24=16+8;_IEEE_ADDRESS_SPACE_START容易算出来,_NR_OF_BANKS值为0x07,_FIRST_BANK_ADDR值为0x8000,这些值是在options...里面设置的。所以_IEEE_ADDRESS_SPACE_START的值为0x40000-0x18=0x3FFE8,_IEEE_ADDRESS_SPACE_END值就为0x3FFE8

7、+7=0x3FFEF。 Z-STACK将flash的最末处的12KB(6page)用来作为Nv存储的,具体看:-D_ZIGNV_ADDRESS_SPACE_START=(((_NR_OF_BANKS+1)*_FIRST_BANK_ADDR)-0x3800)-D_ZIGNV_ADDRESS_SPACE_END=(_ZIGNV_ADDRESS_SPACE_START+0x2FFF)-Z(CODE)ZIGNV_ADDRESS_SPACE=_ZIGNV_ADDRESS_SPACE_START-_ZIGNV_ADDRESS_SPACE_END我们知道0x

8、3800为7个page即14KB,0x2FFF为6个page,则Z-STACK将最末的7个page的前6个page用来作为Nv存储,最后一个page用来存储其他信息,如IEEE地址。 好!我们接下来看这个函数。uint8*ptr=(uint8*)(offset+HAL_FLASH_PAGE_MAP)+              ((pg%HAL_FLASH_PAGE_PER_BANK)*HAL_FLASH_PAGE_SIZE);首先计算了这个地址映射到XDATA中之后的值,HAL_FLASH_PAGE_MAP为0X8000,HAL_FLASH_

9、PAGE_PER_BANK值为16,HAL_FLASH_PAGE_SIZE值为2024即2KB,这个计算很显然了。z-stack中的page是从0开始

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。