2 Replies Latest reply on May 27, 2020 10:29 PM by CaLi_4592466

    CYBT343026 擦除FLASH 不成功

    CaLi_4592466

      在测试过程中遇到擦除flash 不成功的现象。

      测试步骤如下:
      1.fw_upgrade_erase_mem 擦除 从0x42000 擦除 4K地址
      2.fw_upgrade_write_mem向 0x42000的地址 写入 55 aa 00 00 00 1d 0 1b 14 5 1b 8 21 24 4 0 0 0 14 9d 0 0 0 b 97 0 0 0 13 97 0 0 0 c 96 e9
      3. fw_upgrade_erase_mem 擦除 从0x42000 擦除 4K地址

      4.fw_upgrade_write_mem向 0x42000的地址 写入 55 aa 00 00 00 13 3 11 14 5 1b 8 29 17 2 0 0 0 c 96 0 0 0 14 9a 00 CE

      5.fw_upgrade_read_mem从 0x42000的地址 读取的数据 是55 aa 00 00 00 01d 1b 14 5 1b 8 21 24 4 0 0 0 14 9d 0 0 0 b 97 0 0 0 13 97 0 0 0 c 96 00
      问题是 为什么读取出来的数据是 2步骤写入的数据?

       

       

      擦除的函数fw_upgrade_erase_mem 并没有返回值代表成功或者失败。并且在2,4的步骤中,fw_upgrade_write_mem写入的函数都已经返回了成功写入flash的字数。

      怎么样来判断真正的擦除成功?或者写入成功?另外需要什么特殊注意事项?

      ps: 写入的数据为HEX

       

       

      问题比较紧急!!!麻烦帮忙查看,谢谢!!!

        • 1. Re: CYBT343026 擦除FLASH 不成功
          XinghaoZ_26

          是否可以分享一个可以复现问题的测试工程?

          • 2. Re: CYBT343026 擦除FLASH 不成功
            CaLi_4592466

            这个问题在实际测试过程中遇到的。我现在这边再在复现的测试工程。但是,发现另一个问题。
            测试条件如下:

            设备A 没有 外围IIC RTC 的芯片。

            设备B 有外围的IIC RTC的芯片。

            由于RTC 的问题,没有办法解决,我们现在外围挂载了IIC RTC的IC芯片。

             

            测试flash 用了同样的程序。出现的问题如下:

            wiced_hal_i2c_init(WICED_I2C_SDA_I2S_DOUT_PCM_OUT_SCL_I2S_DIN_PCM_IN); IIC 初始化函数。

            设备A 初始化了 IIC ,会每秒 读取RTC的时间,并且每秒 对FLASH的地址 0x42000 进行写入12345678 并且 读取 。

            1. 我们发现 设备 A ,写入前先擦除了4K,然后调用的写入的接口返回都是有正确值,接口返回的值正常,我们会判断 写入成功。 但是最终我们读取地址0x42000的数据都是FFFFF,读取函数也是返回正常的,并不是我们写入的0x42000

            2. 设备B 是能够正常读取,目前没有遇到问题。

             

            结论:设备IIC的初始化后,如果读取失败,会影响FLASH的读写。重现概率100%。

            为什么IIC的读取会影响到FLASH的读取?

             

            另外FLASH的擦除失败是 设备B上出现的,我现在担心 IIC的读取繁忙时,也会影响到flash的擦除写入?因为我们现在外围有3个IIC 外围设备,有G-Sensor, Pulse-sensor , RTC IC的设备,我们现在有100ms的读取数据的 应用,是否是因为IIC 读取太忙,导致了FLASH擦除的失败?