楼主: flyingbird-3368

[求助] 新人新帖,关于flash问题

[复制链接]

该用户从未签到

3

主题

19

帖子

0

新手上路

Rank: 1

积分
37
最后登录
1970-1-1
发表于 2011-12-30 10:06:04 | 显示全部楼层 |阅读模式
对于K60/K70的fn系列芯片,根据datasheet,分成pflash0,pflash1,,pflash2,pflash3,那么这个pflahs如何分配空间大小,以1M说明,难道是平分?另外,flash内部有些名词,比如sector,section,block这些从flash空间来看,各自多大?如果sector是2K,那么section呢?另外,这三者有没有从属关系。对于program flash0 ifr占用1k,这1k空间是额外的空间还是占用了pflash自身空间,而且这1K类似rom,对于用户来说只能有限次写,也不能擦除,而且ifr中有960字节是保留的?user可以用来写数据吗?另外64字节,是program once filed,在datasheet倒是明确说明只能写一次,对于960字节没有说明。
 
先提出这几个问题吧。
我知道答案 目前已有9人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-12-30 10:47:08 | 显示全部楼层

    RE:新人新帖,关于flash问题

    1、PFLASH:这个是根据不同的芯片,大小是不一样的,你可以参考手册FLASH这一章中,里面详细划分了FLASH的空间,K60是一片为128K。
    2、sector:FLASH区,一个FLASH是由多个block组成,block是由多个sector组成,而sector是由多个section组成。
    3、 ifr这个是暂用了PFLASH的空间,不是额外的。这个空间只能在写1次,不能擦除,但是可以读取。这个是用来保存FLASH一些相关信息的。你不要对这个地方擦除和写操作。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    19

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
     楼主| 发表于 2011-12-30 11:18:10 | 显示全部楼层

    RE:新人新帖,关于flash问题

    那么按照1M空间来说吧,对于第二点回复:
    那么这个由多少block组成?一个block由多少sector组成?sector由多少section组成?一个section有多大空间?
    延续第三点,如果用户误操作了这一块的数据该如何恢复?还是说必须通过全片擦除来完成?比如Ezport方式。另外,就是关于flash protection的问题,4个fprot寄存器,每个寄存器可以配置8个regions,那么对于1M的pflash,每个region空间是多少?dflash有说明是32K,pflash无说明,难道也是32K,如果是这样,倒刚好组成1M。那么region又跟第二点是什么关系?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-12-30 15:31:45 | 显示全部楼层

    回复:新人新帖,关于flash问题

    1M的FLASH分为2个block,每个是512K,手册上没有标出详细的分配,我认为应该是8个sector,每个sector由256个section,每个section是256字节。
    ifr是固定,擦除的时候,这段也不会擦除,而且FLASH擦除的时候是以sector为单位的。对ifr进行任何操作都无效。
    未命名.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    19

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
     楼主| 发表于 2011-12-30 17:36:13 | 显示全部楼层

    RE:新人新帖,关于flash问题

    为什么pflash不支持二次写入,也就是bit位的改变,1变0。像arm7就有很多flash支持二次写入功能。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    19

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
     楼主| 发表于 2011-12-30 17:56:35 | 显示全部楼层

    回复:新人新帖,关于flash问题

    回复第 4 楼 于2011-12-30 07:31:45发表:
    1M的FLASH分为2个block,每个是512K,手册上没有标出详细的分配,我认为应该是8个sector,每个sector由256个section,每个section是256字节。
    ifr是固定,擦除的时候,这段也不会擦除,而且FLASH擦除的时候是以sector为单位的。对ifr进行任何操作都无效。

     

    对于你说的8个sector,我觉得不合理,对于512K的空间来说,那就意味着每个sector有32k了?我觉得对于512K空间的flash,每个sector是2K比较合理。对于1M,是4K,但不敢肯定。不知道该如何去验证。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-12-30 19:56:41 | 显示全部楼层

    RE:新人新帖,关于flash问题

    pflash是支持多次写入的,这里说的是ifr,ifr和pflash是不一样的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    19

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
     楼主| 发表于 2011-12-31 10:14:32 | 显示全部楼层

    RE:新人新帖,关于flash问题

    已经验证过了,pflash不支持二次写入,如果要二次写入,必须进行擦除,这就不是二次写入了。
    另外,验证二次写入后,不进行校验,直接进行读pflash那个地址的数据,就进入异常状态,中断向量表中的3,硬件故障。为什么在读的时候报这个错?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-12-31 10:29:45 | 显示全部楼层

    RE:新人新帖,关于flash问题

    对于FLASH的操作,都是一样的,只能写一次。如果想再写,就需要执行擦除命令以后,才可以。这个是由于FLASH的本身机制决定的。IAP、bootloader都是使用类似的方法来做的。你发生错误,说明你操作了不应该操作的地址,读是不会发生任何错误的,只能发生在写的时候。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    19

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
     楼主| 发表于 2011-12-31 10:52:42 | 显示全部楼层

    RE:新人新帖,关于flash问题

    以前在操作51单片机,ARM7以及Cortex-M3芯片的时候,其Flash都支持二次写入。也就是FF可以写成任意一个非零值,比如88,然后还可以再写一次,这次写就只能是00了,这样对于应用方面就比较方便了。对于K60/K61/K70系列,只能做一次写入,是基于安全考虑?
    另外,iap以及bootloader一般都是向flash写入可执行的hex或bin文件数据,一般不会进行微操作,但是对于app的话,操作flash就会用到微操作。
    不过,FX倒是简化了这方面的操作,那么对于512K的K60,pflash是256K,dflash也是,如果dflash只用到128K,那么剩下的128k也可以作为pflash,但是FX系列产品,pflash与dflash地址不连续,那么在Keil编译器中irom就要分段设置了,对于cw和iar不熟悉,可能需要写分散加载文件。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 10:03 , Processed in 0.105546 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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