uboot第一次开机识别不到nand flash(S34ML08G3)

cwlin0 |浏览164次
收藏|2023/05/12 13:41

在开发板上使用NAND S34ML08G3在uboot第一次启动无法识别到;

按下复位及uboot reset第二次启动之后就可以识别到(量产需要用SD启动将镜像烧录到nand中进行生产)


如果是用华邦的nand我编译新的uboot第一次是可以识别到的

U-Boot 2020.07 (Apr 26 2023 - 10:35:41 +0800)


CPU: Nuvoton MA35D1

Model: Nuvoton MA35D1 U-boot

DRAM: 112 MiB

WDT: Not found!

NAND: 1024 MiB

MMC: sdhci@40190000: 0

Loading Environment from MMC... OK

In: serial@40700000

Out: serial@40700000

Err: serial@40700000

Net:

Warning: ethernet@40120000 using MAC address from DT

eth0: ethernet@40120000 [PRIME]

Warning: ethernet@40130000 using MAC address from DT

, eth1: ethernet@40130000

Hit any key to stop autoboot: 0

MA35D1>

MA35D1> nand info


Device 0: nand0, sector size 128 KiB

  Page size 2048 b

  OOB size 64 b

  Erase size 131072 b

  subpagesize 2048 b

  options 0x00004200

  bbt options 0x00020000


满意回答

2023/05/12 13:48

修改MA35D1_Buildroot\output\build\uboot-custom\drivers\mtd\nand\raw\ma35d1_nand.c 里面的ma35d1_nand_command()函数增加ma35d1_waitfunc(mtd, chip),详细见下:


static void ma35d1_nand_command(struct mtd_info *mtd, unsigned int command,

int column, int page_addr)

{

struct nand_chip *chip = mtd_to_nand(mtd);

struct ma35d1_nand_info *nand_info = nand_get_controller_data(chip);


writel(0x400, nand_info->reg+REG_NFI_NANDINTSTS);


if (command == NAND_CMD_READOOB) {

column += mtd->writesize;

command = NAND_CMD_READ0;

}


switch (command) {


case NAND_CMD_RESET:

writel(command, nand_info->reg+REG_NFI_NANDCMD);

ma35d1_waitfunc(mtd, chip); //add this line

break;

...

}


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...