跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1L系列
  4. [LE1]咨询一下FEE擦除逻辑

[LE1]咨询一下FEE擦除逻辑

已定时 已固定 已锁定 已移动 YTM32B1L系列
15 帖子 5 发布者 332 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • pengh1994P 离线
    pengh1994P 离线
    pengh1994
    回复了Derrick 最后由 编辑
    #5

    Derrick 不好意思再请教一下,间隔的32B是每一个Block都有吗,还是每一个Sector/Cluster只有一个?

    DerrickD 1 条回复 最后回复
    0
    • DerrickD 在线
      DerrickD 在线
      Derrick YunTu
      回复了pengh1994 最后由 编辑
      #6

      pengh1994 只有Cluster会有

      1 条回复 最后回复
      0
      • pengh1994P 离线
        pengh1994P 离线
        pengh1994
        编写于 最后由 pengh1994 编辑
        #7

        Derrick yt0503 两位大佬,抱歉打扰了。我继续调查发现了每五次写入时时间会变长的原因。我在断电时会先后写入两个Block: Block1长度为32Byte,Block2长度为136Byte。对应的Sector,Cluster配置都一样,Block1对应的Sector为0x400-0x5FF, 0x600-0x7FF; Block2对应的Sector为0xC00-0xDFF,0xE00-0xFFF. 接下来就是奇怪的点了,按我们计算,每个Sector可以保存2个Block2或者7个Block1。但实际测出来每个Sector只能保存1个Block2或者4个Block1. 即每次检测到断电,Block2写入前都会去执行一次擦除,而每第五次,回去执行一次Block1对应Sector的擦除。也就导致了我最前面提到的每五次时间会变长。

        我现在不清楚为何实际存储次数会和理论值差别这么大,很奇怪。

        1 条回复 最后回复
        0
        • houjun_xiaoH 离线
          houjun_xiaoH 离线
          houjun_xiao YunTu
          编写于 最后由 编辑
          #8

          对于你Block2(size 136byte)来说,cluster长度512byte太小了。理论计算就只能写入两次数据。除了前两次写入,后面每次写入都在翻页,我们在新的cluster中都会拷贝一次Block的历史最新数据到翻页后的cluster中,也就是说,你每次写入都把后面新的cluster写满了,所以除了前两次后面每次Block2写入都在翻页。
          Fee cluster 翻页的机制如下:在NvM请求数据写入时,根据Block ID查询所属Cluster Group的空闲地址,并判断该地址所属Cluster空闲空间能否满足本次写入,若满足则调用Flash driver写入数据;若不满足,则根据Cluster Group配置查询下一个可写的Cluster并擦除,然后将当前Cluster Group中所有Block的最新数据搬移至该新的Cluster中,搬移完成后再写入本次需要写入的Block数据。

          pengh1994P 1 条回复 最后回复
          0
          • pengh1994P 离线
            pengh1994P 离线
            pengh1994
            回复了houjun_xiao 最后由 编辑
            #9

            houjun_xiao 那关于Block1呢,理论上512B - 32Cluster间隔 = 480B, 每个Block1长度为32B+32B = 64B, 即 480/64 = 7.5, 即7次,就算加上翻页后copy的一次,也还能写入6次。 但为何每第五次写入需要去擦除另一个Sector呢?

            DerrickD YQHY 2 条回复 最后回复
            0
            • DerrickD 在线
              DerrickD 在线
              Derrick YunTu
              回复了pengh1994 最后由 编辑
              #10

              pengh1994 是全擦除写的吗?按照计算全擦的情况下应该能写7次。第八次会换页
              32 (CLuster信息头)+ 64*7 (7次Block数据) + 32 (间隔) = 512Byte

              1 条回复 最后回复
              0
              • YQHY 在线
                YQHY 在线
                YQH YunTu
                回复了pengh1994 最后由 编辑
                #11

                pengh1994 建议先擦除全片,在你的调试工程中调用写入操作后,在调用Fee_MainFunction函数的位置打断点,每单步执行一次同时观测下memory窗口对应flash地址写入的数据。这样会比较清楚0ee26e52-260f-4114-bdc9-1270c8d7d6ad-image.png
                结合这个文档一起看下:YTM32系列Fee模块介绍.pdf

                1 条回复 最后回复
                0
                • houjun_xiaoH 离线
                  houjun_xiaoH 离线
                  houjun_xiao YunTu
                  编写于 最后由 编辑
                  #12

                  Fee cluster的存储结构如下:
                  image.png
                  这个结构决定我们在写入数据时需要Block Header与Block Data区域之间需要32byte的全FF间隔。因此实际写入的空间为512-32-32。另外你需要确认一下,你的配置里面是否有预留区域,可以看一下cluster group:

                  image.png

                  pengh1994P 1 条回复 最后回复
                  0
                  • pengh1994P 离线
                    pengh1994P 离线
                    pengh1994
                    回复了houjun_xiao 最后由 编辑
                    #13

                    houjun_xiao 感谢分享,我的FEE配置中没有预留区域。另外,我这里单独打断点发现以下数据:
                    在写Block1的时候,先打断点在Fee_Write(),断点到达后,再打断点在Fls_Write(), 观察第一次停下时TargetAddress的值,之后暂时关闭断点继续运行。
                    7d0b02cb-6138-4853-876a-6def48e7cd40-image.png
                    反复尝试,发现接连几次运行下来,TargetAddress的值分别为:0x600, 0x660, 0x6C0, 0x6E0. 再下一次运行就会跳转到0x400的Sector了。

                    目前下来唯一不清楚的就是这个问题,为何只能写入四次,每第五次尝试写入会换页

                    DerrickD 1 条回复 最后回复
                    0
                    • DerrickD 在线
                      DerrickD 在线
                      Derrick YunTu
                      回复了pengh1994 最后由 编辑
                      #14

                      pengh1994 你有空拉个会,我们来看下

                      1 条回复 最后回复
                      0
                      • houjun_xiaoH 离线
                        houjun_xiaoH 离线
                        houjun_xiao YunTu
                        编写于 最后由 编辑
                        #15

                        方便的话,你可以把Fls中写的数据截图我们看一下,调试memory窗口查看Fee写入的原始数据:

                        image.png

                        1 条回复 最后回复
                        0

                      • 云途开发生态介绍

                        快速上手云途开发生态

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YT CONFIG TOOL调查问卷

                        帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                      • can
                        19
                        demo
                        19
                        uds
                        12
                        lin stack
                        10
                        md14
                        6
                        fbl
                        5
                        yt-link
                        5
                        adc模块
                        4
                        Online Users
                        xianghanX
                        xianghan
                        YQHY
                        YQH
                        OliverChenO
                        OliverChen
                        爪云爪
                        爪云
                        ysogY
                        ysog
                        DerrickD
                        Derrick
                        runR
                        run
                        zz666Z
                        zz666
                        xiangyuX
                        xiangyu
                        Tiger987T
                        Tiger987
                        WRW
                        WR
                        BoqiangHaoB
                        BoqiangHao
                        yt0503Y
                        yt0503
                        swordsS
                        swords
                        liuxu_smartensL
                        liuxu_smartens
                        monM
                        mon
                        • 登录

                        • 登录或注册以进行搜索。
                        • 第一个帖子
                          最后一个帖子
                        0
                        • 版块
                        • 最新
                        • 标签
                        • 热门