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.

[参考译文] LINUXSDK-OMAPL138:Linux 内核卡在->正在等待根设备 PARTUUUUE=22e9258b-02... Linux 中未检测到 NAND 闪存

Guru**** 666710 points
Other Parts Discussed in Thread: AM1808, OMAP-L138, TPS650250, TLV320AIC3106, THS8135, OMAP-L132
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1204902/linuxsdk-omapl138-linux-kernel-stuck-at----waiting-for-root-device-partuuid-22e9258b-02-and-nand-flash-not-detected-in-linux

器件型号:LINUXSDK-OMAPL138
主题中讨论的其他器件:OMAPL138AM1808OMAP-L138、DA8XX、 TPS650250、TLV320AIC3106THS8135OMAP-L132

大家好

  我的自定义板出现问题、在引导时、它在 等待根设备 PARTUUUUID=22e9258b-02时挂起...

内核似乎没有找到我的内存卡文件系统

我已经检查了下面提到的所有与裸金属代码的外设所有似乎工作

1、OMAPl138 JTAG 测试

2、DDR

3、以太网 phy

4、USB

5、UART 控制台

6、具有 FPGA 的 EMIF

7、具有8位 AND 的 EMIF

8、带卡检测引脚的 SD 卡插槽更改为 GPIO[1]而不是 GPIO[0]   

但是、当我使用最新的处理器 SDK 运行 Linux 时、如果它在  等待根设备 PARTUUUID=22e9258b-02时挂起...

下面给出了完整的 Linux 引导提示  

U-Boot SPL 2019.01-g333c3e72d3 (2020年4月19日- 06:43:52 +0000)
尝试从 MMC1引导


U-Boot 2019.01-g333CB3e72d3 (2020年4月19日- 06:43:52 +0000)

模型:DA850/AM1808/OMAP-L138 LCDK
DRAM:128 MIB
NAND:0 MiB
MMC:DA830-MMC:0
正在从 NAND 中加载环境... ***警告- readenv()失败,使用默认环境

输入:串行@10d000
输出:串行@10d000
ERR:串行@10d000
读取的 MAC 地址无效。
网络:Davinci-EMAC
警告:Davinci-EMAC (eth0)使用随机 MAC 地址- 76:C5:CB:38:0b:ed

按任意键以停止自动引导:0
切换到分区#0,确定
mmc0是当前器件
在器件0上找到 SD/MMC
**无法读取文件 boot.scr **
**无法读取文件 uEnv.txt **
切换到分区#0,确定
mmc0是当前器件
在器件0上找到 SD/MMC
3472184字节读取时间为885毫秒(3.7 MiB/s)
19902字节读取时间为6ms (3.2MiB/s)
##平展的设备树在 c0600000处模糊
在0xc0600000处使用 FDT blob 引导
正在将设备树加载到 c7e18000,end c7e1fdbd ... 好的

正在启动内核...

