导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    突然发现 D1 / D1s 不支持 GD5F1GQ4UAYIG

    MR Series
    3
    9
    3471
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • tigger
      tigger LV 7 最后由 编辑

      5c3a6063-1605-46c7-a0ce-55d1b63cf2f6-3b79685db2648b9eeb02699429151f7.jpg

      U-Boot 2018.05-g24521d6-dirty (Mar 27 2022 - 11:58:13 +0800) Allwinner Technology
      
      [08.090]DRAM:  64 MiB
      [08.095]Relocation Offset is: 01ee7000
      [08.121]secure enable bit: 0
      [08.127]CPU=720 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
      [08.133]flash init start
      [08.136]workmode = 16,storage type = 0
      try card 2
      set card number 2
      get card number 2
      [08.143][mmc]: mmc driver ver uboot2018:2021-11-19 15:38:00
      [08.153][mmc]: get sdc_type fail and use default host:tm4.
      [08.185][mmc]: Is not Boot mode!
      [08.188][mmc]: SUNXI SDMMC Controller Version:0x50310
      [08.199][mmc]: ************Try SD card 2************
      [08.205][mmc]: mmc 2 cmd timeout 100 status 100
      [08.209][mmc]: smc 2 err, cmd 8,  RTO
      [08.212][mmc]: mmc 2 close bus gating and reset
      [08.217][mmc]: mmc 2 cmd timeout 100 status 100
      [08.221][mmc]: smc 2 err, cmd 55,  RTO
      [08.225][mmc]: mmc 2 close bus gating and reset
      [08.229][mmc]: ************Try MMC card 2************
      [08.238][mmc]: mmc 2 cmd timeout 100 status 100
      [08.242][mmc]: smc 2 err, cmd 1,  RTO
      [08.246][mmc]: mmc 2 close bus gating and reset
      [08.250][mmc]: Card did not respond to voltage select!
      [08.255][mmc]: ************SD/MMC 2 init error!************
      [08.260][mmc]: mmc init product failed
      MMC init failed
      try emmc fail
      [08.277]sunxi-spinand: AW SPINand MTD Layer Version: 1.5 20200407
      [08.282]sunxi-spinand-phy: AW SPINand Phy Layer Version: 1.9 20200306
      [08.347]sunxi-spinand-phy: request spi0 gpio ok
      [08.351]sunxi-spinand-phy: request general tx dma channel ok!
      [08.357]sunxi-spinand-phy: request general rx dma channel ok!
      [08.362]sunxi-spinand-phy: set spic0 clk to 20 Mhz
      [08.367]sunxi-spinand-phy: init spic0 clk ok
      sspi->base_addr = 0x4025000, the SPI control register:
      [VER] 0x4025000 = 0x00010001, [GCR] 0x4025004 = 0x00000083, [TCR] 0x4025008 = 0x00000184
      [ICR] 0x4025010 = 0x00000f00, [ISR] 0x4025014 = 0x00000032, [FCR] 0x4025018 = 0x00200020
      [FSR] 0x402501c = 0x00000000, [WCR] 0x4025020 = 0x00000000, [CCR] 0x4025024 = 0x00000002
      [SDC] 0x4025028 = 0x00002000, [BCR] 0x4025030 = 0x00000000, [TCR] 0x4025034 = 0x00000000
      [BCC] 0x4025038 = 0x00000000, [DMA] 0x4025088 = 0x000000e5
      
      [08.413]sunxi-spinand-phy: not detect any munufacture from id table
      [08.429]sunxi-spinand-phy: get spi-nand Model from fdt fail
      [08.434]sunxi-spinand-phy: get phy info from fdt fail
      [08.439]sunxi-spinand-phy: not detect munufacture from fdt
      [08.444]sunxi-spinand-phy: detect munufacture from id table: GD
      [08.460]sunxi-spinand-phy: get spi-nand Model from fdt fail
      [08.465]sunxi-spinand-phy: get phy info from fdt fail
      [08.470]sunxi-spinand-phy: not detect munufacture from fdt
      [08.475]sunxi-spinand-phy: not match spinand: f1c8f1c8 f1c8f1c8
      try nand fail
      [08.542]unrecognized JEDEC id bytes: ff, c8, f1
      try spinor fail
      initcall sequence 0000000043f90fc8 failed at call 000000004200e88e (err=-1)
      ### ERROR ### Please RESET the board ###
      

      突然发现 D1 / D1s 不支持 GD5F1GQ4UAYIG

      lichee/brandy-2.0/u-boot-2018/drivers/mtd/awnand/spinand/physic/id.c:

      
      
      // SPDX-License-Identifier: GPL-2.0
      
      #define pr_fmt(fmt) "sunxi-spinand-phy: " fmt
      #include <common.h>
      #include <linux/kernel.h>
      #include <linux/errno.h>
      #include <linux/mtd/aw-spinand.h>
      #include <fdt_support.h>
      #include <fdtdec.h>
      
      #include "physic.h"
      
      #define KB (1024)
      #define MB (KB * 1024)
      #define to_kb(size) (size / KB)
      #define to_mb(size) (size / MB)
      
      /* manufacture num */
      #define MICRON_MANUFACTURE      0x2c
      #define GD_MANUFACTURE          0xc8
      #define ATO_MANUFACTURE         0x9b
      #define WINBOND_MANUFACTURE     0xef
      #define MXIC_MANUFACTURE        0xc2
      #define TOSHIBA_MANUFACTURE     0x98
      #define ETRON_MANUFACTURE       0xd5
      #define XTXTECH_MANUFACTURE     0x0b
      #define DSTECH_MANUFACTURE      0xe5
      #define FORESEE_MANUFACTURE     0xcd
      #define ZETTA_MANUFACTURE       0xba
      #define FM_MANUFACTURE          0xa1
      
      #define DEBUG_ON(val) \
              do \
                      if (!val) { \
                              pr_err("%s %d %s crack\n", __FILE__, __LINE__, __func__); \
                              return false; \
                      } \
              while (0)
      
      struct spinand_manufacture m;
      
      struct aw_spinand_phy_info gigadevice[] =
      {
              {
                      .Model          = "GD5F1GQ4UCYIG",
                      .NandID         = {0xc8, 0xb1, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ | SPINAND_ONEDUMMY_AFTER_RANDOMREAD,
                      .MaxEraseTimes  = 50000,
                      .EccType        = BIT3_LIMIT2_TO_6_ERR7,
                      .EccProtectedType = SIZE16_OFF0_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      .Model          = "GD5F1GQ4UBYIG",
                      .NandID         = {0xc8, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccFlag        = HAS_EXT_ECC_SE01,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF4_LEN8_OFF4,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      /* GD5F2GQ4UB9IG did not check yet */
                      .Model          = "GD5F2GQ4UB9IG",
                      .NandID         = {0xc8, 0xd2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 2048,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccFlag        = HAS_EXT_ECC_SE01,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF4_LEN12,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      .Model          = "F50L1G41LB(2M)",
                      .NandID         = {0xc8, 0x01, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ | SPINAND_QUAD_NO_NEED_ENABLE,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag   = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
              {
                      .Model          = "GD5F1GQ5UEYIG",
                      .NandID         = {0xc8, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccFlag        = HAS_EXT_ECC_SE01,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF4_LEN12,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      .Model          = "GD5F2GQ5UEYIGR",
                      .NandID         = {0xc8, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 2048,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccFlag        = HAS_EXT_ECC_SE01,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF4_LEN12,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
      };
      
      struct aw_spinand_phy_info micron[] =
      {
              {
                      .Model          = "MT29F1G01ABAGDWB",
                      .NandID         = {0x2c, 0x14, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ | SPINAND_QUAD_NO_NEED_ENABLE,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT3_LIMIT5_ERR2,
                      .EccProtectedType = SIZE16_OFF32_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      .Model          = "MT29F2G01ABAGDWB",
                      .NandID         = {0x2c, 0x24, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 2048,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ | SPINAND_QUAD_NO_NEED_ENABLE |
                              SPINAND_TWO_PLANE_SELECT,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT3_LIMIT5_ERR2 ,
                      .EccProtectedType = SIZE16_OFF32_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
      };
      
      struct aw_spinand_phy_info xtx[] =
      {
              {
                      /* XTX26G02A */
                      .Model          = "XTX26G02A",
                      .NandID         = {0x0B, 0xE2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 2048,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .ecc_status_shift = ECC_STATUS_SHIFT_2,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF8_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      /* XTX26G01A */
                      .Model          = "XTX26G01A",
                      .NandID         = {0x0B, 0xE1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .ecc_status_shift = ECC_STATUS_SHIFT_2,
                      .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                      .EccProtectedType = SIZE16_OFF8_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      /* XT26G01C */
                      .Model          = "XT26G01C",
                      .NandID         = {0x0B, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .ecc_status_shift = ECC_STATUS_SHIFT_4,
                      .EccType        = BIT4_LIMIT5_TO_8_ERR9_TO_15,
                      .EccProtectedType = SIZE16_OFF0_LEN16,
                      .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
      };
      
      struct aw_spinand_phy_info fm[] = {
              {
                      /* only rw stress test */
                      .Model          = "FM25S01",
                      .NandID         = {0xa1, 0xa1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ | SPINAND_QUAD_NO_NEED_ENABLE,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF0_LEN16,
                      .BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
      };
      
      struct aw_spinand_phy_info etron[] =
      {
      
      };
      
      struct aw_spinand_phy_info toshiba[] =
      {
      
      };
      
      struct aw_spinand_phy_info ato[] =
      {
      
      };
      
      struct aw_spinand_phy_info mxic[] =
      {
              {
                      .Model          = "MX35LF1GE4AB",
                      .NandID         = {0xc2, 0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 65000,
                      .EccFlag        = HAS_EXT_ECC_STATUS,
                      .EccType        = BIT4_LIMIT3_TO_4_ERR15,
                      /**
                       * MX35LF1GE4AB should use SIZE16_OFF4_LEN12, however, in order
                       * to compatibility with versions already sent to customers,
                       * which do not use general physical layout, we used
                       * SIZE16_OFF4_LEN4_OFF8 instead.
                       */
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
              {
                      .Model          = "MX35LF2GE4AD",
                      .NandID         = {0xc2, 0x26, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 2048,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 65000,
                      .EccFlag        = HAS_EXT_ECC_STATUS,
                      .EccType        = BIT4_LIMIT5_TO_8_ERR9_TO_15,
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
      
      };
      
      struct aw_spinand_phy_info winbond[] =
      {
              {
                      .Model          = "W25N01GVZEIG",
                      .NandID         = {0xef, 0xaa, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
      };
      
      struct aw_spinand_phy_info dosilicon[] =
      {
              {
                      .Model          = "DS35X1GAXXX",
                      .NandID         = {0xe5, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 65000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
      };
      
      struct aw_spinand_phy_info foresee[] =
      {
              {
                      .Model          = "FS35ND01G-S1F1QWFI000",
                      .NandID         = {0xcd, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccType        = BIT3_LIMIT3_TO_4_ERR7,
                      .EccProtectedType = SIZE16_OFF0_LEN16,
                      .BadBlockFlag = BAD_BLK_FLAG_FRIST_1_PAGE,
              },
              {
                      .Model          = "FS35ND01G-S1Y2QWFI000",
                      .NandID         = {0xcd, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF0_LEN16,
                      .BadBlockFlag = BAD_BLK_FLAG_FRIST_1_PAGE,
              }
      };
      
      struct aw_spinand_phy_info zetta[] =
      {
              {
                      .Model          = "ZD35Q1GAIB",
                      .NandID         = {0xba, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                      .DieCntPerChip  = 1,
                      .SectCntPerPage = 4,
                      .PageCntPerBlk  = 64,
                      .BlkCntPerDie   = 1024,
                      .OobSizePerPage = 64,
                      .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                              SPINAND_DUAL_READ,
                      .MaxEraseTimes  = 50000,
                      .EccType        = BIT2_LIMIT1_ERR2,
                      .EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
                      .BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
              },
      };
      
      static const char *aw_spinand_info_model(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->Model;
      }
      
      static void aw_spinand_info_nandid(struct aw_spinand_chip *chip, unsigned char *id,
                      int cnt)
      {
              int i;
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              cnt = min(cnt, MAX_ID_LEN);
              for (i = 0; i < cnt; i++)
                      id[i] = pinfo->NandID[i];
      }
      
      static unsigned int aw_spinand_info_sector_size(struct aw_spinand_chip *chip)
      {
              return 1 << SECTOR_SHIFT;
      }
      
      static unsigned int aw_spinand_info_phy_page_size(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->SectCntPerPage * aw_spinand_info_sector_size(chip);
      }
      
      static unsigned int aw_spinand_info_page_size(struct aw_spinand_chip *chip)
      {
      #if SIMULATE_MULTIPLANE
              return aw_spinand_info_phy_page_size(chip) * 2;
      #else
              return aw_spinand_info_phy_page_size(chip);
      #endif
      }
      
      static unsigned int aw_spinand_info_phy_block_size(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->PageCntPerBlk * aw_spinand_info_phy_page_size(chip);
      }
      
      static unsigned int aw_spinand_info_block_size(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->PageCntPerBlk * aw_spinand_info_page_size(chip);
      }
      
      static unsigned int aw_spinand_info_phy_oob_size(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->OobSizePerPage;
      }
      
      static unsigned int aw_spinand_info_oob_size(struct aw_spinand_chip *chip)
      {
      #if SIMULATE_MULTIPLANE
              return aw_spinand_info_phy_oob_size(chip) * 2;
      #else
              return aw_spinand_info_phy_oob_size(chip);
      #endif
      }
      
      static unsigned int aw_spinand_info_die_cnt(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->DieCntPerChip;
      }
      
      static unsigned int aw_spinand_info_total_size(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->DieCntPerChip * pinfo->BlkCntPerDie *
                      aw_spinand_info_phy_block_size(chip);
      }
      
      static int aw_spinand_info_operation_opt(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->OperationOpt;
      }
      
      static int aw_spinand_info_max_erase_times(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo = chip->info->phy_info;
      
              return pinfo->MaxEraseTimes;
      }
      
      struct spinand_manufacture {
              unsigned char id;
              const char *name;
              struct aw_spinand_phy_info *info;
              unsigned int cnt;
      };
      
      #define SPINAND_FACTORY_INFO(_id, _name, _info)                 \
              {                                                       \
                      .id = _id,                                      \
                      .name = _name,                                  \
                      .info = _info,                                  \
                      .cnt = ARRAY_SIZE(_info),                       \
              }
      static struct spinand_manufacture spinand_factory[] = {
              SPINAND_FACTORY_INFO(MICRON_MANUFACTURE, "Micron", micron),
              SPINAND_FACTORY_INFO(GD_MANUFACTURE, "GD", gigadevice),
              SPINAND_FACTORY_INFO(ATO_MANUFACTURE, "ATO", ato),
              SPINAND_FACTORY_INFO(WINBOND_MANUFACTURE, "Winbond", winbond),
              SPINAND_FACTORY_INFO(MXIC_MANUFACTURE, "Mxic", mxic),
              SPINAND_FACTORY_INFO(TOSHIBA_MANUFACTURE, "Toshiba", toshiba),
              SPINAND_FACTORY_INFO(ETRON_MANUFACTURE, "Etron", etron),
              SPINAND_FACTORY_INFO(XTXTECH_MANUFACTURE, "XTX", xtx),
              SPINAND_FACTORY_INFO(DSTECH_MANUFACTURE, "Dosilicon", dosilicon),
              SPINAND_FACTORY_INFO(FORESEE_MANUFACTURE, "Foresee", foresee),
              SPINAND_FACTORY_INFO(ZETTA_MANUFACTURE, "Zetta", zetta),
              SPINAND_FACTORY_INFO(FM_MANUFACTURE, "FM", fm),
      };
      
      
      static int spinand_get_chip_munufacture(struct aw_spinand_chip *chip, const char **m)
      {
              DEBUG_ON(chip->info);
      
              struct aw_spinand_phy_info *info = chip->info->phy_info;
      
              switch (info->NandID[0]) {
              case MICRON_MANUFACTURE:
                      *m = "Micron";
              break;
              case GD_MANUFACTURE:
                      *m = "GD";
              break;
              case ATO_MANUFACTURE:
                      *m = "ATO";
              break;
              case WINBOND_MANUFACTURE:
                      *m = "Winbond";
              break;
              case MXIC_MANUFACTURE:
                      *m = "Mxic";
              break;
              case TOSHIBA_MANUFACTURE:
                      *m = "Toshiba";
              break;
              case ETRON_MANUFACTURE:
                      *m = "Etron";
              break;
              case XTXTECH_MANUFACTURE:
                      *m = "XTX";
              break;
              case DSTECH_MANUFACTURE:
                      *m = "Dosilicon";
              break;
              case FORESEE_MANUFACTURE:
                      *m = "Foresee";
              break;
              case ZETTA_MANUFACTURE:
                      *m = "Zetta";
              break;
              default:
                      *m = NULL;
              break;
              }
      
              if (*m == NULL)
                      return false;
              else
                      return true;
      
      }
      static const char *aw_spinand_info_manufacture(struct aw_spinand_chip *chip)
      {
              int i, j;
              struct spinand_manufacture *m;
              struct aw_spinand_phy_info *pinfo;
              const char *m_name = NULL;
              int ret = 0;
      
              for (i = 0; i < ARRAY_SIZE(spinand_factory); i++) {
                      m = &spinand_factory[i];
                      pinfo = chip->info->phy_info;
                      for (j = 0; j < m->cnt; j++)
                              if (pinfo == &m->info[j])
                                      return m->name;
              }
      
              /*for compatible fdt support spi-nand*/
              ret = spinand_get_chip_munufacture(chip, &m_name);
              if (ret < 0)
                      return NULL;
              else
                      return m_name;
      }
      
      static struct spinand_manufacture *spinand_detect_munufacture(unsigned char id)
      {
              int index;
              struct spinand_manufacture *m;
      
              for (index = 0; index < ARRAY_SIZE(spinand_factory); index++) {
                      m = &spinand_factory[index];
                      if (m->id == id) {
                              pr_info("detect munufacture from id table: %s\n", m->name);
                              return m;
                      }
              }
      
              pr_err("not detect any munufacture from id table\n");
              return NULL;
      }
      
      static struct aw_spinand_phy_info *spinand_match_id(
                      struct spinand_manufacture *m,
                      unsigned char *id)
      {
              int i, j, match_max = 1, match_index = 0;
              struct aw_spinand_phy_info *pinfo;
      
              for (i = 0; i < m->cnt; i++) {
                      int match = 1;
      
                      pinfo = &m->info[i];
                      for (j = 1; j < MAX_ID_LEN; j++) {
                              /* 0xFF matching all ID value */
                              if (pinfo->NandID[j] != id[j] &&
                                              pinfo->NandID[j] != 0xFF)
                                      break;
      
                              if (pinfo->NandID[j] != 0xFF)
                                      match++;
                      }
      
                      if (match > match_max) {
                              match_max = match;
                              match_index = i;
                      }
              }
      
              if (match_max > 1)
                      return &m->info[match_index];
              return NULL;
      }
      
      struct aw_spinand_phy_info *spinand_get_phy_info_from_fdt(struct aw_spinand_chip *chip)
      {
              static struct aw_spinand_phy_info info;
              static int had_get;
              int ret = 0;
              int node_offset = 0;
              char *bad_blk_mark_pos = NULL;
              char *quad_read_not_need_enable = NULL;
              char *read_seq_need_onedummy = NULL;
              char *model = NULL;
              int len = 0;
              u32 rx_bus_width = 0;
              u32 tx_bus_width = 0;
      
              if (had_get == true)
                      return &info;
      
      #define BAD_BLK_MARK_POS1 "first_1_page"
      #define BAD_BLK_MARK_POS2 "first_2_page"
      #define BAD_BLK_MARK_POS3 "last_1_page"
      #define BAD_BLK_MARK_POS4 "last_2_page"
              memset(&info, 0, sizeof(struct aw_spinand_phy_info));
      
              ulong time = 0;
              time = get_timer(0);
      
              node_offset = fdt_path_offset(working_fdt, "spi0/spi-nand");
              if (node_offset < 0) {
                      pr_err("get spi-nand node from fdt failed\n");
                      goto err;
              }
      
              ret = fdt_getprop_string(working_fdt, node_offset, "model", &model);
              if (ret < 0) {
                      pr_err("get spi-nand Model from fdt fail\n");
                      goto err;
              } else {
                      info.Model = model;
              }
      
              u32 id = 0xffffffff;
              ret = fdt_getprop_u32(working_fdt, node_offset, "id-0", &id);
              if (ret < 0) {
                      pr_err("get spi-nand id Low 4 Byte from fdt fail\n");
                      goto err;
              }
              len = sizeof(id);
              memmove(info.NandID, &id, min(MAX_ID_LEN, len));
      
              id = 0xffffffff;
              ret = fdt_getprop_u32(working_fdt, node_offset, "id-1", &id);
              if (ret < 0) {
                      pr_info("can't get spi-nand id high 4 Byte from fdt, may be not need\n");
              }
              memmove(info.NandID + min(MAX_ID_LEN, len), &id, max(MAX_ID_LEN, len) - min(MAX_ID_LEN, len));
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "die_cnt_per_chip", &(info.DieCntPerChip));
              if (ret < 0) {
                      pr_err("get spi-nand DieCntPerChip from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "blk_cnt_per_die", &(info.BlkCntPerDie));
              if (ret < 0) {
                      pr_err("get spi-nand BlkCntPerDie from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "page_cnt_per_blk", &(info.PageCntPerBlk));
              if (ret < 0) {
                      pr_err("get spi-nand PageCntPerBlk from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "sect_cnt_per_page", &(info.SectCntPerPage));
              if (ret < 0) {
                      pr_err("get spi-nand SectCntPerPage from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "oob_size_per_page", &(info.OobSizePerPage));
              if (ret < 0) {
                      pr_err("get spi-nand OobSizePerPage from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_string(working_fdt, node_offset, "bad_block_mark_pos", &bad_blk_mark_pos);
              if (ret < 0 || NULL == bad_blk_mark_pos) {
                      pr_err("get spi-nand BadBlockFlag from fdt fail\n");
                      goto err;
              } else {
                      if (!memcmp(bad_blk_mark_pos, BAD_BLK_MARK_POS1, strlen(BAD_BLK_MARK_POS1)))
                              info.BadBlockFlag = BAD_BLK_FLAG_FRIST_1_PAGE;
                      else if (!memcmp(bad_blk_mark_pos, BAD_BLK_MARK_POS2, strlen(BAD_BLK_MARK_POS2)))
                              info.BadBlockFlag = BAD_BLK_FLAG_FRIST_1_PAGE;
                      else if (!memcmp(bad_blk_mark_pos, BAD_BLK_MARK_POS3, strlen(BAD_BLK_MARK_POS3)))
                              info.BadBlockFlag = BAD_BLK_FLAG_LAST_1_PAGE;
                      else if (!memcmp(bad_blk_mark_pos, BAD_BLK_MARK_POS4, strlen(BAD_BLK_MARK_POS4)))
                              info.BadBlockFlag = BAD_BLK_FLAG_LAST_2_PAGE;
                      else {
                              pr_err("get spi-nand BadBlockFlag pattern is not right\n");
                              goto err;
                      }
              }
      
              ret = fdtdec_get_int(working_fdt, node_offset, "max_erase_times", -1);
              if (ret < 0) {
                      pr_err("get spi-nand MaxEraseTimes from fdt fail\n");
                      goto err;
              } else {
                      info.MaxEraseTimes = ret;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "ecc_type", &(info.EccType));
              if (ret < 0) {
                      pr_err("get spi-nand EccFlag from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "ecc_protected_type", &(info.EccProtectedType));
              if (ret < 0) {
                      pr_err("get spi-nand ecc_protected_type from fdt fail\n");
                      goto err;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "spi-rx-bus-width", &rx_bus_width);
              if (ret < 0) {
                      pr_err("get spi-nand spi-rx-bus-width from fdt fail\n");
                      goto err;
              } else {
                      switch (rx_bus_width) {
                      case SPI_NBITS_DUAL:
                              info.OperationOpt |= SPINAND_DUAL_READ;
                      break;
                      case SPI_NBITS_QUAD:
                              info.OperationOpt |= SPINAND_QUAD_READ;
                      break;
                      default:
                              info.OperationOpt |= 0;
                      break;
                      }
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "spi-tx-bus-width", &tx_bus_width);
              if (ret < 0) {
                      pr_err("get spi-nand spi-tx-bus-width from fdt fail\n");
                      goto err;
              } else {
                      switch (tx_bus_width) {
                      case SPI_NBITS_QUAD:
                              info.OperationOpt |= SPINAND_QUAD_PROGRAM;
                      break;
                      default:
                              info.OperationOpt |= 0;
                      break;
                      }
              }
      
              ret = fdt_getprop_string(working_fdt, node_offset, "read_from_cache_x4_not_need_enable",
                              &quad_read_not_need_enable);
              if (ret < 0 || NULL == quad_read_not_need_enable) {
                      pr_info("can't get spi-nand read_from_cache_x4_need_enable or it is null,"
                                      " maybe not need enable quad read before read from cache x4\n");
              } else {
                      if (!memcmp(quad_read_not_need_enable, "yes", strlen("yes")))
                              info.OperationOpt |= SPINAND_QUAD_NO_NEED_ENABLE;
              }
      
              ret = fdt_getprop_string(working_fdt, node_offset, "read_from_cache_need_onedummy",
                              &read_seq_need_onedummy);
              if (ret < 0 || NULL == read_seq_need_onedummy) {
                      pr_info("can't get spi-nand read_from_cache_need_onedummy or it is null,"
                                      " maybe read from cache sequence not need one dummy in second Byte\n");
              } else {
                      if (!memcmp(read_seq_need_onedummy, "yes", strlen("yes")))
                              info.OperationOpt |= SPINAND_ONEDUMMY_AFTER_RANDOMREAD;
              }
      
      
              ret = fdtdec_get_int(working_fdt, node_offset, "ecc_flag", -1);
              if (ret < 0) {
                      pr_err("can't get spi-nand EccFlag from fdt,"
                                      " maybe(default) use 0FH + C0H to get feature,wich obtain ecc status\n");
              } else {
                      info.EccFlag = ret;
              }
      
              ret = fdt_getprop_u32(working_fdt, node_offset, "ecc_status_shift", &(info.ecc_status_shift));
              if (ret < 0) {
                      pr_info("can't get spi-nand ecc_status_shift from fdt,"
                                      " use default ecc_status_shift_4 to get ecc status in C0H\n");
              }
              pr_info("%s consume time:%lu\n", __func__, get_timer(time));
      
              pr_debug("get spinand phy info from fdt\n");
              pr_debug("Model:%s\n", info.Model);
              pr_debug("ID:%02x %02x %02x %02x %02x %02x %02x %02x\n",
                              info.NandID[0], info.NandID[1], info.NandID[2], info.NandID[3],
                              info.NandID[4], info.NandID[5], info.NandID[6], info.NandID[7]);
              pr_debug("DieCntPerChip:%d\n", info.DieCntPerChip);
              pr_debug("BlkCntPerDie:%d\n", info.BlkCntPerDie);
              pr_debug("PageCntPerBlk:%d\n", info.PageCntPerBlk);
              pr_debug("SectCntPerPage:%d\n", info.SectCntPerPage);
              pr_debug("OobSizePerPage:%d\n", info.OobSizePerPage);
              pr_debug("BadBlockFlag:%d\n", info.BadBlockFlag);
              pr_debug("OperationOpt:0x%x\n", info.OperationOpt);
              pr_debug("MaxEraseTimes:%d\n", info.MaxEraseTimes);
              pr_debug("EccFlag:%x\n", info.EccFlag);
              pr_debug("ecc_status_shift:%x\n", info.ecc_status_shift);
              pr_debug("EccType:%x\n", info.EccType);
              pr_debug("EccProtectedType:%x\n", info.EccProtectedType);
      
              had_get = true;
      
              return &info;
      err:
              had_get = false;
              return NULL;
      }
      
      static struct aw_spinand_info aw_spinand_info = {
              .model = aw_spinand_info_model,
              .manufacture = aw_spinand_info_manufacture,
              .nandid = aw_spinand_info_nandid,
              .die_cnt = aw_spinand_info_die_cnt,
              .oob_size = aw_spinand_info_oob_size,
              .sector_size = aw_spinand_info_sector_size,
              .page_size = aw_spinand_info_page_size,
              .block_size = aw_spinand_info_block_size,
              .phy_oob_size = aw_spinand_info_phy_oob_size,
              .phy_page_size = aw_spinand_info_phy_page_size,
              .phy_block_size = aw_spinand_info_phy_block_size,
              .total_size = aw_spinand_info_total_size,
              .operation_opt = aw_spinand_info_operation_opt,
              .max_erase_times = aw_spinand_info_max_erase_times,
      };
      
      static struct spinand_manufacture *spinand_detect_munufacture_from_fdt(struct aw_spinand_chip *chip, unsigned char id)
      {
              struct aw_spinand_phy_info *info = NULL;
              struct spinand_manufacture *pm = &m;
              int ret = 0;
      
              info = spinand_get_phy_info_from_fdt(chip);
              if (info == NULL) {
                      pr_err("get phy info from fdt fail\n");
                      goto err;
              }
      
              if (id == info->NandID[0]) {
                      pm->id = info->NandID[0];
                      pm->info = info;
                      chip->info = &aw_spinand_info;
                      chip->info->phy_info = info;
                      ret = spinand_get_chip_munufacture(chip, &(pm->name));
                      if (ret < 0)
                              goto err;
                      else
                              pr_info("detect munufacture from fdt: %s \n", pm->name);
              } else {
                      goto err;
              }
      
              return pm;
      err:
              pr_info("not detect munufacture from fdt\n");
              return NULL;
      }
      
      static struct aw_spinand_phy_info *spinand_match_id_from_fdt(struct aw_spinand_chip *chip,
                      struct spinand_manufacture *m,
                      unsigned char *id)
      {
              struct aw_spinand_phy_info *info = NULL;
              int i = 0;
      
              info = spinand_get_phy_info_from_fdt(chip);
              if (info == NULL) {
                      pr_err("get phy info from fdt fail\n");
                      goto err;
              }
      
              for (i = 0; i < MAX_ID_LEN; i++) {
                      /*0xff match all id value*/
                      if (id[i] != info->NandID[i] && info->NandID[i] != 0xff)
                              goto err;
              }
      
              return info;
      
      err:
              return NULL;
      }
      
      
      static int aw_spinand_info_init(struct aw_spinand_chip *chip,
                      struct aw_spinand_phy_info *pinfo)
      {
              chip->info = &aw_spinand_info;
              chip->info->phy_info = pinfo;
      
              pr_info("========== arch info ==========\n");
              pr_info("Model:               %s\n", pinfo->Model);
              pr_info("Munufacture:         %s\n", aw_spinand_info_manufacture(chip));
              pr_info("DieCntPerChip:       %u\n", pinfo->DieCntPerChip);
              pr_info("BlkCntPerDie:        %u\n", pinfo->BlkCntPerDie);
              pr_info("PageCntPerBlk:       %u\n", pinfo->PageCntPerBlk);
              pr_info("SectCntPerPage:      %u\n", pinfo->SectCntPerPage);
              pr_info("OobSizePerPage:      %u\n", pinfo->OobSizePerPage);
              pr_info("BadBlockFlag:        0x%x\n", pinfo->BadBlockFlag);
              pr_info("OperationOpt:        0x%x\n", pinfo->OperationOpt);
              pr_info("MaxEraseTimes:       %d\n", pinfo->MaxEraseTimes);
              pr_info("EccFlag:             0x%x\n", pinfo->EccFlag);
              pr_info("EccType:             %d\n", pinfo->EccType);
              pr_info("EccProtectedType:    %d\n", pinfo->EccProtectedType);
              pr_info("========================================\n");
              pr_info("\n");
              pr_info("========== physical info ==========\n");
              pr_info("TotalSize:    %u M\n", to_mb(aw_spinand_info_total_size(chip)));
              pr_info("SectorSize:   %u B\n", aw_spinand_info_sector_size(chip));
              pr_info("PageSize:     %u K\n", to_kb(aw_spinand_info_phy_page_size(chip)));
              pr_info("BlockSize:    %u K\n", to_kb(aw_spinand_info_phy_block_size(chip)));
              pr_info("OOBSize:      %u B\n", aw_spinand_info_phy_oob_size(chip));
              pr_info("========================================\n");
              pr_info("\n");
              pr_info("========== logical info ==========\n");
              pr_info("TotalSize:    %u M\n", to_mb(aw_spinand_info_total_size(chip)));
              pr_info("SectorSize:   %u B\n", aw_spinand_info_sector_size(chip));
              pr_info("PageSize:     %u K\n", to_kb(aw_spinand_info_page_size(chip)));
              pr_info("BlockSize:    %u K\n", to_kb(aw_spinand_info_block_size(chip)));
              pr_info("OOBSize:      %u B\n", aw_spinand_info_oob_size(chip));
              pr_info("========================================\n");
      
              return 0;
      }
      
      int aw_spinand_chip_detect(struct aw_spinand_chip *chip)
      {
              struct aw_spinand_phy_info *pinfo;
              struct spinand_manufacture *m;
              unsigned char id[MAX_ID_LEN] = {0xFF};
              struct aw_spinand_chip_ops *ops = chip->ops;
              int ret, dummy = 0;
      
      retry:
              ret = ops->read_id(chip, id, MAX_ID_LEN, dummy);
              if (ret) {
                      pr_err("read id failed : %d\n", ret);
                      return ret;
              }
      
              m = spinand_detect_munufacture(id[0]);
              if (!m)
                      goto detect_from_fdt;
      
              pinfo = spinand_match_id(m, id);
              if (pinfo)
                      goto detect;
      
      detect_from_fdt:
                      m = spinand_detect_munufacture_from_fdt(chip, id[0]);
                      if (!m)
                              goto not_detect;
      
                      pinfo = spinand_match_id_from_fdt(chip, m, id);
                      if (pinfo)
                              goto detect;
      
      not_detect:
              /* retry with dummy */
              if (!dummy) {
                      dummy++;
                      goto retry;
              }
              pr_info("not match spinand: %x %x\n",
                              *(__u32 *)id,
                              *((__u32 *)id + 1));
              return -ENODEV;
      detect:
              pr_info("detect spinand id: %x %x\n",
                              *((__u32 *)pinfo->NandID),
                              *((__u32 *)pinfo->NandID + 1));
              return aw_spinand_info_init(chip, pinfo);
      }
      
      1 条回复 最后回复 回复 引用 分享 0
      • tigger
        tigger LV 7 最后由 编辑

        在 lichee/brandy-2.0/u-boot-2018/drivers/mtd/awnand/spinand/physic/id.c 添加了 GD5F1GQ4UAYIG 配置:

        struct aw_spinand_phy_info gigadevice[] =
        {
                {
                        .Model          = "GD5F1GQ4UAYIG",
                        .NandID         = {0xc8, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
                        .DieCntPerChip  = 1,
                        .SectCntPerPage = 4,
                        .PageCntPerBlk  = 64,
                        .BlkCntPerDie   = 1024,
                        .OobSizePerPage = 64,
                        .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                                SPINAND_DUAL_READ,
                        .MaxEraseTimes  = 50000,
                        .EccFlag        = HAS_EXT_ECC_SE01,
                        .EccType        = BIT4_LIMIT5_TO_7_ERR8_LIMIT_12,
                        .EccProtectedType = SIZE16_OFF4_LEN8_OFF4,
                        .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
                },
                {
                        .Model          = "GD5F1GQ4UCYIG",
                        .NandID         = {0xc8, 0xb1, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff},
                        .DieCntPerChip  = 1,
                        .SectCntPerPage = 4,
                        .PageCntPerBlk  = 64,
                        .BlkCntPerDie   = 1024,
                        .OobSizePerPage = 64,
                        .OperationOpt   = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM |
                                SPINAND_DUAL_READ | SPINAND_ONEDUMMY_AFTER_RANDOMREAD,
                        .MaxEraseTimes  = 50000,
                        .EccType        = BIT3_LIMIT2_TO_6_ERR7,
                        .EccProtectedType = SIZE16_OFF0_LEN16,
                        .BadBlockFlag   = BAD_BLK_FLAG_FRIST_1_PAGE,
                },
        

        发现并没有用:

        [5342]fes begin commit:88480af
        [5344]set pll start
        [5346]fix vccio detect value:0xc0
        [5350]periph0 has been enabled
        [5353]set pll end
        [5354][pmu]: bus read error
        [5357]board init ok
        [5359]beign to init dram
        [5361]ZQ value = 0x32
        [5363]get_pmu_exist() = -1
        [5366]ddr_efuse_type: 0xa
        [5368]trefi:7.8ms
        [5370][AUTO DEBUG] single rank and full DQ!
        [5374]ddr_efuse_type: 0xa
        [5376]trefi:7.8ms
        [5379][AUTO DEBUG] rank 0 row = 13
        [5382][AUTO DEBUG] rank 0 bank = 4
        [5385][AUTO DEBUG] rank 0 page size = 2 KB
        [5389]DRAM BOOT DRIVE INFO: V0.33
        [5392]DRAM CLK = 528 MHz
        [5394]DRAM Type = 2 (2:DDR2,3:DDR3)
        [5398]DRAMC read ODT  off.
        [5400]DRAM ODT off.
        [5402]ddr_efuse_type: 0xa
        [5405]DRAM SIZE =64 M
        [5407]dram_tpr4:0x0
        [5409]PLL_DDR_CTRL_REG:0xf8002b00
        [5412]DRAM_CLK_REG:0xc0000000
        [5415][TIMING DEBUG] MR2= 0x0
        [5419]DRAM simple test OK.
        [5422]init dram ok
        
        
        U-Boot 2018.05-g24521d6-dirty (Mar 27 2022 - 14:01:37 +0800) Allwinner Technology
        
        [13.663]DRAM:  64 MiB
        [13.668]Relocation Offset is: 01ee7000
        [13.693]secure enable bit: 0
        [13.700]CPU=720 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
        [13.706]flash init start
        [13.708]workmode = 16,storage type = 0
        try card 2
        set card number 2
        get card number 2
        [13.716][mmc]: mmc driver ver uboot2018:2021-11-19 15:38:00
        [13.726][mmc]: get sdc_type fail and use default host:tm4.
        [13.758][mmc]: Is not Boot mode!
        [13.761][mmc]: SUNXI SDMMC Controller Version:0x50310
        [13.772][mmc]: ************Try SD card 2************
        [13.778][mmc]: mmc 2 cmd timeout 100 status 100
        [13.782][mmc]: smc 2 err, cmd 8,  RTO
        [13.785][mmc]: mmc 2 close bus gating and reset
        [13.790][mmc]: mmc 2 cmd timeout 100 status 100
        [13.794][mmc]: smc 2 err, cmd 55,  RTO
        [13.798][mmc]: mmc 2 close bus gating and reset
        [13.802][mmc]: ************Try MMC card 2************
        [13.811][mmc]: mmc 2 cmd timeout 100 status 100
        [13.815][mmc]: smc 2 err, cmd 1,  RTO
        [13.819][mmc]: mmc 2 close bus gating and reset
        [13.823][mmc]: Card did not respond to voltage select!
        [13.828][mmc]: ************SD/MMC 2 init error!************
        [13.833][mmc]: mmc init product failed
        MMC init failed
        try emmc fail
        [13.850]sunxi-spinand: AW SPINand MTD Layer Version: 1.5 20200407
        [13.855]sunxi-spinand-phy: AW SPINand Phy Layer Version: 1.9 20200306
        [13.920]sunxi-spinand-phy: request spi0 gpio ok
        [13.924]sunxi-spinand-phy: request general tx dma channel ok!
        [13.930]sunxi-spinand-phy: request general rx dma channel ok!
        [13.935]sunxi-spinand-phy: set spic0 clk to 20 Mhz
        [13.940]sunxi-spinand-phy: init spic0 clk ok
        sspi->base_addr = 0x4025000, the SPI control register:
        [VER] 0x4025000 = 0x00010001, [GCR] 0x4025004 = 0x00000083, [TCR] 0x4025008 = 0x00000184
        [ICR] 0x4025010 = 0x00000f00, [ISR] 0x4025014 = 0x00000032, [FCR] 0x4025018 = 0x00200020
        [FSR] 0x402501c = 0x00000000, [WCR] 0x4025020 = 0x00000000, [CCR] 0x4025024 = 0x00000002
        [SDC] 0x4025028 = 0x00002000, [BCR] 0x4025030 = 0x00000000, [TCR] 0x4025034 = 0x00000000
        [BCC] 0x4025038 = 0x00000000, [DMA] 0x4025088 = 0x000000e5
        
        [13.986]sunxi-spinand-phy: not detect any munufacture from id table
        [14.002]sunxi-spinand-phy: get spi-nand Model from fdt fail
        [14.007]sunxi-spinand-phy: get phy info from fdt fail
        [14.012]sunxi-spinand-phy: not detect munufacture from fdt
        [14.017]sunxi-spinand-phy: detect munufacture from id table: GD
        [14.023]sunxi-spinand-phy: detect spinand id: fffff1c8 ffffffff
        [14.028]sunxi-spinand-phy: ========== arch info ==========
        [14.033]sunxi-spinand-phy: Model:               GD5F1GQ4UAYIG
        [14.039]sunxi-spinand-phy: Munufacture:         GD
        [14.043]sunxi-spinand-phy: DieCntPerChip:       1
        [14.048]sunxi-spinand-phy: BlkCntPerDie:        1024
        [14.053]sunxi-spinand-phy: PageCntPerBlk:       64
        [14.057]sunxi-spinand-phy: SectCntPerPage:      4
        [14.061]sunxi-spinand-phy: OobSizePerPage:      64
        [14.066]sunxi-spinand-phy: BadBlockFlag:        0x0
        [14.071]sunxi-spinand-phy: OperationOpt:        0x7
        [14.075]sunxi-spinand-phy: MaxEraseTimes:       50000
        [14.080]sunxi-spinand-phy: EccFlag:             0x1
        [14.084]sunxi-spinand-phy: EccType:             7
        [14.089]sunxi-spinand-phy: EccProtectedType:    4
        [14.093]sunxi-spinand-phy: ========================================
        [14.099]sunxi-spinand-phy:
        [14.102]sunxi-spinand-phy: ========== physical info ==========
        [14.107]sunxi-spinand-phy: TotalSize:    128 M
        [14.112]sunxi-spinand-phy: SectorSize:   512 B
        [14.116]sunxi-spinand-phy: PageSize:     2 K
        [14.120]sunxi-spinand-phy: BlockSize:    128 K
        [14.124]sunxi-spinand-phy: OOBSize:      64 B
        [14.128]sunxi-spinand-phy: ========================================
        [14.134]sunxi-spinand-phy:
        [14.136]sunxi-spinand-phy: ========== logical info ==========
        [14.142]sunxi-spinand-phy: TotalSize:    128 M
        [14.146]sunxi-spinand-phy: SectorSize:   512 B
        [14.150]sunxi-spinand-phy: PageSize:     4 K
        [14.154]sunxi-spinand-phy: BlockSize:    256 K
        [14.158]sunxi-spinand-phy: OOBSize:      128 B
        [14.162]sunxi-spinand-phy: ========================================
        [14.179]sunxi-spinand-phy: set spic0 clk to 100 Mhz
        [14.183]sunxi-spinand-phy: block lock register: 0x80
        [14.188]sunxi-spinand-phy: feature register: 0x08
        [14.193]sunxi-spinand-phy: sunxi physic nand init end
        [14.203]Loading Environment from SUNXI_FLASH... OK
        [14.217]try to burn key
        [14.220]out of usb burn from boot: not need burn key
        [14.225]Net:   [14.226]No ethernet found.
        Hit any key to stop autoboot:  0
        sunxi work mode=0x10
        run usb efex
        delay time 2500
        weak:otg_phy_config
        usb init ok
        set address 0x18
        set address 0x18 ok
        SUNXI_EFEX_ERASE_TAG
        erase_flag = 0x12
        origin_erase_flag = 0x1
        FEX_CMD_fes_verify_status
        FEX_CMD_fes_verify last err=0
        the 0 mbr table is ok
        the 1 mbr table is ok
        the 2 mbr table is ok
        the 3 mbr table is ok
        *************MBR DUMP***************
        total mbr part 8
        
        part[0] name      :boot-resource
        part[0] classname :DISK
        part[0] addrlo    :0x8000
        part[0] lenlo     :0x1f8
        part[0] user_type :32768
        part[0] keydata   :0
        part[0] ro        :0
        
        part[1] name      :env
        part[1] classname :DISK
        part[1] addrlo    :0x81f8
        part[1] lenlo     :0x1f8
        part[1] user_type :32768
        part[1] keydata   :0
        part[1] ro        :0
        
        part[2] name      :env-redund
        part[2] classname :DISK
        part[2] addrlo    :0x83f0
        part[2] lenlo     :0x1f8
        part[2] user_type :32768
        part[2] keydata   :0
        part[2] ro        :0
        
        part[3] name      :boot
        part[3] classname :DISK
        part[3] addrlo    :0x85e8
        part[3] lenlo     :0x5000
        part[3] user_type :32768
        part[3] keydata   :0
        part[3] ro        :0
        
        part[4] name      :rootfs
        part[4] classname :DISK
        part[4] addrlo    :0xd5e8
        part[4] lenlo     :0xbe00
        part[4] user_type :32768
        part[4] keydata   :0
        part[4] ro        :0
        
        part[5] name      :recovery
        part[5] classname :DISK
        part[5] addrlo    :0x193e8
        part[5] lenlo     :0x5780
        part[5] user_type :32768
        part[5] keydata   :0
        part[5] ro        :0
        
        part[6] name      :rootfs_data
        part[6] classname :DISK
        part[6] addrlo    :0x1eb68
        part[6] lenlo     :0x2800
        part[6] user_type :32768
        part[6] keydata   :0
        part[6] ro        :0
        
        part[7] name      :UDISK
        part[7] classname :DISK
        part[7] addrlo    :0x21368
        part[7] lenlo     :0x0
        part[7] user_type :0
        part[7] keydata   :0
        part[7] ro        :0
        
        common1(partition3) need it, here is a weak func
        total part: 9
        mbr 0, 8000, 8000
        boot-resource 1, 1f8, 8000
        env 2, 1f8, 8000
        env-redund 3, 1f8, 8000
        boot 4, 5000, 8000
        rootfs 5, be00, 8000
        recovery 6, 5780, 8000
        rootfs_data 7, 2800, 8000
        UDISK 8, 0, 0
        [20.527]erase blk 0 to blk 32
        [20.530]blk 0 is bad, skip to erase
        [20.533]blk 1 is bad, skip to erase
        [20.536]blk 2 is bad, skip to erase
        [20.540]blk 3 is bad, skip to erase
        [20.543]blk 4 is bad, skip to erase
        [20.546]blk 5 is bad, skip to erase
        [20.549]blk 6 is bad, skip to erase
        [20.552]blk 7 is bad, skip to erase
        [20.556]blk 8 is bad, skip to erase
        [20.559]blk 9 is bad, skip to erase
        [20.562]blk 10 is bad, skip to erase
        [20.565]blk 11 is bad, skip to erase
        [20.569]blk 12 is bad, skip to erase
        [20.572]blk 13 is bad, skip to erase
        [20.575]blk 14 is bad, skip to erase
        [20.579]blk 15 is bad, skip to erase
        [20.582]blk 16 is bad, skip to erase
        [20.585]blk 17 is bad, skip to erase
        [20.588]blk 18 is bad, skip to erase
        [20.592]blk 19 is bad, skip to erase
        [20.595]blk 20 is bad, skip to erase
        [20.598]blk 21 is bad, skip to erase
        [20.602]blk 22 is bad, skip to erase
        [20.605]blk 23 is bad, skip to erase
        [20.608]blk 24 is bad, skip to erase
        [20.611]blk 25 is bad, skip to erase
        [20.615]blk 26 is bad, skip to erase
        [20.618]blk 27 is bad, skip to erase
        [20.621]blk 28 is bad, skip to erase
        [20.625]blk 29 is bad, skip to erase
        [20.628]blk 30 is bad, skip to erase
        [20.631]blk 31 is bad, skip to erase
        need erase flash: 18
        [20.638]mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
        
        device nand0 <nand>, # parts = 4
         #: name                size            offset          mask_flags
         0: boot0               0x00100000      0x00000000      1
         1: uboot               0x00300000      0x00100000      1
         2: secure_storage      0x00100000      0x00400000      1
         3: sys                 0x07b00000      0x00500000      0
        
        active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
        
        defaults:
        mtdids  : nand0=nand
        mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
        [20.698]MTD info (4)
        [20.700]pagesize: 0x1000
        [20.702]blksize: 0x40000
        [20.704]num  offset     bytes      name
        [20.708]0    0x00000000 0x00100000 boot0
        [20.712]1    0x00100000 0x00300000 uboot
        [20.715]2    0x00400000 0x00100000 secure_storage
        [20.720]3    0x00500000 0x07b00000 sys
        [20.723]ubi attach the last part of mtd device: NO.3
        [20.787]ubi0: attaching mtd4
        [20.802]ubi0 warning: scan_peb: bad ec header at pnum 491, drop this block
        
        [20.809]ubi0: scanning is finished
        [20.812]ubi0: empty MTD device detected
        [20.819]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [20.826]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [20.838]sunxi-spinand: [SPINAND]: write single page failed: block 511, page 2, ret -5
        [20.846]ubi0 error: ubi_io_write: error -5 while writing 24576 bytes to PEB 491:4096, written 4096 bytes
        [20.857]ubi0: dumping 24576 bytes of data from PEB 491, offset 4096
        [20.865]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [20.871]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [20.879]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [20.886]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [20.894]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [20.901]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [20.909]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [20.916]ubi0 error: do_sync_erase: cannot erase PEB 491, error -5
        [20.922]ubi0 error: ubi_early_get_peb: no free eraseblocks
        [20.927]ubi0 error: ubi_attach_mtd_dev: failed to attach mtd4, error -28
        [20.934]UBI error: cannot attach mtd4
        [20.937]UBI error: cannot initialize UBI, error -28
        UBI init error 28
        Please check, if the correct MTD partition is used (size big enough?)
        [20.949]ubi part sys err !
        [20.952]erase blk 0 to blk 32
        [20.955]blk 0 is bad, skip to erase
        [20.958]blk 1 is bad, skip to erase
        [20.961]blk 2 is bad, skip to erase
        [20.964]blk 3 is bad, skip to erase
        [20.967]blk 4 is bad, skip to erase
        [20.971]blk 5 is bad, skip to erase
        [20.974]blk 6 is bad, skip to erase
        [20.977]blk 7 is bad, skip to erase
        [20.980]blk 8 is bad, skip to erase
        [20.983]blk 9 is bad, skip to erase
        [20.987]blk 10 is bad, skip to erase
        [20.990]blk 11 is bad, skip to erase
        [20.993]blk 12 is bad, skip to erase
        [20.997]blk 13 is bad, skip to erase
        [21.000]blk 14 is bad, skip to erase
        [21.003]blk 15 is bad, skip to erase
        [21.006]blk 16 is bad, skip to erase
        [21.010]blk 17 is bad, skip to erase
        [21.013]blk 18 is bad, skip to erase
        [21.016]blk 19 is bad, skip to erase
        [21.020]blk 20 is bad, skip to erase
        [21.023]blk 21 is bad, skip to erase
        [21.026]blk 22 is bad, skip to erase
        [21.029]blk 23 is bad, skip to erase
        [21.033]blk 24 is bad, skip to erase
        [21.036]blk 25 is bad, skip to erase
        [21.039]blk 26 is bad, skip to erase
        [21.043]blk 27 is bad, skip to erase
        [21.046]blk 28 is bad, skip to erase
        [21.049]blk 29 is bad, skip to erase
        [21.053]blk 30 is bad, skip to erase
        [21.056]blk 31 is bad, skip to erase
        [21.059]erase blk 40 to blk 1024
        [21.062]blk 40 is bad, skip to erase
        [21.065]blk 41 is bad, skip to erase
        [21.070]erase blk 42 failed with -5 back
        [21.075]sunxi-spinand-phy: erase phy blk 42 failed with -5 back
        [21.082]blk 43 is bad, skip to erase
        [21.085]blk 44 is bad, skip to erase
        [21.089]blk 45 is bad, skip to erase
        [21.093]blk 47 is bad, skip to erase
        [21.098]blk 49 is bad, skip to erase
        [21.101]blk 50 is bad, skip to erase
        [21.104]blk 51 is bad, skip to erase
        [21.107]blk 52 is bad, skip to erase
        [21.111]blk 53 is bad, skip to erase
        [21.115]blk 55 is bad, skip to erase
        [21.120]blk 57 is bad, skip to erase
        [21.124]blk 59 is bad, skip to erase
        [21.129]blk 61 is bad, skip to erase
        [21.134]blk 63 is bad, skip to erase
        [21.137]blk 64 is bad, skip to erase
        [21.140]blk 65 is bad, skip to erase
        [21.145]blk 67 is bad, skip to erase
        [21.149]blk 69 is bad, skip to erase
        [21.152]blk 70 is bad, skip to erase
        [21.156]blk 71 is bad, skip to erase
        [21.160]blk 73 is bad, skip to erase
        [21.165]blk 75 is bad, skip to erase
        [21.168]blk 76 is bad, skip to erase
        [21.171]blk 77 is bad, skip to erase
        [21.176]blk 79 is bad, skip to erase
        [21.179]blk 80 is bad, skip to erase
        [21.182]blk 81 is bad, skip to erase
        [21.187]blk 83 is bad, skip to erase
        [21.190]blk 84 is bad, skip to erase
        [21.194]blk 85 is bad, skip to erase
        [21.198]blk 87 is bad, skip to erase
        [21.201]blk 88 is bad, skip to erase
        [21.205]blk 89 is bad, skip to erase
        [21.209]blk 91 is bad, skip to erase
        [21.214]blk 93 is bad, skip to erase
        [21.217]blk 94 is bad, skip to erase
        [21.220]blk 95 is bad, skip to erase
        [21.225]blk 97 is bad, skip to erase
        [21.229]blk 99 is bad, skip to erase
        [21.234]blk 101 is bad, skip to erase
        [21.238]blk 103 is bad, skip to erase
        [21.243]blk 105 is bad, skip to erase
        [21.248]blk 107 is bad, skip to erase
        [21.252]blk 109 is bad, skip to erase
        [21.257]blk 111 is bad, skip to erase
        [21.262]blk 113 is bad, skip to erase
        [21.266]blk 115 is bad, skip to erase
        [21.269]blk 116 is bad, skip to erase
        [21.273]blk 117 is bad, skip to erase
        [21.278]blk 119 is bad, skip to erase
        [21.281]blk 120 is bad, skip to erase
        [21.284]blk 121 is bad, skip to erase
        [21.289]blk 123 is bad, skip to erase
        [21.292]blk 124 is bad, skip to erase
        [21.296]blk 125 is bad, skip to erase
        [21.300]blk 127 is bad, skip to erase
        [21.304]blk 128 is bad, skip to erase
        [21.307]blk 129 is bad, skip to erase
        [21.312]blk 131 is bad, skip to erase
        [21.316]blk 133 is bad, skip to erase
        [21.319]blk 134 is bad, skip to erase
        [21.323]blk 135 is bad, skip to erase
        [21.328]blk 137 is bad, skip to erase
        [21.331]blk 138 is bad, skip to erase
        [21.334]blk 139 is bad, skip to erase
        [21.339]blk 141 is bad, skip to erase
        [21.342]blk 142 is bad, skip to erase
        [21.346]blk 143 is bad, skip to erase
        [21.350]blk 145 is bad, skip to erase
        [21.355]blk 147 is bad, skip to erase
        [21.360]blk 149 is bad, skip to erase
        [21.364]blk 151 is bad, skip to erase
        [21.369]blk 153 is bad, skip to erase
        [21.372]blk 154 is bad, skip to erase
        [21.375]blk 155 is bad, skip to erase
        [21.380]blk 157 is bad, skip to erase
        [21.385]blk 159 is bad, skip to erase
        [21.389]blk 161 is bad, skip to erase
        [21.393]blk 162 is bad, skip to erase
        [21.396]blk 163 is bad, skip to erase
        [21.401]blk 165 is bad, skip to erase
        [21.405]blk 167 is bad, skip to erase
        [21.409]blk 168 is bad, skip to erase
        [21.412]blk 169 is bad, skip to erase
        [21.415]blk 170 is bad, skip to erase
        [21.419]blk 171 is bad, skip to erase
        [21.423]blk 173 is bad, skip to erase
        [21.428]blk 175 is bad, skip to erase
        [21.431]blk 176 is bad, skip to erase
        [21.435]blk 177 is bad, skip to erase
        [21.439]blk 179 is bad, skip to erase
        [21.444]blk 181 is bad, skip to erase
        [21.449]blk 183 is bad, skip to erase
        [21.453]blk 185 is bad, skip to erase
        [21.457]blk 186 is bad, skip to erase
        [21.460]blk 187 is bad, skip to erase
        [21.465]blk 189 is bad, skip to erase
        [21.469]blk 191 is bad, skip to erase
        [21.474]blk 193 is bad, skip to erase
        [21.479]blk 195 is bad, skip to erase
        [21.483]blk 197 is bad, skip to erase
        [21.488]blk 199 is bad, skip to erase
        [21.492]blk 201 is bad, skip to erase
        [21.497]blk 203 is bad, skip to erase
        [21.502]blk 205 is bad, skip to erase
        [21.506]blk 207 is bad, skip to erase
        [21.511]blk 209 is bad, skip to erase
        [21.514]blk 210 is bad, skip to erase
        [21.517]blk 211 is bad, skip to erase
        [21.522]blk 213 is bad, skip to erase
        [21.527]blk 215 is bad, skip to erase
        [21.531]blk 217 is bad, skip to erase
        [21.536]blk 219 is bad, skip to erase
        [21.541]blk 221 is bad, skip to erase
        [21.545]blk 223 is bad, skip to erase
        [21.550]blk 225 is bad, skip to erase
        [21.554]blk 227 is bad, skip to erase
        [21.559]blk 229 is bad, skip to erase
        [21.564]blk 231 is bad, skip to erase
        [21.568]blk 233 is bad, skip to erase
        [21.572]blk 234 is bad, skip to erase
        [21.575]blk 235 is bad, skip to erase
        [21.580]blk 237 is bad, skip to erase
        [21.584]blk 239 is bad, skip to erase
        [21.589]blk 241 is bad, skip to erase
        [21.593]blk 243 is bad, skip to erase
        [21.598]blk 245 is bad, skip to erase
        [21.603]blk 247 is bad, skip to erase
        [21.607]blk 249 is bad, skip to erase
        [21.612]blk 251 is bad, skip to erase
        [21.615]blk 252 is bad, skip to erase
        [21.619]blk 253 is bad, skip to erase
        [21.623]blk 255 is bad, skip to erase
        [21.627]blk 256 is bad, skip to erase
        [21.630]blk 257 is bad, skip to erase
        [21.633]blk 258 is bad, skip to erase
        [21.637]blk 259 is bad, skip to erase
        [21.641]blk 261 is bad, skip to erase
        [21.645]blk 262 is bad, skip to erase
        [21.648]blk 263 is bad, skip to erase
        [21.651]blk 264 is bad, skip to erase
        [21.655]blk 265 is bad, skip to erase
        [21.660]blk 267 is bad, skip to erase
        [21.663]blk 268 is bad, skip to erase
        [21.666]blk 269 is bad, skip to erase
        [21.671]blk 271 is bad, skip to erase
        [21.675]blk 273 is bad, skip to erase
        [21.680]blk 275 is bad, skip to erase
        [21.685]blk 277 is bad, skip to erase
        [21.688]blk 278 is bad, skip to erase
        [21.691]blk 279 is bad, skip to erase
        [21.696]blk 281 is bad, skip to erase
        [21.701]blk 283 is bad, skip to erase
        [21.705]blk 285 is bad, skip to erase
        [21.709]blk 286 is bad, skip to erase
        [21.712]blk 287 is bad, skip to erase
        [21.717]blk 289 is bad, skip to erase
        [21.720]blk 290 is bad, skip to erase
        [21.723]blk 291 is bad, skip to erase
        [21.728]blk 293 is bad, skip to erase
        [21.731]blk 294 is bad, skip to erase
        [21.735]blk 295 is bad, skip to erase
        [21.738]blk 296 is bad, skip to erase
        [21.742]blk 297 is bad, skip to erase
        [21.746]blk 299 is bad, skip to erase
        [21.751]blk 301 is bad, skip to erase
        [21.754]blk 302 is bad, skip to erase
        [21.757]blk 303 is bad, skip to erase
        [21.762]blk 305 is bad, skip to erase
        [21.767]blk 307 is bad, skip to erase
        [21.770]blk 308 is bad, skip to erase
        [21.773]blk 309 is bad, skip to erase
        [21.778]blk 311 is bad, skip to erase
        [21.783]blk 313 is bad, skip to erase
        [21.786]blk 314 is bad, skip to erase
        [21.789]blk 315 is bad, skip to erase
        [21.794]blk 317 is bad, skip to erase
        [21.797]blk 318 is bad, skip to erase
        [21.801]blk 319 is bad, skip to erase
        [21.805]blk 321 is bad, skip to erase
        [21.810]blk 323 is bad, skip to erase
        [21.815]blk 325 is bad, skip to erase
        [21.818]blk 326 is bad, skip to erase
        [21.821]blk 327 is bad, skip to erase
        [21.826]blk 329 is bad, skip to erase
        [21.831]blk 331 is bad, skip to erase
        [21.835]blk 333 is bad, skip to erase
        [21.840]blk 335 is bad, skip to erase
        [21.843]blk 336 is bad, skip to erase
        [21.847]blk 337 is bad, skip to erase
        [21.851]blk 339 is bad, skip to erase
        [21.856]blk 341 is bad, skip to erase
        [21.860]blk 343 is bad, skip to erase
        [21.864]blk 344 is bad, skip to erase
        [21.867]blk 345 is bad, skip to erase
        [21.872]blk 347 is bad, skip to erase
        [21.875]blk 348 is bad, skip to erase
        [21.879]blk 349 is bad, skip to erase
        [21.883]blk 351 is bad, skip to erase
        [21.887]blk 352 is bad, skip to erase
        [21.890]blk 353 is bad, skip to erase
        [21.895]blk 355 is bad, skip to erase
        [21.899]blk 357 is bad, skip to erase
        [21.904]blk 359 is bad, skip to erase
        [21.907]blk 360 is bad, skip to erase
        [21.911]blk 361 is bad, skip to erase
        [21.914]blk 362 is bad, skip to erase
        [21.917]blk 363 is bad, skip to erase
        [21.922]blk 365 is bad, skip to erase
        [21.927]blk 367 is bad, skip to erase
        [21.931]blk 369 is bad, skip to erase
        [21.936]blk 371 is bad, skip to erase
        [21.940]blk 373 is bad, skip to erase
        [21.944]blk 374 is bad, skip to erase
        [21.947]blk 375 is bad, skip to erase
        [21.952]blk 377 is bad, skip to erase
        [21.956]blk 379 is bad, skip to erase
        [21.960]blk 380 is bad, skip to erase
        [21.963]blk 381 is bad, skip to erase
        [21.968]blk 383 is bad, skip to erase
        [21.971]blk 384 is bad, skip to erase
        [21.974]blk 385 is bad, skip to erase
        [21.979]blk 387 is bad, skip to erase
        [21.984]blk 389 is bad, skip to erase
        [21.987]blk 390 is bad, skip to erase
        [21.990]blk 391 is bad, skip to erase
        [21.995]blk 393 is bad, skip to erase
        [22.000]blk 395 is bad, skip to erase
        [22.003]blk 396 is bad, skip to erase
        [22.006]blk 397 is bad, skip to erase
        [22.011]blk 399 is bad, skip to erase
        [22.014]blk 400 is bad, skip to erase
        [22.018]blk 401 is bad, skip to erase
        [22.022]blk 403 is bad, skip to erase
        [22.026]blk 404 is bad, skip to erase
        [22.029]blk 405 is bad, skip to erase
        [22.034]blk 407 is bad, skip to erase
        [22.038]blk 409 is bad, skip to erase
        [22.042]blk 410 is bad, skip to erase
        [22.045]blk 411 is bad, skip to erase
        [22.048]blk 412 is bad, skip to erase
        [22.052]blk 413 is bad, skip to erase
        [22.055]blk 414 is bad, skip to erase
        [22.059]blk 415 is bad, skip to erase
        [22.063]blk 417 is bad, skip to erase
        [22.068]blk 419 is bad, skip to erase
        [22.073]blk 421 is bad, skip to erase
        [22.077]blk 423 is bad, skip to erase
        [22.080]blk 424 is bad, skip to erase
        [22.084]blk 425 is bad, skip to erase
        [22.089]blk 427 is bad, skip to erase
        [22.093]blk 429 is bad, skip to erase
        [22.098]blk 431 is bad, skip to erase
        [22.101]blk 432 is bad, skip to erase
        [22.104]blk 433 is bad, skip to erase
        [22.109]blk 435 is bad, skip to erase
        [22.114]blk 437 is bad, skip to erase
        [22.118]blk 439 is bad, skip to erase
        [22.122]blk 440 is bad, skip to erase
        [22.125]blk 441 is bad, skip to erase
        [22.130]blk 443 is bad, skip to erase
        [22.134]blk 445 is bad, skip to erase
        [22.138]blk 446 is bad, skip to erase
        [22.141]blk 447 is bad, skip to erase
        [22.146]blk 449 is bad, skip to erase
        [22.150]blk 451 is bad, skip to erase
        [22.155]blk 453 is bad, skip to erase
        [22.160]blk 455 is bad, skip to erase
        [22.164]blk 457 is bad, skip to erase
        [22.167]blk 458 is bad, skip to erase
        [22.171]blk 459 is bad, skip to erase
        [22.175]blk 461 is bad, skip to erase
        [22.180]blk 463 is bad, skip to erase
        [22.183]blk 464 is bad, skip to erase
        [22.187]blk 465 is bad, skip to erase
        [22.191]blk 467 is bad, skip to erase
        [22.195]blk 468 is bad, skip to erase
        [22.198]blk 469 is bad, skip to erase
        [22.203]blk 471 is bad, skip to erase
        [22.206]blk 472 is bad, skip to erase
        [22.210]blk 473 is bad, skip to erase
        [22.213]blk 474 is bad, skip to erase
        [22.216]blk 475 is bad, skip to erase
        [22.220]blk 476 is bad, skip to erase
        [22.223]blk 477 is bad, skip to erase
        [22.228]blk 479 is bad, skip to erase
        [22.231]blk 480 is bad, skip to erase
        [22.234]blk 481 is bad, skip to erase
        [22.239]blk 483 is bad, skip to erase
        [22.244]blk 485 is bad, skip to erase
        [22.248]blk 487 is bad, skip to erase
        [22.252]blk 488 is bad, skip to erase
        [22.255]blk 489 is bad, skip to erase
        [22.258]blk 490 is bad, skip to erase
        [22.262]blk 491 is bad, skip to erase
        [22.266]blk 493 is bad, skip to erase
        [22.270]blk 494 is bad, skip to erase
        [22.273]blk 495 is bad, skip to erase
        [22.278]blk 497 is bad, skip to erase
        [22.281]blk 498 is bad, skip to erase
        [22.285]blk 499 is bad, skip to erase
        [22.288]blk 500 is bad, skip to erase
        [22.291]blk 501 is bad, skip to erase
        [22.296]blk 503 is bad, skip to erase
        [22.301]blk 505 is bad, skip to erase
        [22.304]blk 506 is bad, skip to erase
        [22.307]blk 507 is bad, skip to erase
        [22.311]blk 508 is bad, skip to erase
        [22.314]blk 509 is bad, skip to erase
        [22.319]blk 511 is bad, skip to erase
        [22.322]blk 512 is bad, skip to erase
        [22.325]blk 513 is bad, skip to erase
        [22.330]blk 515 is bad, skip to erase
        [22.335]blk 517 is bad, skip to erase
        [22.339]blk 519 is bad, skip to erase
        [22.344]blk 521 is bad, skip to erase
        [22.349]blk 523 is bad, skip to erase
        [22.353]blk 525 is bad, skip to erase
        [22.358]blk 527 is bad, skip to erase
        [22.361]blk 528 is bad, skip to erase
        [22.364]blk 529 is bad, skip to erase
        [22.369]blk 531 is bad, skip to erase
        [22.374]blk 533 is bad, skip to erase
        [22.378]blk 535 is bad, skip to erase
        [22.383]blk 537 is bad, skip to erase
        [22.388]blk 539 is bad, skip to erase
        [22.392]blk 541 is bad, skip to erase
        [22.397]blk 543 is bad, skip to erase
        [22.401]blk 545 is bad, skip to erase
        [22.405]blk 546 is bad, skip to erase
        [22.408]blk 547 is bad, skip to erase
        [22.413]blk 549 is bad, skip to erase
        [22.417]blk 551 is bad, skip to erase
        [22.421]blk 552 is bad, skip to erase
        [22.424]blk 553 is bad, skip to erase
        [22.429]blk 555 is bad, skip to erase
        [22.432]blk 556 is bad, skip to erase
        [22.435]blk 557 is bad, skip to erase
        [22.440]blk 559 is bad, skip to erase
        [22.443]blk 560 is bad, skip to erase
        [22.447]blk 561 is bad, skip to erase
        [22.450]blk 562 is bad, skip to erase
        [22.454]blk 563 is bad, skip to erase
        [22.457]blk 564 is bad, skip to erase
        [22.460]blk 565 is bad, skip to erase
        [22.465]blk 567 is bad, skip to erase
        [22.468]blk 568 is bad, skip to erase
        [22.472]blk 569 is bad, skip to erase
        [22.476]blk 571 is bad, skip to erase
        [22.480]blk 572 is bad, skip to erase
        [22.483]blk 573 is bad, skip to erase
        [22.488]blk 575 is bad, skip to erase
        [22.491]blk 576 is bad, skip to erase
        [22.494]blk 577 is bad, skip to erase
        [22.499]blk 579 is bad, skip to erase
        [22.504]blk 581 is bad, skip to erase
        [22.508]blk 583 is bad, skip to erase
        [22.513]blk 585 is bad, skip to erase
        [22.518]blk 587 is bad, skip to erase
        [22.521]blk 588 is bad, skip to erase
        [22.524]blk 589 is bad, skip to erase
        [22.529]blk 591 is bad, skip to erase
        [22.534]blk 593 is bad, skip to erase
        [22.538]blk 595 is bad, skip to erase
        [22.543]blk 597 is bad, skip to erase
        [22.546]blk 598 is bad, skip to erase
        [22.549]blk 599 is bad, skip to erase
        [22.554]blk 601 is bad, skip to erase
        [22.559]blk 603 is bad, skip to erase
        [22.562]blk 604 is bad, skip to erase
        [22.565]blk 605 is bad, skip to erase
        [22.570]blk 607 is bad, skip to erase
        [22.573]blk 608 is bad, skip to erase
        [22.577]blk 609 is bad, skip to erase
        [22.581]blk 611 is bad, skip to erase
        [22.585]blk 612 is bad, skip to erase
        [22.588]blk 613 is bad, skip to erase
        [22.593]blk 615 is bad, skip to erase
        [22.596]blk 616 is bad, skip to erase
        [22.600]blk 617 is bad, skip to erase
        [22.604]blk 619 is bad, skip to erase
        [22.609]blk 621 is bad, skip to erase
        [22.612]blk 622 is bad, skip to erase
        [22.615]blk 623 is bad, skip to erase
        [22.620]blk 625 is bad, skip to erase
        [22.623]blk 626 is bad, skip to erase
        [22.627]blk 627 is bad, skip to erase
        [22.632]blk 629 is bad, skip to erase
        [22.636]blk 631 is bad, skip to erase
        [22.641]blk 633 is bad, skip to erase
        [22.644]blk 634 is bad, skip to erase
        [22.647]blk 635 is bad, skip to erase
        [22.652]blk 637 is bad, skip to erase
        [22.657]blk 639 is bad, skip to erase
        [22.660]blk 640 is bad, skip to erase
        [22.663]blk 641 is bad, skip to erase
        [22.668]blk 643 is bad, skip to erase
        [22.673]blk 645 is bad, skip to erase
        [22.676]blk 646 is bad, skip to erase
        [22.679]blk 647 is bad, skip to erase
        [22.684]blk 649 is bad, skip to erase
        [22.689]blk 651 is bad, skip to erase
        [22.693]blk 653 is bad, skip to erase
        [22.697]blk 654 is bad, skip to erase
        [22.700]blk 655 is bad, skip to erase
        [22.705]blk 657 is bad, skip to erase
        [22.709]blk 659 is bad, skip to erase
        [22.714]blk 661 is bad, skip to erase
        [22.719]blk 663 is bad, skip to erase
        [22.723]blk 665 is bad, skip to erase
        [22.726]blk 666 is bad, skip to erase
        [22.730]blk 667 is bad, skip to erase
        [22.734]blk 669 is bad, skip to erase
        [22.739]blk 671 is bad, skip to erase
        [22.742]blk 672 is bad, skip to erase
        [22.746]blk 673 is bad, skip to erase
        [22.750]blk 675 is bad, skip to erase
        [22.754]blk 676 is bad, skip to erase
        [22.757]blk 677 is bad, skip to erase
        [22.762]blk 679 is bad, skip to erase
        [22.765]blk 680 is bad, skip to erase
        [22.769]blk 681 is bad, skip to erase
        [22.773]blk 683 is bad, skip to erase
        [22.776]blk 684 is bad, skip to erase
        [22.780]blk 685 is bad, skip to erase
        [22.785]blk 687 is bad, skip to erase
        [22.788]blk 688 is bad, skip to erase
        [22.791]blk 689 is bad, skip to erase
        [22.796]blk 691 is bad, skip to erase
        [22.799]blk 692 is bad, skip to erase
        [22.803]blk 693 is bad, skip to erase
        [22.806]blk 694 is bad, skip to erase
        [22.809]blk 695 is bad, skip to erase
        [22.814]blk 697 is bad, skip to erase
        [22.817]blk 698 is bad, skip to erase
        [22.821]blk 699 is bad, skip to erase
        [22.825]blk 701 is bad, skip to erase
        [22.830]blk 703 is bad, skip to erase
        [22.833]blk 704 is bad, skip to erase
        [22.837]blk 705 is bad, skip to erase
        [22.841]blk 707 is bad, skip to erase
        [22.845]blk 708 is bad, skip to erase
        [22.848]blk 709 is bad, skip to erase
        [22.851]blk 710 is bad, skip to erase
        [22.855]blk 711 is bad, skip to erase
        [22.860]blk 713 is bad, skip to erase
        [22.864]blk 715 is bad, skip to erase
        [22.869]blk 717 is bad, skip to erase
        [22.873]blk 719 is bad, skip to erase
        [22.878]blk 721 is bad, skip to erase
        [22.883]blk 723 is bad, skip to erase
        [22.887]blk 725 is bad, skip to erase
        [22.892]blk 727 is bad, skip to erase
        [22.896]blk 729 is bad, skip to erase
        [22.901]blk 731 is bad, skip to erase
        [22.906]blk 733 is bad, skip to erase
        [22.910]blk 735 is bad, skip to erase
        [22.914]blk 736 is bad, skip to erase
        [22.917]blk 737 is bad, skip to erase
        [22.922]blk 739 is bad, skip to erase
        [22.926]blk 741 is bad, skip to erase
        [22.931]blk 743 is bad, skip to erase
        [22.935]blk 745 is bad, skip to erase
        [22.939]blk 746 is bad, skip to erase
        [22.942]blk 747 is bad, skip to erase
        [22.946]blk 748 is bad, skip to erase
        [22.949]blk 749 is bad, skip to erase
        [22.954]blk 751 is bad, skip to erase
        [22.957]blk 752 is bad, skip to erase
        [22.960]blk 753 is bad, skip to erase
        [22.965]blk 755 is bad, skip to erase
        [22.968]blk 756 is bad, skip to erase
        [22.972]blk 757 is bad, skip to erase
        [22.976]blk 759 is bad, skip to erase
        [22.981]blk 761 is bad, skip to erase
        [22.984]blk 762 is bad, skip to erase
        [22.988]blk 763 is bad, skip to erase
        [22.992]blk 765 is bad, skip to erase
        [22.996]blk 766 is bad, skip to erase
        [22.999]blk 767 is bad, skip to erase
        [23.002]blk 769 is bad, skip to erase
        [23.006]blk 770 is bad, skip to erase
        [23.009]blk 771 is bad, skip to erase
        [23.014]blk 773 is bad, skip to erase
        [23.017]blk 774 is bad, skip to erase
        [23.021]blk 775 is bad, skip to erase
        [23.025]blk 777 is bad, skip to erase
        [23.028]blk 778 is bad, skip to erase
        [23.032]blk 779 is bad, skip to erase
        [23.037]blk 781 is bad, skip to erase
        [23.040]blk 782 is bad, skip to erase
        [23.043]blk 783 is bad, skip to erase
        [23.048]blk 785 is bad, skip to erase
        [23.053]blk 787 is bad, skip to erase
        [23.056]blk 788 is bad, skip to erase
        [23.059]blk 789 is bad, skip to erase
        [23.064]blk 791 is bad, skip to erase
        [23.069]blk 793 is bad, skip to erase
        [23.073]blk 795 is bad, skip to erase
        [23.076]blk 796 is bad, skip to erase
        [23.080]blk 797 is bad, skip to erase
        [23.085]blk 799 is bad, skip to erase
        [23.089]blk 801 is bad, skip to erase
        [23.092]blk 802 is bad, skip to erase
        [23.096]blk 803 is bad, skip to erase
        [23.101]blk 805 is bad, skip to erase
        [23.105]blk 807 is bad, skip to erase
        [23.110]blk 809 is bad, skip to erase
        [23.114]blk 811 is bad, skip to erase
        [23.118]blk 812 is bad, skip to erase
        [23.121]blk 813 is bad, skip to erase
        [23.126]blk 815 is bad, skip to erase
        [23.129]blk 816 is bad, skip to erase
        [23.132]blk 817 is bad, skip to erase
        [23.137]blk 819 is bad, skip to erase
        [23.140]blk 820 is bad, skip to erase
        [23.144]blk 821 is bad, skip to erase
        [23.147]blk 822 is bad, skip to erase
        [23.151]blk 823 is bad, skip to erase
        [23.155]blk 825 is bad, skip to erase
        [23.158]blk 826 is bad, skip to erase
        [23.162]blk 827 is bad, skip to erase
        [23.165]blk 828 is bad, skip to erase
        [23.169]blk 829 is bad, skip to erase
        [23.173]blk 831 is bad, skip to erase
        [23.178]blk 833 is bad, skip to erase
        [23.181]blk 834 is bad, skip to erase
        [23.185]blk 835 is bad, skip to erase
        [23.189]blk 837 is bad, skip to erase
        [23.194]blk 839 is bad, skip to erase
        [23.199]blk 841 is bad, skip to erase
        [23.203]blk 843 is bad, skip to erase
        [23.208]blk 845 is bad, skip to erase
        [23.212]blk 847 is bad, skip to erase
        [23.217]blk 849 is bad, skip to erase
        [23.222]blk 851 is bad, skip to erase
        [23.225]blk 852 is bad, skip to erase
        [23.228]blk 853 is bad, skip to erase
        [23.233]blk 855 is bad, skip to erase
        [23.236]blk 856 is bad, skip to erase
        [23.240]blk 857 is bad, skip to erase
        [23.244]blk 859 is bad, skip to erase
        [23.248]blk 860 is bad, skip to erase
        [23.251]blk 861 is bad, skip to erase
        [23.254]blk 862 is bad, skip to erase
        [23.258]blk 863 is bad, skip to erase
        [23.262]blk 865 is bad, skip to erase
        [23.267]blk 867 is bad, skip to erase
        [23.272]blk 869 is bad, skip to erase
        [23.276]blk 871 is bad, skip to erase
        [23.281]blk 873 is bad, skip to erase
        [23.284]blk 874 is bad, skip to erase
        [23.288]blk 875 is bad, skip to erase
        [23.292]blk 877 is bad, skip to erase
        [23.297]blk 879 is bad, skip to erase
        [23.301]blk 881 is bad, skip to erase
        [23.306]blk 883 is bad, skip to erase
        [23.311]blk 885 is bad, skip to erase
        [23.315]blk 887 is bad, skip to erase
        [23.320]blk 889 is bad, skip to erase
        [23.325]blk 891 is bad, skip to erase
        [23.329]blk 893 is bad, skip to erase
        [23.334]blk 895 is bad, skip to erase
        [23.338]blk 897 is bad, skip to erase
        [23.342]blk 898 is bad, skip to erase
        [23.345]blk 899 is bad, skip to erase
        [23.348]blk 900 is bad, skip to erase
        [23.352]blk 901 is bad, skip to erase
        [23.357]blk 903 is bad, skip to erase
        [23.361]blk 905 is bad, skip to erase
        [23.364]blk 906 is bad, skip to erase
        [23.368]blk 907 is bad, skip to erase
        [23.372]blk 909 is bad, skip to erase
        [23.376]blk 910 is bad, skip to erase
        [23.379]blk 911 is bad, skip to erase
        [23.384]blk 913 is bad, skip to erase
        [23.388]blk 915 is bad, skip to erase
        [23.392]blk 916 is bad, skip to erase
        [23.395]blk 917 is bad, skip to erase
        [23.400]blk 919 is bad, skip to erase
        [23.404]blk 921 is bad, skip to erase
        [23.409]blk 923 is bad, skip to erase
        [23.414]blk 925 is bad, skip to erase
        [23.418]blk 927 is bad, skip to erase
        [23.423]blk 929 is bad, skip to erase
        [23.428]blk 931 is bad, skip to erase
        [23.432]blk 933 is bad, skip to erase
        [23.435]blk 934 is bad, skip to erase
        [23.439]blk 935 is bad, skip to erase
        [23.443]blk 937 is bad, skip to erase
        [23.448]blk 939 is bad, skip to erase
        [23.451]blk 940 is bad, skip to erase
        [23.455]blk 941 is bad, skip to erase
        [23.458]blk 942 is bad, skip to erase
        [23.462]blk 943 is bad, skip to erase
        [23.466]blk 945 is bad, skip to erase
        [23.469]blk 946 is bad, skip to erase
        [23.473]blk 947 is bad, skip to erase
        [23.478]blk 949 is bad, skip to erase
        [23.481]blk 950 is bad, skip to erase
        [23.484]blk 951 is bad, skip to erase
        [23.489]blk 953 is bad, skip to erase
        [23.494]blk 955 is bad, skip to erase
        [23.497]blk 956 is bad, skip to erase
        [23.500]blk 957 is bad, skip to erase
        [23.504]blk 958 is bad, skip to erase
        [23.507]blk 959 is bad, skip to erase
        [23.510]blk 960 is bad, skip to erase
        [23.514]blk 961 is bad, skip to erase
        [23.518]blk 963 is bad, skip to erase
        [23.522]blk 964 is bad, skip to erase
        [23.525]blk 965 is bad, skip to erase
        [23.530]blk 967 is bad, skip to erase
        [23.533]blk 968 is bad, skip to erase
        [23.537]blk 969 is bad, skip to erase
        [23.540]blk 970 is bad, skip to erase
        [23.543]blk 971 is bad, skip to erase
        [23.548]blk 973 is bad, skip to erase
        [23.551]blk 974 is bad, skip to erase
        [23.555]blk 975 is bad, skip to erase
        [23.559]blk 977 is bad, skip to erase
        [23.563]blk 978 is bad, skip to erase
        [23.566]blk 979 is bad, skip to erase
        [23.571]blk 981 is bad, skip to erase
        [23.575]blk 983 is bad, skip to erase
        [23.579]blk 984 is bad, skip to erase
        [23.582]blk 985 is bad, skip to erase
        [23.585]blk 986 is bad, skip to erase
        [23.589]blk 987 is bad, skip to erase
        [23.592]blk 988 is bad, skip to erase
        [23.596]blk 989 is bad, skip to erase
        [23.599]blk 990 is bad, skip to erase
        [23.602]blk 991 is bad, skip to erase
        [23.607]blk 993 is bad, skip to erase
        [23.610]blk 994 is bad, skip to erase
        [23.614]blk 995 is bad, skip to erase
        [23.617]blk 996 is bad, skip to erase
        [23.620]blk 997 is bad, skip to erase
        [23.625]blk 999 is bad, skip to erase
        [23.630]blk 1001 is bad, skip to erase
        [23.633]blk 1002 is bad, skip to erase
        [23.637]blk 1003 is bad, skip to erase
        [23.641]blk 1005 is bad, skip to erase
        [23.645]blk 1006 is bad, skip to erase
        [23.648]blk 1007 is bad, skip to erase
        [23.653]blk 1009 is bad, skip to erase
        [23.656]blk 1010 is bad, skip to erase
        [23.660]blk 1011 is bad, skip to erase
        [23.663]blk 1012 is bad, skip to erase
        [23.667]blk 1013 is bad, skip to erase
        [23.670]blk 1014 is bad, skip to erase
        [23.674]blk 1015 is bad, skip to erase
        [23.677]blk 1016 is bad, skip to erase
        [23.681]blk 1017 is bad, skip to erase
        [23.684]blk 1018 is bad, skip to erase
        [23.688]blk 1019 is bad, skip to erase
        [23.691]blk 1020 is bad, skip to erase
        [23.695]blk 1021 is bad, skip to erase
        [23.700]sunxi-spinand: spinand secure storage ok for phy blk 35 and 39
        [23.706]sunxi-spinand: secure storage blks have never used before
        [23.713]sunxi-spinand: secure storage has no valid data on item 0
        [23.718]Item0 (Map) magic is bad
        [23.721]the secure storage map is empty
        [23.885]sunxi-spinand: write secure storage itme 0 ok
        [23.890]erase secure storage: 0 ok
        SUNXI_EFEX_MBR_TAG
        mbr size = 0x10000
        force mbr
        
        device nand0 <nand>, # parts = 4
         #: name                size            offset          mask_flags
         0: boot0               0x00100000      0x00000000      1
         1: uboot               0x00300000      0x00100000      1
         2: secure_storage      0x00100000      0x00400000      1
         3: sys                 0x07b00000      0x00500000      0
        
        active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
        
        defaults:
        mtdids  : nand0=nand
        mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
        [23.944]MTD info (4)
        [23.946]pagesize: 0x1000
        [23.948]blksize: 0x40000
        [23.950]num  offset     bytes      name
        [23.954]0    0x00000000 0x00100000 boot0
        [23.957]1    0x00100000 0x00300000 uboot
        [23.961]2    0x00400000 0x00100000 secure_storage
        [23.966]3    0x00500000 0x07b00000 sys
        [23.969]MBR info (unalign):
        [23.972]partno   addr       sects      type       name
        [23.976]0        0x00000000 0x00008000 0x00000001 mbr
        [23.981]1        0x00008000 0x000001f8 0x00008000 boot-resource
        [23.987]2        0x000081f8 0x000001f8 0x00008000 env
        [23.992]3        0x000083f0 0x000001f8 0x00008000 env-redund
        [23.997]4        0x000085e8 0x00005000 0x00008000 boot
        [24.002]5        0x0000d5e8 0x0000be00 0x00008000 rootfs
        [24.007]6        0x000193e8 0x00005780 0x00008000 recovery
        [24.012]7        0x0001eb68 0x00002800 0x00008000 rootfs_data
        [24.017]8        0x00021368 0x00000000 0x00000000 UDISK
        [24.022]ubi attach the last part of mtd device: NO.3
        [24.027]MBR info (align):
        [24.029]partno   addr       sects      type       name
        [24.034]0        0x00002800 0x000081f0 0x00000001 mbr
        [24.039]1        0x0000a9f0 0x000001f8 0x00008000 boot-resource
        [24.045]2        0x0000abe8 0x000001f8 0x00008000 env
        [24.049]3        0x0000ade0 0x000001f8 0x00008000 env-redund
        [24.055]4        0x0000afd8 0x000050b8 0x00008000 boot
        [24.060]5        0x00010090 0x0000bef8 0x00008000 rootfs
        [24.065]6        0x0001bf88 0x00005898 0x00008000 recovery
        [24.070]7        0x00021820 0x00002958 0x00008000 rootfs_data
        [24.075]8        0x00024178 0x00000000 0x00000000 UDISK
        [24.080]ubi attach the last part of mtd device: NO.3
        [24.085]ubi attatch mtd, name: sys
        
        [24.088]ubi0: attaching mtd4
        [24.103]ubi0 warning: scan_peb: bad ec header at pnum 491, drop this block
        
        [24.110]ubi0: scanning is finished
        [24.113]ubi0: empty MTD device detected
        [24.124]sunxi-spinand: [SPINAND]: write single page failed: block 511, page 1, ret -5
        [24.131]ubi0 error: ubi_io_write: error -5 while writing 24576 bytes to PEB 491:4096, written 0 bytes
        [24.142]ubi0: dumping 24576 bytes of data from PEB 491, offset 4096
        [24.149]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [24.156]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [24.164]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [24.171]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [24.179]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [24.186]ubi0 warning: do_sync_erase: error -5 while erasing PEB 491, retry
        [24.194]sunxi-spinand: [SPINAND]: erase block 511 in addr 0x7fc0000 failed: -5
        [24.201]ubi0 error: do_sync_erase: cannot erase PEB 491, error -5
        [24.207]ubi0 error: ubi_early_get_peb: no free eraseblocks
        [24.212]ubi0 error: ubi_attach_mtd_dev: failed to attach mtd4, error -28
        [24.219]UBI error: cannot attach mtd4
        [24.222]UBI error: cannot initialize UBI, error -28
        UBI init error 28
        Please check, if the correct MTD partition is used (size big enough?)
        [24.234]ubi part sys err !
        [24.237]initialize sunxi spinand ubi failed
        download_standard_gpt:write mbr sectors fail ret = 0
        

        294ecf5c-cafe-4ce5-a45c-6337004a6b1f-image.png

        1 条回复 最后回复 回复 引用 分享 0
        • tigger
          tigger LV 7 最后由 编辑

          e4df52a6-f107-45c9-89d5-7b27d89f540c-df7adf65f4f19498f2c22501498bb06.jpg

          家里垃圾堆翻出一片新的 GD5F1GQ4UBYIG,刚好支持,我焊上去试一试。

          1 条回复 最后回复 回复 引用 分享 0
          • tigger
            tigger LV 7 最后由 编辑

            [4071]fes begin commit:88480af
            [4074]set pll start
            [4076]fix vccio detect value:0xc0
            [4079]periph0 has been enabled
            [4082]set pll end
            [4083][pmu]: bus read error
            [4086]board init ok
            [4088]beign to init dram
            [4090]ZQ value = 0x32
            [4092]get_pmu_exist() = -1
            [4095]ddr_efuse_type: 0xa
            [4097]trefi:7.8ms
            [4099][AUTO DEBUG] single rank and full DQ!
            [4103]ddr_efuse_type: 0xa
            [4106]trefi:7.8ms
            [4108][AUTO DEBUG] rank 0 row = 13
            [4111][AUTO DEBUG] rank 0 bank = 4
            [4114][AUTO DEBUG] rank 0 page size = 2 KB
            [4118]DRAM BOOT DRIVE INFO: V0.33
            [4121]DRAM CLK = 528 MHz
            [4124]DRAM Type = 2 (2:DDR2,3:DDR3)
            [4127]DRAMC read ODT  off.
            [4129]DRAM ODT off.
            [4131]ddr_efuse_type: 0xa
            [4134]DRAM SIZE =64 M
            [4136]dram_tpr4:0x0
            [4138]PLL_DDR_CTRL_REG:0xf8002b00
            [4141]DRAM_CLK_REG:0xc0000000
            [4144][TIMING DEBUG] MR2= 0x0
            [4148]DRAM simple test OK.
            [4151]init dram ok
            
            
            U-Boot 2018.05-g24521d6-dirty (Mar 27 2022 - 20:41:23 +0800) Allwinner Technology
            
            [12.169]DRAM:  64 MiB
            [12.174]Relocation Offset is: 01ee7000
            [12.200]secure enable bit: 0
            [12.206]CPU=720 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
            [12.213]flash init start
            [12.215]workmode = 16,storage type = 0
            try card 2
            set card number 2
            get card number 2
            [12.222][mmc]: mmc driver ver uboot2018:2021-11-19 15:38:00
            [12.232][mmc]: get sdc_type fail and use default host:tm4.
            [12.264][mmc]: Is not Boot mode!
            [12.267][mmc]: SUNXI SDMMC Controller Version:0x50310
            [12.278][mmc]: ************Try SD card 2************
            [12.284][mmc]: mmc 2 cmd timeout 100 status 100
            [12.288][mmc]: smc 2 err, cmd 8,  RTO
            [12.291][mmc]: mmc 2 close bus gating and reset
            [12.296][mmc]: mmc 2 cmd timeout 100 status 100
            [12.301][mmc]: smc 2 err, cmd 55,  RTO
            [12.304][mmc]: mmc 2 close bus gating and reset
            [12.308][mmc]: ************Try MMC card 2************
            [12.317][mmc]: mmc 2 cmd timeout 100 status 100
            [12.321][mmc]: smc 2 err, cmd 1,  RTO
            [12.325][mmc]: mmc 2 close bus gating and reset
            [12.329][mmc]: Card did not respond to voltage select!
            [12.334][mmc]: ************SD/MMC 2 init error!************
            [12.339][mmc]: mmc init product failed
            MMC init failed
            try emmc fail
            [12.356]sunxi-spinand: AW SPINand MTD Layer Version: 1.5 20200407
            [12.362]sunxi-spinand-phy: AW SPINand Phy Layer Version: 1.9 20200306
            [12.426]sunxi-spinand-phy: request spi0 gpio ok
            [12.431]sunxi-spinand-phy: request general tx dma channel ok!
            [12.436]sunxi-spinand-phy: request general rx dma channel ok!
            [12.442]sunxi-spinand-phy: set spic0 clk to 20 Mhz
            [12.446]sunxi-spinand-phy: init spic0 clk ok
            sspi->base_addr = 0x4025000, the SPI control register:
            [VER] 0x4025000 = 0x00010001, [GCR] 0x4025004 = 0x00000083, [TCR] 0x4025008 = 0x00000184
            [ICR] 0x4025010 = 0x00000f00, [ISR] 0x4025014 = 0x00000032, [FCR] 0x4025018 = 0x00200020
            [FSR] 0x402501c = 0x00000000, [WCR] 0x4025020 = 0x00000000, [CCR] 0x4025024 = 0x00000002
            [SDC] 0x4025028 = 0x00002000, [BCR] 0x4025030 = 0x00000000, [TCR] 0x4025034 = 0x00000000
            [BCC] 0x4025038 = 0x00000000, [DMA] 0x4025088 = 0x000000e5
            
            [12.492]sunxi-spinand-phy: not detect any munufacture from id table
            [12.508]sunxi-spinand-phy: get spi-nand Model from fdt fail
            [12.513]sunxi-spinand-phy: get phy info from fdt fail
            [12.518]sunxi-spinand-phy: not detect munufacture from fdt
            [12.523]sunxi-spinand-phy: detect munufacture from id table: GD
            [12.529]sunxi-spinand-phy: detect spinand id: ffffd1c8 ffffffff
            [12.534]sunxi-spinand-phy: ========== arch info ==========
            [12.540]sunxi-spinand-phy: Model:               GD5F1GQ4UBYIG
            [12.545]sunxi-spinand-phy: Munufacture:         GD
            [12.550]sunxi-spinand-phy: DieCntPerChip:       1
            [12.554]sunxi-spinand-phy: BlkCntPerDie:        1024
            [12.559]sunxi-spinand-phy: PageCntPerBlk:       64
            [12.563]sunxi-spinand-phy: SectCntPerPage:      4
            [12.568]sunxi-spinand-phy: OobSizePerPage:      64
            [12.572]sunxi-spinand-phy: BadBlockFlag:        0x0
            [12.577]sunxi-spinand-phy: OperationOpt:        0x7
            [12.581]sunxi-spinand-phy: MaxEraseTimes:       50000
            [12.586]sunxi-spinand-phy: EccFlag:             0x1
            [12.591]sunxi-spinand-phy: EccType:             7
            [12.595]sunxi-spinand-phy: EccProtectedType:    4
            [12.600]sunxi-spinand-phy: ========================================
            [12.606]sunxi-spinand-phy:
            [12.608]sunxi-spinand-phy: ========== physical info ==========
            [12.614]sunxi-spinand-phy: TotalSize:    128 M
            [12.618]sunxi-spinand-phy: SectorSize:   512 B
            [12.622]sunxi-spinand-phy: PageSize:     2 K
            [12.626]sunxi-spinand-phy: BlockSize:    128 K
            [12.630]sunxi-spinand-phy: OOBSize:      64 B
            [12.634]sunxi-spinand-phy: ========================================
            [12.640]sunxi-spinand-phy:
            [12.643]sunxi-spinand-phy: ========== logical info ==========
            [12.648]sunxi-spinand-phy: TotalSize:    128 M
            [12.652]sunxi-spinand-phy: SectorSize:   512 B
            [12.656]sunxi-spinand-phy: PageSize:     4 K
            [12.660]sunxi-spinand-phy: BlockSize:    256 K
            [12.665]sunxi-spinand-phy: OOBSize:      128 B
            [12.669]sunxi-spinand-phy: ========================================
            [12.685]sunxi-spinand-phy: set spic0 clk to 100 Mhz
            [12.690]sunxi-spinand-phy: block lock register: 0x80
            [12.694]sunxi-spinand-phy: feature register: 0x08
            [12.699]sunxi-spinand-phy: sunxi physic nand init end
            [12.709]Loading Environment from SUNXI_FLASH... OK
            [12.723]try to burn key
            [12.727]out of usb burn from boot: not need burn key
            [12.731]Net:   [12.732]No ethernet found.
            Hit any key to stop autoboot:  0
            sunxi work mode=0x10
            run usb efex
            delay time 2500
            weak:otg_phy_config
            usb init ok
            set address 0x21
            set address 0x21 ok
            SUNXI_EFEX_ERASE_TAG
            erase_flag = 0x12
            origin_erase_flag = 0x1
            FEX_CMD_fes_verify_status
            FEX_CMD_fes_verify last err=0
            the 0 mbr table is ok
            the 1 mbr table is ok
            the 2 mbr table is ok
            the 3 mbr table is ok
            *************MBR DUMP***************
            total mbr part 8
            
            part[0] name      :boot-resource
            part[0] classname :DISK
            part[0] addrlo    :0x8000
            part[0] lenlo     :0x1f8
            part[0] user_type :32768
            part[0] keydata   :0
            part[0] ro        :0
            
            part[1] name      :env
            part[1] classname :DISK
            part[1] addrlo    :0x81f8
            part[1] lenlo     :0x1f8
            part[1] user_type :32768
            part[1] keydata   :0
            part[1] ro        :0
            
            part[2] name      :env-redund
            part[2] classname :DISK
            part[2] addrlo    :0x83f0
            part[2] lenlo     :0x1f8
            part[2] user_type :32768
            part[2] keydata   :0
            part[2] ro        :0
            
            part[3] name      :boot
            part[3] classname :DISK
            part[3] addrlo    :0x85e8
            part[3] lenlo     :0x5000
            part[3] user_type :32768
            part[3] keydata   :0
            part[3] ro        :0
            
            part[4] name      :rootfs
            part[4] classname :DISK
            part[4] addrlo    :0xd5e8
            part[4] lenlo     :0xbe00
            part[4] user_type :32768
            part[4] keydata   :0
            part[4] ro        :0
            
            part[5] name      :recovery
            part[5] classname :DISK
            part[5] addrlo    :0x193e8
            part[5] lenlo     :0x5780
            part[5] user_type :32768
            part[5] keydata   :0
            part[5] ro        :0
            
            part[6] name      :rootfs_data
            part[6] classname :DISK
            part[6] addrlo    :0x1eb68
            part[6] lenlo     :0x2800
            part[6] user_type :32768
            part[6] keydata   :0
            part[6] ro        :0
            
            part[7] name      :UDISK
            part[7] classname :DISK
            part[7] addrlo    :0x21368
            part[7] lenlo     :0x0
            part[7] user_type :0
            part[7] keydata   :0
            part[7] ro        :0
            
            common1(partition3) need it, here is a weak func
            total part: 9
            mbr 0, 8000, 8000
            boot-resource 1, 1f8, 8000
            env 2, 1f8, 8000
            env-redund 3, 1f8, 8000
            boot 4, 5000, 8000
            rootfs 5, be00, 8000
            recovery 6, 5780, 8000
            rootfs_data 7, 2800, 8000
            UDISK 8, 0, 0
            [19.447]erase blk 0 to blk 32
            [19.450]blk 0 is bad, skip to erase
            [19.453]blk 1 is bad, skip to erase
            [19.456]blk 2 is bad, skip to erase
            [19.459]blk 3 is bad, skip to erase
            [19.462]blk 4 is bad, skip to erase
            [19.466]blk 5 is bad, skip to erase
            [19.469]blk 6 is bad, skip to erase
            [19.472]blk 7 is bad, skip to erase
            [19.475]blk 8 is bad, skip to erase
            [19.479]blk 9 is bad, skip to erase
            [19.482]blk 10 is bad, skip to erase
            [19.485]blk 11 is bad, skip to erase
            [19.488]blk 12 is bad, skip to erase
            [19.492]blk 13 is bad, skip to erase
            [19.495]blk 14 is bad, skip to erase
            [19.498]blk 15 is bad, skip to erase
            [19.501]blk 16 is bad, skip to erase
            [19.505]blk 17 is bad, skip to erase
            [19.508]blk 18 is bad, skip to erase
            [19.511]blk 19 is bad, skip to erase
            [19.515]blk 20 is bad, skip to erase
            [19.518]blk 21 is bad, skip to erase
            [19.521]blk 22 is bad, skip to erase
            [19.525]blk 23 is bad, skip to erase
            [19.528]blk 24 is bad, skip to erase
            [19.531]blk 25 is bad, skip to erase
            [19.534]blk 26 is bad, skip to erase
            [19.538]blk 27 is bad, skip to erase
            [19.541]blk 28 is bad, skip to erase
            [19.544]blk 29 is bad, skip to erase
            [19.548]blk 30 is bad, skip to erase
            [19.551]blk 31 is bad, skip to erase
            need erase flash: 18
            [19.558]mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
            
            device nand0 <nand>, # parts = 4
             #: name                size            offset          mask_flags
             0: boot0               0x00100000      0x00000000      1
             1: uboot               0x00300000      0x00100000      1
             2: secure_storage      0x00100000      0x00400000      1
             3: sys                 0x07b00000      0x00500000      0
            
            active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
            
            defaults:
            mtdids  : nand0=nand
            mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
            [19.618]MTD info (4)
            [19.620]pagesize: 0x1000
            [19.622]blksize: 0x40000
            [19.624]num  offset     bytes      name
            [19.628]0    0x00000000 0x00100000 boot0
            [19.631]1    0x00100000 0x00300000 uboot
            [19.635]2    0x00400000 0x00100000 secure_storage
            [19.639]3    0x00500000 0x07b00000 sys
            [19.643]ubi attach the last part of mtd device: NO.3
            [19.686]ubi0: attaching mtd4
            [19.699]ubi0: scanning is finished
            [19.702]ubi0: empty MTD device detected
            [19.708]ubi0 error: ubi_early_get_peb: no free eraseblocks
            [19.714]ubi0 error: ubi_attach_mtd_dev: failed to attach mtd4, error -28
            [19.720]UBI error: cannot attach mtd4
            [19.724]UBI error: cannot initialize UBI, error -28
            UBI init error 28
            Please check, if the correct MTD partition is used (size big enough?)
            [19.736]ubi part sys err !
            [19.739]erase blk 0 to blk 32
            [19.741]blk 0 is bad, skip to erase
            [19.744]blk 1 is bad, skip to erase
            [19.748]blk 2 is bad, skip to erase
            [19.751]blk 3 is bad, skip to erase
            [19.754]blk 4 is bad, skip to erase
            [19.757]blk 5 is bad, skip to erase
            [19.760]blk 6 is bad, skip to erase
            [19.764]blk 7 is bad, skip to erase
            [19.767]blk 8 is bad, skip to erase
            [19.770]blk 9 is bad, skip to erase
            [19.773]blk 10 is bad, skip to erase
            [19.777]blk 11 is bad, skip to erase
            [19.780]blk 12 is bad, skip to erase
            [19.783]blk 13 is bad, skip to erase
            [19.786]blk 14 is bad, skip to erase
            [19.790]blk 15 is bad, skip to erase
            [19.793]blk 16 is bad, skip to erase
            [19.796]blk 17 is bad, skip to erase
            [19.800]blk 18 is bad, skip to erase
            [19.803]blk 19 is bad, skip to erase
            [19.806]blk 20 is bad, skip to erase
            [19.810]blk 21 is bad, skip to erase
            [19.813]blk 22 is bad, skip to erase
            [19.816]blk 23 is bad, skip to erase
            [19.819]blk 24 is bad, skip to erase
            [19.823]blk 25 is bad, skip to erase
            [19.826]blk 26 is bad, skip to erase
            [19.829]blk 27 is bad, skip to erase
            [19.833]blk 28 is bad, skip to erase
            [19.836]blk 29 is bad, skip to erase
            [19.839]blk 30 is bad, skip to erase
            [19.842]blk 31 is bad, skip to erase
            [19.846]erase blk 40 to blk 1024
            [19.849]blk 40 is bad, skip to erase
            [19.852]blk 41 is bad, skip to erase
            [19.855]blk 42 is bad, skip to erase
            [19.859]blk 43 is bad, skip to erase
            [19.862]blk 44 is bad, skip to erase
            [19.865]blk 45 is bad, skip to erase
            [19.868]blk 46 is bad, skip to erase
            [19.872]blk 47 is bad, skip to erase
            [19.875]blk 48 is bad, skip to erase
            [19.878]blk 49 is bad, skip to erase
            [19.882]blk 50 is bad, skip to erase
            [19.885]blk 51 is bad, skip to erase
            [19.888]blk 52 is bad, skip to erase
            [19.892]blk 53 is bad, skip to erase
            [19.895]blk 54 is bad, skip to erase
            [19.898]blk 55 is bad, skip to erase
            [19.901]blk 56 is bad, skip to erase
            [19.905]blk 57 is bad, skip to erase
            [19.908]blk 58 is bad, skip to erase
            [19.911]blk 59 is bad, skip to erase
            [19.915]blk 60 is bad, skip to erase
            [19.918]blk 61 is bad, skip to erase
            [19.921]blk 62 is bad, skip to erase
            [19.925]blk 63 is bad, skip to erase
            [19.928]blk 64 is bad, skip to erase
            [19.931]blk 65 is bad, skip to erase
            [19.934]blk 66 is bad, skip to erase
            [19.938]blk 67 is bad, skip to erase
            [19.941]blk 68 is bad, skip to erase
            [19.944]blk 69 is bad, skip to erase
            [19.948]blk 70 is bad, skip to erase
            [19.951]blk 71 is bad, skip to erase
            [19.954]blk 72 is bad, skip to erase
            [19.957]blk 73 is bad, skip to erase
            [19.961]blk 74 is bad, skip to erase
            [19.964]blk 75 is bad, skip to erase
            [19.967]blk 76 is bad, skip to erase
            [19.971]blk 77 is bad, skip to erase
            [19.974]blk 78 is bad, skip to erase
            [19.977]blk 79 is bad, skip to erase
            [19.980]blk 80 is bad, skip to erase
            [19.984]blk 81 is bad, skip to erase
            [19.987]blk 82 is bad, skip to erase
            [19.990]blk 83 is bad, skip to erase
            [19.994]blk 84 is bad, skip to erase
            [19.997]blk 85 is bad, skip to erase
            [20.000]blk 86 is bad, skip to erase
            [20.004]blk 87 is bad, skip to erase
            [20.007]blk 88 is bad, skip to erase
            [20.010]blk 89 is bad, skip to erase
            [20.013]blk 90 is bad, skip to erase
            [20.017]blk 91 is bad, skip to erase
            [20.020]blk 92 is bad, skip to erase
            [20.023]blk 93 is bad, skip to erase
            [20.027]blk 94 is bad, skip to erase
            [20.030]blk 95 is bad, skip to erase
            [20.033]blk 96 is bad, skip to erase
            [20.036]blk 97 is bad, skip to erase
            [20.040]blk 98 is bad, skip to erase
            [20.043]blk 99 is bad, skip to erase
            [20.046]blk 100 is bad, skip to erase
            [20.050]blk 101 is bad, skip to erase
            [20.053]blk 102 is bad, skip to erase
            [20.057]blk 103 is bad, skip to erase
            [20.060]blk 104 is bad, skip to erase
            [20.063]blk 105 is bad, skip to erase
            [20.067]blk 106 is bad, skip to erase
            [20.070]blk 107 is bad, skip to erase
            [20.073]blk 108 is bad, skip to erase
            [20.077]blk 109 is bad, skip to erase
            [20.080]blk 110 is bad, skip to erase
            [20.084]blk 111 is bad, skip to erase
            [20.087]blk 112 is bad, skip to erase
            [20.090]blk 113 is bad, skip to erase
            [20.094]blk 114 is bad, skip to erase
            [20.097]blk 115 is bad, skip to erase
            [20.100]blk 116 is bad, skip to erase
            [20.104]blk 117 is bad, skip to erase
            [20.107]blk 118 is bad, skip to erase
            [20.111]blk 119 is bad, skip to erase
            [20.114]blk 120 is bad, skip to erase
            [20.117]blk 121 is bad, skip to erase
            [20.121]blk 122 is bad, skip to erase
            [20.124]blk 123 is bad, skip to erase
            [20.127]blk 124 is bad, skip to erase
            [20.131]blk 125 is bad, skip to erase
            [20.134]blk 126 is bad, skip to erase
            [20.138]blk 127 is bad, skip to erase
            [20.141]blk 128 is bad, skip to erase
            [20.144]blk 129 is bad, skip to erase
            [20.148]blk 130 is bad, skip to erase
            [20.151]blk 131 is bad, skip to erase
            [20.154]blk 132 is bad, skip to erase
            [20.158]blk 133 is bad, skip to erase
            [20.161]blk 134 is bad, skip to erase
            [20.165]blk 135 is bad, skip to erase
            [20.168]blk 136 is bad, skip to erase
            [20.171]blk 137 is bad, skip to erase
            [20.175]blk 138 is bad, skip to erase
            [20.178]blk 139 is bad, skip to erase
            [20.182]blk 140 is bad, skip to erase
            [20.185]blk 141 is bad, skip to erase
            [20.188]blk 142 is bad, skip to erase
            [20.192]blk 143 is bad, skip to erase
            [20.195]blk 144 is bad, skip to erase
            [20.198]blk 145 is bad, skip to erase
            [20.202]blk 146 is bad, skip to erase
            [20.205]blk 147 is bad, skip to erase
            [20.209]blk 148 is bad, skip to erase
            [20.212]blk 149 is bad, skip to erase
            [20.215]blk 150 is bad, skip to erase
            [20.219]blk 151 is bad, skip to erase
            [20.222]blk 152 is bad, skip to erase
            [20.226]blk 153 is bad, skip to erase
            [20.229]blk 154 is bad, skip to erase
            [20.232]blk 155 is bad, skip to erase
            [20.236]blk 156 is bad, skip to erase
            [20.239]blk 157 is bad, skip to erase
            [20.242]blk 158 is bad, skip to erase
            [20.246]blk 159 is bad, skip to erase
            [20.249]blk 160 is bad, skip to erase
            [20.253]blk 161 is bad, skip to erase
            [20.256]blk 162 is bad, skip to erase
            [20.259]blk 163 is bad, skip to erase
            [20.263]blk 164 is bad, skip to erase
            [20.266]blk 165 is bad, skip to erase
            [20.269]blk 166 is bad, skip to erase
            [20.273]blk 167 is bad, skip to erase
            [20.276]blk 168 is bad, skip to erase
            [20.280]blk 169 is bad, skip to erase
            [20.283]blk 170 is bad, skip to erase
            [20.286]blk 171 is bad, skip to erase
            [20.290]blk 172 is bad, skip to erase
            [20.293]blk 173 is bad, skip to erase
            [20.296]blk 174 is bad, skip to erase
            [20.300]blk 175 is bad, skip to erase
            [20.303]blk 176 is bad, skip to erase
            [20.307]blk 177 is bad, skip to erase
            [20.310]blk 178 is bad, skip to erase
            [20.313]blk 179 is bad, skip to erase
            [20.317]blk 180 is bad, skip to erase
            [20.320]blk 181 is bad, skip to erase
            [20.323]blk 182 is bad, skip to erase
            [20.327]blk 183 is bad, skip to erase
            [20.330]blk 184 is bad, skip to erase
            [20.334]blk 185 is bad, skip to erase
            [20.337]blk 186 is bad, skip to erase
            [20.340]blk 187 is bad, skip to erase
            [20.344]blk 188 is bad, skip to erase
            [20.347]blk 189 is bad, skip to erase
            [20.351]blk 190 is bad, skip to erase
            [20.354]blk 191 is bad, skip to erase
            [20.357]blk 192 is bad, skip to erase
            [20.361]blk 193 is bad, skip to erase
            [20.364]blk 194 is bad, skip to erase
            [20.367]blk 195 is bad, skip to erase
            [20.371]blk 196 is bad, skip to erase
            [20.374]blk 197 is bad, skip to erase
            [20.378]blk 198 is bad, skip to erase
            [20.381]blk 199 is bad, skip to erase
            [20.384]blk 200 is bad, skip to erase
            [20.388]blk 201 is bad, skip to erase
            [20.391]blk 202 is bad, skip to erase
            [20.395]blk 203 is bad, skip to erase
            [20.398]blk 204 is bad, skip to erase
            [20.401]blk 205 is bad, skip to erase
            [20.405]blk 206 is bad, skip to erase
            [20.408]blk 207 is bad, skip to erase
            [20.411]blk 208 is bad, skip to erase
            [20.415]blk 209 is bad, skip to erase
            [20.418]blk 210 is bad, skip to erase
            [20.422]blk 211 is bad, skip to erase
            [20.425]blk 212 is bad, skip to erase
            [20.428]blk 213 is bad, skip to erase
            [20.432]blk 214 is bad, skip to erase
            [20.435]blk 215 is bad, skip to erase
            [20.438]blk 216 is bad, skip to erase
            [20.442]blk 217 is bad, skip to erase
            [20.445]blk 218 is bad, skip to erase
            [20.449]blk 219 is bad, skip to erase
            [20.452]blk 220 is bad, skip to erase
            [20.455]blk 221 is bad, skip to erase
            [20.459]blk 222 is bad, skip to erase
            [20.462]blk 223 is bad, skip to erase
            [20.465]blk 224 is bad, skip to erase
            [20.469]blk 225 is bad, skip to erase
            [20.472]blk 226 is bad, skip to erase
            [20.476]blk 227 is bad, skip to erase
            [20.479]blk 228 is bad, skip to erase
            [20.482]blk 229 is bad, skip to erase
            [20.486]blk 230 is bad, skip to erase
            [20.489]blk 231 is bad, skip to erase
            [20.492]blk 232 is bad, skip to erase
            [20.496]blk 233 is bad, skip to erase
            [20.499]blk 234 is bad, skip to erase
            [20.503]blk 235 is bad, skip to erase
            [20.506]blk 236 is bad, skip to erase
            [20.509]blk 237 is bad, skip to erase
            [20.513]blk 238 is bad, skip to erase
            [20.516]blk 239 is bad, skip to erase
            [20.520]blk 240 is bad, skip to erase
            [20.523]blk 241 is bad, skip to erase
            [20.526]blk 242 is bad, skip to erase
            [20.530]blk 243 is bad, skip to erase
            [20.533]blk 244 is bad, skip to erase
            [20.536]blk 245 is bad, skip to erase
            [20.540]blk 246 is bad, skip to erase
            [20.543]blk 247 is bad, skip to erase
            [20.547]blk 248 is bad, skip to erase
            [20.550]blk 249 is bad, skip to erase
            [20.553]blk 250 is bad, skip to erase
            [20.557]blk 251 is bad, skip to erase
            [20.560]blk 252 is bad, skip to erase
            [20.564]blk 253 is bad, skip to erase
            [20.567]blk 254 is bad, skip to erase
            [20.570]blk 255 is bad, skip to erase
            [20.574]blk 256 is bad, skip to erase
            [20.577]blk 257 is bad, skip to erase
            [20.580]blk 258 is bad, skip to erase
            [20.584]blk 259 is bad, skip to erase
            [20.587]blk 260 is bad, skip to erase
            [20.591]blk 261 is bad, skip to erase
            [20.594]blk 262 is bad, skip to erase
            [20.597]blk 263 is bad, skip to erase
            [20.601]blk 264 is bad, skip to erase
            [20.604]blk 265 is bad, skip to erase
            [20.607]blk 266 is bad, skip to erase
            [20.611]blk 267 is bad, skip to erase
            [20.614]blk 268 is bad, skip to erase
            [20.618]blk 269 is bad, skip to erase
            [20.621]blk 270 is bad, skip to erase
            [20.624]blk 271 is bad, skip to erase
            [20.628]blk 272 is bad, skip to erase
            [20.631]blk 273 is bad, skip to erase
            [20.634]blk 274 is bad, skip to erase
            [20.638]blk 275 is bad, skip to erase
            [20.641]blk 276 is bad, skip to erase
            [20.645]blk 277 is bad, skip to erase
            [20.648]blk 278 is bad, skip to erase
            [20.651]blk 279 is bad, skip to erase
            [20.655]blk 280 is bad, skip to erase
            [20.658]blk 281 is bad, skip to erase
            [20.661]blk 282 is bad, skip to erase
            [20.665]blk 283 is bad, skip to erase
            [20.668]blk 284 is bad, skip to erase
            [20.672]blk 285 is bad, skip to erase
            [20.675]blk 286 is bad, skip to erase
            [20.678]blk 287 is bad, skip to erase
            [20.682]blk 288 is bad, skip to erase
            [20.685]blk 289 is bad, skip to erase
            [20.689]blk 290 is bad, skip to erase
            [20.692]blk 291 is bad, skip to erase
            [20.695]blk 292 is bad, skip to erase
            [20.699]blk 293 is bad, skip to erase
            [20.702]blk 294 is bad, skip to erase
            [20.705]blk 295 is bad, skip to erase
            [20.709]blk 296 is bad, skip to erase
            [20.712]blk 297 is bad, skip to erase
            [20.716]blk 298 is bad, skip to erase
            [20.719]blk 299 is bad, skip to erase
            [20.722]blk 300 is bad, skip to erase
            [20.726]blk 301 is bad, skip to erase
            [20.729]blk 302 is bad, skip to erase
            [20.733]blk 303 is bad, skip to erase
            [20.736]blk 304 is bad, skip to erase
            [20.739]blk 305 is bad, skip to erase
            [20.743]blk 306 is bad, skip to erase
            [20.746]blk 307 is bad, skip to erase
            [20.749]blk 308 is bad, skip to erase
            [20.753]blk 309 is bad, skip to erase
            [20.756]blk 310 is bad, skip to erase
            [20.760]blk 311 is bad, skip to erase
            [20.763]blk 312 is bad, skip to erase
            [20.766]blk 313 is bad, skip to erase
            [20.770]blk 314 is bad, skip to erase
            [20.773]blk 315 is bad, skip to erase
            [20.776]blk 316 is bad, skip to erase
            [20.780]blk 317 is bad, skip to erase
            [20.783]blk 318 is bad, skip to erase
            [20.787]blk 319 is bad, skip to erase
            [20.790]blk 320 is bad, skip to erase
            [20.793]blk 321 is bad, skip to erase
            [20.797]blk 322 is bad, skip to erase
            [20.800]blk 323 is bad, skip to erase
            [20.803]blk 324 is bad, skip to erase
            [20.807]blk 325 is bad, skip to erase
            [20.810]blk 326 is bad, skip to erase
            [20.814]blk 327 is bad, skip to erase
            [20.817]blk 328 is bad, skip to erase
            [20.820]blk 329 is bad, skip to erase
            [20.824]blk 330 is bad, skip to erase
            [20.827]blk 331 is bad, skip to erase
            [20.830]blk 332 is bad, skip to erase
            [20.834]blk 333 is bad, skip to erase
            [20.837]blk 334 is bad, skip to erase
            [20.841]blk 335 is bad, skip to erase
            [20.844]blk 336 is bad, skip to erase
            [20.847]blk 337 is bad, skip to erase
            [20.851]blk 338 is bad, skip to erase
            [20.854]blk 339 is bad, skip to erase
            [20.858]blk 340 is bad, skip to erase
            [20.861]blk 341 is bad, skip to erase
            [20.864]blk 342 is bad, skip to erase
            [20.868]blk 343 is bad, skip to erase
            [20.871]blk 344 is bad, skip to erase
            [20.874]blk 345 is bad, skip to erase
            [20.878]blk 346 is bad, skip to erase
            [20.881]blk 347 is bad, skip to erase
            [20.885]blk 348 is bad, skip to erase
            [20.888]blk 349 is bad, skip to erase
            [20.891]blk 350 is bad, skip to erase
            [20.895]blk 351 is bad, skip to erase
            [20.898]blk 352 is bad, skip to erase
            [20.902]blk 353 is bad, skip to erase
            [20.905]blk 354 is bad, skip to erase
            [20.908]blk 355 is bad, skip to erase
            [20.912]blk 356 is bad, skip to erase
            [20.915]blk 357 is bad, skip to erase
            [20.918]blk 358 is bad, skip to erase
            [20.922]blk 359 is bad, skip to erase
            [20.925]blk 360 is bad, skip to erase
            [20.929]blk 361 is bad, skip to erase
            [20.932]blk 362 is bad, skip to erase
            [20.935]blk 363 is bad, skip to erase
            [20.939]blk 364 is bad, skip to erase
            [20.942]blk 365 is bad, skip to erase
            [20.945]blk 366 is bad, skip to erase
            [20.949]blk 367 is bad, skip to erase
            [20.952]blk 368 is bad, skip to erase
            [20.956]blk 369 is bad, skip to erase
            [20.959]blk 370 is bad, skip to erase
            [20.962]blk 371 is bad, skip to erase
            [20.966]blk 372 is bad, skip to erase
            [20.969]blk 373 is bad, skip to erase
            [20.972]blk 374 is bad, skip to erase
            [20.976]blk 375 is bad, skip to erase
            [20.979]blk 376 is bad, skip to erase
            [20.983]blk 377 is bad, skip to erase
            [20.986]blk 378 is bad, skip to erase
            [20.989]blk 379 is bad, skip to erase
            [20.993]blk 380 is bad, skip to erase
            [20.996]blk 381 is bad, skip to erase
            [20.999]blk 382 is bad, skip to erase
            [21.003]blk 383 is bad, skip to erase
            [21.006]blk 384 is bad, skip to erase
            [21.010]blk 385 is bad, skip to erase
            [21.013]blk 386 is bad, skip to erase
            [21.016]blk 387 is bad, skip to erase
            [21.020]blk 388 is bad, skip to erase
            [21.023]blk 389 is bad, skip to erase
            [21.027]blk 390 is bad, skip to erase
            [21.030]blk 391 is bad, skip to erase
            [21.033]blk 392 is bad, skip to erase
            [21.037]blk 393 is bad, skip to erase
            [21.040]blk 394 is bad, skip to erase
            [21.043]blk 395 is bad, skip to erase
            [21.047]blk 396 is bad, skip to erase
            [21.050]blk 397 is bad, skip to erase
            [21.054]blk 398 is bad, skip to erase
            [21.057]blk 399 is bad, skip to erase
            [21.060]blk 400 is bad, skip to erase
            [21.064]blk 401 is bad, skip to erase
            [21.067]blk 402 is bad, skip to erase
            [21.071]blk 403 is bad, skip to erase
            [21.074]blk 404 is bad, skip to erase
            [21.077]blk 405 is bad, skip to erase
            [21.081]blk 406 is bad, skip to erase
            [21.084]blk 407 is bad, skip to erase
            [21.087]blk 408 is bad, skip to erase
            [21.091]blk 409 is bad, skip to erase
            [21.094]blk 410 is bad, skip to erase
            [21.098]blk 411 is bad, skip to erase
            [21.101]blk 412 is bad, skip to erase
            [21.104]blk 413 is bad, skip to erase
            [21.108]blk 414 is bad, skip to erase
            [21.111]blk 415 is bad, skip to erase
            [21.114]blk 416 is bad, skip to erase
            [21.118]blk 417 is bad, skip to erase
            [21.121]blk 418 is bad, skip to erase
            [21.125]blk 419 is bad, skip to erase
            [21.128]blk 420 is bad, skip to erase
            [21.131]blk 421 is bad, skip to erase
            [21.135]blk 422 is bad, skip to erase
            [21.138]blk 423 is bad, skip to erase
            [21.141]blk 424 is bad, skip to erase
            [21.145]blk 425 is bad, skip to erase
            [21.148]blk 426 is bad, skip to erase
            [21.152]blk 427 is bad, skip to erase
            [21.155]blk 428 is bad, skip to erase
            [21.158]blk 429 is bad, skip to erase
            [21.162]blk 430 is bad, skip to erase
            [21.165]blk 431 is bad, skip to erase
            [21.168]blk 432 is bad, skip to erase
            [21.172]blk 433 is bad, skip to erase
            [21.175]blk 434 is bad, skip to erase
            [21.179]blk 435 is bad, skip to erase
            [21.182]blk 436 is bad, skip to erase
            [21.185]blk 437 is bad, skip to erase
            [21.189]blk 438 is bad, skip to erase
            [21.192]blk 439 is bad, skip to erase
            [21.196]blk 440 is bad, skip to erase
            [21.199]blk 441 is bad, skip to erase
            [21.202]blk 442 is bad, skip to erase
            [21.206]blk 443 is bad, skip to erase
            [21.209]blk 444 is bad, skip to erase
            [21.212]blk 445 is bad, skip to erase
            [21.216]blk 446 is bad, skip to erase
            [21.219]blk 447 is bad, skip to erase
            [21.223]blk 448 is bad, skip to erase
            [21.226]blk 449 is bad, skip to erase
            [21.229]blk 450 is bad, skip to erase
            [21.233]blk 451 is bad, skip to erase
            [21.236]blk 452 is bad, skip to erase
            [21.240]blk 453 is bad, skip to erase
            [21.243]blk 454 is bad, skip to erase
            [21.246]blk 455 is bad, skip to erase
            [21.250]blk 456 is bad, skip to erase
            [21.253]blk 457 is bad, skip to erase
            [21.256]blk 458 is bad, skip to erase
            [21.260]blk 459 is bad, skip to erase
            [21.263]blk 460 is bad, skip to erase
            [21.267]blk 461 is bad, skip to erase
            [21.270]blk 462 is bad, skip to erase
            [21.273]blk 463 is bad, skip to erase
            [21.277]blk 464 is bad, skip to erase
            [21.280]blk 465 is bad, skip to erase
            [21.283]blk 466 is bad, skip to erase
            [21.287]blk 467 is bad, skip to erase
            [21.290]blk 468 is bad, skip to erase
            [21.294]blk 469 is bad, skip to erase
            [21.297]blk 470 is bad, skip to erase
            [21.300]blk 471 is bad, skip to erase
            [21.304]blk 472 is bad, skip to erase
            [21.307]blk 473 is bad, skip to erase
            [21.310]blk 474 is bad, skip to erase
            [21.314]blk 475 is bad, skip to erase
            [21.317]blk 476 is bad, skip to erase
            [21.321]blk 477 is bad, skip to erase
            [21.324]blk 478 is bad, skip to erase
            [21.327]blk 479 is bad, skip to erase
            [21.331]blk 480 is bad, skip to erase
            [21.334]blk 481 is bad, skip to erase
            [21.337]blk 482 is bad, skip to erase
            [21.341]blk 483 is bad, skip to erase
            [21.344]blk 484 is bad, skip to erase
            [21.348]blk 485 is bad, skip to erase
            [21.351]blk 486 is bad, skip to erase
            [21.354]blk 487 is bad, skip to erase
            [21.358]blk 488 is bad, skip to erase
            [21.361]blk 489 is bad, skip to erase
            [21.365]blk 490 is bad, skip to erase
            [21.368]blk 491 is bad, skip to erase
            [21.371]blk 492 is bad, skip to erase
            [21.375]blk 493 is bad, skip to erase
            [21.378]blk 494 is bad, skip to erase
            [21.381]blk 495 is bad, skip to erase
            [21.385]blk 496 is bad, skip to erase
            [21.388]blk 497 is bad, skip to erase
            [21.392]blk 498 is bad, skip to erase
            [21.395]blk 499 is bad, skip to erase
            [21.398]blk 500 is bad, skip to erase
            [21.402]blk 501 is bad, skip to erase
            [21.405]blk 502 is bad, skip to erase
            [21.409]blk 503 is bad, skip to erase
            [21.412]blk 504 is bad, skip to erase
            [21.415]blk 505 is bad, skip to erase
            [21.419]blk 506 is bad, skip to erase
            [21.422]blk 507 is bad, skip to erase
            [21.425]blk 508 is bad, skip to erase
            [21.429]blk 509 is bad, skip to erase
            [21.432]blk 510 is bad, skip to erase
            [21.436]blk 511 is bad, skip to erase
            [21.439]blk 512 is bad, skip to erase
            [21.442]blk 513 is bad, skip to erase
            [21.446]blk 514 is bad, skip to erase
            [21.449]blk 515 is bad, skip to erase
            [21.452]blk 516 is bad, skip to erase
            [21.456]blk 517 is bad, skip to erase
            [21.459]blk 518 is bad, skip to erase
            [21.463]blk 519 is bad, skip to erase
            [21.466]blk 520 is bad, skip to erase
            [21.469]blk 521 is bad, skip to erase
            [21.473]blk 522 is bad, skip to erase
            [21.476]blk 523 is bad, skip to erase
            [21.479]blk 524 is bad, skip to erase
            [21.483]blk 525 is bad, skip to erase
            [21.486]blk 526 is bad, skip to erase
            [21.490]blk 527 is bad, skip to erase
            [21.493]blk 528 is bad, skip to erase
            [21.496]blk 529 is bad, skip to erase
            [21.500]blk 530 is bad, skip to erase
            [21.503]blk 531 is bad, skip to erase
            [21.506]blk 532 is bad, skip to erase
            [21.510]blk 533 is bad, skip to erase
            [21.513]blk 534 is bad, skip to erase
            [21.517]blk 535 is bad, skip to erase
            [21.520]blk 536 is bad, skip to erase
            [21.523]blk 537 is bad, skip to erase
            [21.527]blk 538 is bad, skip to erase
            [21.530]blk 539 is bad, skip to erase
            [21.534]blk 540 is bad, skip to erase
            [21.537]blk 541 is bad, skip to erase
            [21.540]blk 542 is bad, skip to erase
            [21.544]blk 543 is bad, skip to erase
            [21.547]blk 544 is bad, skip to erase
            [21.550]blk 545 is bad, skip to erase
            [21.554]blk 546 is bad, skip to erase
            [21.557]blk 547 is bad, skip to erase
            [21.561]blk 548 is bad, skip to erase
            [21.564]blk 549 is bad, skip to erase
            [21.567]blk 550 is bad, skip to erase
            [21.571]blk 551 is bad, skip to erase
            [21.574]blk 552 is bad, skip to erase
            [21.578]blk 553 is bad, skip to erase
            [21.581]blk 554 is bad, skip to erase
            [21.584]blk 555 is bad, skip to erase
            [21.588]blk 556 is bad, skip to erase
            [21.591]blk 557 is bad, skip to erase
            [21.594]blk 558 is bad, skip to erase
            [21.598]blk 559 is bad, skip to erase
            [21.601]blk 560 is bad, skip to erase
            [21.605]blk 561 is bad, skip to erase
            [21.608]blk 562 is bad, skip to erase
            [21.611]blk 563 is bad, skip to erase
            [21.615]blk 564 is bad, skip to erase
            [21.618]blk 565 is bad, skip to erase
            [21.621]blk 566 is bad, skip to erase
            [21.625]blk 567 is bad, skip to erase
            [21.628]blk 568 is bad, skip to erase
            [21.632]blk 569 is bad, skip to erase
            [21.635]blk 570 is bad, skip to erase
            [21.638]blk 571 is bad, skip to erase
            [21.642]blk 572 is bad, skip to erase
            [21.645]blk 573 is bad, skip to erase
            [21.648]blk 574 is bad, skip to erase
            [21.652]blk 575 is bad, skip to erase
            [21.655]blk 576 is bad, skip to erase
            [21.659]blk 577 is bad, skip to erase
            [21.662]blk 578 is bad, skip to erase
            [21.665]blk 579 is bad, skip to erase
            [21.669]blk 580 is bad, skip to erase
            [21.672]blk 581 is bad, skip to erase
            [21.675]blk 582 is bad, skip to erase
            [21.679]blk 583 is bad, skip to erase
            [21.682]blk 584 is bad, skip to erase
            [21.686]blk 585 is bad, skip to erase
            [21.689]blk 586 is bad, skip to erase
            [21.692]blk 587 is bad, skip to erase
            [21.696]blk 588 is bad, skip to erase
            [21.699]blk 589 is bad, skip to erase
            [21.703]blk 590 is bad, skip to erase
            [21.706]blk 591 is bad, skip to erase
            [21.709]blk 592 is bad, skip to erase
            [21.713]blk 593 is bad, skip to erase
            [21.716]blk 594 is bad, skip to erase
            [21.719]blk 595 is bad, skip to erase
            [21.723]blk 596 is bad, skip to erase
            [21.726]blk 597 is bad, skip to erase
            [21.730]blk 598 is bad, skip to erase
            [21.733]blk 599 is bad, skip to erase
            [21.736]blk 600 is bad, skip to erase
            [21.740]blk 601 is bad, skip to erase
            [21.743]blk 602 is bad, skip to erase
            [21.747]blk 603 is bad, skip to erase
            [21.750]blk 604 is bad, skip to erase
            [21.753]blk 605 is bad, skip to erase
            [21.757]blk 606 is bad, skip to erase
            [21.760]blk 607 is bad, skip to erase
            [21.763]blk 608 is bad, skip to erase
            [21.767]blk 609 is bad, skip to erase
            [21.770]blk 610 is bad, skip to erase
            [21.774]blk 611 is bad, skip to erase
            [21.777]blk 612 is bad, skip to erase
            [21.780]blk 613 is bad, skip to erase
            [21.784]blk 614 is bad, skip to erase
            [21.787]blk 615 is bad, skip to erase
            [21.790]blk 616 is bad, skip to erase
            [21.794]blk 617 is bad, skip to erase
            [21.797]blk 618 is bad, skip to erase
            [21.801]blk 619 is bad, skip to erase
            [21.804]blk 620 is bad, skip to erase
            [21.807]blk 621 is bad, skip to erase
            [21.811]blk 622 is bad, skip to erase
            [21.814]blk 623 is bad, skip to erase
            [21.817]blk 624 is bad, skip to erase
            [21.821]blk 625 is bad, skip to erase
            [21.824]blk 626 is bad, skip to erase
            [21.828]blk 627 is bad, skip to erase
            [21.831]blk 628 is bad, skip to erase
            [21.834]blk 629 is bad, skip to erase
            [21.838]blk 630 is bad, skip to erase
            [21.841]blk 631 is bad, skip to erase
            [21.844]blk 632 is bad, skip to erase
            [21.848]blk 633 is bad, skip to erase
            [21.851]blk 634 is bad, skip to erase
            [21.855]blk 635 is bad, skip to erase
            [21.858]blk 636 is bad, skip to erase
            [21.861]blk 637 is bad, skip to erase
            [21.865]blk 638 is bad, skip to erase
            [21.868]blk 639 is bad, skip to erase
            [21.872]blk 640 is bad, skip to erase
            [21.875]blk 641 is bad, skip to erase
            [21.878]blk 642 is bad, skip to erase
            [21.882]blk 643 is bad, skip to erase
            [21.885]blk 644 is bad, skip to erase
            [21.888]blk 645 is bad, skip to erase
            [21.892]blk 646 is bad, skip to erase
            [21.895]blk 647 is bad, skip to erase
            [21.899]blk 648 is bad, skip to erase
            [21.902]blk 649 is bad, skip to erase
            [21.905]blk 650 is bad, skip to erase
            [21.909]blk 651 is bad, skip to erase
            [21.912]blk 652 is bad, skip to erase
            [21.916]blk 653 is bad, skip to erase
            [21.919]blk 654 is bad, skip to erase
            [21.922]blk 655 is bad, skip to erase
            [21.926]blk 656 is bad, skip to erase
            [21.929]blk 657 is bad, skip to erase
            [21.932]blk 658 is bad, skip to erase
            [21.936]blk 659 is bad, skip to erase
            [21.939]blk 660 is bad, skip to erase
            [21.943]blk 661 is bad, skip to erase
            [21.946]blk 662 is bad, skip to erase
            [21.949]blk 663 is bad, skip to erase
            [21.953]blk 664 is bad, skip to erase
            [21.956]blk 665 is bad, skip to erase
            [21.959]blk 666 is bad, skip to erase
            [21.963]blk 667 is bad, skip to erase
            [21.966]blk 668 is bad, skip to erase
            [21.970]blk 669 is bad, skip to erase
            [21.973]blk 670 is bad, skip to erase
            [21.976]blk 671 is bad, skip to erase
            [21.980]blk 672 is bad, skip to erase
            [21.983]blk 673 is bad, skip to erase
            [21.986]blk 674 is bad, skip to erase
            [21.990]blk 675 is bad, skip to erase
            [21.993]blk 676 is bad, skip to erase
            [21.997]blk 677 is bad, skip to erase
            [22.000]blk 678 is bad, skip to erase
            [22.003]blk 679 is bad, skip to erase
            [22.007]blk 680 is bad, skip to erase
            [22.010]blk 681 is bad, skip to erase
            [22.013]blk 682 is bad, skip to erase
            [22.017]blk 683 is bad, skip to erase
            [22.020]blk 684 is bad, skip to erase
            [22.024]blk 685 is bad, skip to erase
            [22.027]blk 686 is bad, skip to erase
            [22.030]blk 687 is bad, skip to erase
            [22.034]blk 688 is bad, skip to erase
            [22.037]blk 689 is bad, skip to erase
            [22.041]blk 690 is bad, skip to erase
            [22.044]blk 691 is bad, skip to erase
            [22.047]blk 692 is bad, skip to erase
            [22.051]blk 693 is bad, skip to erase
            [22.054]blk 694 is bad, skip to erase
            [22.057]blk 695 is bad, skip to erase
            [22.061]blk 696 is bad, skip to erase
            [22.064]blk 697 is bad, skip to erase
            [22.068]blk 698 is bad, skip to erase
            [22.071]blk 699 is bad, skip to erase
            [22.074]blk 700 is bad, skip to erase
            [22.078]blk 701 is bad, skip to erase
            [22.081]blk 702 is bad, skip to erase
            [22.085]blk 703 is bad, skip to erase
            [22.088]blk 704 is bad, skip to erase
            [22.091]blk 705 is bad, skip to erase
            [22.095]blk 706 is bad, skip to erase
            [22.098]blk 707 is bad, skip to erase
            [22.101]blk 708 is bad, skip to erase
            [22.105]blk 709 is bad, skip to erase
            [22.108]blk 710 is bad, skip to erase
            [22.112]blk 711 is bad, skip to erase
            [22.115]blk 712 is bad, skip to erase
            [22.118]blk 713 is bad, skip to erase
            [22.122]blk 714 is bad, skip to erase
            [22.125]blk 715 is bad, skip to erase
            [22.128]blk 716 is bad, skip to erase
            [22.132]blk 717 is bad, skip to erase
            [22.135]blk 718 is bad, skip to erase
            [22.139]blk 719 is bad, skip to erase
            [22.142]blk 720 is bad, skip to erase
            [22.145]blk 721 is bad, skip to erase
            [22.149]blk 722 is bad, skip to erase
            [22.152]blk 723 is bad, skip to erase
            [22.155]blk 724 is bad, skip to erase
            [22.159]blk 725 is bad, skip to erase
            [22.162]blk 726 is bad, skip to erase
            [22.166]blk 727 is bad, skip to erase
            [22.169]blk 728 is bad, skip to erase
            [22.172]blk 729 is bad, skip to erase
            [22.176]blk 730 is bad, skip to erase
            [22.179]blk 731 is bad, skip to erase
            [22.182]blk 732 is bad, skip to erase
            [22.186]blk 733 is bad, skip to erase
            [22.189]blk 734 is bad, skip to erase
            [22.193]blk 735 is bad, skip to erase
            [22.196]blk 736 is bad, skip to erase
            [22.199]blk 737 is bad, skip to erase
            [22.203]blk 738 is bad, skip to erase
            [22.206]blk 739 is bad, skip to erase
            [22.210]blk 740 is bad, skip to erase
            [22.213]blk 741 is bad, skip to erase
            [22.216]blk 742 is bad, skip to erase
            [22.220]blk 743 is bad, skip to erase
            [22.223]blk 744 is bad, skip to erase
            [22.226]blk 745 is bad, skip to erase
            [22.230]blk 746 is bad, skip to erase
            [22.233]blk 747 is bad, skip to erase
            [22.237]blk 748 is bad, skip to erase
            [22.240]blk 749 is bad, skip to erase
            [22.243]blk 750 is bad, skip to erase
            [22.247]blk 751 is bad, skip to erase
            [22.250]blk 752 is bad, skip to erase
            [22.254]blk 753 is bad, skip to erase
            [22.257]blk 754 is bad, skip to erase
            [22.260]blk 755 is bad, skip to erase
            [22.264]blk 756 is bad, skip to erase
            [22.267]blk 757 is bad, skip to erase
            [22.270]blk 758 is bad, skip to erase
            [22.274]blk 759 is bad, skip to erase
            [22.277]blk 760 is bad, skip to erase
            [22.281]blk 761 is bad, skip to erase
            [22.284]blk 762 is bad, skip to erase
            [22.287]blk 763 is bad, skip to erase
            [22.291]blk 764 is bad, skip to erase
            [22.294]blk 765 is bad, skip to erase
            [22.297]blk 766 is bad, skip to erase
            [22.301]blk 767 is bad, skip to erase
            [22.304]blk 768 is bad, skip to erase
            [22.308]blk 769 is bad, skip to erase
            [22.311]blk 770 is bad, skip to erase
            [22.314]blk 771 is bad, skip to erase
            [22.318]blk 772 is bad, skip to erase
            [22.321]blk 773 is bad, skip to erase
            [22.324]blk 774 is bad, skip to erase
            [22.328]blk 775 is bad, skip to erase
            [22.331]blk 776 is bad, skip to erase
            [22.335]blk 777 is bad, skip to erase
            [22.338]blk 778 is bad, skip to erase
            [22.341]blk 779 is bad, skip to erase
            [22.345]blk 780 is bad, skip to erase
            [22.348]blk 781 is bad, skip to erase
            [22.351]blk 782 is bad, skip to erase
            [22.355]blk 783 is bad, skip to erase
            [22.358]blk 784 is bad, skip to erase
            [22.362]blk 785 is bad, skip to erase
            [22.365]blk 786 is bad, skip to erase
            [22.368]blk 787 is bad, skip to erase
            [22.372]blk 788 is bad, skip to erase
            [22.375]blk 789 is bad, skip to erase
            [22.379]blk 790 is bad, skip to erase
            [22.382]blk 791 is bad, skip to erase
            [22.385]blk 792 is bad, skip to erase
            [22.389]blk 793 is bad, skip to erase
            [22.392]blk 794 is bad, skip to erase
            [22.395]blk 795 is bad, skip to erase
            [22.399]blk 796 is bad, skip to erase
            [22.402]blk 797 is bad, skip to erase
            [22.406]blk 798 is bad, skip to erase
            [22.409]blk 799 is bad, skip to erase
            [22.412]blk 800 is bad, skip to erase
            [22.416]blk 801 is bad, skip to erase
            [22.419]blk 802 is bad, skip to erase
            [22.423]blk 803 is bad, skip to erase
            [22.426]blk 804 is bad, skip to erase
            [22.429]blk 805 is bad, skip to erase
            [22.433]blk 806 is bad, skip to erase
            [22.436]blk 807 is bad, skip to erase
            [22.439]blk 808 is bad, skip to erase
            [22.443]blk 809 is bad, skip to erase
            [22.446]blk 810 is bad, skip to erase
            [22.450]blk 811 is bad, skip to erase
            [22.453]blk 812 is bad, skip to erase
            [22.456]blk 813 is bad, skip to erase
            [22.460]blk 814 is bad, skip to erase
            [22.463]blk 815 is bad, skip to erase
            [22.466]blk 816 is bad, skip to erase
            [22.470]blk 817 is bad, skip to erase
            [22.473]blk 818 is bad, skip to erase
            [22.477]blk 819 is bad, skip to erase
            [22.480]blk 820 is bad, skip to erase
            [22.483]blk 821 is bad, skip to erase
            [22.487]blk 822 is bad, skip to erase
            [22.490]blk 823 is bad, skip to erase
            [22.493]blk 824 is bad, skip to erase
            [22.497]blk 825 is bad, skip to erase
            [22.500]blk 826 is bad, skip to erase
            [22.504]blk 827 is bad, skip to erase
            [22.507]blk 828 is bad, skip to erase
            [22.510]blk 829 is bad, skip to erase
            [22.514]blk 830 is bad, skip to erase
            [22.517]blk 831 is bad, skip to erase
            [22.520]blk 832 is bad, skip to erase
            [22.524]blk 833 is bad, skip to erase
            [22.527]blk 834 is bad, skip to erase
            [22.531]blk 835 is bad, skip to erase
            [22.534]blk 836 is bad, skip to erase
            [22.537]blk 837 is bad, skip to erase
            [22.541]blk 838 is bad, skip to erase
            [22.544]blk 839 is bad, skip to erase
            [22.548]blk 840 is bad, skip to erase
            [22.551]blk 841 is bad, skip to erase
            [22.554]blk 842 is bad, skip to erase
            [22.558]blk 843 is bad, skip to erase
            [22.561]blk 844 is bad, skip to erase
            [22.564]blk 845 is bad, skip to erase
            [22.568]blk 846 is bad, skip to erase
            [22.571]blk 847 is bad, skip to erase
            [22.575]blk 848 is bad, skip to erase
            [22.578]blk 849 is bad, skip to erase
            [22.581]blk 850 is bad, skip to erase
            [22.585]blk 851 is bad, skip to erase
            [22.588]blk 852 is bad, skip to erase
            [22.592]blk 853 is bad, skip to erase
            [22.595]blk 854 is bad, skip to erase
            [22.598]blk 855 is bad, skip to erase
            [22.602]blk 856 is bad, skip to erase
            [22.605]blk 857 is bad, skip to erase
            [22.608]blk 858 is bad, skip to erase
            [22.612]blk 859 is bad, skip to erase
            [22.615]blk 860 is bad, skip to erase
            [22.619]blk 861 is bad, skip to erase
            [22.622]blk 862 is bad, skip to erase
            [22.625]blk 863 is bad, skip to erase
            [22.629]blk 864 is bad, skip to erase
            [22.632]blk 865 is bad, skip to erase
            [22.635]blk 866 is bad, skip to erase
            [22.639]blk 867 is bad, skip to erase
            [22.642]blk 868 is bad, skip to erase
            [22.646]blk 869 is bad, skip to erase
            [22.649]blk 870 is bad, skip to erase
            [22.652]blk 871 is bad, skip to erase
            [22.656]blk 872 is bad, skip to erase
            [22.659]blk 873 is bad, skip to erase
            [22.662]blk 874 is bad, skip to erase
            [22.666]blk 875 is bad, skip to erase
            [22.669]blk 876 is bad, skip to erase
            [22.673]blk 877 is bad, skip to erase
            [22.676]blk 878 is bad, skip to erase
            [22.679]blk 879 is bad, skip to erase
            [22.683]blk 880 is bad, skip to erase
            [22.686]blk 881 is bad, skip to erase
            [22.689]blk 882 is bad, skip to erase
            [22.693]blk 883 is bad, skip to erase
            [22.696]blk 884 is bad, skip to erase
            [22.700]blk 885 is bad, skip to erase
            [22.703]blk 886 is bad, skip to erase
            [22.706]blk 887 is bad, skip to erase
            [22.710]blk 888 is bad, skip to erase
            [22.713]blk 889 is bad, skip to erase
            [22.717]blk 890 is bad, skip to erase
            [22.720]blk 891 is bad, skip to erase
            [22.723]blk 892 is bad, skip to erase
            [22.727]blk 893 is bad, skip to erase
            [22.730]blk 894 is bad, skip to erase
            [22.733]blk 895 is bad, skip to erase
            [22.737]blk 896 is bad, skip to erase
            [22.740]blk 897 is bad, skip to erase
            [22.744]blk 898 is bad, skip to erase
            [22.747]blk 899 is bad, skip to erase
            [22.750]blk 900 is bad, skip to erase
            [22.754]blk 901 is bad, skip to erase
            [22.757]blk 902 is bad, skip to erase
            [22.761]blk 903 is bad, skip to erase
            [22.764]blk 904 is bad, skip to erase
            [22.767]blk 905 is bad, skip to erase
            [22.771]blk 906 is bad, skip to erase
            [22.774]blk 907 is bad, skip to erase
            [22.777]blk 908 is bad, skip to erase
            [22.781]blk 909 is bad, skip to erase
            [22.784]blk 910 is bad, skip to erase
            [22.788]blk 911 is bad, skip to erase
            [22.791]blk 912 is bad, skip to erase
            [22.794]blk 913 is bad, skip to erase
            [22.798]blk 914 is bad, skip to erase
            [22.801]blk 915 is bad, skip to erase
            [22.804]blk 916 is bad, skip to erase
            [22.808]blk 917 is bad, skip to erase
            [22.811]blk 918 is bad, skip to erase
            [22.815]blk 919 is bad, skip to erase
            [22.818]blk 920 is bad, skip to erase
            [22.821]blk 921 is bad, skip to erase
            [22.825]blk 922 is bad, skip to erase
            [22.828]blk 923 is bad, skip to erase
            [22.831]blk 924 is bad, skip to erase
            [22.835]blk 925 is bad, skip to erase
            [22.838]blk 926 is bad, skip to erase
            [22.842]blk 927 is bad, skip to erase
            [22.845]blk 928 is bad, skip to erase
            [22.848]blk 929 is bad, skip to erase
            [22.852]blk 930 is bad, skip to erase
            [22.855]blk 931 is bad, skip to erase
            [22.858]blk 932 is bad, skip to erase
            [22.862]blk 933 is bad, skip to erase
            [22.865]blk 934 is bad, skip to erase
            [22.869]blk 935 is bad, skip to erase
            [22.872]blk 936 is bad, skip to erase
            [22.875]blk 937 is bad, skip to erase
            [22.879]blk 938 is bad, skip to erase
            [22.882]blk 939 is bad, skip to erase
            [22.886]blk 940 is bad, skip to erase
            [22.889]blk 941 is bad, skip to erase
            [22.892]blk 942 is bad, skip to erase
            [22.896]blk 943 is bad, skip to erase
            [22.899]blk 944 is bad, skip to erase
            [22.902]blk 945 is bad, skip to erase
            [22.906]blk 946 is bad, skip to erase
            [22.909]blk 947 is bad, skip to erase
            [22.913]blk 948 is bad, skip to erase
            [22.916]blk 949 is bad, skip to erase
            [22.919]blk 950 is bad, skip to erase
            [22.923]blk 951 is bad, skip to erase
            [22.926]blk 952 is bad, skip to erase
            [22.930]blk 953 is bad, skip to erase
            [22.933]blk 954 is bad, skip to erase
            [22.936]blk 955 is bad, skip to erase
            [22.940]blk 956 is bad, skip to erase
            [22.943]blk 957 is bad, skip to erase
            [22.946]blk 958 is bad, skip to erase
            [22.950]blk 959 is bad, skip to erase
            [22.953]blk 960 is bad, skip to erase
            [22.957]blk 961 is bad, skip to erase
            [22.960]blk 962 is bad, skip to erase
            [22.963]blk 963 is bad, skip to erase
            [22.967]blk 964 is bad, skip to erase
            [22.970]blk 965 is bad, skip to erase
            [22.973]blk 966 is bad, skip to erase
            [22.977]blk 967 is bad, skip to erase
            [22.980]blk 968 is bad, skip to erase
            [22.984]blk 969 is bad, skip to erase
            [22.987]blk 970 is bad, skip to erase
            [22.990]blk 971 is bad, skip to erase
            [22.994]blk 972 is bad, skip to erase
            [22.997]blk 973 is bad, skip to erase
            [23.000]blk 974 is bad, skip to erase
            [23.004]blk 975 is bad, skip to erase
            [23.007]blk 976 is bad, skip to erase
            [23.011]blk 977 is bad, skip to erase
            [23.014]blk 978 is bad, skip to erase
            [23.017]blk 979 is bad, skip to erase
            [23.021]blk 980 is bad, skip to erase
            [23.024]blk 981 is bad, skip to erase
            [23.027]blk 982 is bad, skip to erase
            [23.031]blk 983 is bad, skip to erase
            [23.034]blk 984 is bad, skip to erase
            [23.038]blk 985 is bad, skip to erase
            [23.041]blk 986 is bad, skip to erase
            [23.044]blk 987 is bad, skip to erase
            [23.048]blk 988 is bad, skip to erase
            [23.051]blk 989 is bad, skip to erase
            [23.055]blk 990 is bad, skip to erase
            [23.058]blk 991 is bad, skip to erase
            [23.061]blk 992 is bad, skip to erase
            [23.065]blk 993 is bad, skip to erase
            [23.068]blk 994 is bad, skip to erase
            [23.071]blk 995 is bad, skip to erase
            [23.075]blk 996 is bad, skip to erase
            [23.078]blk 997 is bad, skip to erase
            [23.082]blk 998 is bad, skip to erase
            [23.085]blk 999 is bad, skip to erase
            [23.088]blk 1000 is bad, skip to erase
            [23.092]blk 1001 is bad, skip to erase
            [23.095]blk 1002 is bad, skip to erase
            [23.099]blk 1003 is bad, skip to erase
            [23.102]blk 1004 is bad, skip to erase
            [23.106]blk 1005 is bad, skip to erase
            [23.109]blk 1006 is bad, skip to erase
            [23.113]blk 1007 is bad, skip to erase
            [23.116]blk 1008 is bad, skip to erase
            [23.120]blk 1009 is bad, skip to erase
            [23.123]blk 1010 is bad, skip to erase
            [23.127]blk 1011 is bad, skip to erase
            [23.130]blk 1012 is bad, skip to erase
            [23.133]blk 1013 is bad, skip to erase
            [23.137]blk 1014 is bad, skip to erase
            [23.140]blk 1015 is bad, skip to erase
            [23.144]blk 1016 is bad, skip to erase
            [23.147]blk 1017 is bad, skip to erase
            [23.151]blk 1018 is bad, skip to erase
            [23.154]blk 1019 is bad, skip to erase
            [23.158]blk 1020 is bad, skip to erase
            [23.161]blk 1021 is bad, skip to erase
            [23.165]blk 1022 is bad, skip to erase
            [23.168]blk 1023 is bad, skip to erase
            [23.172]sunxi-spinand: no enough good blk between [40 40) for secure storage
            [23.178]get secure storage map err
            [23.182]sunxi-spinand: no enough good blk between [40 40) for secure storage
            [23.188]erase secure storage block 0 err
            SUNXI_EFEX_MBR_TAG
            mbr size = 0x10000
            force mbr
            
            device nand0 <nand>, # parts = 4
             #: name                size            offset          mask_flags
             0: boot0               0x00100000      0x00000000      1
             1: uboot               0x00300000      0x00100000      1
             2: secure_storage      0x00100000      0x00400000      1
             3: sys                 0x07b00000      0x00500000      0
            
            active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
            
            defaults:
            mtdids  : nand0=nand
            mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
            [23.243]MTD info (4)
            [23.245]pagesize: 0x1000
            [23.247]blksize: 0x40000
            [23.249]num  offset     bytes      name
            [23.253]0    0x00000000 0x00100000 boot0
            [23.256]1    0x00100000 0x00300000 uboot
            [23.260]2    0x00400000 0x00100000 secure_storage
            [23.265]3    0x00500000 0x07b00000 sys
            [23.268]MBR info (unalign):
            [23.271]partno   addr       sects      type       name
            [23.275]0        0x00000000 0x00008000 0x00000001 mbr
            [23.280]1        0x00008000 0x000001f8 0x00008000 boot-resource
            [23.286]2        0x000081f8 0x000001f8 0x00008000 env
            [23.291]3        0x000083f0 0x000001f8 0x00008000 env-redund
            [23.296]4        0x000085e8 0x00005000 0x00008000 boot
            [23.301]5        0x0000d5e8 0x0000be00 0x00008000 rootfs
            [23.306]6        0x000193e8 0x00005780 0x00008000 recovery
            [23.311]7        0x0001eb68 0x00002800 0x00008000 rootfs_data
            [23.316]8        0x00021368 0x00000000 0x00000000 UDISK
            [23.321]ubi attach the last part of mtd device: NO.3
            [23.326]MBR info (align):
            [23.328]partno   addr       sects      type       name
            [23.333]0        0x00002800 0x000081f0 0x00000001 mbr
            [23.338]1        0x0000a9f0 0x000001f8 0x00008000 boot-resource
            [23.344]2        0x0000abe8 0x000001f8 0x00008000 env
            [23.348]3        0x0000ade0 0x000001f8 0x00008000 env-redund
            [23.354]4        0x0000afd8 0x000050b8 0x00008000 boot
            [23.359]5        0x00010090 0x0000bef8 0x00008000 rootfs
            [23.364]6        0x0001bf88 0x00005898 0x00008000 recovery
            [23.369]7        0x00021820 0x00002958 0x00008000 rootfs_data
            [23.374]8        0x00024178 0x00000000 0x00000000 UDISK
            [23.379]ubi attach the last part of mtd device: NO.3
            [23.384]ubi attatch mtd, name: sys
            
            [23.387]ubi0: attaching mtd4
            [23.401]ubi0: scanning is finished
            [23.404]ubi0: empty MTD device detected
            [23.410]ubi0 error: ubi_early_get_peb: no free eraseblocks
            [23.415]ubi0 error: ubi_attach_mtd_dev: failed to attach mtd4, error -28
            [23.422]UBI error: cannot attach mtd4
            [23.425]UBI error: cannot initialize UBI, error -28
            UBI init error 28
            Please check, if the correct MTD partition is used (size big enough?)
            [23.438]ubi part sys err !
            [23.440]initialize sunxi spinand ubi failed
            download_standard_gpt:write mbr sectors fail ret = 0
            

            检测到了 GD5F1GQ4UBYIG,然而还是不行:

            [12.523]sunxi-spinand-phy: detect munufacture from id table: GD
            [12.529]sunxi-spinand-phy: detect spinand id: ffffd1c8 ffffffff
            [12.534]sunxi-spinand-phy: ========== arch info ==========
            [12.540]sunxi-spinand-phy: Model:               GD5F1GQ4UBYIG
            [12.545]sunxi-spinand-phy: Munufacture:         GD
            [12.550]sunxi-spinand-phy: DieCntPerChip:       1
            [12.554]sunxi-spinand-phy: BlkCntPerDie:        1024
            [12.559]sunxi-spinand-phy: PageCntPerBlk:       64
            [12.563]sunxi-spinand-phy: SectCntPerPage:      4
            [12.568]sunxi-spinand-phy: OobSizePerPage:      64
            [12.572]sunxi-spinand-phy: BadBlockFlag:        0x0
            [12.577]sunxi-spinand-phy: OperationOpt:        0x7
            [12.581]sunxi-spinand-phy: MaxEraseTimes:       50000
            [12.586]sunxi-spinand-phy: EccFlag:             0x1
            [12.591]sunxi-spinand-phy: EccType:             7
            [12.595]sunxi-spinand-phy: EccProtectedType:    4
            [12.600]sunxi-spinand-phy: ========================================
            [12.606]sunxi-spinand-phy:
            [12.608]sunxi-spinand-phy: ========== physical info ==========
            [12.614]sunxi-spinand-phy: TotalSize:    128 M
            [12.618]sunxi-spinand-phy: SectorSize:   512 B
            [12.622]sunxi-spinand-phy: PageSize:     2 K
            [12.626]sunxi-spinand-phy: BlockSize:    128 K
            [12.630]sunxi-spinand-phy: OOBSize:      64 B
            [12.634]sunxi-spinand-phy: ========================================
            [12.640]sunxi-spinand-phy:
            [12.643]sunxi-spinand-phy: ========== logical info ==========
            [12.648]sunxi-spinand-phy: TotalSize:    128 M
            [12.652]sunxi-spinand-phy: SectorSize:   512 B
            [12.656]sunxi-spinand-phy: PageSize:     4 K
            [12.660]sunxi-spinand-phy: BlockSize:    256 K
            [12.665]sunxi-spinand-phy: OOBSize:      128 B
            [12.669]sunxi-spinand-phy: ========================================
            [12.685]sunxi-spinand-phy: set spic0 clk to 100 Mhz
            [12.690]sunxi-spinand-phy: block lock register: 0x80
            [12.694]sunxi-spinand-phy: feature register: 0x08
            [12.699]sunxi-spinand-phy: sunxi physic nand init end
            [12.709]Loading Environment from SUNXI_FLASH... OK
            

            17d5e76a-e4f7-4668-91bb-14900b2906ff-image.png

            1 条回复 最后回复 回复 引用 分享 0
            • tigger
              tigger LV 7 最后由 编辑

              7e9338cb-c01b-4e4c-9a6c-5bbfe0042899-3541e3b2af7176e7712f32422b6db46.jpg

              又翻出一片 MX35LF1GE4AB,看了 id.c 是支持的,换上试一试。

              1 条回复 最后回复 回复 引用 分享 0
              • tigger
                tigger LV 7 最后由 编辑

                [53]HELLO! BOOT0 is starting!
                [56]BOOT0 commit : 553a5eb
                [59]set pll start
                [61]periph0 has been enabled
                [64]set pll end
                [65][pmu]: bus read error
                [67]board init ok
                [69]rtc[2] value = 0x5aa5a55a
                [72]eraly jump fel
                [868]fes begin commit:553a5eb
                [871]set pll start
                [873]periph0 has been enabled
                [876]set pll end
                [877][pmu]: bus read error
                [880]board init ok
                [882]beign to init dram
                [884]ZQ value = 0x2f
                [886]get_pmu_exist() = -1
                [888]ddr_efuse_type: 0xa
                [891]mark_id: 0x5c
                [892]trefi:7.8ms
                [895][AUTO DEBUG] single rank and full DQ!
                [898]ddr_efuse_type: 0xa
                [901]mark_id: 0x5c
                [902]trefi:7.8ms
                [905][AUTO DEBUG] rank 0 row = 13
                [908][AUTO DEBUG] rank 0 bank = 4
                [911][AUTO DEBUG] rank 0 page size = 2 KB
                [915]DRAM BOOT DRIVE INFO: V0.32
                [918]DRAM CLK = 408 MHz
                [920]DRAM Type = 2 (2:DDR2,3:DDR3)
                [923]DRAMC read ODT  off.
                [925]DRAM ODT off.
                [927]ddr_efuse_type: 0xa
                [930]mark_id: 0x5c
                [932]DRAM SIZE =64 M
                [934]PLL_DDR_CTRL_REG:0xf9002100
                [937]DRAM_CLK_REG:0xc0000000
                [939][TIMING DEBUG] MR2= 0x0
                [944]DRAM simple test OK.
                [947]init dram ok
                
                
                U-Boot 2018.05-00019-gc7a7584e23 (Sep 26 2021 - 11:44:52 +0000) Allwinner Technology
                
                [14.008]DRAM:  64 MiB
                [14.014]Relocation Offset is: 01ee1000
                [14.044]secure enable bit: 0
                [14.050]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
                [14.056]flash init start
                [14.059]workmode = 16,storage type = 0
                try card 0
                set card number 0
                get card number 0
                [14.066][mmc]: mmc driver ver uboot2018:2021-09-07 19:43:00
                [14.076][mmc]: get sdc_type fail and use default host:tm1.
                FDT ERROR:fdt_get_all_pin:get property handle pinctrl-0 error:FDT_ERR_INTERNAL
                [14.093][mmc]: get card0 default pin fail
                [14.103][mmc]: can't find node "mmc0",will add new node
                [14.108][mmc]: fdt err returned <no error>
                [14.112][mmc]: Using default timing para
                [14.116][mmc]: sunxi mmc pin set failed!
                [14.119]error card no error
                [14.122][mmc]: MMC Device -1 not found
                MMC init failed
                try card0 fail
                try card 1
                set card number 1
                get card number 1
                [14.132][mmc]: mmc driver ver uboot2018:2021-09-07 19:43:00
                [14.138][mmc]: get sdc_type fail and use default host:tm1.
                [14.143][mmc]: mmc_get_para_from_fex: input sdc_no error: 1
                [14.148][mmc]: Using default timing para
                [14.152][mmc]: sunxi mmc pin set failed!
                [14.156]error,card no error
                [14.158][mmc]: MMC Device -1 not found
                MMC init failed
                try card1 fail
                try card 2
                set card number 2
                get card number 2
                [14.169][mmc]: mmc driver ver uboot2018:2021-09-07 19:43:00
                [14.179][mmc]: get sdc_type fail and use default host:tm4.
                [14.214][mmc]: Is not Boot mode!
                [14.217][mmc]: SUNXI SDMMC Controller Version:0x50310
                [14.228][mmc]: ************Try SD card 2************
                [14.234][mmc]: mmc 2 cmd timeout 100 status 100
                [14.238][mmc]: smc 2 err, cmd 8,  RTO
                [14.241][mmc]: mmc 2 close bus gating and reset
                [14.246][mmc]: mmc 2 cmd timeout 100 status 100
                [14.250][mmc]: smc 2 err, cmd 55,  RTO
                [14.254][mmc]: mmc 2 close bus gating and reset
                [14.258][mmc]: ************Try MMC card 2************
                [14.267][mmc]: mmc 2 cmd timeout 100 status 100
                [14.271][mmc]: smc 2 err, cmd 1,  RTO
                [14.275][mmc]: mmc 2 close bus gating and reset
                [14.279][mmc]: Card did not respond to voltage select!
                [14.284][mmc]: ************SD/MMC 2 init error!************
                [14.289][mmc]: mmc init product failed
                MMC init failed
                try card2 fail
                try emmc fail
                [14.308]sunxi-spinand: AW SPINand MTD Layer Version: 1.5 20200407
                [14.314]sunxi-spinand-phy: AW SPINand Phy Layer Version: 1.9 20200306
                [14.385]sunxi-spinand-phy: request spi0 gpio ok
                [14.389]sunxi-spinand-phy: request general tx dma channel ok!
                [14.395]sunxi-spinand-phy: request general rx dma channel ok!
                [14.400]sunxi-spinand-phy: set spic0 clk to 20 Mhz
                [14.405]sunxi-spinand-phy: init spic0 clk ok
                sspi->base_addr = 0x4025000, the SPI control register:
                [VER] 0x4025000 = 0x00010001, [GCR] 0x4025004 = 0x00000083, [TCR] 0x4025008 = 0x00000184
                [ICR] 0x4025010 = 0x00000f00, [ISR] 0x4025014 = 0x00000032, [FCR] 0x4025018 = 0x00200020
                [FSR] 0x402501c = 0x00000000, [WCR] 0x4025020 = 0x00000000, [CCR] 0x4025024 = 0x00000002
                [SDC] 0x4025028 = 0x00002000, [BCR] 0x4025030 = 0x00000000, [TCR] 0x4025034 = 0x00000000
                [BCC] 0x4025038 = 0x00000000, [DMA] 0x4025088 = 0x000000e5
                
                [14.450]sunxi-spinand-phy: not detect any munufacture from id table
                [14.468]sunxi-spinand-phy: get spi-nand Model from fdt fail
                [14.473]sunxi-spinand-phy: get phy info from fdt fail
                [14.478]sunxi-spinand-phy: not detect munufacture from fdt
                [14.483]sunxi-spinand-phy: detect munufacture from id table: GD
                [14.489]sunxi-spinand-phy: detect spinand id: ffffd1c8 ffffffff
                [14.494]sunxi-spinand-phy: ========== arch info ==========
                [14.500]sunxi-spinand-phy: Model:               GD5F1GQ4UBYIG
                [14.505]sunxi-spinand-phy: Munufacture:         GD
                [14.509]sunxi-spinand-phy: DieCntPerChip:       1
                [14.514]sunxi-spinand-phy: BlkCntPerDie:        1024
                [14.519]sunxi-spinand-phy: PageCntPerBlk:       64
                [14.523]sunxi-spinand-phy: SectCntPerPage:      4
                [14.528]sunxi-spinand-phy: OobSizePerPage:      64
                [14.532]sunxi-spinand-phy: BadBlockFlag:        0x0
                [14.537]sunxi-spinand-phy: OperationOpt:        0x7
                [14.541]sunxi-spinand-phy: MaxEraseTimes:       50000
                [14.546]sunxi-spinand-phy: EccFlag:             0x1
                [14.551]sunxi-spinand-phy: EccType:             7
                [14.555]sunxi-spinand-phy: EccProtectedType:    4
                [14.559]sunxi-spinand-phy: ========================================
                [14.565]sunxi-spinand-phy:
                [14.568]sunxi-spinand-phy: ========== physical info ==========
                [14.573]sunxi-spinand-phy: TotalSize:    128 M
                [14.578]sunxi-spinand-phy: SectorSize:   512 B
                [14.582]sunxi-spinand-phy: PageSize:     2 K
                [14.586]sunxi-spinand-phy: BlockSize:    128 K
                [14.590]sunxi-spinand-phy: OOBSize:      64 B
                [14.594]sunxi-spinand-phy: ========================================
                [14.600]sunxi-spinand-phy:
                [14.602]sunxi-spinand-phy: ========== logical info ==========
                [14.608]sunxi-spinand-phy: TotalSize:    128 M
                [14.612]sunxi-spinand-phy: SectorSize:   512 B
                [14.616]sunxi-spinand-phy: PageSize:     4 K
                [14.620]sunxi-spinand-phy: BlockSize:    256 K
                [14.624]sunxi-spinand-phy: OOBSize:      128 B
                [14.629]sunxi-spinand-phy: ========================================
                [14.646]sunxi-spinand-phy: GD5F1GQ4UBYIG reset rx bit width to 1
                [14.652]sunxi-spinand-phy: GD5F1GQ4UBYIG reset tx bit width to 1
                [14.657]sunxi-spinand-phy: set spic0 clk to 100 Mhz
                [14.662]sunxi-spinand-phy: block lock register: 0x00
                [14.667]sunxi-spinand-phy: feature register: 0x11
                [14.671]sunxi-spinand-phy: sunxi physic nand init end
                [14.682]Loading Environment from SUNXI_FLASH... OK
                [14.697]try to burn key
                [14.701]out of usb burn from boot: not need burn key
                [14.705]Net:   [14.707]No ethernet found.
                Hit any key to stop autoboot:  0
                sunxi work mode=0x10
                run usb efex
                delay time 2500
                weak:otg_phy_config
                usb init ok
                set address 0x1e
                set address 0x1e ok
                SUNXI_EFEX_ERASE_TAG
                erase_flag = 0x12
                origin_erase_flag = 0x1
                FEX_CMD_fes_verify_status
                FEX_CMD_fes_verify last err=0
                the 0 mbr table is ok
                the 1 mbr table is ok
                the 2 mbr table is ok
                the 3 mbr table is ok
                *************MBR DUMP***************
                total mbr part 7
                
                part[0] name      :boot-resource
                part[0] classname :DISK
                part[0] addrlo    :0x8000
                part[0] lenlo     :0x1f8
                part[0] user_type :32768
                part[0] keydata   :0
                part[0] ro        :0
                
                part[1] name      :env
                part[1] classname :DISK
                part[1] addrlo    :0x81f8
                part[1] lenlo     :0x1f8
                part[1] user_type :32768
                part[1] keydata   :0
                part[1] ro        :0
                
                part[2] name      :env-redund
                part[2] classname :DISK
                part[2] addrlo    :0x83f0
                part[2] lenlo     :0x1f8
                part[2] user_type :32768
                part[2] keydata   :0
                part[2] ro        :0
                
                part[3] name      :boot
                part[3] classname :DISK
                part[3] addrlo    :0x85e8
                part[3] lenlo     :0x5000
                part[3] user_type :32768
                part[3] keydata   :0
                part[3] ro        :0
                
                part[4] name      :rootfs
                part[4] classname :DISK
                part[4] addrlo    :0xd5e8
                part[4] lenlo     :0xf000
                part[4] user_type :32768
                part[4] keydata   :0
                part[4] ro        :0
                
                part[5] name      :rootfs_data
                part[5] classname :DISK
                part[5] addrlo    :0x1c5e8
                part[5] lenlo     :0x2800
                part[5] user_type :32768
                part[5] keydata   :0
                part[5] ro        :0
                
                part[6] name      :UDISK
                part[6] classname :DISK
                part[6] addrlo    :0x1ede8
                part[6] lenlo     :0x0
                part[6] user_type :0
                part[6] keydata   :0
                part[6] ro        :0
                
                total part: 8
                mbr 0, 8000, 8000
                boot-resource 1, 1f8, 8000
                env 2, 1f8, 8000
                env-redund 3, 1f8, 8000
                boot 4, 5000, 8000
                rootfs 5, f000, 8000
                rootfs_data 6, 2800, 8000
                UDISK 7, 0, 0
                [26.405]erase blk 0 to blk 32
                need erase flash: 18
                [26.467]mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
                
                device nand0 <nand>, # parts = 4
                 #: name                size            offset          mask_flags
                 0: boot0               0x00100000      0x00000000      1
                 1: uboot               0x00300000      0x00100000      1
                 2: secure_storage      0x00100000      0x00400000      1
                 3: sys                 0x07b00000      0x00500000      0
                
                active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
                
                defaults:
                mtdids  : nand0=nand
                mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
                [26.528]MTD info (4)
                [26.530]pagesize: 0x1000
                [26.532]blksize: 0x40000
                [26.535]num  offset     bytes      name
                [26.538]0    0x00000000 0x00100000 boot0
                [26.542]1    0x00100000 0x00300000 uboot
                [26.546]2    0x00400000 0x00100000 secure_storage
                [26.550]3    0x00500000 0x07b00000 sys
                [26.553]ubi attach the last part of mtd device: NO.3
                [26.681]ubi0: attaching mtd4
                [27.011]ubi0: scanning is finished
                [27.055]ubi0: attached mtd4 (name "sys", size 123 MiB)
                [27.060]ubi0: PEB size: 262144 bytes (256 KiB), LEB size: 258048 bytes
                [27.066]ubi0: min./max. I/O unit sizes: 4096/4096, sub-page size 2048
                [27.073]ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
                [27.079]ubi0: good PEBs: 491, bad PEBs: 1, corrupted PEBs: 0
                [27.084]ubi0: user volume: 8, internal volumes: 1, max. volumes count: 128
                [27.091]ubi0: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 0
                [27.099]ubi0: available PEBs: 0, total reserved PEBs: 491, PEBs reserved for bad PEB handling: 19
                [27.107]erase blk 0 to blk 32
                [27.163]erase blk 40 to blk 1024
                [28.786]blk 1023 is bad, skip to erase
                [28.789]sunxi-spinand: spinand secure storage ok for phy blk 32 and 33
                [28.801]Item0 (Map) magic is bad
                [28.804]the secure storage map is empty
                [28.980]sunxi-spinand: write secure storage itme 0 ok
                [28.984]erase secure storage: 0 ok
                SUNXI_EFEX_MBR_TAG
                mbr size = 0x10000
                force mbr
                
                device nand0 <nand>, # parts = 4
                 #: name                size            offset          mask_flags
                 0: boot0               0x00100000      0x00000000      1
                 1: uboot               0x00300000      0x00100000      1
                 2: secure_storage      0x00100000      0x00400000      1
                 3: sys                 0x07b00000      0x00500000      0
                
                active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000
                
                defaults:
                mtdids  : nand0=nand
                mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
                [29.039]MTD info (4)
                [29.041]pagesize: 0x1000
                [29.043]blksize: 0x40000
                [29.045]num  offset     bytes      name
                [29.049]0    0x00000000 0x00100000 boot0
                [29.053]1    0x00100000 0x00300000 uboot
                [29.056]2    0x00400000 0x00100000 secure_storage
                [29.061]3    0x00500000 0x07b00000 sys
                [29.064]MBR info (unalign):
                [29.067]partno   addr       sects      type       name
                [29.071]0        0x00000000 0x00008000 0x00000001 mbr
                [29.076]1        0x00008000 0x000001f8 0x00008000 boot-resource
                [29.082]2        0x000081f8 0x000001f8 0x00008000 env
                [29.087]3        0x000083f0 0x000001f8 0x00008000 env-redund
                [29.092]4        0x000085e8 0x00005000 0x00008000 boot
                [29.097]5        0x0000d5e8 0x0000f000 0x00008000 rootfs
                [29.102]6        0x0001c5e8 0x00002800 0x00008000 rootfs_data
                [29.107]7        0x0001ede8 0x00000000 0x00000000 UDISK
                [29.112]ubi attach the last part of mtd device: NO.3
                [29.117]MBR info (align):
                [29.119]partno   addr       sects      type       name
                [29.124]0        0x00002800 0x000081f0 0x00000001 mbr
                [29.129]1        0x0000a9f0 0x000001f8 0x00008000 boot-resource
                [29.134]2        0x0000abe8 0x000001f8 0x00008000 env
                [29.139]3        0x0000ade0 0x000001f8 0x00008000 env-redund
                [29.145]4        0x0000afd8 0x000050b8 0x00008000 boot
                [29.149]5        0x00010090 0x0000f030 0x00008000 rootfs
                [29.155]6        0x0001f0c0 0x00002958 0x00008000 rootfs_data
                [29.160]7        0x00021a18 0x00000000 0x00000000 UDISK
                [29.165]ubi attach the last part of mtd device: NO.3
                [29.170]ubi attatch mtd, name: sys
                
                [29.173]ubi0: detaching mtd4
                [29.177]ubi0: mtd4 is detached
                [29.180]ubi0: attaching mtd4
                [29.339]ubi0: scanning is finished
                [29.342]ubi0: empty MTD device detected
                [29.397]ubi0: attached mtd4 (name "sys", size 123 MiB)
                [29.402]ubi0: PEB size: 262144 bytes (256 KiB), LEB size: 258048 bytes
                [29.408]ubi0: min./max. I/O unit sizes: 4096/4096, sub-page size 2048
                [29.414]ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
                [29.420]ubi0: good PEBs: 491, bad PEBs: 1, corrupted PEBs: 0
                [29.426]ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
                [29.432]ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 0
                [29.440]ubi0: available PEBs: 468, total reserved PEBs: 23, PEBs reserved for bad PEB handling: 19
                Creating static volume mbr of size 17031168
                Creating dynamic volume boot-resource of size 258048
                Creating dynamic volume env of size 258048
                Creating dynamic volume env-redund of size 258048
                Creating dynamic volume boot of size 10579968
                Creating dynamic volume rootfs of size 31481856
                Creating dynamic volume rootfs_data of size 5419008
                No size specified -> Using max size (55480320)
                [32.019]reset last volume size to 0x1a748
                Creating dynamic volume UDISK of size 55480320
                [32.133]fill gap start: volume mbr sects 0x7f80
                [50.606]fill gap end: volume mbr
                [50.608]update partition map
                [50.611]logical area info: 468 258048 last_lba: 235871
                [50.633]logical area info: 468 258048 last_lba: 235871
                [50.654]logical area info: 468 258048 last_lba: 235871
                [50.675]logical area info: 468 258048 last_lba: 235871
                [50.696]logical area info: 468 258048 last_lba: 235871
                [50.716]logical area info: 468 258048 last_lba: 235871
                [50.737]logical area info: 468 258048 last_lba: 235871
                [50.758]logical area info: 468 258048 last_lba: 235871
                [50.779]logical area info: 468 258048 last_lba: 235871
                [50.799]logical area info: 468 258048 last_lba: 235871
                [50.820]logical area info: 468 258048 last_lba: 235871
                [50.841]logical area info: 468 258048 last_lba: 235871
                [50.862]logical area info: 468 258048 last_lba: 235871
                [50.883]logical area info: 468 258048 last_lba: 235871
                [50.903]logical area info: 468 258048 last_lba: 235871
                [50.924]logical area info: 468 258048 last_lba: 235871
                [50.945]logical area info: 468 258048 last_lba: 235871
                [50.965]logical area info: 468 258048 last_lba: 235871
                [50.986]logical area info: 468 258048 last_lba: 235871
                [51.007]logical area info: 468 258048 last_lba: 235871
                [51.028]logical area info: 468 258048 last_lba: 235871
                [51.048]logical area info: 468 258048 last_lba: 235871
                [51.069]logical area info: 468 258048 last_lba: 235871
                [51.090]logical area info: 468 258048 last_lba: 235871
                [51.111]logical area info: 468 258048 last_lba: 235871
                FEX_CMD_fes_verify_status
                FEX_CMD_fes_verify last err=0
                [51.181]fill gap start: volume boot-resource sects 0x158
                [51.376]fill gap end: volume boot-resource
                FEX_CMD_fes_verify_value, start 0x8000, size high 0x0:low 0x14000
                FEX_CMD_fes_verify_value 0xe6f75b5c
                [51.487]fill gap start: volume env sects 0xf8
                [51.679]fill gap end: volume env
                FEX_CMD_fes_verify_value, start 0x81f8, size high 0x0:low 0x20000
                FEX_CMD_fes_verify_value 0x7610f7e9
                [51.782]fill gap start: volume env-redund sects 0xf8
                [51.974]fill gap end: volume env-redund
                FEX_CMD_fes_verify_value, start 0x83f0, size high 0x0:low 0x20000
                FEX_CMD_fes_verify_value 0x7610f7e9
                [55.499]fill gap start: volume boot sects 0x2144
                [56.718]fill gap end: volume boot
                FEX_CMD_fes_verify_value, start 0x85e8, size high 0x0:low 0x5d7800
                FEX_CMD_fes_verify_value 0xcbe6925a
                [71.824]fill gap start: volume rootfs sects 0x3a00
                [73.806]fill gap end: volume rootfs
                FEX_CMD_fes_verify_value, start 0xd5e8, size high 0x0:low 0x16c0000
                FEX_CMD_fes_verify_value 0x2b5a2951
                bootfile_mode=4
                SUNXI_EFEX_BOOT1_TAG
                boot1 size = 0x108000, max size = 0x200000
                uboot size = 0x108000
                storage type = 0
                [79.091]uboot blk range [8-32)
                [79.094]download uboot to block 8 (9 blocks) len 1056K
                [79.667]download uboot to block 17 (9 blocks) len 1056K
                FEX_CMD_fes_verify_status
                FEX_CMD_fes_verify last err=0
                bootfile_mode=4
                SUNXI_EFEX_BOOT0_TAG
                boot0 size = 0x14000
                dram para[0] = 198
                dram para[1] = 2
                dram para[2] = 7b7bf9
                dram para[3] = 0
                dram para[4] = d2
                dram para[5] = 400000
                dram para[6] = a63
                dram para[7] = 2
                dram para[8] = 0
                dram para[9] = 0
                dram para[10] = 45994e
                dram para[11] = 121210a
                dram para[12] = 43032
                dram para[13] = b4787896
                dram para[14] = 0
                dram para[15] = 48484848
                dram para[16] = 48
                dram para[17] = 1621121e
                dram para[18] = 0
                dram para[19] = 0
                dram para[20] = 0
                dram para[21] = 30010
                dram para[22] = 35
                dram para[23] = b4006003
                dram para[24] = 0
                dram para[25] = 0
                dram para[26] = 0
                dram para[27] = 0
                dram para[28] = 0
                dram para[29] = 0
                dram para[30] = 0
                dram para[31] = 0
                storage type = 0
                [80.338]download boot0 to block 0 len 80K
                [80.386]download boot0 to block 1 len 80K
                [80.433]download boot0 to block 2 len 80K
                [80.480]download boot0 to block 3 len 80K
                [80.528]download boot0 to block 4 len 80K
                [80.575]download boot0 to block 5 len 80K
                [80.622]download boot0 to block 6 len 80K
                [80.670]download boot0 to block 7 len 80K
                FEX_CMD_fes_verify_status
                FEX_CMD_fes_verify last err=0
                sunxi_efex_next_action=2
                exit usb
                next work 2
                

                15c55292-e010-40b4-a7ee-368b01b369ef-4ca7826a04f6b2d440c1c239a81c42d.jpg

                GD5F1GQ4UBYIG 烧录OK,启动OK:

                numid=30,iface=MIXER,name='Headphone Switch'
                  ; type=BOOLEAN,access=rw------,values=1
                  : values=on
                amixer: Cannot find the given element from control default
                
                The framebuffer device was opened successfully.
                800x480, 32bpp
                The framebuffer device was mapped to memory successfully.
                unable open evdev interface:: No such file or directory
                info:<init_text:265>lang=1, dataFile=/usr/res/font/en.bin
                
                connect wpa_supplicant failed,please check wifi driver!
                
                root@TinaLinux:/#
                root@TinaLinux:/#
                root@TinaLinux:/# mount
                /dev/root on /rom type squashfs (ro,relatime)
                devtmpfs on /dev type devtmpfs (rw,relatime,size=28260k,nr_inodes=7065,mode=755)
                /proc on /proc type proc (rw,relatime)
                tmpfs on /tmp type tmpfs (rw,relatime)
                sys on /sys type sysfs (rw,relatime)
                /dev/by-name/rootfs_data on /overlay type ubifs (rw,relatime,assert=read-only,ubi=0,vol=6)
                overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/workdir)
                devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
                /dev/ubi0_7 on /mnt/UDISK type ubifs (rw,relatime,assert=read-only,ubi=0,vol=7)
                none on /sys/kernel/config type configfs (rw,relatime)
                adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
                root@TinaLinux:/#
                root@TinaLinux:/# df
                Filesystem           1K-blocks      Used Available Use% Mounted on
                /dev/root                23296     23296         0 100% /rom
                devtmpfs                 28260         0     28260   0% /dev
                tmpfs                    29088         0     29088   0% /tmp
                /dev/by-name/rootfs_data
                                          1420        32      1244   3% /overlay
                overlayfs:/overlay        1420        32      1244   3% /
                /dev/ubi0_7              47164        24     44700   0% /mnt/UDISK
                root@TinaLinux:/#
                root@TinaLinux:/# touch test.txt
                root@TinaLinux:/#
                root@TinaLinux:/# echo "testesttest" > /test.txt
                root@TinaLinux:/#
                root@TinaLinux:/#
                
                xiaowenge 1 条回复 最后回复 回复 引用 分享 0
                • xiaowenge
                  DOT小文哥 LV 8 @tigger 最后由 xiaowenge 编辑

                  需要做哪些修改才能适配呢?

                  tigger 1 条回复 最后回复 回复 引用 分享 0
                  • tigger
                    tigger LV 7 @xiaowenge 最后由 编辑

                    @xiaowenge

                    2楼那个 在 lichee/brandy-2.0/u-boot-2018/drivers/mtd/awnand/spinand/physic/id.c 添加了 GD5F1GQ4UAYIG 配置

                    1 条回复 最后回复 回复 引用 分享 0
                    • L
                      Lts52341314 LV 5 最后由 Lts52341314 编辑

                      我用GigaDevice的也遇到了同样的问题,请问解决了吗

                      1 条回复 最后回复 回复 引用 分享 0
                      • 1 / 1
                      • First post
                        Last post

                      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                      行为准则 | 用户协议 | 隐私权政策