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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1H系列
  4. 有什么办法能测试FLASH ECC 错误

有什么办法能测试FLASH ECC 错误

已定时 已固定 已锁定 已移动 YTM32B1H系列
19 帖子 4 发布者 443 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • EkkoE 离线
    EkkoE 离线
    Ekko
    写于 最后由 编辑
    #1

    有方法可以制造FLASH ECC 错误吗,使其进入 EFM ECC 中断。

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

      EFM Ecc可以通过注入的方式进行测试,每颗芯片都可以注入,方法略有差异,可以参考SafLib里面的EccTst模块,这个模块是用注入模式测试Ecc功能是否正常。

      EkkoE 1 条回复 最后回复
      0
      • runR 离线
        runR 离线
        run YunTu
        写于 最后由 编辑
        #3

        也可以参考一下SDK的ECC Demo
        image.png
        通过控制缩短擦写时间来制造ECC错误(和真实掉电场景接近,仅用于测试,在真实生产环境中不要随意修改擦写时间!!!)

        EkkoE BJXB 4 条回复 最后回复
        0
        • EkkoE 离线
          EkkoE 离线
          Ekko
          在 回复了 run 最后由 编辑
          #4

          run 还没有更新YCT,之前没看到这个例程,感谢。

          1 条回复 最后回复
          0
          • EkkoE 离线
            EkkoE 离线
            Ekko
            在 回复了 houjun_xiao 最后由 编辑
            #5

            houjun_xiao SafLib 这个是可以在哪看到呢

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

              image.png
              这个Demo就是用注入的方式实现Efm Ecc错误测试。

              EkkoE 1 条回复 最后回复
              0
              • EkkoE 离线
                EkkoE 离线
                Ekko
                在 回复了 houjun_xiao 最后由 编辑
                #7

                houjun_xiao 好的 这个我还需要去申请权限,都会去测试一下,感谢

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

                  如果你用的是YTM32B1HA0, 则需要安装0.9.1版本的MCAL才会支持SAFETY。
                  454c3680-10cc-43e4-9f08-835ad44dcbb9-image.png

                  1 条回复 最后回复
                  0
                  • EkkoE 离线
                    EkkoE 离线
                    Ekko
                    在 回复了 run 最后由 编辑
                    #9

                    run 客户在使用这个例程时,多次注入故障,有时候读取EFM里的错误地址,并不在擦除地址范围之内,这个可能是什么原因造成的(我自己使用demo板多次注入,并没有出现过这个问题)

                    1 条回复 最后回复
                    0
                    • runR 离线
                      runR 离线
                      run YunTu
                      写于 最后由 编辑
                      #10

                      这个有点奇怪,是不是之前就已经存在了ECC 错误了呀。
                      建议chip erase后再重新测试试试。

                      EkkoE 1 条回复 最后回复
                      0
                      • EkkoE 离线
                        EkkoE 离线
                        Ekko
                        在 回复了 run 最后由 编辑
                        #11

                        run 好的 我让客户再试试

                        1 条回复 最后回复
                        0
                        • BJXB 离线
                          BJXB 离线
                          BJX
                          回复了run 最后由 编辑
                          #12

                          run 你好,我参考这个demo,我读取到的错误地址不是我擦除的地址反而是bin固件中的一个地址,但我用j-flash读取该地址的数据,并没有错误,每次下载测试前也进行了全片擦除,中断也都打开了
                          ccb22d92-6e1a-4b50-9e30-663e2de750e5-image.png

                          5552013d-064d-4738-8f1c-a06a57d0701c-image.png

                          5eb328ed-59ba-44fc-a395-17b61427c2ba-image.png

                          d8e8c8d3-e602-4894-8211-8cc2c9f55f56-image.png
                          下面是设置的的测试地址
                          e1931126-6fb7-4434-9c4d-6fbe7f4bdee6-image.png
                          下面是RTT打印的数据
                          bf66b669-0fb1-4ed2-a845-adf66060f0a5-image.png

                          1 条回复 最后回复
                          0
                          • BJXB 离线
                            BJXB 离线
                            BJX
                            回复了run 最后由 编辑
                            #13

                            run
                            还有为什么 demo里不同的错误状态清除方法确是一样的
                            18316423-a89d-4977-b240-b006dfbea4fc-image.png

                            c72fd606-6f62-424f-8c3a-a27a3bc9a5ae-image.png

                            另外我看flash应用笔记说 读取unrecovery error 后,会在 HardFault 退出后,进入 EFM ECC 中断
                            a8530525-0e14-4fef-9063-f3b2f5df6e9c-image.png
                            这样写为什么不进入EFM ECC 中断 哪里不对吗

                            1 条回复 最后回复
                            0
                            • runR 离线
                              runR 离线
                              run YunTu
                              编写于 最后由 编辑
                              #14

                              EFM_RecoveryErrorHandler函数里面确实应该清除RECOVERR标志:
                              EFM->STS = EFM_STS_RECOVERR_MASK | EFM_STS_CI_RECOVERR_MASK;

                              YTM32B1HA0 不会EFM_STS_CI_RECOVERR 和 EFM_STS_CI_UNRECOVERR, 确实不会进入到 EFM_RecoveryErrorHandler 和 EFM_UnrecoveryErrorHandler 中断处理函数中,因此建议在HardFault_Handler 或者 BusFault_Handler中进行处理。

                              BJXB 1 条回复 最后回复
                              0
                              • BJXB 离线
                                BJXB 离线
                                BJX
                                回复了run 最后由 编辑
                                #15

                                run 你好

                                1. UNRECOVERR 和 RECOVERR 这两种错误都是在HardFault_Handler 里面处理对吗,因为我看demo里只写了UNRECOVERR 的处理,想确认一下
                                  2.我测试时 发现 EFM->ECC_ERR_ADDR 记录的错误地址跟我擦除的地址不对,是怎么回事,在12楼里贴的有图
                                1 条回复 最后回复
                                0
                                • runR 离线
                                  runR 离线
                                  run YunTu
                                  编写于 最后由 编辑
                                  #16
                                  1. UNRECOVERR 在HardFault_Handler处理就行,RECOVERR并不会触发HardFault,可以不进行处理。

                                  2. 我这边正常的,你的工程方便简化发上来看一下吗

                                  image.png

                                  BJXB 2 条回复 最后回复
                                  0
                                  • BJXB 离线
                                    BJXB 离线
                                    BJX
                                    回复了run 最后由 编辑
                                    #17

                                    run5c9e980f-76e7-467d-b6e8-547f0362b490-b1ha01_100_pin.zip
                                    好的 用的keil,中断写在bsp_sys里面,rtt交互在task_u0_tx.c里 u0_tx_task_fun 函数

                                    1 条回复 最后回复
                                    0
                                    • BJXB 离线
                                      BJXB 离线
                                      BJX
                                      回复了run 最后由 BJX 编辑
                                      #18

                                      run 你好,你们这个demo, p_instruction_address 是获取PC寄存器吗,获取PC的话 +8 不对吧

                                      4e86b2b5-bfb7-4ede-ab48-947c02c3da01-QQ_1744959469158.png

                                      runR 1 条回复 最后回复
                                      0
                                      • runR 离线
                                        runR 离线
                                        run YunTu
                                        回复了BJX 最后由 run 编辑
                                        #19

                                        BJX
                                        这里进行了压栈,因此是+8的
                                        807de063-0c39-45e3-83d2-1eaa3d0b4424-image.png

                                        确实可能会存在不同编译器导致编译出来和预想不一致的情况。
                                        可以使用下面附件中的做法,这样更好想一点。
                                        flash_ecc_fault.zip


                                        上一个问题:
                                        需要将EFM配置里面全局中断配置为disable,进行关全局中断处理。
                                        因为在进行flash0 erase操作时,访问了pflash0上的代码(systick中断),这样访问读取时误触发了ecc 错误。其实是没有ecc错误的。

                                        8bc34ebe-419c-4bd9-96c5-81f347a2ff11-image.png

                                        1 条回复 最后回复
                                        0

                                      • 云途论坛规则/Yuntu Forum Rules

                                        发帖前请查看

                                      • YCT离线License申请流程

                                        帮助没办法联网的电脑使用YCT

                                      • YT CONFIG TOOL调查问卷

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

                                      • demo
                                        11
                                        can
                                        8
                                        lin stack
                                        5
                                        yt-link
                                        5
                                        vscode
                                        3
                                        adc模块
                                        2
                                        i2c
                                        2
                                        uuid
                                        2
                                        Online Users
                                        • 登录

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