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.

[参考译文] PROCESSOR-SDK-AM335X:在内核中从 SD 卡引导失败、未安装 rootfs

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1227790/processor-sdk-am335x-booting-from-sd-card-fails-in-kernel-rootfs-not-mounted

器件型号:PROCESSOR-SDK-AM335X

我希望内核(8.02内部版本)的显示器无法启动。 似乎无法挂载 rootfs。

定制器件与 bbb 非常相似。

以下是引导时控制台的一部分:

[  3.028549] sdhci:安全数字主机控制器接口驱动程序
[3.034808]  sdhci: copyright (c) Pierre Ossman
[  3.040401] sdhci-pltfm: SDHCI 平台和驱动程序助手
[  3.047657] sdhci-OMAP:sdhci_omap_probe called..
[  3.074446] sdhci-OMAP:sdhci_omap_probe called……
[  3.079905] sdhci-OMAP 481d8000.mmc:未找到电源 vqmmc、使用虚拟稳压器
[  3.087859] sdhci-OMAP:sdhci_omap_probe result error -517
[  3.164755] OMAP_VOLTAGE_LATED_INIT:未添加电压驱动程序支持
[  3.207844] OMAP GPIO 硬件版本0.1
[  3.2339334] mmc1:481d8000.mmc [481d8000.mmc]上的 SDHCI 控制器使用外部 DMA
[  3.241797] sdhci-OMAP:sdhci_omap_probe result Success 0
[  3.302206] sdhci-OMAP:sdhci_omap_probe called..
[  3.318540] OMAP_GPIO 44e07000.GPIO:无法将第6行去抖设置为200000微秒(-22)
[  3.3.8036] sdhci-OMAP 4806000.mmc:获取 CD GPIO
[  3.343076] sdhci-OMAP 4806000.mmc:未找到电源 vqmmc、正在使用虚拟稳压器
[  3.360265] mmc1:地址0001处采用新型高速 MMC 卡
[  3.386622] mmcblk1:mmc1:0001 4FTE4R 3.64 GiB
[  3.391483] mmcblk1boot0:mmc1:0001 4FTE4R 分区1 4.00 MIB
[  3.414987] mmcblk1boot1:mmc1:0001 4FTE4R 分区2 4.00 MiB
[  3.430725] mmcblk1rpmb:mmc1:0001 4FTE4R 分区3 512 KiB、chardev (243:0)
[  3.532388] mmc0:使用外部 DMA 的4806000.mmc [4806000.mmc]上的 SDHCI 控制器
[  3.554064] sdhci-OMAP:sdhci_omap_probe result sort 0
[  3.554720]正在等待根设备 PARTUUUUID=3d292A74-02...
在最后一行之前的行中、我看不到与识别 SD 卡有关的任何问题。
我还连接了 eMMC、但从未连接过该器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thomas:

    MMC1上是否有 SD 卡、MMC2上是否有 eMMC? 如果是、

      mmc1:481d8000.mmc 上的 SDHCI 控制器[481d8000.mmc]使用外部 dma[报价 userid=275839" url="~/support/processors-group/processors/f/processors-forum/1227790/processor-sdk-am335x-booting-from-sd-card-fails-in-kernel-rootfs-not-mounted
    [  3.360265] mmc1:地址0001处采用新型高速 MMC 卡
    [  3.386622] mmcblk1:mmc1:0001 4FTE4R 3.64 GiB
    [  3.391483] mmcblk1boot0:mmc1:0001 4FTE4R 分区1 4.00 MIB
    [  3.414987] mmcblk1boot1:mmc1:0001 4FTE4R 分区2 4.00 MiB
    [  3.430725] mmcblk1rpmb:mmc1:0001 4FTE4R 分区3 512 KiB、chardev (243:0)
    [/报价]

    这似乎是 eMMC 的枚举。

    [  3.532388] mmc0:使用外部 DMA 的4806000.mmc [4806000.mmc]上的 SDHCI 控制器
    [  3.554064] sdhci-OMAP:sdhci_omap_probe result sort 0
    [  3.554720]正在等待根设备 PARTUUUUID=3d292A74-02...
    [/报价]

    无法检测到 SDCard。

    您可以首先尝试在内核设备树中禁用 eMMC 节点、这可能会使内核日志更加干净。 然后、您可以在 SDCard 正常工作后稍后启用 eMMC。

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

    我已在器件树中禁用 eMMC。 以下是删除了不相关内容的相关迹线:

    [  2.907375] sdhci:安全数字主机控制器接口驱动程序
    [2.913634]  sdhci: copyright (c) Pierre Ossman
    [2.919246]  sdhci-pltfm:SDHCI 平台和驱动程序助手
    [  3.072160] OMAP_VOLTAGE_LIGHT_INIT:未添加电压驱动程序支持
    [  3.083123] sdhci-OMAP:sdhci_omap_probe result error -517
    [  3.107697] OMAP GPIO 硬件版本0.1

    [  3.260265] OMAP_GPIO 44e07000.GPIO:无法将第6行去抖设置为200000微秒(-22)
    [  3.274996] sdhci-OMAP 4806000.mmc:获得 CD GPIO
    [  3.285884] sdhci-OMAP:sdhci_omap_probe calling soc_device_match ()...
    [  3.292655] sdhci-OMAP 4806000.mmc:未找到电源 vqmmc,使用虚拟稳压器
    [  3.353130] mmc0:使用外部 DMA 的4806000.MMC [4806000.MMC]上的 SDHCI 控制器
    [  3.360924] sdhci-OMAP:sdhci_omap_probe result Success 0
    [  3.373198]正在等待根设备 PARTUUUID=3d292A74-02...
    此外、我还在 SD 模块中添加了 SoM 跟踪...
    此处未删除任何内容:
    [ 2.907375] sdhci:安全数字主机控制器接口驱动程序
    [2.913634] sdhci: copyright (c) Pierre Ossman
    [2.919246] sdhci-pltfm:SDHCI 平台和驱动程序助手
    [ 2.926513] sdhci-OMAP:调用 sdhci_omap_probe,调用 of_match_device ()...
    [ 2.926530] sdhci-OMAP:sdhci_omap_probe 调用 sdhci_pltfm_init ()...
    [2.934747] ledtrig-cpu:已注册以指示 CPU 上的活动
    [ 2.947692] sdhci-OMAP:sdhci_omap_probe 调用 sdhci_priv()....
    [ 2.947701] sdhci-OMAP:sdhci_omap_probe calling sdhci_pltfm_priv ()...
    [ 2.953959] sdhci-OMAP:sdhci_omap_probe 调用 sdhci_get_of_property ()...
    [ 2.960627] sdhci-OMAP:sdhci_omap_probe calling mc_of_parse ()...
    [ 2.972286] Davinci-McASP 48038000.McASP:未找到 IRQ 通用
    [ 2.984620]: MMC_of_parse called ..
    [2.984628]: MMC_of_parse 调用 device_property_read_u32(总线宽度)..
    [2.988313]: MMC_of_parse 调用 device_property_read_u32(max-frequencity)....
    [2.997029] NET:注册的协议系列10.
    [ 3.009008]: MMC_of_parse 调用 device_property_read_u32(不可移动)....
    [ 3.009019]: MMC_of_parse 调用 mc_gpiod_request_cd(CD,)...
    [3.016313]: mc_gpiod_request_cd called .. 调用 devm_gpiod_get_index()
    [ 3.030786]带 IPv6的段路由
    [3.03466] SIT:IPv6、IPv4和 MPLS over IPv4隧道驱动程序
    [ 3.041340] NET:注册的协议系列17.
    [3.045952]: mc_gpiod_request_cd devm_gpiod_get_index() result is_ERR
    [ 3.045959]: MMC_of_parse MMC_gpiod_request_CD(CD,) ret =-517 ..
    [ 3.052603] sdhci-OMAP:sdhci_omap_probe 调用 mc_of_parse 失败 ret =-517...
    [ 3.059452]注册密钥类型 DNS_resolver
    [ 3.072160] OMAP_VOLTAGE_LIGHT_INIT:未添加电压驱动程序支持
    [ 3.083123] sdhci-OMAP:sdhci_omap_probe result error -517
    [ 3.083917]正在加载编译的 X.509证书
    [ 3.107697] OMAP GPIO 硬件版本0.1
    [ 3.114268] pca953x 0-0020:未找到电源 VCC,使用虚拟稳压器
    [ 3.121123] pca953x 0-0020:使用无 AI
    [ 3.154225] omap_i2c 44e0b000.i2c:频率为400kHz 时的总线0版本0.11
    [ 3.171699] sdhci-OMAP:调用 sdhci_omap_probe,调用 of_match_device ()...
    [ 3.1716] sdhci-OMAP:sdhci_omap_probe 调用 sdhci_pltfm_init ()...
    [ 3.181078] ALSA 设备列表:
    [ 3.191156] sdhci-omap: sdhci_omap_probe calling sdhci_priv()..
    [ 3.191165] sdhci-omap: sdhci_omap_probe calling sdhci_pltfm_priv ()..
    [3.197333]找不到声卡。
    [ 3.207405] sdhci-omap: sdhci_omap_probe calling sdhci_get_of_property ()..
    [ 3.207432] sdhci-omap: sdhci_omap_probe calling mc_of_parse ()..
    [ 3.214529]:MMC_of_parse,调用...
    [ 3.220822]: MMC_of_parse 调用 device_property_read_u32(总线宽度)..
    [ 3.225256]: MMC_of_parse 调用 device_property_read_u32(max-frequency )..
    [ 3.232174]: MMC_of_parse 调用 device_property_read_u32(不可移动)....
    [ 3.239523]: MMC_of_parse 调用 mc_gpiod_request_cd(CD,)...
    [ 3.246842]: mc_gpiod_request_cd called .. 调用 devm_gpiod_get_index()
    [3.260251]: mc_gpiod_request_cd 调用 gpiod_set_debunce ()
    [ 3.260265] OMAP_GPIO 44e07000.GPIO:无法将第6行去抖设置为200000微秒(-22)
    [ 3.274988]: MMC_of_parse MMC_gpiod_request_CD(CD,) ret = 0...
    [ 3.274996] sdhci-OMAP 4806000.mmc:获得 CD GPIO
    [ 3.285884] sdhci-OMAP:sdhci_omap_probe calling soc_device_match ()...
    [ 3.292655] sdhci-OMAP 4806000.mmc:未找到电源 vqmmc,使用虚拟稳压器
    [ 3.353130] mmc0:使用外部 DMA 的4806000.MMC [4806000.MMC]上的 SDHCI 控制器
    [ 3.360924] sdhci-OMAP:sdhci_omap_probe result Success 0
    [ 3.373198]正在等待根设备 PARTUUUID=3d292A74-02...
    我的一个问题是,我不知道到底该期待什么。 但类似于在第一个 tracw 中找到 eMMC 分区时的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 periferials,存在从0或1索引的问题。。。 看看 pinmux、它具有0索引、在这种情况下、我具有:

    MMC0上的 SD 卡(mmc1)

    引脚多路复用

      SDCARD_PINS:pinmux_sdcard_pins{
        PINCCTRL-SINGLE、PINS =<
          AM33XX_PADCONF (AM335X_PIN_SPI0_CS1、PIN_INPUT、MUX_MODE7)   /* spio0_CS1.GPIO0_6 */
          AM33XX_PADCONF (AM335X_PIN_MMC0_DAT0、PIN_INPUT_PULLUP、MUX_MODE0)
          AM33XX_PADCONF (AM335x_PIN_MMC0_DAT1、PIN_INPUT_PULLUP、MUX_MODE0)
          AM33XX_PADCONF (AM335x_PIN_MMC0_DAT2、PIN_INPUT_PULLUP、MUX_MODE0)
          AM33XX_PADCONF (AM335X_PIN_MMC0_DAT3、PIN_INPUT_PULLUP、MUX_MODE0)
          AM33XX_PADCONF (AM335x_PIN_MMC0_CMD、PIN_INPUT_PULLUP、MUX_MODE0)
          AM33XX_PADCONF (AM335x_PIN_MMC0_CLK、PIN_INPUT_PULLUP、MUX_MODE0)
        >;
      };

    mmc1{

      状态="可以";
      总线宽度=<0x4>;
      pinctrl-names ="默认";
      PINCCTRL-0 =<&SDCARD_PINS>;
      CD-GPIO =<&GPIO0 6 GPIO_ACTIVE_LOW>;
      VMMC-SUPPLY =<&vmmcsd_fixed>  
    };

    MMC1上的 eMMC (mmc2)

    引脚多路复用:

      eMMC_Pins:pinmux_eMMC_Pins{
        PINCCTRL-SINGLE、PINS =<
          AM33XX_PADCONF (AM335x_PIN_GPMC_CSN1、PIN_INPUT_PULLUP、MUX_MODE2)/* GPMC_csn1.mmc1_clk */
          AM33XX_PADCONF (AM335x_PIN_GPMC_CSN2、PIN_INPUT_PULLUP、MUX_MODE2)/* GPMC_csn2.mmc1_cmd */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD0、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_ad0.mmc1_dat0 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD1、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_ad1.mmc1_dat1 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD2、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_AD2.mmc1_dat2 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD3、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_ad3.mmc1_dat3 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD4、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_AD4.mmc1_dat4 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD5、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_ad5.mmc1_dat5 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD6、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_ad6.mmc1_dat6 */
          AM33XX_PADCONF (AM335x_PIN_GPMC_AD7、PIN_INPUT_PULLUP、MUX_MODE1)/* GPMC_AD7.mmc1_dat7 */
        >;
      };  
    &mmc2{
      VMMC-SUPPLY =<&vmmcsd_fixed>
      pinctrl-names ="默认";
      pinctrl-0 =<&eMMC_PINS>;
      总线宽度=<8>;
      状态="可以";
      不可拆卸;  
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在较早版本的电路板上、我可以启动 SD 卡。 除了之后、同一个 SD 卡将具有相同的输出

    正在等待根设备...

    我得到(前3行是我添加的内容):

    PROLON:mc_attat_sd ()已调用
    PROLON:MMC_ATTACH_SD()调用 MMC_ATTACH_BUS
    PROLON:MMC_ATTACH_SD () RESULT OCR_AVAIL_SD 3145728
    mmc0:地址0007处的新高速 SDHC 卡
    mmcblk0:mmc0:0007 SD16G 14.5 GiB
    mmcblk0:P1 p2.
    ext4-FS (mmcblk0p2):带有序数据模式的已安装文件系统。 选项:(空)
    VFS:已安装在设备179:2上的 root (ext4文件系统)。
    devmpfs:已挂载
    释放未使用的内核内存:1024K
    作为初始进程运行/sbin/init

    没有在我的新目标上调用 MMC_ATTAC_SD(),这是什么原因。 SD 卡设备树和引脚连接是相同的!

    据我所知、两个电路板版本之间的区别在于、新电路板安装了不同的 DRAM、这是否真的导致了这个问题?

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

    我有两个板来自不同的作品。 电路设计完全相同、但新的电路板无法从 SD 卡引导、并会在等待根器件时挂起、如上所述。

    元件方面也有一些差异。 这可能与 DRAM 有关吗?   

    旧(正常) 新建(停止)
    模块 AM3352-1000 AM3354-800
    PMIC TSP65217C TSP65217C
    DRAM
    AS4C256M16D3LB-12BCN
    K4B4G1646E-BYK0