搜索
bottom↓
回复: 21

【Kinetis内部培训资料】FLASH memory 模块

[复制链接]

出0入0汤圆

发表于 2014-7-17 10:53:09 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_Robin 于 2014-7-17 14:54 编辑

FLASH memory 模块篇

一,Kinetis flash模块特性与配置


首先给大家介绍下FlexMemory,顾名思义,就是应用很灵活的存储器,这个灵活指的是结构和用途的灵活,支持FlexMemory的设备,除了从0x00000000起始的PFlash用于存放代码外,还提供了一块用作存放代码或数据的DFLASH, 并且这个DFLASH还能拿出一部分或全部的空间配合FlexRAM组成EEPROM。从而无需外部外部额外添加EEPROM,节省了成本,并且性能卓越,可擦写次数可达10M以上。



从上图可以看到,FlexMemory由FlexNVM,FlexRAM和内置的固件firmware组成,firmware的作用是提供文件系统的管理功能,把flexNVM和FlexRAM组合起来,仿真成EEPROM,可支持字节的读写擦等操作,并且支持代码在PFLASH里执行的时候同时访问EEPROM。而且FlexNVM和FlexRAM也可单独使用,FlexNVM可以用来存放代码或数据,用来存放代码时请注意这块空间和通常存放代码的PFLAH在地址上是不连续的,所以不能把一个函数分开存放在PFLASH和FlexNVM中。FlexRAM单独使用的时候可以作为系统RAM的一部分,或者在执行Flash Section Program命令时用作buffer。FlexNVM可以在组成EEPROM的时候把一部分用作flash,但FlexRAM不能这么做,作为EEEPROM的时候就不能当RAM用了。



Kinetis的flash一般有两种配置,一种是只有PFLash, 如上图,这种类型的flash能提供一种SWAP的功能,这种功能主要用在bootloader中,即bootloader在Array 0空间里,通过UART等通讯端口接收二进制文件并烧录到Array 1空间里,在完成后执行SWAP命令,就能在系统复位后直接运行应用程序,当需要更新代码时,可以让应用程序再执行一次SWAP,在系统复位后就直接运行bootloader了。要注意的是,每个Array里都要包括中断向量表等信息。



上图就是PFLASH only的示意图,可以看到Flash控制器的接口是64位的,和两块并联的32位Flash之间无缝连接。



上图是支持FlexNVM的示意图,和PFLASH only的很相似,除了PFLASH和FlexNVM之间地址不连续外,基本没什么区别。当然这里面SWAP就不支持了。



二, 安全与保护


Kinetis的secure级别有三级,级别最高是只能通过backdoor的方式进行解锁,即必须通过用户的应用程序才能解锁,所以如果程序里面没有加入backdoor解锁的功能,慎用secure。



那么如何进行解锁呢?这里提供了三种方法,backdoor key, 你可以理解为密码解锁,Debug access,通过JTAG/cJTAG/SWD接口解锁,或者通过EzPort进行全擦除操作来解锁,这里面backdoor解锁的权限最高,其它的两种都有一定的限制。



Kinetis还提供了三个寄存器对存储空间进行保护,分别对应PFLASH,DFLASH和EEPROM这三种类型的存储器。这里要注意的是DFLASH在使能EEPROM的情况下会被占用一部分空间,如果剩下空间的大小是2的N次方,那么就是对剩下空间8等分,由DPROT【7:0】进行保护,而对于非2的N次方的情况,像192KB和224KB,就是以32KB对剩下空间进行分区,这时候就不一定是8个分区,可能是6或者7个,那么只有DPROT【5:0】或DPROT【6:0】会起作用。



这些保护信息会在复位的时候自动从Flash Configuration Field里加载到上述的三个寄存器里,所以客户需要预先定义好这几个数值,当然也可以动态修改这几个寄存器对相关分区进行临时的保护。



但是解除保护不能动态的进行,你只能通过flash编程来修改保护信息并将系统复位使之生效。当然如果你把存放保护信息的空间也保护起来的话,只能通过mass erase来取消保护了。



三, flash 配置域(flash configuration field)


在Flash中存放了一块16字节的配置信息,分布在0x400到0x410的空间里,一般就在中断向量表的后面,在设备复位时,这部分的内容就会被加载到一些寄存器中,作为flash的默认配置。这些配置信息主要包含了:
PFLASH,DFLASH和EEPROM的写保护信息;
FLASH加密;
Backdoor Key;
Flash Option信息
为了防止不必要的加密导致程序debug的问题,建议把0x400-0x410的内容设置为0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFE。



上图就是Flash Option信息的详细内容,可以设置复位后是否使能EzPort,是否进入低功耗模式。在最新的版本里,还在bit2加入了了禁用NMI中断引脚的功能,更有效的防止外部干扰对NMI引脚的影响。



四, Flash 内存控制器

这里的Flash Memory Controller主要担当系统和flash存储器之间的接口。而且从前面的示意图可以看到,它到flash存储器的总线宽度是64位的,那么在连续读取数据时,第二个数据总是无需等待时间的。它还允许用户控制缓存的使用,这里一共提供下列几种缓存:



每个flash bank都有一个对应的控制寄存器来设置上述缓存的使用,但是系统复位后的默认设置已经能适用绝大多数情况了,所以如果不是应用有很特殊的要求的话,无需对它进行设置。



五, Flash 编程


Kinetis提供了多种方式对Flash进行编程和Debug。JTAG类的接口是最通用的接口,不仅能进行编程,还能调试程序,而EzPort和bootloader等软件只能下砸应用代码,不能debug。



