TI中文支持网
TI专业的中文技术问题搜集分享网站

AM4376: 在uboot阶段初始化mmc2失败

Part Number:AM4376Other Parts Discussed in Thread: SYSCONFIG, TPS65218

使用AM4376 ,把eMMC设备挂载在MMC2总线上,在系统阶段读写emmc设备ok,由于SDK的boot代码中没有MMC2相关的配置,自己添加配置,当操作到MMC2总线的基地址时,设备会重启,

相关配置如下:

1、在dts配置如下      mmc3_pins_default: pinmux_mmc3_pins_default {
      pinctrl-single,pins = <
              0x1f0 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (B15) mii1_txd0.mmc1_clk */
              0x1f4 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (A14) mii1_txd1.mmc1_cmd */
              0x1f8 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (D14) mii1_tx_clk.mmc1_dat0 * /
              0x1fc ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (D13) mii1_rx_clk.mmc1_dat1 * /
              0x200 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (C14) mii1_rxd3.mmc1_dat2 */
              0x204 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (E16) mii1_rxd2.mmc1_dat3 */
     >;
};
     mmc3_pins_sleep: pinmux_mmc3_pins_Sleep {
     pinctrl-single,pins = <
              0x1f0 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (B15) mii1_txd0.mmc1_clk */
              0x1f4 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (A14) mii1_txd1.mmc1_cmd */
              0x1f8 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (D14) mii1_tx_clk.mmc1_dat0 */
              0x1fc ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (D13) mii1_rx_clk.mmc1_dat1 */
              0x200 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (C14) mii1_rxd3.mmc1_dat2 * /
              0x204 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (E16) mii1_rxd2.mmc1_dat3 * /
>;
};

&mmc3 {

        status = "okay";
       dmas = <&edma 3
           &edma 31>
       dma-names = "tx", "rx";
       vmmc-supply = <&vmmcsd_fixed>;
       bus-width = <4>;
       pinctrl-names = "default", "sleep";
       pinctrl-0 = <&mmc3_pins_default>;
       pinctrl-1 = <&mmc3_pins_sleep>;
       cap-power-off-card;
       keep-power-in-suspend;
      ti,non-removable;      #address-cells = <1>;
      #size-cells = <0>;
};

2、在board/ti/am43xx/mux.c中,配置管脚复用
static struct module_pin_mux mmc2_pin_mux[] = {
          {OFFSET(cam1_data2), (MODE(3) | PULLUDDIS | RXACTIVE)},
          {OFFSET(cam1_data3), (MODE(3) | PULLUP_EN | RXACTIVE)},
          {OFFSET(cam1_data4), (MODE(3) | PULLUP_EN | RXACTIVE)},
          {OFFSET(cam1_data5), (MODE(3) | PULLUP_EN | RXACTIVE)},
          {OFFSET(cam1_data6), (MODE(3) | PULLUP_EN | RXACTIVE)},
          {OFFSET(cam1_data7), (MODE(3) | PULLUP_EN | RXACTIVE)},
};
在函数void enable_board_pin_mux(void)中,添加
configure_module_pin_mux( mmc2_pin_mux );

3、在arch/arm/include/asm/arch-am33xx/mmc_host_def.h中,添加
        #define OMAP_HSMMC3_BASE 0x47810100

4、在arch/arm/include/asm/arch-am33xx/spl.h中,添加
       #define BOOT_DEVICE_MMC3 0x09

5、在/arch/arm/mach-omap2/am33xx/board.c的int cpu_mmc_init(bd_t *bis)函数中,添加
omap_mmc_init(2, 0, 0, -1, -1);

设置完以上后,在boot能看见mmc2设备,但是当执行初始化函数时,设备会重启