在物理 CPU 0x0上引导 Linux
Linux 版本4.19.94-gbe5389fd85 (OE-user@OE-host)(gcc 版本8.2.0 (GCC)))#1优先于 Sun 4月19日03:31:00 UTC 2020
CPU:ARM926EJ-S [41069265]修订版5 (ARMv5TEJ)、CR=0005317f
CPU:VIVT 数据高速缓存、VIVT 指令高速缓存
FDT:机器模型:DA850/AM1808/OMAP-L138 LCDK
内存策略:数据高速缓存写入
保留内存:在0xc3000000创建 CMA 内存池、大小为16 MIB
of:保留内存:初始化节点 DSP-存储器@c3000000、兼容 id shared-dma-pool
CMA:保留0xc6400000处的24 MIB
Davinci da850/OMAP-L138/AM18x 型号0x1
random:从 start_kernel+0x88/0x424调用 get_random_Bytes、其中 crng_init=0
构建1个区域主义者,移动分组。 总页数:32480
内核命令行:console=ttyS2,115200n8 root=PARTUUUID=22e9258b-02 rw rootfsttype=ext4 rootwait
条目高速缓存哈希表条目:16384 (顺序:4、65536字节)
inode 缓存哈希表条目:8192 (顺序:3、32768字节)
存储器:78944K/131072K 可用(6772K 内核代码、349K rwdata、2106K rodata、256K init、152K BSS、 11168K 保留、40960K CMA 保留)
虚拟内核内存布局:
向量: 0xFFFFF0000-0xff1000 (4 KB)
fixmap:0xfc00000 - 0xFFf00000 (3072KB)
vmalloc:0xc8800000 - 0x0x800000 (880MB)
lowmem:0xC0000000 - 0xc8000000 (128MB)
模块:0xbf000000 - 0xC0000000 (16 MB)
.text:0x (ptrval)- 0x (ptrval)(6774KB)
.init:0x (ptrval)- 0x (ptrval)(256KB)
.data:0x (ptrval)- 0x (ptrval)(350 KB)
.bss:0x (ptrval)- 0x (ptrval)(153KB)
Slub:HWalign=32、order=0-3、MinObjects=0、CPU=1、Nodes=1
RCU:抢占式分层 RCU 实现。
任务 RCU 已启用。
NR_IRQs:245
时钟源:timer0_1:mask:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:79635851949 ns
SCHED_CLOCK:24MHz 时为32位、分辨率为41ns、每89478484971ns 覆盖一次
控制台:彩色虚拟设备80x30
正在校准延迟环路... 227.32 BogoMips (lpj=1136640)
PID_max:默认值:32768最小值:301
挂载缓存哈希表条目:1024 (顺序:0、4096字节)
mountpoint-cache hash table entries:1024 (顺序:0、4096字节)
CPU:测试写入缓冲器一致性:确定
为0xc0008400 - 0xc0008458设置静态标识映射
RCU:分层 SRCU 实施。
devtmpfs:已初始化
vFP 支持 v0.3:不存在
时钟源:jiffies:mask:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:19112604462750000 ns
Futex 哈希表条目:256 (顺序:-1、3072字节)
pinctrl 内核:初始化 pinctrl 子系统
NET:注册的协议系列16.
DMA:为原子一致性分配预分配了256 KiB 池
CPUIDLE:使用调速器梯
cpuidle:使用调速器菜单
MUX:初始化 RTC_ALARM
MUX:设置寄存器 RTC_ALARM
多路复用器:PINMUX0 (0x00000000)= 0x44080000 -> 0x24080000
gpiochip_add_data_with_key:GPIO 0..143 (Davinci_GPIO.0)未能注册、-517
EDMA 1e30000.EDMA:memcpy 被禁用
EDMA 1e30000.EDMA:TI EDMA DMA DMA 引擎驱动程序
VCC_3v3d:由 VCC_5Vd 供电
VCC_1v8d:由 VCC_5Vd 供电
SCSI 子系统已初始化
介质:Linux 介质接口:v0.10
视频开发:Linux 视频捕捉接口:v2.00
PPS_CORE:LinuxPPS API 版本 1个已注册
PPS_CORE:软件版本 5.3.6 -版权所有2005-2007 Rodolfo Giometti
寄存了 PTP 时钟支持
已初始化高级 Linux 声音架构驱动程序。
时钟源:切换到时钟源 timer0_1
NET:注册的协议系列2.
tcp_list_portaddr_hash 哈希表条目:512 (顺序:0、4096字节)
TCP 建立的哈希表条目:1024 (顺序:0、4096字节)
TCP 绑定哈希表条目:1024 (顺序:0、4096字节)
TCP:已配置哈希表(已建立1024绑定1024)
UDP 哈希表条目:256 (顺序:0、4096字节)
UDP-Lite 哈希表条目:256 (顺序:0、4096字节)
NET:注册的协议系列1.
RPC:已注册的命名 UNIX 套接字传输模块。
RPC:已注册的 UDP 传输模块。
RPC:注册的 TCP 传输模块。
RPC:已注册的 TCP NFSv4.1反向通道传输模块。
工作集:TIMESTAMP_BITS=14 max_order=15 bucket_order=1
已加载块层 SCSI 通用(BSG)驱动程序版本0.4 (MAJOR 248)
已注册 IO 调度程序 NOOP (默认)
已注册 IO 调度程序 MQ 最后期限
已注册 IO 调度程序凸出程序
pinctrl-single 1c14120.pinmux:160引脚、尺寸80
串行:8250/16550驱动器,10个端口,禁用 IRQ 共享
控制台[ttyS2]已禁用
在 MMIO 0x1d0d000 (IRQ = 61、BASE_BAUD = 8250000)处的1d0d000.serial: ttyS2是 TI DA8xx/66AK2x
已启用控制台[ttyS2]
BRD:已加载模块
libphy:固定 MDIO 总线:探测
Davinci_MDIO 1e24000.MDIO:DaVinci MDIO 修订版1.5、总线频率2200000
Davinci_MDIO 1e24000.MDIO:检测到 Phy 掩模 ffff7f
libphy:1e24000.MDIO:探测
Davinci_MDIO 1e24000.MDIO:PHY[7]:器件1e24000.MDIO:07、驱动程序 SMSC LAN8710/LAN8720
i2c/dev 条目驱动程序
Davinci-WDT 1c210.wdt:心跳60秒
sdhci:Secure Digital Host Controller Interface 驱动程序
Sdhci: copyright (c) Pierre Ossman
sdci-pltfm:SDHCI 平台和驱动程序辅助器
TI-aemif 68000000.aemif:无法获取时钟'aemif'
NET:注册的协议系列10.
使用 IPv6的分段路由
SIT:IPv6、IPv4和 MPLS over IPv4隧道驱动程序
NET:注册的协议系列17.
EDMA 1c00000.EDMA:memcpy 被禁用
EDMA 1c00000。EDMA:TI EDMA DMA 引擎驱动程序
Davinci_MMC 1c40000.MMC:获取 CD GPIO
Davinci_MMC 1c40000.MMC:使用 DMA、4位模式
已启用控制台[netcon0]
netconsole:网络日志记录已启动
Davinci_EMAC 1e200000.Ethernet:读取 Mac 地址时机器/器件类型不兼容
Davinci_EMAC 1e200000.Ethernet:使用随机 MAC 地址:AA:C8:D1:67:64:0A
输入:GPIO 密钥为/devices/platform/gpio-keys/input/input0
hctosys:无法打开 RTC 设备(rtc0)
ALSA 设备列表:
找不到声卡。
正在等待根设备 PARTUUUID=22e9258b-02...