六, Flash memory lab/demo

接下来给大家具体讲解下怎么把FlexMemory配置成EEPROM,并对其操作。

EEPROM由FlexNVM和FlexRAM组合而成,要组合成EEPROM,首先要进行一次分区操作,这是为了告诉系统EEPROM要多大的空间(即FlexRAM的大小以及A区和B区的比例),以及多少FlexNVM用来对这个EEPROM进行备份。这里要注意的是FlexNVM分配的空间是平均地从两个block里划分的,而FlexRAM的分区比例却是可选的,1/8,1/4或1/2。这个例子里用的是1/2。
分区后就可以直接去这块空间进行操作了,无需额外的设置。具体操作如下:




在Kineitis的RM里提供了一个计算公式来计算EEPROM的擦写次数,上图是根据这个样例的配置得到的结果,需要注意的是一块芯片最好只对EEPROM分区一次,如果多次分区,那上述公式就不适用了。
而且在这个样例中,A区和B区是大小相等的两个区,如果采用1/8或1/4的比例分区,A区的寿命更长,因为A区比B区小,而每个区的backup FlexNVM又是相等的,所以建议在使用中,更新频繁的数据存放在A区,一般的存放在B区,几乎不更新的数据放在DFLASH或PFLASH里。


附件是pdf文档形式的【Kinetis内部培训资料】FLASH memory 模块





PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营Kinetis内部培训资料汇总帖链接进入。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-7-17 11:31:36 | 显示全部楼层
讲解的很详细,期待文档和代码片段结合的形式,对新手而言帮助更大一些

出0入0汤圆

 楼主| 发表于 2014-7-17 11:39:55 | 显示全部楼层
lyzhangxiang 发表于 2014-7-17 11:31
讲解的很详细,期待文档和代码片段结合的形式,对新手而言帮助更大一些


谢谢你的建议呢
这些飞思卡尔【Kinetis内部培训资料】之前都没有公布出来,所以可能对大家理解飞思卡尔版块置顶帖 飞思卡尔Kinetis资料大本营手把手系列之官方例程讲解大全 有点困难。
有了中文的【Kinetis内部培训资料】相信能让大家学习飞思卡尔Kinetis 微控制器更为容易。

修改:添加链接

出0入0汤圆

发表于 2014-7-17 13:20:00 | 显示全部楼层
mark                                 

出0入0汤圆

 楼主| 发表于 2014-7-17 15:00:45 | 显示全部楼层

谢谢大家关注
【Kinetis内部培训资料】系列的资料讲解的很详细且带中文注释,应该能让大家更容易地了解Kinetis芯片。

出0入0汤圆

发表于 2014-7-23 13:51:13 | 显示全部楼层
"可擦写次数可达10M以上"是个什么概念,10*1000000=10000000,一天擦一次27777年就可能坏掉了,一天擦100次,277年就肯能坏掉了,1s钟擦一次115天就可能坏掉了.

出0入0汤圆

 楼主| 发表于 2014-7-23 14:09:39 | 显示全部楼层
Ai_evan 发表于 2014-7-23 13:51
"可擦写次数可达10M以上"是个什么概念,10*1000000=10000000,一天擦一次27777年就可能坏掉了,一天擦100次,27 ...

最大化backup设置后的EEPROM的同一地址擦写次数10M次。

出0入0汤圆

发表于 2014-8-22 22:31:51 | 显示全部楼层
OK,多谢  

出0入0汤圆

发表于 2014-8-22 22:55:22 | 显示全部楼层
有没有速率测试啊

出0入0汤圆

发表于 2014-9-4 09:15:38 | 显示全部楼层
收藏学习,

出0入0汤圆

发表于 2014-9-4 09:40:23 | 显示全部楼层
用过的达人 说说价格 或 其他优势

出0入0汤圆

发表于 2014-11-7 10:11:44 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2014-11-11 13:07:47 | 显示全部楼层
讲解的很详细

出0入0汤圆

发表于 2014-11-16 12:22:04 | 显示全部楼层

讲解的很详细  希望资料更丰富些  中文资料多些  

出0入0汤圆

发表于 2014-11-16 12:23:14 | 显示全部楼层
Ai_evan 发表于 2014-7-23 13:51
"可擦写次数可达10M以上"是个什么概念,10*1000000=10000000,一天擦一次27777年就可能坏掉了,一天擦100次,27 ...

就是这个意思哈哈哈

出0入0汤圆

发表于 2014-11-18 17:13:43 | 显示全部楼层
介绍的很详细的,谢谢了

出0入0汤圆

发表于 2014-11-19 10:15:59 | 显示全部楼层
好贴 可惜太多是英文 影响阅读速度

出0入0汤圆

发表于 2014-12-25 13:03:59 | 显示全部楼层
好资料,收藏,以后备用,

出100入101汤圆

发表于 2014-12-25 13:19:00 | 显示全部楼层
FlexMemory,MEMORY的使用确实很灵活!

出0入0汤圆

发表于 2014-12-25 17:51:34 | 显示全部楼层
新东西太多啦 ,FlexMemory 第一次听说

出0入0汤圆

发表于 2014-12-25 22:24:50 | 显示全部楼层
能来点中文的吗?

出0入0汤圆

发表于 2014-12-25 22:54:34 | 显示全部楼层
sblpp 发表于 2014-12-25 22:24
能来点中文的吗?

飞思卡尔官方出的中文资料比较少 , 接受吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 15:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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