CC2530的Flash
CC2530F256内部集成一个增强型8051单片机,拥有8 KB SRAM和256 KB内部Flash存储器。内部Flash主要用来保存程序代码和常量数据。由于传统8051代码存储空间寻址范围只有64 KB,CC2530把内部256 KBFlash分成8个bank,每一个bank大小是32 KB,通过寄存器FMA P.MAP[2:0]选择不同的bank映射到代码存储空间,解决了寻址空间受限的问题。
对于OTA客户端,启动代码位于bank0的0x0000~0x0800地址区域,大小为2 KB。其余的254 KB的Flash空间,用来存储当前固件和其他信息。值得注意的是,0x0888~0x088B区域存放了CRC校验信息,0x088C~0x0897区域存放了PREAMBLE,包括镜像大小、制造商ID、镜像类型和镜像版本号信息。另外,bank7最后的14 KB空间(0x7C800~0x7FFFF)用作非易失性(None Volatile,NV)变量区(12 KB)和特定信息保留区(2 KB)。
OTA系统升级方案有两种,分别是片内Flash升级和片外Flash升级。考虑到一般程序固件大小都超过128KB和以后程序功能升级的扩展性,本文采用片外Flash的方案。采用的片外Flash(M25PE20)容量为256 KB,通过SPI总线与CC2530之间传输数据。
先说一下z-stack中对flash的布局。z-stack将256KBflash的最末八个字节作为zigbee中的IEEE地址,当然在这八个字节之后还有16个字节lock bits,这些flash的lock所需要用的,每2kb1page)的flash有1bit的lock位,那么256kb的flash有128个2kb,1page)的flash有1bit的lock位,那么256kb的flash有128个2kb
1 Bank=16pages=32k
地址:0x8000-0xFFFF
每个2530独特的信息:0x7800-7FFF(2k)
特点: 注意事项 写流程 计算FADDR(专用的寄存器) 擦除FLASH方法 code sampe
1. 32-bit programmable 写FLASH时时钟不能停,不能改 设置地址(FADDRH/L) cc2530F256:256k 关中断 #include <iocc2530.h>
2.页擦除(page) 置位 FCTL.WRITE=1 设置擦除面FADDR unsigned char erase_page_num = 3;
3.支持DMA写 不可以进入低功耗模式 写FWDATA,查询FCTL.FULL FADDR=addr>>2(4字节为1字) FADDR=addr>>(11-1) EA=0; while(FCTL&0x80);
4.、芯片擦除 20ms 时钟不要低于16M(使用stack没有问题) FCTL》FULL变低后重复写 FADDRH=(uint8)(FADDR>>8) 设置FCTL.ERASE FADDRH = earse_page_num<<1;
5.写字(4byte)20us LBF:低位优先 检查超时,或者FLASH锁定 FADDRL=(uint8)(FADDR) 等待结束 FCTL |=0x01; while (FCTL &0x80); EA =!;
CC2530的Flash的更多相关文章
- CC2530之Flash映射
标准51系列内核的逻辑空间为哈佛结构,也就是说,程序空间和地址空间是分开的.具体分为: CODE区:存放程序代码和一些常量信息,有16根地址总线,寻址范围为0x0000~0xFFFF,共计64K DA ...
- CC2530使用串口下载(SBL)
工作环境: WIN7 64位 IAR 版本: 8.10.3 (8.10.3.10338) ZStack-CC2530-2.3.1-1.4.0协议栈,下载地址:http://download.csdn. ...
- cc2530 makefile简略分析 <contiki学习之三>
前面将contiki的makefile框架都理了下,这篇就以cc2530为收篇吧,也即makefile分析就该到此为止了. contiki/examples/cc2530dk 打开Makefile如下 ...
- CC2530存储空间——Code
硬件平台:CC2530-F256 开发环境:IAR 8051(版本号 8.10) 參考: .<CC2530 User's Guide.pdf>(swru191c) .<IAR C/C ...
- 1、CC2530单片机介绍
单片机是一种集成电路芯片,包含中央处理器CPU.随机存储器RAM.只读存储器ROM.输入输出I/O接口.中断控制系统.定时/计数器和通信等多种功能部件. 本教程使用的单片机德州仪器生产的CC2530, ...
- CC2530自动安全联网
CC2530自动联网的苦恼 不知道博客园里面有没有人研究CC2530,也就是zigbee技术,其实我在做东西的时候很纠结一个问题,那就是我如何将设备连上后,如何通过协调者发送命令给终端呢?有什么方法可 ...
- zigbee CC2530首选方案模组:TZU06A1
模块特点 微型24-pin 邮票式SMT 封装 提供U.FL 接口,用于外接SMA 天线 小尺寸封装:16mm*20mm*3.7mm 通过欧盟CE0168.欧盟ROHS 认证 基于8051 单片机架构 ...
- 隐私泄露杀手锏 —— Flash 权限反射
[简版:http://weibo.com/p/1001603881940380956046] 前言 一直以为该风险早已被重视,但最近无意中发现,仍有不少网站存在该缺陷,其中不乏一些常用的邮箱.社交网站 ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
随机推荐
- (97)Wangdao.com_第三十天_触摸事件
触摸事件 只有触摸屏才会引发这一类事件 触摸事件 和 鼠标事件 同时触发,即使这个时候并没有用到鼠标. 这是为了让那些只定义鼠标事件.没有定义触摸事件的代码,在触摸屏的情况下仍然能用. 如果想避免这种 ...
- JS-原型的某些概念
prototype:构造函数拥有一个对象,称为构造函数的原型属性,可以通过 构造函数prototype进行访问. __proto__: 构造函数所创造出的实例对象,可通过该属性访问原型对象. cons ...
- IPV6配置
云友“学渣王 ”在帖子里提到需要为阿里云ECS配置IP6地址,根据网上的一些信息,写此例. 如果要求是FQDN地址,请登录到您的域名控制面板,设置一条AAAA记录到新设置的IPv6隧道地址. 在阿 ...
- 源码包安装php7.2
含有的命令:yum,wget,tar,./configure,make,cp,ln,source,php -v ==安装== [root@ycj ~]# yum -y install libxml2 ...
- 虚拟机设置IP
方式NAT 版本信息VMware(14.1.1 build-7528167)和centos7 一,设置网络适配器: 二.设置虚拟网络 三.配置虚拟机(/etc/sysconfig/network-sc ...
- 单片机stm32小白入门级学习路线“图”
学习stm32的是真的越来越多了,当然我也是其中语言,所以对于stm32的学习路线非常的感兴趣,所以我也分享一下 虽然是盗图吧 不过也算是分享 ,下边有觉得不错的视频资料 也奉上 (stm ...
- LeetCode 171 Excel Sheet Column Number 解题报告
题目要求 Given a column title as appear in an Excel sheet, return its corresponding column number. For e ...
- 在Vuex更新,组件内的视图更新问题
由于js的限制,vue无法进行监听数组; 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如: vm.items.len ...
- netstat lsof ps 常用场景
1.netstat 命令可以帮助检查本机的网络状况实战应用1:公司内部的一个老服务运行在192.168.1.1:50060上,服务将于一周之后停用,再在要查一下本机上有没有进行在调用该服务.[root ...
- js 转java后台传过来的list
var intIndex=0; arrList = new Array(); arrList = "${orderNumList}".replace('[','').replace ...