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.

[参考译文] AM3352:Linux 未检测到 eMMC、但在 uBoot 中

Guru**** 2472510 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1467045/am3352-emmc-not-being-detected-by-linux-but-in-uboot

器件型号:AM3352

工具与软件:

我在使用 TI SDK 9.01在定制电路板上启用 eMMC 的器件树中遇到一些问题。 uBoot 设法找到 eMMC 存储器、而基于 Open Embedded 的旧操作系统则会工作并检测 eMMC。 以下是日志和设备树。 如果有人有任何想法,我可以进一步检查,请告诉我。

UBoot:

=> mmc list
OMAP SD/MMC: 0 (SD)
OMAP SD/MMC: 1
=> mmc dev 1
switch to partitions #0, OK
mmc1(part 0) is current device
=> mmc list
OMAP SD/MMC: 0 (SD)
OMAP SD/MMC: 1 (eMMC)
=> mmc info
Device: OMAP SD/MMC
Manufacturer ID: 13
OEM: 4e
Name: Q2J54A
Bus Speed: 48000000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 3.6 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
User Capacity: 3.6 GiB WRREL
Boot Capacity: 2 MiB ENH
RPMB Capacity: 512 KiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected

Linux:

root@am335x-evm:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk0     179:0    0 14.9G  0 disk
|-mmcblk0p1 179:1    0   64M  0 part /run/media/mmcblk0p1
`-mmcblk0p2 179:2    0  7.3G  0 part /

[    2.364780] sdhci-omap 481d8000.mmc: supply pbias not found, using dummy regulator
[    2.372638] sdhci-omap 48060000.mmc: Got CD GPIO
[    2.377412] sdhci-omap 48060000.mmc: supply pbias not found, using dummy regulator
[    2.390178] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    2.410668] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
[    2.455557] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
[    2.465720] mmc0: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
[    2.514518] mmc0: new high speed SDHC card at address 0001
[    2.520983] mmcblk0: mmc0:0001 USD 14.9 GiB
[    2.528064]  mmcblk0: p1 p2
[    2.666781] EXT4-fs (mmcblk0p2): warning: mounting fs with errors, running e2fsck is recommended
[    2.679385] EXT4-fs (mmcblk0p2): recovery complete
[    2.685520] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
[    6.299876] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.

器件树:

	emmc_pins_default: emmc-default-pins {
		pinctrl-single,pins = <
			AM33XX_IOPAD(0x880, PIN_INPUT | MUX_MODE2) /* (U9) gpmc_csn1.mmc1_clk */
			AM33XX_IOPAD(0x884, PIN_INPUT | MUX_MODE2) /* (V9) gpmc_csn2.mmc1_cmd */
			AM33XX_IOPAD(0x800, PIN_INPUT | MUX_MODE1) /* (U7) gpmc_ad0.mmc1_dat0 */
			AM33XX_IOPAD(0x804, PIN_INPUT | MUX_MODE1) /* (V7) gpmc_ad1.mmc1_dat1 */
			AM33XX_IOPAD(0x808, PIN_INPUT | MUX_MODE1) /* (R8) gpmc_ad2.mmc1_dat2 */
			AM33XX_IOPAD(0x80c, PIN_INPUT | MUX_MODE1) /* (T8) gpmc_ad3.mmc1_dat3 */
			AM33XX_IOPAD(0x810, PIN_INPUT | MUX_MODE1) /* (U8) gpmc_ad4.mmc1_dat4 */
			AM33XX_IOPAD(0x814, PIN_INPUT | MUX_MODE1) /* (V8) gpmc_ad5.mmc1_dat5 */
			AM33XX_IOPAD(0x818, PIN_INPUT | MUX_MODE1) /* (R9) gpmc_ad6.mmc1_dat6 */
			AM33XX_IOPAD(0x81c, PIN_INPUT | MUX_MODE1) /* (T9) gpmc_ad7.mmc1_dat7 */
		>;
	};

&mmc2 {
		vmmc-supply = <&vmmc_reg>;
		pinctrl-names = "default";
		pinctrl-0 = <&emmc_pins_default>;
		bus-width = <8>;
		non-removable;
		
		status = "okay";
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 TJ:

    [报价 userid="570141" url="~/support/processors-group/processors/f/processors-forum/1467045/am3352-emmc-not-being-detected-by-linux-but-in-uboot/5629340 #5629340"]我从原理图中注意到 GPIO1 20上有一条 eMMC 复位线。 这未映射到旧器件树中的任何内容、我要尝试移植的新器件树也未映射该内容。 现在是否需要此项?

    我看到 BeagleBone Black 电路板原理图也将 GPIO1_20连接到 eMMC RSTN 引脚、但内核 devicetre 也不会映射 GPIO1_20。 因此、我认为不需要该复位引脚。

    关于 eMMC Pinmux、我看到您的旧器件使用"PIN_INPUT_PULLUP"、但新器件没有"_PULLUP"。 您能否在内核 devicetree 中添加"_pullup"以查看它是否起作用? 您的电路板是否在这些 eMMC 引脚上具有外部上拉电阻器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢。 这样就解决了问题。 将引脚多路复用器中的这些引脚更改为上拉电阻器解决了问题。 eMMC 确实具有外部上拉电阻器(如下所示)、但这仍然解决了问题。

    上拉电阻:

    新引脚多路复用:

    	emmc_pins_default: emmc-default-pins {
    		pinctrl-single,pins = <
    			AM33XX_IOPAD(0x880, PIN_INPUT_PULLUP | MUX_MODE2) /* (U9) gpmc_csn1.mmc1_clk */
    			AM33XX_IOPAD(0x884, PIN_INPUT_PULLUP | MUX_MODE2) /* (V9) gpmc_csn2.mmc1_cmd */
    			AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE1) /* (U7) gpmc_ad0.mmc1_dat0 */
    			AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE1) /* (V7) gpmc_ad1.mmc1_dat1 */
    			AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE1) /* (R8) gpmc_ad2.mmc1_dat2 */
    			AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE1) /* (T8) gpmc_ad3.mmc1_dat3 */
    			AM33XX_IOPAD(0x810, PIN_INPUT_PULLUP | MUX_MODE1) /* (U8) gpmc_ad4.mmc1_dat4 */
    			AM33XX_IOPAD(0x814, PIN_INPUT_PULLUP | MUX_MODE1) /* (V8) gpmc_ad5.mmc1_dat5 */
    			AM33XX_IOPAD(0x818, PIN_INPUT_PULLUP | MUX_MODE1) /* (R9) gpmc_ad6.mmc1_dat6 */
    			AM33XX_IOPAD(0x81c, PIN_INPUT_PULLUP | MUX_MODE1) /* (T9) gpmc_ad7.mmc1_dat7 */
    		>;
    	};

    lsblk:

    root@am335x-evm:~# lsblk
    NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    mmcblk0      179:0    0 14.9G  0 disk
    |-mmcblk0p1  179:1    0   64M  0 part /run/media/mmcblk0p1
    `-mmcblk0p2  179:2    0  7.3G  0 part /
    mmcblk1      179:16   0  3.6G  0 disk
    `-mmcblk1p1  179:17   0  3.6G  0 part /run/media/mmcblk1p1
    mmcblk1boot0 179:32   0    2M  1 disk
    mmcblk1boot1 179:48   0    2M  1 disk
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 TJ:

    很高兴听到问题已解决。 感谢您的更新。

    BeagleBone Black 电路板 devicetre 在所有 eMMC 引脚上配置了上拉电阻。