第13章 Flash存储器
第十三章:Action Script

1、存放信息的容器,用来对所需的数据资料进行暂时的储存 2、在程序运行过程中,其值会发生变化的。 变量的定义(变量的命名/变量声明):
Var 变量名=初值; 或 变量名=初值;(局部变量)
例如:
var newdate=10;
例如:newdate=10; 例如:
var count: Number=10;
26
英语单词学习
visible可见度 root根目录 text文本 data数据 number数字 string一串,一 行,字符串 on在…之时 trace跟踪,追踪
program程序 Boolean布尔 true真 false假 field田野,域,字 段 function 功能; 作 用; 职责;函数;
布尔(Boolean)
9
任务三:ActionScript代码
5、运算符 :
与一般的编程语言相同,AS也使用运算符。 运算符是执行计算的特殊符号,它具有一个或多个操作数,并返 回相应的值。 常用运算符:
算术运算符+、-、*、 /、++、- - 、%(求模) 赋值运算符
=、+=、-=、*=、/=、%=
2、关键字(参见214页)
AS中用于执行一项特定操作的单词,不能用作标识符 例:Var关键字用于声明变量。(不能用作标识符例如:变量,函数或 标签名称)
3、常量
无法改变的固定的值,例如PI(Math.PI)
11
任务三: ActionScript基本语法
4、AS中的语法 :
第13章 动画

13.3
基于Flex的动画
虽然可以通过ActionScript 3.0的代码编写实现动画,但实际 开发过程中这样实现动画的效果过于复杂。一般情况下 在开发企业级应用时都会直接使用动画类来实现动画效 果。本节中重点讲解如何通过Flex的动画类在Flex的应用 中实用ActionScript 3.0实现动画效果。
13.1
动画实现方式介绍
动画实现的本质实际上是通过可视化对象随着时间的变化产 生可被直接观察到的外观变化。早期版本的Flash中大多 数的动画都是通过时间轴来实现的,一个对象被放置在 关键帧上,然后设置另一个关键帧,这个关键帧中对对 象作一些变化,中间部分通过插值运算形成一个时间轴 ,也就实现了一段动画。
13.3.1
基于Flex动画介绍
Flex应用中的动画效果是依附于组件存在的,动画的内容是 通过Flex的内置类进行实现的。Flex应用当中运用的动画 效果有很多。在应用中使用动画可以产生直观的操作效 果和操作提示。
13.3.2
设定组件大小改变的动画效果
在改变组件大小时经常用到Resize的动画效果,这种动画效 果可以方便地改变组件大小。这种动画效果主要用在容 器组件上。在显示区域有限的情况下,根据用户主操作 区域的不同改变容器组件的大小,可以突出显示主操作 区域的内容。
13.2.2
使用enterFrame事件进行动画开发
13.2.1节中介绍了enterFrame事件的基本属性和使用方式 ,本小节说明如何使用enterFrame事件进行动画的创建 。
13.2.3
使用Timer进行动画开发
除了响应enterFrame事件可以实现动画外,还可以通过 Timer类实现动画。在第九章中介绍过Timer类的使用, 同样通过Timer类定时调用函数可以修改可视化对象的属 性从而达到动画的效果。
单片机存储器配置