static int omap_hsmmc_init_setup(struct mmc *mmc)
{
            struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
            struct hsmmc *mmc_base;
            unsigned int reg_val;
            unsigned int dsor;
            ulong start;

            mmc_base = priv->base_addr;
            mmc_board_init(mmc);

            writel(readl(&mmc_base->sysconfig) | MMC_SOFTRESET, &mmc_base->sysconfig);    //程序执行到这儿会重启i

现在,我想知道什么地方遗漏了,没有配置完全,导致设备重启

Nancy Wang:

请贴出使用的SDK版本已经启动log。

,

user5762401:

你好,

SDK的版本为ti-processor-sdk-linux-am437x-evm-04.02.00.09-Linux-x86-Install.bin

启动log如下:

U-Boot 2017.01-00448-g801e17b-dirtyvertiv version:v1.0 (Dec 13 2021 – 14:33:24 +0800)

CPU : AM437X-GP rev 1.2I2C: readyDRAM: 1 GiBPMIC: TPS65218MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1, OMAP SD/MMC: 2SF: Detected n25q512 with page size 256 Bytes, erase size 4 KiB, total 64 MiB, mapped at 30000000SF: Warning – Only lower 16MiB accessible, Full access #define CONFIG_SPI_FLASH_BAR*** Warning – bad CRC, using default environment

Net: <ethaddr> not set. Validating first E-fuse MACCould not get PHY for cpsw: addr 3cpsw, usb_etherHit any key to stop autoboot: 0

data abortpc : [<bff4d558>] lr : [<bff4d550>]reloc pc : [<30024558>] lr : [<30024550>]sp : bdf18ae0 ip : 00000030 fp : bff32818r10: bdf19520 r9 : bdf18ef8 r8 : bff8a514r7 : 40000000 r6 : bdf19520 r5 : bdf194e0 r4 : 47810100r3 : 00000020 r2 : 00000001 r1 : 0000000a r0 : 00000048Flags: nZCv IRQs off FIQs off Mode SVC_32Resetting CPU …

resetting …CCCCCC

U-Boot 2017.01-00448-g801e17b-dirtyvertiv version:v1.0 (Dec 13 2021 – 14:33:24 +0800)

CPU : AM437X-GP rev 1.2I2C: readyDRAM: 1 GiBPMIC: TPS65218MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1, OMAP SD/MMC: 2SF: Detected n25q512 with page size 256 Bytes, erase size 4 KiB, total 64 MiB, mapped at 30000000SF: Warning – Only lower 16MiB accessible, Full access #define CONFIG_SPI_FLASH_BAR*** Warning – bad CRC, using default environment

Net: <ethaddr> not set. Validating first E-fuse MACCould not get PHY for cpsw: addr 3cpsw, usb_etherHit any key to stop autoboot: 0=>=>=>=> mmc listOMAP SD/MMC: 0OMAP SD/MMC: 1OMAP SD/MMC: 2=> mmc dev 2drivers/mmc/omap_hsmmc.c: omap_hsmmc_init_setup: 766drivers/mmc/omap_hsmmc.c: omap_hsmmc_init_setup: 768drivers/mmc/omap_hsmmc.c: omap_hsmmc_init_setup: 770drivers/mmc/omap_hsmmc.c: omap_hsmmc_init_setup: 771: mmc_base:47810100data abortpc : [<bff4d558>] lr : [<bff4d550>]reloc pc : [<30024558>] lr : [<30024550>]sp : bdf18cf0 ip : 00000030 fp : bff32818r10: bdf19520 r9 : bdf18ef8 r8 : bff8a514r7 : 40000000 r6 : bdf19520 r5 : bdf194e0 r4 : 47810100r3 : 00000020 r2 : 00000001 r1 : 0000000a r0 : 00000048Flags: nZCv IRQs off FIQs off Mode SVC_32Resetting CPU …

resetting …

,

Nancy Wang:

我咨询相关工程师后再给您回复。

,

user5762401:

好的,感谢!

,

user5762401:

你好,现在有进展吗?

,

Nancy Wang:

我升级到英文论坛了,请关注:

e2e.ti.com/…/am4376-failed-to-initialize-mmc2-during-uboot

赞(0)
未经允许不得转载:TI中文支持网 » AM4376: 在uboot阶段初始化mmc2失败
分享到: 更多 (0)

© 2025 TI中文支持网   网站地图 鲁ICP备2022002796号-1