This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

应用AM3358,自己设计的应用板,UART启动,由UART口将SPL和uboot下载到ARM芯片,窗口显示如下结果



SD卡没有插入,所以MMC端口没有设备是可以理解的,但电路中有设计这部分电路。
NAND Flash电路设计的是MT29F8G16ADADAH4,且测量芯片供电电压正确,为何结果显示NAND:  0 MiB?是有错误么?是哪部分的错误呢?
Net:   <ethaddr> not set. Validating first E-fuse MAC,这句话是什么意思?<ethaddr>是IP地址么?需要在哪里设置呢?谢谢
  • NAND没有识别成功,建议你查一下,你当前的配置文件中是否有做好NAND的配置。因为修改我们的SDK UBOOT时候,选择什么样的EEPROM配置,会决定了你的当前配置中是否有NAND。一些开发板型号上面是没有NAND的,所以就没有对NAND进行配置了,建议参考GPEVM的配置进行,因为上面是有NAND的。

  • 您好,按照您的建议,我改了如下部分,红色标记为我的更改,因为我是自己设计的板子,所以更改情况如红色标记处:

    static unsigned short detect_daughter_board_profile(void)
    {
    unsigned short val;

    if (i2c_probe(I2C_CPLD_ADDR))
    return PROFILE_NONE;

    if (i2c_read(I2C_CPLD_ADDR, CFG_REG, 1, (unsigned char *)(&val), 2))
    return PROFILE_NONE;

    return (1 << (val & PROFILE_MASK));
    }

    void enable_board_pin_mux(struct am335x_baseboard_id *header)
    {
    /* Do board-specific muxes. */
    if (board_is_bone(header)) {
    /* Beaglebone pinmux */
    configure_module_pin_mux(i2c1_pin_mux);
    configure_module_pin_mux(mii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux);
    #ifndef CONFIG_NOR
    configure_module_pin_mux(mmc1_pin_mux);
    #endif
    #if defined(CONFIG_NOR) && !defined(CONFIG_NOR_BOOT)
    configure_module_pin_mux(bone_norcape_pin_mux);
    #endif
    } else if (board_is_gp_evm(header)){
    /* General Purpose EVM */
    unsigned short profile = detect_daughter_board_profile();
    configure_module_pin_mux(rgmii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux);
    /* In profile #2 i2c1 and spi0 conflict. */
    if (profile & ~PROFILE_2)
    configure_module_pin_mux(i2c1_pin_mux);
    /* Profiles 2 & 3 don't have NAND */
    if (profile & ~(PROFILE_2 | PROFILE_3))
    configure_module_pin_mux(nand_pin_mux);
    else if (profile == PROFILE_2) {
    configure_module_pin_mux(mmc1_pin_mux);
    configure_module_pin_mux(spi0_pin_mux);
    }
    } else if (board_is_idk(header)) {
    /*
    * Industrial Motor Control (IDK)
    * note: IDK console is on UART3 by default.
    * So u-boot mus be build with CONFIG_SERIAL4 and
    * CONFIG_CONS_INDEX=4
    */
    configure_module_pin_mux(mii1_pin_mux);
    configure_module_pin_mux(mmc0_no_cd_pin_mux);
    } else if (board_is_evm_sk(header)) {
    /* Starter Kit EVM */
    configure_module_pin_mux(i2c1_pin_mux);
    configure_module_pin_mux(gpio0_7_pin_mux);
    configure_module_pin_mux(rgmii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux_sk_evm);
    } else if (board_is_bone_lt(header)) {
    /* Beaglebone LT pinmux */
    configure_module_pin_mux(i2c1_pin_mux);
    configure_module_pin_mux(mii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux);
    configure_module_pin_mux(mmc1_pin_mux);
    } else {
    /*
    puts("Unknown board, cannot configure pinmux.");
    hang(); */
    unsigned short profile = detect_daughter_board_profile();
    configure_module_pin_mux(rgmii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux);
    /* Profiles 2 & 3 don't have NAND */
    if (profile & ~(PROFILE_2 | PROFILE_3))
    configure_module_pin_mux(nand_pin_mux);
    }
    }

    但是更改后,结果仍然显示的是nand为0MB,不知道是不是还有别的地方需要修改呢?谢谢

  • 我觉得这样改有两个问题:

    1. 改的函数是在detect_daughter_board_profile,这个是GPEVM的配置中daughter board的配置。那么你的EEPROM必须要设置为GPEVM的类型,印象中,设置完了后启动时,板卡还会检测daughter board是否存在,这里估计也是需要改的,这样才能确保你能够运行到上述的红字配置。

    2. 在对NAND的配置中,你增加的代码还要对profile进行判定,profile是根据GPEVM的CPLD来确定的,这块也是需要处理。

    综上,先确认能否运行到上述的代码,然后直接把那个if判断去掉,试试看在uboot下面 nand info看一下。

  • 谢谢,我也尝试过将红字部分进行如下的更改:

    else {
    configure_module_pin_mux(gpio0_7_pin_mux);
    configure_module_pin_mux(rgmii1_pin_mux);
    configure_module_pin_mux(mmc0_pin_mux);
    configure_module_pin_mux(nand_pin_mux);}

    去掉了if的判断,nand仍未0MB,nand info信息:

    Device 0: MT29F8G16ADADAH4, sector size 128 KiB
    Page size 2048 b
    OOB size 64 b
    Erase size 131072 b

    不知道这种情况下对不对?是不是由于ARM是32位,所以不能判断出nand的大小