对该区域(00H~07FH)的RAM访问,可以使用直接寻 址,也可以使用寄存器间接寻址
3
2.复位起始地址
复位完成后,程序计数器PC=0000H,因此,复位后程 序从0000开始执行程序。
3.片内程序存储器
依据不同的型号而不同。例如
① 8031没有内部程序存储器; ② 8751有4KB的EPROM程序存储器; ③ AT89C51有4KB的FLASH作程序存储器; ④ AT89C52有8KB的FLASH作程序存储器; ⑤ AT89C55有20KB的FLASH作程序存储器; ⑥ W78E58有32KB的FLASH作程序存储器。
资料的获取:一般都可以通过网络获得相关资料。 最方便的是直接进入制造厂的网站,对于使用资料,是公开的。
例如进入Atmel网站,选择芯片型号AT89C52可以查找到相 关资料;
9
5. 如何留出中断向量区
使用定位伪指令。
各入口地址存放一条转移指令或子程序调
用指令,而程序的主体部分存放在程序存 储空间的其他位置、
19
片外程序存储器的扩展框图
D0~D7
OE G D0~D7 Q0~Q7
P0.0~P0.7 ALE
74LS373
27256
A0~A14 E G
A0~A7
A8~A14 A15 PSEN
P2.0~P2.7 PSEN
A8~A15
数据线、地址线接到存储器芯片的对应引脚上。
20
电路原理图
1IC1
AT 89C52
16
27256外形与引脚
17
功能表
E
G
0
0
0
1
1
ARM Cortex-A9多核嵌入式系统开发教程(杨福刚)章 (13)

第10章 Nand Flash控制器
10.3 Nand Flash编程实例
10.3.1 电路连接 图10.7是K9GAG08U0E电路连接图。由图可知,电路连
接比较简单,其中Xm0DATA0~Xm0DATA7为命令、地址、 数据复用8位数据传输的引脚,其他控制引脚的连接如图 所示。
2. NAND Flash控制寄存器(NFCONT) 该寄存器用于配置NAND Flash的各种控制参数,如表10.5 所示。
第10章 Nand Flash控制器
表10.5 NAND Flash控制寄存器(NFCONT)
第10章 Nand Flash控制器
3. NAND Flash命令寄存器(NFCMMD) 该寄存器用于存储NAND Flash的命令值,如表10.6所示。
1页 = 8K字节 + 436字节(空闲区域)
1块 = (8K + 436)字节 × 128页 = (1M + 54.5K)字节
总容量 = 2076块 × 128页 × (8K + 436)字节 = (16
608M + 883.9M)比特
265,728 页 (=2.076块)
8 K字节
436 字节
1 块=128页 (1M+54.5K)字节
1 页=(8K+436)字节 1 块=(8K+436)字节×128页
=17 491M比特
8 比特
8 K字节
Байду номын сангаас
I/O0~I/O7 436 字节
图10.2 K9GAG08U0E 结构图
第10章 Nand Flash控制器
flash存储器上的数据库索引技术研究

