首页 AVR105 高效持久保存参数到 Flash

AVR105 高效持久保存参数到 Flash

举报
开通vip

AVR105 高效持久保存参数到 FlashAVR105: 高效持久保存参数到 Flash AVR105: 高效持久保存参数到 Flash 翻译:邵子扬 2006年8月31日 http://shaoziyang.bloger.com.cn shaoziyang@gmail.com 1​ 特点 ​ 快速存储参数 ​ 高持久性存储 – 350K 次写循环 ​ 高效参数存储 ​ 任意参数大小 ​ 参数冗余存储 ​ 可选写入验证 ​ 电源失效后优化恢复 2​ 介绍 嵌入式系统在复位或掉电后依赖于保存的参数。在一些系统这个静态的参数用于初始化系统,在另外...

AVR105 高效持久保存参数到 Flash
AVR105: 高效持久保存参数到 Flash AVR105: 高效持久保存参数到 Flash 翻译:邵子扬 2006年8月31日 http://shaoziyang.bloger.com.cn shaoziyang@gmail.com 1​ 特点 ​ 快速存储参数 ​ 高持久性存储 – 350K 次写循环 ​ 高效参数存储 ​ 任意参数大小 ​ 参数冗余存储 ​ 可选写入验证 ​ 电源失效后优化恢复 2​ 介绍 嵌入式系统在复位或掉电后依赖于保存的参数。在一些系统这个静态的参数用于初始化系统,在另外一些应用下用于记录系统的历史数据或累计数据。EEPROM 存储器可以用于这个目的,但是当一次要保存多个字节时就难以匹配 Flash 存储器的速度。 Flash 存储器对于大量参数更有效率的原因是可以使用页编程,减少了编程时间。这样在存储多个字节时对于 Flash 每个字节的编程时间就比 EEPROM 少。作为快速存储法的直接结果就是电源消耗可以减少,因为更多的时间可以进入休眠模式。 这篇应用笔记说明了使用 AVR 的自编程特性来高效参数保存的方法。利用整个 Flash 页和类似于环形缓冲区的方法,Flash 页的每个存储器单元的写入次数不像只使用一个单元那么频繁, 这增加了存储器的使用次数,保证存储区不会被“耗尽”。存储器的使用次数与参数大小和分配页面大小成正比。 3​ 理论 AVR 单片机的 megaAVR® 系列有个特性叫做“自编程”,这个特点使得 AVR 可以再次编程内部的 Flash 存储器。所有 AVR 单片机的程序存储器都可以用于存储常数,现在也可以存储参数,因为能够在运行时修改 Flash 存储器的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 。 使用 Flash 存储器存储参数不像使用 EEPROM 接口那样简单,自编程的目的主要是为了用于固件程序升级,但是其灵活性也允许用于更新 Flash 中的参数。这一小节说明了 Flash 存储器关于使用内部存储器保存参数的基本资料。 3.1​ Read-While-Write Flash Flash 存储器可以用 SPM 指令再次编程。SPM 指令只能从 Boot 区运行,从应用程序区执行SPM 指令将没有任何效果。应用程序区的范围是从地址 0x0000 直到 Boot 区的起始地址(如图1)。Boot 区可以选择 4 个不同的大小,它由熔丝位来决定。Boot 大小与使用的 AVR 单片机型号有关。 图1. ATmega128 的应用程序区和 Boot 区存储器映射 Boot 区总是在 No-Read-While-Write (NRWW) 区,应用程序区包括了 Read-While-Write (RWW) 区以及 NRWW 区的一部分。当 Boot 区的大小选择为最大时,它占用了整个的 NRWW 区,这时应用程序区就只包含了 RWW 区。NRWW 和 RWW 是固定的,不受 Boot 区大小的影响。参考芯片的数据手册获得更详细的资料(注:也可以参考AVR109自编程,这篇应用笔记已经翻译过了)。 NRWW 和 RWW 区的不同在于当擦除或写入 RWW 区时,AVR 单片机可以继续执行位于 NRWW 区的程序代码。反过来则不行的:AVR 内核在修改 NRWW 区时被暂停。概括的讲,位于 Boot 区的代码可以在程序区编程时执行,这里假设被程序区修改的页面在 RWW 中。 因此,Flash 参数更新的代码必须位于 Boot 区,而 Flash 参数必须在程序区的 RWW 部分。这要求在写入参数时不能禁止中断。 3.2​ 擦除和编程 Flash 单元 Flash 存储器由独立的位单元组成,Flash 单元基于浮动门晶体管工艺:一个电荷“捕捉”晶体管门电路决定 Flash 单元读取的逻辑电平。Flash 的工作方式可以简单的描述为:当 “擦除” 一个单元时,对门进行充电,单元读取为逻辑 1。 “编程” Flash 等于对门电路放电,使逻辑变为 0。只能编程(放电)一个已经擦除过 (充电) 的单元。 Flash 以页的形式组织,当使用自编程擦除和编程时也是以页方式进行的。 注意位可以单独编程,因为位编程就是放电,没有被编程的位仍然保持电荷,任何没有被编程的位可以在以后进行编程。如果在编程一个字节前不先进行擦除,其结果就是旧参数和新参数的与。 例如写参数 0x01 到一个 Flash 字节需要先擦除该字节 (8 个 Flash 单元),使其变为 0xFF。写入参数时,7 个高位(Flash 单元) 被放电。如果 Flash 没有被预先擦除,结果很可能是不正确的:假设原来的参数是 0xFE,并且要编程的新参数为 0x01,编程的结果将是 0x00,因为 LSB 不能从 0 变为 1。 3.3​ Flash 编程次数 实际上一个参数(1) 可以存储多次到一个 Flash 页,Flash 单元保证可以承受 10,000 次擦除/写入循环。就是说,每个单元可以擦除并编程 10,000 次。因此,如果一个参数可以在一个页面的不同位置写入 10 次,那么总次数可以认为是 100,000 次。 注意: 1.​ 这里的“参数”既可以是一个单独的参数,也可以是一组参数。“参数”可以看做一系列任意大小的数据。 3.4​ 写入时间 当写入 EEPROM 时,一次写入一个字节,使用 Flash 就不是这样因为可以用页编程方式,这对于多个字节参数存储时是一个优势。参数越多,每个字节编程的时间越短。 写入一个 long (4 字节) 类型的参数到 Flash 大约是 4 ms (不包括擦除时间,耗时基本相同),平均一个字节 1 ms。作为比较,写入相同参数到 EEPROM(1) 大约是 32 ms,这里包括了 EEPROM 的擦除时间,但比较是公平的,因为 Flash 只在所有单元都被用完后才擦除。以 ATmega128 为例:页大小是 256 字节,可以存储一个 long 类型的变量 256/4 = 64 次。擦除时间平均到 64 次写入中,就是 4 ms 除以 64,就已经非常小了。 结论是多个参数的存储使用 Flash 在写入时间上更有效率 – 更多时间可以进入休眠模式,节约电能。 注: 1.​ 这里以 ATmega128 为例,具体的 EEPROM 编程时间与芯片有关 – 请参考芯片的数据手册。 3.4.1​ Flash 写访问限制 Flash 和 EEPROM 共享擦除和编程模块,结果就是 EEPROM 和 Flash 不能同时写入(或擦除)。这也意味着在使用自编程来修改程序存储器时,需要先检测是否正在进行 EEPROM 写入。如果是 EEPROM 正在写入,必须等待 EEPROM 写完成。反过来也一样,EEPROM 也需要等 Flash 写入完成。 3.5​ Flash 数据保存时间 可编程存储器中数据正确保存的时间称为数据保存时间(或数据保持能力)。存储器不能无限保存数据的原因是存储器单元存在泄露,这意味着单元中存储的电荷会逐渐减弱,直到不再 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 现出应有的逻辑电平。擦除或编程单元都会朝向不确定状态。如果超过了数据保存时间,其内容将变得不再可靠。 3.5.1​ 擦除和写入减少数据保存时间 当擦除和写入 Flash 单元时,是有损伤的,而读取操作不会影响数据保存时间。随着擦除/写入周期次数的增加,Flash 单元的泄露也随之增加。结果就是电荷快速减弱,数据很快变得无效 – 换句话说,数据保存时间就会减少。如果擦除/写入周期次数超过 10K 次,数据保存时间就会低于预期的 20 年。 和参数保存到 Flash 相关联,知道 Flash 页是相互独立的非常重要;如果一个 Flash 页用于保存参数,这个页将会减少数据保存时间,而 Flash 其余部分,用于保存代码,不会受到参数页的影响而减少数据保存时间。 3.6​ 掉电考虑 一个必须考虑的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 是任何嵌入式系统都可能遇到电源失效,这也是使用非易失存储器保存参数的原因:这样可以在电源正常后恢复参数。 有许多方法来验证参数被正确写入,首选是根据时间和代码空间来验证。一个安全方法是使用很少的存储器空间和时间,保存写完成标志到一个静态存储器位置,这个标志可以用于在电源恢复后判断上次写入是否正常完成,如果没有就需要采取适当的操作。 考虑关于避免类似于 EEPROM 错误那样的 Flash 故障(参考 AVR 数据手册关于避免 EEPROM 错误部分)。为了避免 Flash 因为电源失效引起的写入故障,在使用自编程时推荐总是允许低压检测功能。 3.7​ 使用自编程 详细关于自编程的内容可以在器件的数据手册中找到,以及在应用笔记 “AVR109: 自编程”中。 注意到 Flash 写操作不会被外部复位或 Brown-out 复位中止是很重要的。只有上电复位才会中止 Flash 写操作,其结果就是写操作将尽可能长的执行,即使供电电压低于要求的最低低压。这不会引起数据损坏 – 这个特点增加了 Flash 页写入/擦除完成的可能。 4​ 执行 Flash 参数存储的例子使用了 IAR EWAVR 2.27b 编译器。它也能用于其他编译器,但是可能需要一些修改,因为例子代码中使用了一些 IAR 内部函数。 例子的目的是创建可以快速存储多字节参数的驱动以及获得参数长久保存。存储的持久性与参数的大小和 Flash 页大小有关,在例子中存储一个 7 字节的结构体参数到 ATmega128。页大小是 256 字节,一页可以保存 35 个参数,包括了写入完成标志。那么存储的次数可以按如下方式计算: 总次数 = 单元次数 * 个数 = 10,000 * 35 = 350,000 一般情况下数据保存次数要大于最低保存次数,可以预计比最低次数增加 10 倍 – 即数百万次参数更新。 此外,放置参数到存储器的 RWW 区可以使电源消耗达到最小。因为在更新参数时代码可以在 NRWW 区继续运行,节约了时间。代码使得中断可以继续操作以及在 RWW 区中断驱动代码能继续执行。 4.1​ 选项 为了获得更可靠的存储方法,需要“允许”使用写完成标志。如果使用了此标志,参数写入和参数位置标志(也就是写完成标志)将分为两个写操作,这样可以通过写完成标志判断参数被正确存储。不过,和用一个操作就储存它们相比分别存储参数和写完成标志将花费两倍的时间。 为了增加安全性,在擦除参数页时参数临时存储到 EEPROM。这是为了防止在擦除操作和写操作之间电源失效造成丢失参数。如果发生了电源失效,参数可以从 EEPROM 中恢复并编程到参数页中。 这些功能由 FlashStorageDriver.c 控制,默认情况下是允许的。 4.2​ 需求 例子使用了 ATmega128,因此适合于同样内存大小的芯片。如果用在其它型号上,命令链接文件和 FlashStorageDriver.c 文件中芯片的参数需要被修改。 4.3​ 固件说明 驱动由 3 个函数组成:它们在下面用 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图 (图 2、3、4) 说明。 4.3.1​ FlashStorageInit Flash 存储器的初始化就是检查 Flash 存储器的状态。如果参数存储在临时 EEPROM (根据 EEPROM 备份有效标志),参数将被恢复并复制到 Flash 存储器。否则 Flash 缓冲区最后使用的位置将从索引标志中进行识别。 图2. Flash 存储初始化 4.3.2​ FlashStorageWrite 参数存储程序先检查 EEPROM 是否正在访问。如果是,程序就禁止 EEPROM 中断并等待访问结束。如果参数页被填满,参数首先存储到 EEPROM,然后擦除参数页。当 EEPROM 保存参数时, 设置 EEPROM 备份有效标志。一旦擦除结束,参数写入到参数页并清除 EEPROM 备份有效标志。写入参数到参数页后,相应的参数索引位也被清除,这个方法可以在初始化时判断参数是否有效。最后,EEPROM 中断被恢复到初始状态。 除了上面列表外,存储器的 RWW 区访问控制使得在函数返回时可以允许存储器读取。 图3. Flash 存储写入过程 4.3.3​ FlashStorageRead 应用程序不能直接读取 Flash 中参数,因为程序不知道参数的当前位置,因此用一个专门的函数用来读取参数。函数首先判断是否可以读取参数(SPM 指令没有执行),然后读取并返回参数。 图4. Flash 存储读过程 5​ 参考文献列表 1.​ AVR 带有自编程功能的芯片数据手册,在 Atmel 网站上。 2.​ 应用笔记 “AVR109 – 自编程” ,在 Atmel 网站上。 (全文完)
本文档为【AVR105 高效持久保存参数到 Flash】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_024720
暂无简介~
格式:doc
大小:143KB
软件:Word
页数:8
分类:互联网
上传时间:2011-04-02
浏览量:6