似乎我的 nand 闪存没有被检测到,但它也可以在裸机中工作  

下面是我的 SD 卡插槽连接详细信息

我甚至构建了设备树,它不工作,所以请帮我解决问题

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

    我忘了在 OMAP 开发板(LCDK-Ompl138)中提到、存储卡在我的自定义板 GPIO[1]中使用 GPIO4[0]作为卡检测

    NAND 闪存具有16位数据总线、而我的闪存具有8位数据总线

    请提供一些有关如何配置它们以在 Linux 中运行的信息

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

    尊敬的 Ramachandran:

    您正在从 SD 卡引导电路板、对吗?

    内核引导日志似乎显示未检测到 SD 卡。 由于您使用不同的 GPIO 进行卡检测、您是否相应地修改了内核器件树? 请提供显示您是如何修改的内核补丁。

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

    大家好

    我已在"My da850-lcdk.dts (我的 da850-lcdk.dts)"中更改这一行、并已检查是否检测到 SD 卡

    我将引脚从64更改为65、它工作正常、仍在尝试检测我的 nand

    mmc0{
       最大频率=<50000000>;
       总线宽度=<4>;
       pinctrl-names ="默认";
       pinctrl-0 =<&mmc0_pins>;
       CD-GPIO =<&GPIO 65 GPIO_ACTIVE_LOW>
       状态="可以";
    };

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

    这是 da850-lcdk.dts 文件

    /*
     *版权所有(c) 2016 BayLibre, Inc.
     *
     *已获 GPLv2授权。
     */
    /dts-v1/;
    #include "da850.dtsi"
    #include
    #include

    /{
       模型="DA850/AM1808/OMAP-L138 LCDK";
       兼容="ti、da850-lcdk"、"ti、da850";

       别名{
          SERIAL2 =&SERIAL2;
          以太网0 =&eth0;
       };

       选择了{
          stdout-path ="SERIAL2:115200n8";
       };

       内存@c0000000{
          /* 128MB DDR2 SDRAM @ 0xC0000000 */
          寄存器=<0xC0000000 0x08000000>;
       };

       保留内存{
          #address-Cells =<1>;
          #size-cells =<1>;
          范围;

          DSP_MEMORY_REGION:DSP-存储器@c3000000{
             兼容="共享 dma-pool";
             寄存器=<0xc3000000 0x1000000>;
             可重复使用;
             状态="可以";
          };
       };

       VCC_5Vd:fixedregulator-VCC_5Vd{
          兼容="固定稳压器";
          稳压器名称="VCC_5Vd";
          稳压器最小微伏=<5000000>;
          稳压器最大微伏=<5000000>;
          稳压器引导开启;
       };

       VCC_3v3d:fixedregulator-vcc_3v3d{
          /* TPS650250 - VDCDC1 */
          兼容="固定稳压器";
          稳压器名称="VCC_3v3d";
          稳压器最小微伏=<3300000>;
          稳压器最大微伏=<3300000>;
          VIN-SUPPLY =<和 VCC_5Vd>;
          稳压器始终开启;
          稳压器引导开启;
       };

       vcc_1v8d:fixedregulator-vcc_1v8d{
          /* TPS650250 - VDCDC2 */
          兼容="固定稳压器";
          稳压器名称="VCC_1v8d";
          稳压器最小微伏=<1800000>;
          稳压器最大微伏电压=<1800000>;
          VIN-SUPPLY =<和 VCC_5Vd>;
          稳压器始终开启;
          稳压器引导开启;
       };

       声音{
          兼容="简单音频卡";
          simple-audio-card、name ="DA850-OMAPL138 LCDK";
          simple-audio-card、widget =
             "线路"、"线路输入"、
             "线路"、"线路输出"、
             "麦克风"、"麦克风插孔";
          简单音频卡、路由=
             "LINE1L"、"线路输入"、
             "LINE1R"、"线路输入"、
             "线路输出"、"LLOut"、
             "线路输出"、"RLOUT"、
             "MIC3L"、"Mic Jack "、
             "MIC3R"、"Mic Jack "、
             "MIC 插孔"、"MIC 偏置";
          simple-audio-card、format ="DSP_B";
          simple-audio-card、bitclock-master =<&link0_codec>;
          simple-audio-card、frame-master =<&link0_codec>;
          简单音频卡、位时钟反转;

          简单音频卡、CPU{
             sound-DAI =<&McASP0>;
             系统时钟频率=<24576000>;
          };

          link0_codec:simple-audi-CARD、codec{
             sound-dai =<&tlv320aic3106>;
             系统时钟频率=<24576000>;
          };
       };

       GPIO 密钥{
          兼容="GPIO 密钥";
          自动检修;

          用户1{
             标签="GPIO 密钥 User1";
             Linux、code = ;
             GPIO =<&GPIO 36 GPIO_ACTIVE_LOW>;
          };

          User2{
             标签="GPIO 密钥 User2";
             Linux、code = ;
             GPIO =<&GPIO 37 GPIO_ACTIVE_LOW>;
          };
       };

       VGA 桥{
          兼容="ti、THS8135";
          #address-Cells =<1>;
          #size-cells =<0>;

          端口{
             #address-Cells =<1>;
             #size-cells =<0>;

             端口@0{
                寄存器=<0>;

                VGA_BRIDGE_IN:端点{
                   远程端点=<&LCDC_OUT_VGA>
                };
             };

             端口@1{
                寄存器=<1>;

                VGA_BRIDGE_OUT:端点{
                   远程端点=<&VGA_CON_IN>;
                };
             };
          };
       };

       VGA{
          兼容="VGA 连接器";

          DDC-i2c-bus =<&i2c0>;

          端口{
             VGA_CON_IN:端点{
                远程端点=<&VGA_BRIDGE_OUT>;
             };
          };
       };
    };

    &ref_clk{
       时钟频率=<24000000>;
    };

    &PMX_CORE{
       状态="可以";

       McASP0_PINS:pinmux_McASP0_PINS{
          PINCCTRL-SINGLE、BITS =<
             /* AHCLKX AFSX ACLKX */
             0x00 0x00101010 0x00f0f0f0
             /* ARX13 ARX14 */
             0x04 0x00000110 0x00000ff0
          >;
       };

       NAND_PINS:NAND_PINS{
          PINCCTRL-SINGLE、BITS =<
             /* ema_wait[0]、ema_OE、ema_we、ema_cs[3]*/
             0x1c 0x10110010 0xf0ff00f0
             /*
             * EMA_D[0]、EMA_D[1]、EMA_D[2]、
             * EMA_D[3]、EMA_D[4]、EMA_D[5]、
             * EMA_D[6]、EMA_D[7]
             */
             0x24 0x11111111 0xffffffff  
             /*
             * EMA_D[8]、EMA_D[9] 、EMA_D[10]、  
             * EMA_D[11]、EMA_D[12]、EMA_D[13]、
             * EMA_D[14]、EMA_D[15]
             */
             0x20 0x11111111 0xffffffff  
             /* ema_a[1]、ema_a[2]*/
             0x30 0x01100000 0x0ff00000  
          >;
       };
    };

    SERIAL2{
       pinctrl-names ="默认";
       pinctrl-0 =<&SERIAL2_rxtx_pins>;
       状态="可以";
    };

    &WDT{
       状态="可以";
    };

    rtc0{
       状态="可以";
    };

    GPIO{(&G)}
       状态="可以";
    };

    &SATA_REFCLK{
       状态="可以";
       时钟频率=<100000000>;
    };

    &SATA{
       状态="可以";
    };

    &MDIO{
       pinctrl-names ="默认";
       PINCCTRL-0 =<&MDIO_PINS>;
       bus_freq =<2200000>;
       状态="可以";
    };

    &eth0{
       pinctrl-names ="默认";
       PINCCTRL-0 =<&MII_PINS>;
       状态="可以";
    };

    mmc0{
       最大频率=<50000000>;
       总线宽度=<4>;
       pinctrl-names ="默认";
       pinctrl-0 =<&mmc0_pins>;
       CD-GPIO =<&GPIO 65 GPIO_ACTIVE_LOW>;
       状态="可以";
    };

    i2c0{
       pinctrl-names ="默认";
       pinctrl-0 =<&i2c0_pins>;
       时钟频率=<100000>;
       状态="可以";

       tlv320aic3106: tlv320aic3106@18 {
          #sound-Da-cells =<0>;
          兼容="ti, tlv320aic3106";
          寄存器=<0x18>;
          adc-settle-ms =<40>;
          ai3x-micbis-vg =<1>;      /* 2.0V */
          状态="可以";

          /*稳压器*/
          IOVDD-SUPPLY =<&VCC_3v3d>;
          AVDD-SUPPLY =<&VCC_3v3d>;
          DRVDD-SUPPLY =<& VCC_3v3d>;
          DVDD-SUPPLY =<和 VCC_1v8d>;
       };
    };

    &McASP0{
       #sound-Da-cells =<0>;
       pinctrl-names ="默认";
       PINCTRL-0 =<&McASP0_PINS>;
       状态="可以";

       OP-MODE =<0>;  /* Davinci_MCASP_IIS_MODE */
       TDM-slots =<2>;
       serial-dir =</*  0:非活动、1:TX、2:Rx */
          0 0 0 0
          0 0 0 0
          0 0 0 0
          0 1 2 0
       >;
       tx-num-evt =<32>;
       Rx-num-evt =<32>;
    };

    &USB_phy{
       状态="可以";
    };

    usb0{
       状态="可以";
    };

    &USB1{
       状态="可以";
    };

    aemif (&A){
       pinctrl-names ="默认";
       PINCCTRL-0 =<&nand_PINS>
       状态="可以";
       CS3{
          #address-Cells =<2>;
          #size-cells =<1>;
          时钟范围;
          范围;

          ti、cs-chipselect =<3>;

          NAND@2000000、0{
             兼容="ti、davinci-nand";
             #address-Cells =<1>;
             #size-cells =<1>;
             REG =<0 0x02000000 0x02000000
                   1 0x00000000 0x00008000>;

             TI、Davinci-chipselect =<1>;
             TI、Davinci-MASK-ALE =<0>;
             ti、davinci-mask-cle =<0>;
             TI、davinci-mask-chipsel =<0>;

             TI、达芬奇与总线宽度=<16>;
             TI、Davinci-ECC 模式="硬件";
             TI、davinci-ecc-bits =<4>;
             TI、Davinci-nand-use-BBT;

             /*
             * OMAP-L132/L138引导加载程序文档 SPRAB41E 如下:
             *"要从 NAND 闪存启动,应写入 AIS
             *更改为 NAND 块1 (默认情况下不使用 NAND 块0)"。
             *同一个文档提到对于 ROM"芯片修订版本2.1"、
             *"已更新 NAND 引导模式以提供从块0或者块1的引导"。
             *但是 limitaion 默认保留在此处,用于兼容性
             *与旧芯片,因为它需要新的引导引脚设置
             *无法库存 LCDK。
             */
             分区{
                兼容="固定分区";
                #address-Cells =<1>;
                #size-cells =<1>;

                分区@0{
                   标签="u-boot env";
                   寄存器=<0 0x020000>;
                };
                分区@20000 {
                   /* LCDK 默认从此分区引导*/
                   标签="u-boot";
                   REG =<0x020000 0x080000>;
                };
                分区@a0000 {
                   标签="可用空间";
                   寄存器=<0x0a0000 0>;
                };
             };
          };
       };
    };

    价格(&P){
       状态="可以";
    };

    memctrl{
       状态="可以";
    };

    &LCDC{
       状态="可以";
       pinctrl-names ="默认";
       PINCCTRL-0 =<&LCD_PINS>;

       端口{
          LCDC_OUT_VGA:端点{
             远程端点=<&VGA_BRIDGE_IN>;
          };
       };
    };

    vpif{
       pinctrl-names ="默认";
       pinctrl-0 =<&vpif_capture_pins>;
       状态="可以";
    };

    &DSP{
       memory-region =<&DSP_MEMORY_REGION>;
       状态="可以";
    };

    IAM 试图改变 nand 工作在8位,仍然尝试

    可以通过任何方法 在8位模式下检测我的 nand

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

    检测到8位 NAND

    我所要做的就是为 uBoot 更改 DTS 文件、然后构建新的 Uboot

    然后、我使用构建的 uboot 来检测我的 nand 闪存

    检测到我的 AND 器件、但显示 ECC 错误