摘要非易失性存储介质Flash与磁盘相比,具有读写速度快、消耗电量低等诸多优点。
近年来,由于Flash芯片的容量增长迅速,同时价格也急剧下降,使其应用范围进一步扩展,甚至很多人预言Flash必将取代磁盘成为新一代的联机存储介质来存储TB级的数据。
本文针对Flash固有的硬件特征,提出了一种基于Bloom Filter的数据库索引技术BFI,用于支持Flash上大规模数据记录的主码关键字快速查找。
BFI利用Bloom Filter体积小的优点,使索引结构的维护代价很低。
为了进一步提高BFI的查找效率,我们提出了一种叫做P-BFI的索引方案。
通过将Bloom Filter分割成若干划分块然后分别存储在不同的物理页上,来避免扫描整个Bloom Filter存放空间,从而降低查找代价。
尽管P-BFI对BFI 作了很大改进,但我们发现在此基础上还可以继续优化,因此又提出了HP-BFI 方法。
在构造Bloom Filter之前使用一个哈希函数对关键字进行预处理,从而把需要改变的比特位存放于同一个划分块中,使得查找效率得到成倍的提高。
最后,本文为目前存在的几种典型的Flash上数据库索引技术和HP-BFI方法分别建立了代价评估模型,对它们进行了定量的分析和比较。
结果表明,HP-BFI方法在最小化关键字查找代价的同时,还在Flash写入次数、空间占用和内存消耗等方面保持着较低的水平,这一点是其他任何已有的索引技术都无法比拟的。
关键词:Flash存储器;数据库索引;Bloom FilterAbstractCompared to magnetic disk, Flash Memory has a lot of advantages, such as faster read and write, less energy consumption. Recently, the capacity of Flash Memory has increased dramatically, while its price becomes lower and lower, so it has been more widely used. Many people believe that, Flash Memory will be the main storage device of mass data (e.g. terabytes), instead of the traditional mechanical disk. In this paper, we propose a Flash-based database index technique called BFI, which supports quick lookup on the primary keys of large datasets. BFI makes the maintenance cost of the index structure very low, by taking advantage of the small size of Bloom Filter. To make the lookup performance even better, we present a new index method P-BFI. It splits the Bloom Filters into many partitions with each partition stored in a single physical page, so that only several partitions need to be read for a lookup operation. Compared to BFI, P-BFI has improved the lookup performance a lot, but it still can be optimized, so we present a more efficient solution HP-BFI. It used a hash function to preprocess the keywords before filling the bloom filter, so that all the produced 1s are kept in the same partition. As a result, only one partition needs to be read when doing a lookup. Finally, we build cost models for some typical existing Flash-based index methods and our HP-BFI method. After comparing the existing methods with HP-BFI, we come to the conclusion that, while getting the highest lookup performance, HP-BFI keeps the write cost, RAM consumption and Flash occupancy rather low, which makes it outperform all the other methods.Keywords: Flash Memory; Database Index; Bloom FilterFlash存储器上的数据库索引技术研究目录第1章引言 (1)1.1研究背景 (1)1.2 Flash硬件特征介绍 (3)1.3 本文的研究目标和主要贡献 (5)第2章相关工作 (7)2.1 Flash转换层FTL介绍 (8)2.2 传统数据库索引技术在Flash上的应用 (9)2.2.1 基于FTL的传统B+树索引 (9)2.2.2 哈希索引直接应用于Flash (10)2.3 针对Flash的B+树改进算法 (11)2.3.1 改进方案一:BFTL (11)2.3.2 改进方案二:JFFS3 (12)2.4 Flash上的哈希索引 (13)第3章基于B LOOM F ILTER的F LASH索引技术:BFI (15)3.1 BFI所采用的存储模式 (15)3.2 Bloom Filter结构介绍 (17)3.2.1 Bloom Filter基本原理 (17)3.2.2 一个简单的应用实例 (18)3.3.3 关于纳伪率 (18)3.3 BFI的构造与使用 (19)3.3.1 BFI的构造过程 (19)3.3.2 使用BFI查找关键字 (21)3.4 BFI的优点与不足 (21)第4章动态分割B LOOM F ILTER来改进BFI:P-BFI (23)4.1 P-BFI基本思想 (23)4.2 动态分割Bloom Filter的算法描述 (24)Flash存储器上的数据库索引技术研究4.2.1 P-BFI的动态构造过程 (24)4.2.2 使用P-BFI进行关键字查找 (26)4.3 P-BFI的优点与改进的可能性 (28)第5章结合哈希方法来改进P-BFI:HP-BFI (30)5.1 HP-BFI设计思路 (30)5.1.1 构造Bloom Filter之前的哈希预处理 (30)5.1.2 使用HP-BFI进行关键字查找 (31)5.2 HP-BFI的优点和局限性 (32)第6章性能分析与算法调优 (34)6.1 代价评估模型 (34)6.1.1 基于FTL的传统B+树索引 (36)6.1.2 从不进行节点重组的BFTL(BFTL1) (37)6.1.3 根据节点转换表中节点链长度周期性重组的BFTL(BFTL2) (38)6.1.4 哈希方法HIU(Hashing Index Units) (39)6.1.5 HP-BFI方法 (39)6.2 评估结果的比较和分析 (40)6.2.1 读优化方法FTL&B+tree、BFTL2与HP-BFI的比较 (40)6.2.2 写优化方法BFTL1、HIU与HP-BFI的比较 (43)6.3 HP-BFI的性能调优 (44)6.3.1 参数s对HP-BFI的影响 (45)6.3.2 参数k对HP-BFI的影响 (47)第7章总结与展望 (49)7.1 结论 (49)7.2 未来工作 (50)参考文献 (51)致谢 (54)附录 (55)Flash存储器上的数据库索引技术研究图表索引图表 1 Flash组织结构图 (4)图表 2 向B+树中插入索引项 (10)图表 3 BFTL的节点转换表 (12)图表 4 JFFS3的日志缓冲策略 (13)图表 5 BFI采用的存储模式 (16)图表 6 使用2个哈希函数的Bloom Filter示例 (18)图表 7 Bloom Filter的纳伪率 (19)图表 8 BFI的构造和使用过程 (20)图表 9 使用BFI的记录插入算法 (20)图表 10 使用BFI的关键字查找算法 (21)图表 11 动态分割Bloom Filter:第1步 (24)图表 12 动态分割Bloom Filter:第2步 (25)图表 13 动态分割Bloom Filter:m个划分块 (26)图表 14 动态分割Bloom Filter构建SIA算法 (27)图表 15 使用P-BFI的关键字查找算法 (28)图表 16 构造Bloom Filter之前进行哈希预处理 (31)图表 17 HP-BFI中构造Bloom Filter的算法 (31)图表 18 使用HP-BFI的关键字查找算法 (32)图表 19 读优化方法的参数设定 (40)图表 20 读优化方法各项指标的评估结果 (41)图表 21 插入时读取的Flash页数比较 (41)图表 22 插入时写入Flash的页数比较 (42)图表 23 索引结构占据的Flash空间比较 (42)图表 24 写优化方法的参数设定 (43)Flash存储器上的数据库索引技术研究图表 25 写优化方法各项指标的评估结果 (43)图表 26 HP-BFI主要参数设定(除s外) (45)图表 27 s值对HP-BFI查找效率的影响 (45)图表 28 s值对HP-BFI查找效率的影响(折线图) (45)图表 29 s值对写操作次数和索引规模的影响 (46)图表 30 s值对写操作次数和索引规模的影响(折线图) (46)图表 31 HP-BFI主要参数设定(除k外) (47)图表 32 k值对于HP-BFI查找代价的影响 (47)图表 33 k值对于HP-BFI查找代价的影响(折线图) (48)Flash存储器上的数据库索引技术研究第1章引言Flash是继纸带、磁盘、光盘等传统存储介质之后出现的一种新型非易失性存储介质。
《半导体集成电路》考试题目及参考答案(DOC)

《半导体集成电路》考试题目及参考答案(DOC)1.双极性集成电路中最常用的电阻器和MOS集成电路中常用的电阻都有哪些?2.集成电路中常用的电容有哪些。
3. 为什么基区薄层电阻需要修正。
4. 为什么新的工艺中要用铜布线取代铝布线。
5. 运用基区扩散电阻,设计一个方块电阻200欧,阻值为1K的电阻,已知耗散功率为20W/c㎡,该电阻上的压降为5V,设计此电阻。
第4章TTL电路1.名词解释电压传输特性开门/关门电平逻辑摆幅过渡区宽度输入短路电流输入漏电流静态功耗瞬态延迟时间瞬态存储时间瞬态上升时间瞬态下降时间瞬时导通时间2. 分析四管标准TTL与非门(稳态时)各管的工作状态?3. 在四管标准与非门中,那个管子会对瞬态特性影响最大,并分析原因以及带来那些困难。
4. 两管与非门有哪些缺点,四管及五管与非门的结构相对于两管与非门在那些地方做了改善,并分析改善部分是如何工作的。
四管和五管与非门对静态和动态有那些方面的改进。
5. 相对于五管与非门六管与非门的结构在那些部分作了改善,分析改进部分是如何工作的。
6. 画出四管和六管单元与非门传输特性曲线。
并说明为什么有源泄放回路改善了传输特性的矩形性。
7. 四管与非门中,如果高电平过低,低电平过高,分析其原因,如与改善方法,请说出你的想法。
8. 为什么TTL与非门不能直接并联?9. OC门在结构上作了什么改进,它为什么不会出现TTL与非门并联的问题。
第5章MOS反相器1. 请给出NMOS晶体管的阈值电压公式,并解释各项的物理含义及其对阈值大小的影响(即各项在不同情况下是提高阈值还是降低阈值)。
2. 什么是器件的亚阈值特性,对器件有什么影响?3. MOS晶体管的短沟道效应是指什么,其对晶体管有什么影响?4. 请以PMOS晶体管为例解释什么是衬偏效应,并解释其对PMOS晶体管阈值电压和漏源电流的影响。
5. 什么是沟道长度调制效应,对器件有什么影响?6. 为什么MOS晶体管会存在饱和区和非饱和区之分(不考虑沟道调制效应)?7.请画出晶体管的D DS特性曲线,指出饱和区和I V非饱和区的工作条件及各自的电流方程(忽略沟道长度调制效应和短沟道效应)。
微机原理(存储器系统)

只读存储器是一种对其内容只能读出不能写入的存储器。
可擦除可编程只读存储器EPROM(Erasible Programmable
ROM)和电可擦除可编程只读存储器EEPROM(Electric Erasible Programmable ROM)以及近年来发展起来的快擦型 存储器(Flash Memory)具有EEPROM的特点。
C1
C2
2)写入时, T1.T2均导通,数 据线上的信息对C1进行充放电
2018年11月28日
11
(1) 单译码
单译码方式又称字结构,全部地址码只用一 个电路译码,译码输出的选择线直接选中对应 的存储单元。这一方式需要的选择线数较多, 只适用于容量较小的存储器。
(2) 双译码
在双译码结构中,将地址译码器分成行译码器
(又叫X译码器)和列译码器(又叫Y译码器)两部分,
行列选择线交叉处即为所选中的内存单元,这种方 式的特点是译码输出线较少。
+5V WE* CS2 A8 A9 A11 OE* A10 CS1* D7 D6 D5 D4 D3
26
2018年11月28日
SRAM 6264的功能
工作方式 CS1* CS2 WE* OE* D7 ~ D0
未选中 未选中 写操作 读操作
1 × 0 0
× 0 1 1
× × 0 1
× × 1 0
高阻 高阻 输入 输出
2018年11月28日 2
4.1.1
存储器分类
1.按构成存储器的器件和存储介质分类
按构成存储器的器件和存储介质主要可分为: 磁芯存储器、半导体存储器、光电存储器、磁膜、 磁泡和其它磁表面存储器以及光盘存储器等。 从五十年代开始,磁芯存储器曾一度成为主 存储器的主要存储介质。但从七十年代起,半导 体存储器逐渐取代了磁芯存储器的地位。目前, 绝大多数计算机都使用的是半导体存储器。
嵌入式写flash的过程

嵌入式写flash的过程嵌入式系统是一种特殊的计算机系统,它通常用于控制、监测或执行特定任务。
在嵌入式系统中,Flash存储器被广泛应用于存储程序代码、数据和配置信息。
下面将介绍嵌入式系统中如何使用Flash 存储器的过程。
Flash存储器是一种非易失性存储器,它可以在断电后保持数据的完整性。
在嵌入式系统中,Flash存储器通常用于存储操作系统、应用程序和固件等软件。
下面是使用Flash存储器的一般过程:1. 首先,开发人员需要了解嵌入式系统的需求和功能。
根据系统的需求,确定所需的Flash存储器容量和接口类型。
接口类型包括SPI、NAND、NOR等不同的接口标准。
2. 接下来,开发人员需要选择合适的Flash存储器芯片。
根据系统需求和成本考虑,选择容量适当且性能稳定的Flash存储器芯片。
3. 在确定了Flash存储器芯片后,开发人员需要进行硬件设计。
这包括将Flash芯片与嵌入式系统的主控芯片相连接,并根据接口标准进行电气连接和信号交互。
4. 在硬件设计完成后,开发人员需要编写软件驱动程序。
这些驱动程序通常是嵌入式操作系统的一部分,用于控制Flash存储器的读写操作。
驱动程序需要根据Flash芯片的接口标准和通信协议进行开发。
5. 在软件驱动程序开发完成后,开发人员可以开始编写应用程序。
应用程序通常是嵌入式系统的核心功能模块,它将使用Flash存储器来存储和获取数据。
开发人员需要使用驱动程序提供的接口函数来读写Flash存储器中的数据。
6. 在应用程序开发完成后,开发人员需要进行测试和调试。
他们可以使用仿真器或调试器来验证Flash存储器的读写操作是否正常,并确保数据的正确性和完整性。
7. 最后,开发人员需要对系统进行整体验证和性能测试。
这包括测试系统的稳定性、响应时间和功耗等指标,以确保系统在各种工作条件下都能正常运行。
嵌入式系统中使用Flash存储器的过程涉及硬件设计、软件驱动程序开发、应用程序编写以及测试和验证等多个环节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第13章Flash存储器Flash存储器具有电可擦除、无需后备电源来保护数据、可在线编程、存储密度高、低功耗、成本较低等特点,这使得Flash存储器在嵌入式系统中的使用迅速增长。
本章主要以HC08系列中的GP32为例阐述Flash存储器的在线编程方法,也简要阐述了HCS08系列中GB60的在线编程方法。
本章首先概述了Flash存储器的基本特点,并介绍其编程模式,随后给出M68HC908GP32的Flash存储器编程的基本操作及汇编语言和C语言的在线编程实例。
最后讨论MC9S08GB60的Flash存储器编程方法。
Flash存储器编程方法有写入器模式与在线模式两种,本章讨论的是在线模式。
有的芯片内部ROM中,包含了Flash擦除与写入子程序,在本章的进一步讨论中给出了调用方法,使Flash编程相对方便。
有的芯片内部ROM中没有固化Flash擦除与写入子程序,只能自己编写Flash擦除与写入子程序。
而编写Flash擦除与写入子程序需要较严格的规范,所以这是比较细致的工作,读者应仔细分析本章的例程,并参照例程编程。
掌握了GP32芯片的Flash编程方法后,可以把此方法应用于整个系列的Flash编程。
Flash在线编程对初学者有一定难度,希望通过实例分析学习。
本章给出Flash在线编程的C语言实例,对于训练C语言与汇编联合编程技巧很有帮助。
13.1 Flash存储器概述与编程模式理想的存储器应该具备存取速度快、不易失、存储密度高(单位体积存储容量大)、价格低等特点,但一般的存储器只具有这些特点中的一个或几个。
近几年Flash存储器(有的译为:闪速存储器或快擦型存储器)技术趋于成熟,它结合了OTP存储器的成本优势和EEPROM的可再编程性能,是目前比较理想的存储器。
Flash存储器具有电可擦除、无需后备电源来保护数据、可在线编程、存储密度高、低功耗、成本较低等特点。
这些特点使得Flash存储器在嵌入式系统中获得广泛使用。
从软件角度来看,Flash和EEPROM技术十分相似,主要的差别是Flash存储器一次只能擦除一个扇区,而不是EEPROM存储器的1个字节1个字节地擦除,典型的扇区大小是128B~16KB。
尽管如此,因为Flash存储器的总体性价比,它还是比EEPROM更加流行,并且迅速取代了很多ROM器件。
嵌入式系统中使用Flash存储器有两种形式:一种是嵌入式处理器上集成了Flash,另一种是片外扩展Flash。
目前,许多MCU内部都集成了Flash存储器。
Freescale公司在Flash存储器技术相当成熟的时候,在HC08系列单片机内集成了Flash存储器。
该系列内部的Flash存储器不但可用编程器对其编程,而且可以由内部程序在线写入(编程),给嵌入式系统设计与编程提供了方便。
存储器是MCU的重要组成部分,存储器技术的发展对MCU的发展起到了极大的推动作用。
对于Freescale公司新推出的HCS08系列MCU采用第三代0.25微米的闪存技术,其擦写速度更快,性能更稳定。
本节首先简要概述Flash存储器普遍具有的基本特点、Flash存储器的两种编程模式,然后介绍Freescale的HC08系列单片机内的Flash存储器的主要特点,最后对M68HC908GP32单片机的Flash存储器在两种编程模式下的基本情况作简要介绍。
13.1.1 Flash存储器的基本特点与编程模式(1) Flash存储器的基本特点Flash存储器是一种高密度、真正不挥发的高性能读写存储器,兼有功耗低、可靠性高等优点。
与传统的固态存储器相比,Flash存储器的主要特点如下。
①固有不挥发性:这一特点与磁存储器相似,Flash存储器不需要后备电源来保持数据。
所以,它具有磁存储器无需电能保持数据的优点。
②易更新性:Flash存储器具有电可擦除特点。
相对于EPROM(电可编程只读存储器)的紫外线擦除工艺,Flash存储器的电擦除功能为开发者节省了时间,也为最终用户更新存储器内容提供了可能。
③成本低、密度高、可靠性好:与EEPROM(电可擦除可编程的只读存储器)相比较,Flash存储器的成本更低、密度更高、可靠性更好。
(2) Flash存储器的两种编程模式从Flash存储器的基本特点可以看出,在单片机中,可以利用Flash存储器固化程序,一般情况下通过编程器来完成,Flash存储器工作于这种情况,叫监控模式(Monitor Mode)或写入器模式,这与一般的EPROM、OTP、EEPROM装入程序的含义相似。
另一方面,由于Flash存储器具有电可擦除功能,因此,在程序运行过程中,有可能对Flash 存储区的数据或程序进行更新,Flash存储器工作于这种情况,叫用户模式(User Mode)或在线编程模式。
但是,并不是所有类型的单片机内Flash存储器都具有在线编程功能,目前,有的公司出品的单片机,还不能够支持Flash存储器在线编程模式。
Freescale的HC908系列单片机的片内Flash支持这两种编程模式。
一般来说,两种模式对Flash存储器的编程操作的程序是一致的,差别在于调用这些程序的方式和环境。
13.1.2 HC08系列单片机Flash存储器的特点与编程模式(1) MC908系列单片机Flash存储器的特点早期的片内Flash技术与ROM或EPROM相比较,其可靠性和稳定性存在一些不足。
Freescale公司在Flash存储器技术相当成熟的时候才推出片内带有Flash存储器的8位单片机,在应用方便性和可靠性等方面有自己的特点,主要有:第一,编程速度快及可靠性高。
Freescale HC08系列单片机的片内Flash的整体擦除时间可以控制在5ms以内,对单字节的编程时间也在40ns以内。
片内Flash的存储数据可以保持10年以上,可擦写次数也在1万次以上。
第二,单一电源电压供电。
一般的Flash存储器,在正常的只读情况下,只需要用户为其提供普通的工作电压即可,而要对其写入(编程),则需要同时提供高于正常工作电压的编程电压。
但是,Freescale HC08系列单片机通过在片内集成电荷泵,可由单一工作电压在片内产生出编程电压。
这样,可实现单一电源供电的在线编程,不需要为Flash的编程而在目标板上增加多余的硬件模块。
正因为Flash的读写电压要求不同,一些公司的内置Flash存储器便放弃了在线擦除写入功能,而仅有通过编程器的写入功能。
第三,支持在线编程。
Freescale HC08系列单片机的片内Flash支持在线编程(In-Circuit Program),允许单片机内部运行的程序去改写Flash存储内容,这样可以代替外部电可擦除存储芯片,减少外围部件,增加了嵌入式系统开发的方便性。
基于以上这些特点,掌握Freescale HC08系列单片机的Flash存储器的编程技术,充分利用Freescale HC08系列单片机Flash存储器的功能,对基于Freescale HC08系列单片机的嵌入式系统的开发是十分必要的。
但是,与一般程序相比,Flash存储器的编程技术相对比较复杂,有一些特殊之处,本章将在实际应用基础上,总结Freescale的MC908GP32单片机的Flash编程方法,给出编程实例。
(2) MC908系列单片机Flash存储器的编程模式MC908系列单片机中绝大多数型号在其内部带有监控ROM(Monitor ROM),其地址和大小取决于芯片型号。
Flash存储器工作于监控模式的条件是:①复位向量($FFFE~$FFFF)内容为“空”($FFFF)。
②单片机复位时在IRQ引脚上加上高电压(1.4~2Vdd),并给某些I/O脚置适当值(与芯片型号有关,设计时,参考芯片手册)。
只要满足上面条件之一,就可以使单片机在复位后进入监控工作方式。
前者适用于单片机芯片已经安装在用户PCB板上,可以实现在线编程(ICP)。
初始时,芯片为“空”,用户以这种方式装入程序后,以后的复位将执行用户装入的程序,不再进入监控模式。
后者一般用于通过编程器进行程序装入。
在监控方式下,单片机内部的监控ROM程序开始工作,首先进行初始化,随后进入串行输入命令状态。
监控ROM通过一根I/O口线与主机进行串行通信,该I/O口线的指定与芯片型号有关,例如,对MC908GP32,它为PTA0;对MC68HC908JL3,它为PTB0,该I/O口线在使用时需外接上拉电阻。
主机程序可以利用监控ROM提供的少数几条指令对单片机内部地址进行读取、写入等基本操作,包括下载程序到RAM中并执行。
在此基础上,主机可以通过主机程序或是下载到RAM中的程序完成对Flash 存储器编程所需的一系列操作。
M68HC908系列单片机的Flash存储器工作于用户模式不需要特别的条件,在单片机正常工作的过程中,程序可以随时转入对Flash存储器进行编程操作。
这种情况下对Flash存储器的擦除与写入不需要用户提供其它外部硬件条件。
两种模式各有优缺点:监控模式需要外部硬件支持,但不需要单片机内部程序的存在,所以适合对新出厂芯片进行编程写入,或是对芯片进行整体擦除与写入;用户模式可以在单片机正常工作时进入,所以常用在程序运行过程中对部分Flash存储器的一些单元内容进行修改,特别适合于目标系统的动态程序更新和运行数据的存储。
目前监控模式常被仿真器和编程器采用,而在实际的工程应用中,开发者往往只需要考虑和实现用户模式下的Flash存储器在线编程。
本章只讨论用户模式下的Flash存储器的编程方法,给出具体的实例。
要进行编程器研制或仿真器研制的技术人员需掌握有关监控模式的Flash存储器的编程方法,请参考Freescale的有关手册或其它文献。
13.2 MC908GP32单片机Flash存储器编程方法Flash存储器一般作为程序存储器使用,不能在运行时随时擦除、写入。
当然,由于物理结构方面的原因,对Flash存储器的写操作,更不能像对待一般RAM那样方便。
在许多嵌入式产品开发中,需要使用掉电仍能保存数据的存储器来保存一些参数或重要数据,目前一般使用EEPROM来实现。
HC08的Flash存储器提供了用户模式下的在线编程功能,可以使用Flash存储器的一些区域来实现EEPROM的功能,这样简化了电路设计,节约了成本。
但是,Flash存储器的在线编程不同于一般的RAM读写,需要专门的过程,本节介绍HC08的Flash存储器的基本操作方法。
13.2.1 Flash存储器编程的基本概念虽然Flash存储器是一种快速的电可擦除、电可编程(写入)的只读存储器,但是基于其物理结构原因,对Flash存储器的擦除及写入一般需要高于电源的电压,Freescale HC08系列单片机的片内Flash存储器内含有“升压电路”,使其能够在单一电源供电情况下进行擦除与写入。