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.

[参考译文] Linux/TMS320DM8168:无法从 eMMC 引导分区引导

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663780/linux-tms320dm8168-failed-to-boot-from-emmc-boot-partition

器件型号:TMS320DM8168

工具/软件:Linux

dm8168是否支持从 eMMC 引导分区引导? 它可以从用户数据区域成功引导。 但是,当我将 MLO、u-boot.bin 文件移动到 eMMC 引导分区,并将引导分区格式化为 FAT32时,它无法成功引导并继续打印‘□。 那么、问题是什么?如何从 eMMC 引导分区引导?  

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

    是的、我们的客户能够从 DM816x eMMC 引导。 确保您符合 DM816x 器件勘误表和 DM816x ROM 代码要求。

    DM816x 器件勘误表、建议2.1.72—ROMCODE:ROM 代码不支持从大小为4GB 或更高的 eMMC 器件引导

    DM816x TRM、25.7.4节 SD 卡

    另请参见以下 e2e 线程:

    e2e.ti.com/.../254208
    e2e.ti.com/.../151914
    e2e.ti.com/.../307812

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、
    感谢您的回答。 我的 eMMC 设备大小为2 GB。 当 MLO、u-boot.bin 文件被放入 eMMC 用户数据区域时、它可以成功引导。 我现在要做的是从 eMMC 引导分区引导、在 Linux 中可以看到/dev/mmcblk0boot0和/dev/mmcblk0boot1。 但是、当我将 MLO 和 u-boot.bin 文件复制到两个引导分区时、我发现它无法引导。 它只能打印□□□□。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、
    感谢您的回答。 我的 eMMC 设备大小为2 GB。 当 MLO、u-boot.bin 文件被放入 eMMC 用户数据区域时、它可以成功引导。 我现在要做的是从 eMMC 引导分区引导、在 Linux 中可以看到/dev/mmcblk0boot0和/dev/mmcblk0boot1。 但是、当我将 MLO 和 u-boot.bin 文件复制到两个引导分区时、我发现它无法引导。 它只能打印□□□□。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    用户、

    [引用 user="user4451846"]当将 MLO、u-boot.bin 文件放入 eMMC 用户数据区域时,它可以成功引导。 [/报价]

    什么是 eMMC 用户数据区域? 从 eMMC 用户数据区域引导时,是否可以提供完整的控制台引导日志?

    [引用 user="user4451846">但当我将 MLO 和 u-boot.bin 文件复制到两个引导分区时,我发现它无法引导。 它只打印□□□□。

    您的意思是看到"CCC..." 打印控制台? 在这种情况下、您能否提供启动日志?

    您的 sysboot 引脚配置是什么?

    另请查看以下 wiki 以获取调试提示。

    此致、
    帕维尔

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

    另请查看以下 e2e 帖子:

    e2e.ti.com/.../1653586

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

    您好、Pavel

    [引用用户="Pavel Bodev"]

    什么是 eMMC 用户数据区域?  

    [/报价]

    引导分区是 eMMC 中的两个物理分区、如下图所示。它们的大小通常为1MB ~ 4MB。 用户数据区域是 eMMC 中最大的物理分区之一,它的使用频率最高。

    [引用用户="Pavel Bodev"]

    从 eMMC 用户数据区域引导时,是否可以提供完整的控制台引导日志?

    [/报价]

    这是从 eMMC 用户数据区域引导时的整个日志。  

    U-Boot 2010.06 (2018年2月12日- 09:20:37)
    
    将 gp7、28、29引脚设置为输出和高电平状态
    config 7611 rst 引脚 DONE
    CONFIG E2PROM A0/A1设置为输入
    DRAM:1 GiB
    MMC:OMAP SD/MMC:0
    使用默认环境
    
    按任意键停止自动引导: 0
    8168关闭狗和喂狗一次
    升高:信号#8读取
    u-boot1.bin
    
    220400字节读取
    ##正在启动应用程序,地址为0x80800000...
    
    
    U-Boot 2010.06 (2018年2月12日- 09:22:38)
    
    TI8168-GP 修订版2.1
    
    HDVICP 时钟 :600MHz
    L3快速时钟:560MHz
    HDVPSS 时钟 :280MHz
    Ducati M3 clk:280MHz
    DSP clk :813MHz
    ARM 时钟 :987MHz
    DDR 时钟 :675MHz
    
    --- DDR PLL ---
    DDR_N :0x32
    DDR_P :0x1
    DDR_MDIV1 :0x2
    DDR_INTFREQ2 :0x9
    DDDDR_FRACFREQ2R_N :0x0
    DDR_MDIV2 :0x19
    DDR_INTFREQ3 :0xD
    DDR_FRACFREQ3 :0x800000
    DDR_MDIV3 :0x2
    DDR_INTFREQ4 :0xE
    DDR_FRACFREQ4 :0x0
    DDR_MDIV4 :0x4
    DDR_INTFREQ5 :0xE
    DDR_FRACFREQ5 :0x0
    DDR_MDIV5 :0x4
    
    ---- EMIF 时序(0和1相同)---
    EMIF_TIM1:0x1777C9E5
    EMIF_TIT2:0x60D87FF4
    EMIF_TIMH 3:0x001F8D0F
    EMIF_SDREF:0x10001356
    EMIF_SDCFG:0x62A73B32
    EMIF_PHYCFG:0x00000110
    
    I2C:READY
    SET Gp7、29 EMIF_SDREF:0x10001356 EMIF_SDCFG:0x62A32 EMIF_PHY32 EMIF_PHYCFG
    :0x76B32 EMIF_PHYCFG:RMIF_PHYCFG:RMIF_PHYCFG:0x000008引脚设置
    
    
    为高
    电平1引脚配置1
    OMAP SD/MMC:0
    上升:信号#8捕捉
    ***警告-错误 CRC 或 MMC,使用默认环境
    
    
    网络: 未设置。 从 E-fuse
    Detected MACID:88:C2:55:8a:95:C8
    以太网 PHY 读取:通用@ 0x01
    REG:0x0、DATA=0x2100
    REG:0x1、DATA=0x7849
    REG:0x2、DATA=0x4000
    REG:0x3、DATA=0x5201
    REG:0x4、 DATA=0x181
    REG:0x5、DATA=0x0
    REG:0x6、DATA=0x4
    REG:0x7、DATA=0x2001
    REG:0x8、DATA=0x0
    REG:0x9、 DATA=0x0
    REG:0xA、DATA=0x0
    REG:0xb、DATA=0x0
    REG:0xc、DATA=0x0
    REG:0xd、DATA=0x0
    REG:0xe、 DATA=0x0
    REG:0xF、DATA=0x0
    REG:0x10、DATA=0x4040
    REG:0x11、DATA=0x6902
    REG:0x12、DATA=0x0
    REG:0x13、 DATA=0x42
    REG:0x14、DATA=0x3000
    REG:0x15、DATA=0x0
    REG:0x16、DATA=0x20
    REG:0x17、DATA=0x100
    REG:0x18、 DATA=0xC234
    REG:0x19、DATA=0x0
    REG:0x1a、DATA=0x0
    REG:0x1b、DATA=0xA1D0
    REG:0x1c、DATA=0x0
    REG:0x1d、 DATA=0x0
    REG:0x1E、DATA=0x0
    REG:0x0、DATA=0x2100
    REG:0x1、DATA=0x7849
    REG:0x2、DATA=0x4000
    REG:0x3、 DATA=0x5201
    REG:0x4、DATA=0x181
    REG:0x5、DATA=0x0
    REG:0x6、DATA=0x4
    REG:0x7、DATA=0x2001
    REG:0x8、 DATA=0x0
    REG:0x9、DATA=0x0
    REG:0xA、DATA=0x0
    REG:0xb、DATA=0x0
    REG:0xc、DATA=0x0
    REG:0xd、 DATA=0x0
    REG:0xe、DATA=0x0
    REG:0xF、DATA=0x0
    REG:0x10、DATA=0x4040
    REG:0x11、DATA=0x6902
    REG:0x12、 DATA=0x0
    REG:0x13、DATA=0x0
    REG:0x14、DATA=0x3000
    REG:0x15、DATA=0x0
    REG:0x16、DATA=0x20
    REG:0x17、 DATA=0x100
    REG:0x18、DATA=0xC234
    REG:0x19、DATA=0x0
    REG:0x1A、DATA=0x0
    REG:0x1b、DATA=0xA1D0
    REG:0x1c、 DATA=0x0
    REG:0x1d、DATA=0x0
    REG:0x1E、DATA=0x0
    通过设置 GPIO 7
    达芬奇 EMAC 重置 phy
    ~~~请按 ENTER 键从备份内核引导~~~
    按任意键停止自动引导:0
    8168关闭狗和喂狗一次性
    升高:信号#8捕捉
    上升: 信号#8捕捉
    到 MMC 重新扫描返回0
    读取 boot.scr
    
    409字节从
    MMC/SD 读取正在运行的引导脚本以设置 ENV...
    ##正在80900000
    dcrc:bdf412d2 (bdf412d2) len:159,addr 80900040
    读取 uImage
    
    6621912字节读取
    ##从 Legacy Image (81000000)引导内核...
    图像名称:Linux-2.6.37
    图像类型:ARM Linux 内核图像(未压缩)
    数据大小:6621848字节= 6.3 MIB
    加载地址:80008000
    入口点:80008000
    8168一次关闭狗和喂狗
    验证校验和... dlc:744b475f (744b475f) len:650a98,addr 81000040
    OK
    Loading Kernel Image…… 确定
    启动
    
    内核 cmd console=ttyO0、115200n8 root=/dev/mmcblk0p2 mem=256M DDR_mem=1024M rootwait fstyp=ramfs rw noinitrd nolock init=/linuxrc ip=192.168.5.54.223:192.168.5.54.32:192.168.5.54.1:255.255.255.1:255.255.255.0:eth0:on noinitr=/linuxrc ip=192.168.00m=vertify_bspyb.000=starting vertifybspyb.inu.pneva=192.
    
    
    
    8168一次性关闭狗和喂狗
    Linux 2.6.37版(huliaojie@Guo)(gcc 4.5.3 20110311版(预发布版)(GCC))#45 Sun 2 2 11:09:59 CST 2018
    CPU:ARMv7处理器[413fc082]修订版2 (ARMv7)、CR=10c53VIPT
    
    指令缓存非别名 CPU:CPU:CPU 缓存: ti8168evm
    vram size = 20971520 at 0x0
    ti81xx_reserve:###保留 DDR 区域@8ff00000
    保留大小= 20971520 at 0x0
    FB:保留20971520字节 SDRAM 用于 VRAM
    内存策略:禁用 ECC、数据高速缓存写回
    OMAP 芯片为 TI8168 2.1
    按区域顺序构建1个区域、移动分组。 总页数:59648
    内核命令行:console=ttyO0、115200n8 root=/dev/mmcblk0p2 mem=256M DDR_mem=1024M rootwait rootfstype=ramfs rw noinitrd nolock init=/linuxrc ip=192.168.5.54.223:192.168.5.54.32:192.168.5.54.1:255.255.255.0
    
    thrb:0=/linuxrc 条
    目(内存条目),命令为1024个字节,每条目数为1024个字节
    234MB 1MB = 235MB 总
    内存:224016k/224016k 可用、38128k 保留、0K HIGHMEM
    虚拟内核内存布局:
    向量:0xff0000-0xff1000 (4KB)
    Fixmap:0xFF00000 - 0xFFE0000 (896 KB)
    DMA :0xc00000 - 0xce00000 (2 MB)
    vmalloc:0xd0800000 - 0xf8000000 (632 MB)
    低内存:0xC0000000 - 0xd0000000 (256 MB)
    pkmap:bfe00000 - 0xC0000000 (2 MB)
    模块:bbf000000 - bbfe00000 (14 MB)
    init:0xc0008000 - 0xc096a000 (9608KB)
    .text:0xc096a000 - 0xc0d82000 (4192 KB)
    .data:0xc0d82000 - 0xc0dc7000 (276 KB)
    slub:Genslabs=11、HWalign=64、order=0-3、MinObjects=0、CPU=1、 NDIES=1
    NR_IRQ:407
    IRQ:在0xfa200000 (修订版本5.0)上找到一个 INTC 在
    1个活动控制器上总共有128个中断
    、GPMC 版本6.0
    尝试为 IRQ400安装中断处理程序
    尝试为 IRQ401安装中断处理程序
    尝试为 IRQ402安装中断处理程序
    尝试为 IRQ403安装中断处理程序
    尝试为 IRQ404
    安装中断处理程序 要为 IRQ405安装中断处理程序
    、请尝试为 IRQ406安装中断处理程序
    、尝试为 IRQ407安装类型控制
    、尝试为 IRQ407
    设置 IRQ 标志 OMAP 时钟事件源:GPTIMER1为27000000 Hz
    控制台:彩色虚拟设备80x30
    校准延迟环路... 986.31 BogoMips (lpj=4931584)
    pid_max:默认值:32768最小值:301
    Security Framework 已初始化
    安装-高速缓存散列表条目:512
    CPU:测试写入缓冲区一致性:OK
    devmpfs:已初始
    化 TI81XX:将0x8ff00000映射到0xfe500000对于 DRAM 隔离层
    TI81XX:将0x40300000映射到0xfe600000;
    不添加 OMAP-ARRAME_RAME_RAME_VOLTAGE_RAGE_RAGE_RAMER 支持
    内核版本0.5
    稳压器:虚拟:
    网络:已注册协议系列16
    OMA_VOLTGE_DOMAIN_Lookup:电压驱动器初始化尚未发生。故障!
    OMAP-VOLTGE_ADD_DEV:指定的 VDD 不存在!
    OMAP GPIO 硬件版本0.1
    OMAP GPIO 硬件版本0.1
    OMAP_mux_init:添加分区:#1:内核、标志:0
    _omap_mux_get_by_name:找不到信号 i2c2_scl i2c2_scl
    _init_mux_get_by_name:无法找到信号 i2c2_scl i2c2_csl_c2 ivr_c2
    ivr_c2 ivr_c2 iv_c2 i_c2 ivr_c2 ivr_c2 ivr_c2
    i_cr i_c2 iv_c2 i_c2 i_cr i_c2 i_cr i_c2 i_
    
    仅 OMAP3支持
    已注册的 ti81xx_VPSS 器件
    已注册的 ti81xx_vidout 器件
    已注册的 ti81xx 片上 HDMI 器件
    已注册的 ti81xx_fb 器件
    已注册的 ti81xx_VIN 器件
    简介:创建层块 0
    GPIO_VR GPIO_VR:无法获取 GPIO
    GPIO_VR:GPIO_VR 的探测失败、错误-16
    vgaarb:加载
    的 SCSI 子系统已初始化
    OMAP-i2c OMAP-i2c.1:100kHz 时的总线1 rev 4.0
    I2C:在 pcf8575_cir_enable
    I2C 处读取失败、错误代码:-cf121:传输失败、错误代码为85676_c676_enable I2C: -121
    OMAP-i2c OMAP-i2c.2:100kHz
    频率下的总线2版本4.0高级 Linux 声音架构驱动程序版本1.0.23。
    切换到时钟源 gp timer
    NET:注册协议系列2
    IP 路由高速缓存散列表条目:2048 (顺序:1、8192字节)
    TCP 建立的散列表条目:8192 (顺序:4、65536字节)
    TCP 绑定散列表条目:8192 (顺序:3、32768字节)
    TCP: 配置的哈希表(建立的8192 BIND 8192)
    TCP 重新注册
    的 UDP 哈希表条目:256 (顺序:0、4096字节)
    UP-Lite 哈希表条目:256 (顺序:0、4096字节)
    NET:注册协议系列1
    RPC:注册的 UDP 传输模块。
    RPC:注册的 TCP 传输模块。
    RPC:已注册的 TCP NFSv4.1反向通道传输模块。
    NetWinder 浮点仿真器 V0.97 (双精度)
    PMU:注册了0类
    OMAP-iommu OMAP-iommu.0的新 PMU 器件:Ducati 注册
    的 OMAP-iommu OMAP-iommu.1:系统注册
    的 JFFS2版本2.2。 (NAND)Copyright2001-2006 Red Hat、Inc.
    msgmni 已设置为437
    IO 调度程序 NOP 已注册
    IO 调度程序最后期限已注册
    IO 调度程序 cfq 已注册(默认)
    串行:8250/16550驱动程序、4个端口、IRQ 共享已启用
    OMAP-UART.0:TMIO 0x48020000处的 ttyO0 (IRQ = 72)是 OMAP UART0
    控制台[ttyO0]启用
    了 OMAP UART1]: MMIO 0x48022000
    
    (IRQ = 73)上的 ttyO1是 OMAP UART1 OMAP_UART.2:MMIO 0x48024000 (IRQ = 74)上的 ttyO2是 OMAP UART2
    
    
    
    
    MAF:模块已加载回路:模块已加载 OMAP2-nand 驱动程序正在初始化 ONFI param PAGE 0有效的 ONFI 闪存检测到的器件:0x2C 芯片 ID:NAND 芯片 ID:0x2C 0xCA (Micron、NAND 256MiB 3、3V 16位)
    内存大小:0x20000、writesize:2048、oobsize:64
    OMAP2-nand:Detected x16 NAND 闪
    存在"OMAP2-nand.0"上创建6个 MTD 分区:
    0x00000000000000000000 0x0000000x00000000 0x00000000000-0x00000000000-0x0000-0x0000.0000000:“U-Boot”260000-0x0000-0x0000.0000
    
    :0x0000.0000000:0x0000.0000000.0000000.0000000.0000
    
    :“U-引导0x0000.0000000.0000000.0000:0x0000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0x0000.0000000.
    "保留"[ssd1322]
    开始初始化 LCD
    [ssd1322] SPI 模式00
    [ssd1322] SPI 每字9位
    [ssd1322] SPI 10000000Hz (最大值)
    [ssd1322] array_SZ 8612
    [ssd1322]所有 LCD 初始化数据发送 ok
    [ssd1322]开始初始化 LCD
    [ssd13000]
    SPI 每字[ssd1322] SPI 1322]位[ssd1322]
    (最大值)
    [ssd1322] array_SZ 8612
    [ssd1322]所有 LCD 初始化数据都发送 ok
    Davinci_MDIO Davinci_MDIO.0:DaVinci MDIO 修订版本1.6
    Davinci_MDIO.0:检测到 phy mask fffffffd
    Davinci_MDIO.0:探测到 Davinci_MDIO_MDIO.0
    :探测到的 phon_MDIO_0:
    常见
    RTC:PS_MDIOMAP-0:0:0:0:0:0:0:0:0:0:0:0:0:0 已将 OMA_RTC 注册为 rtc0
    i2c /dev/entries 驱动
    程序 Linux 视频捕获接口:v2.00
    OMAP 看门狗计时器版本0x00:初始超时60秒
    notify_init:通知为物理地址0xbee00000处的远程 proc id 2创建的驱动程序
    已注册 TVP5158音频编解码
    器 McASP (2):lck SEL 0
    McASP (2):clk rate @@@@@@@@@@@@@@@@ 24576000 0xfa050000后续
    时钟:'mcasp0_fck '时钟的父'ssclk20_ck'正在使用中无法更改速率 usecount = 2
    McASP (0):lck SEL 0
    McASP (0):clk rate @@@@@@@@@@@@@@@@ 24576000 0xfa038000更高
    版本的 ASOC:TVP5158-hifi <->Davinci-McASP/0映射 ok
    ASOC:tlv320aic3x-hifi <-> Davinci-McASP.2映射 ok
    ASOC:di-DAI-CODEC <-> HDMI-b立方 映射 ok
    ALSA 器件列表:
    #0:TIv81XX TCP v81
    
    
    v1已注册协议
    :TDVDi-Da-Da-Da-Da-CCODEC v81 v1 Mentor Implement 41 Architecture 3 part 30 variant c rev 3
    omap_volte_Later_init:电压驱动程序支持未添加
    TI81XX 的电源管理。
    SmartReflex SmartReflex:驱动器初始
    化 OMAP-RTC OMAP-RTC:将系统时钟设置为2000-01-01 00:00:00 UTC (946684800)
    mmc0:地址0001
    mmcblk0:0001 MMC02G 1.78 GiB
    mmcblk0P3 boot0:mmc0:0001 MMC02G 1
    mblk1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mblk1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mc1 mblk1 mc1 mc1 m
    
    
    P1
    DaVinci_MDIO DaVinci_MDIO.0:重置 id 控制
    器网络 eth0:连接的 PHY 驱动程序[通用 PHY](MII_bus:phy_addr=0:01、id=40005201)
    IP-Config:完成:
    device=eth0、addr=192.168.5.54.223、mask=255.255.255.0、gw=192.168.5.54.1、
    host=192.168.5.54.223,domain=,nis-domain=(none),
    bootserver=192.168.54.32、rootserver=192.168.5.54.32、rootpath=
    释放初始化内存:9608K
    
    系统初始化...
    
    主机名 :DVR_RDK_HW
    
    
    内核版本:Linux 2.6.37
    内核版本:#45 Sun 2月11日11:09:59 CST 2018
    
    安装/proc. :[SUCCESS]
    安装/sys :[成功]
    安装/dev/dev :[成功]
    安装/dev/shm :[成功]
    安装/dev/pts :[成功]
    启用热插拔 :[SUCCESS]
    填充/dev/dev :[SUCCESS]
    挂载其他文件系统:[SUCCESS]
    启动 syslogd :[成功]
    启动 telnetd :[成功]
    安装/调试 :[成功]
    
    系统初始化完成。 

    [引用用户="Pavel Bodev"]

    您的意思是看到"CCC..." 打印控制台? 在这种情况下、您能否提供启动日志?

    [/报价]

    它可能是相同的。 我认为这个 charater 可能会因不同的 charater 编码而有所不同。 从 eMMC 引导分区引导时、我没有引导日志、因为加电时、它只打印字符、如"CCC"或我的案例中的"□□□"。

    [引用用户="Pavel Bodev"]

    您的 sysboot 引脚配置是什么?

    [/报价]

    您是指 TRM 中的 mboot[4:0]吗? 在我的示例中、mboot[4:0]= 10111、当我尝试从 eMMC 用户数据区域和 eMMC 引导分区进行引导时、我保持不变。

    [引用用户="Pavel Bodev"]

    另请查看以下 wiki 以获取调试提示。

    [/报价]

    我 浏览过您提供的 wiki。 但我发现对我的案例没有什么用处。因为他们对如何从 eMMC 引导分区引导几乎没有什么顾虑。

    诚挚地等待您的帮助。谢谢。

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

    [引用 USER="user4451846"]Boot 分区是 eMMC 中的两个物理分区,如下图所示。它们的大小通常为1MB ~ 4MB。 用户数据区域是 eMMC 中最大的物理分区之一,它最常用。

    根据我的理解、"用户数据区域"引导模式对应于 DM816x TRM 中描述的"原始模式":

    25.7.4 SD 卡

    原始模式、直接从用户区域中的扇区读取图像数据。 SD 卡的内容可以格式化为原始二进制文件或在 FAT 文件系统中。 ROM 代码从映像或文件系统中的引导文件中读取原始扇区并从中引导。 在原始模式下、引导映像可以位于主区域中四个连续位置之一:偏移0/20000h (128KB)/40000h (256KB)/60000h (384KB)。 通过读取扇区#0、#256、#512、#768来检测原始模式。 然后验证这些部门的内容是否存在第25.10节所述的目录结构。

    根据我的理解、您能够以原始模式从 eMMC 引导 DM816x 板、现在尝试切换到"文件系统模式"。

    您是否对原始模式和文件系统模式使用相同的 MLO 映像? 您是否在 MMC/SD 卡(非 eMMC)上尝试过该 MLO 映像(如果是)、是否成功引导? 请注意、在原始模式和文件系统模式之间、MLO 映像可能有不同的要求。 在原始模式下、您将拥有 MLO 文件+ TOC 标头(512字节标头)、而在文件系统模式下、您没有 TOC 标头、请检查以下 e2e 帖子:

     

    关于文件系统模式、您可以使用以下 e2e 帖子中描述的命令集从用户空间准备您的 eMMC FAT32:

     

    [引用 user="user4451846"]

    Pavel Botev

    您的意思是看到"CCC..." 打印控制台? 在这种情况下、您能否提供启动日志?

    它可能是相同的。 我认为这个 charater 可能会因不同的 charater 编码而有所不同。 从 eMMC 引导分区引导时、我没有引导日志、因为加电时、它只打印字符、如"CCC"或我的案例中的"□□□"。

    [/报价]

    ROM 代码未正确检测到您的 MLO (位于 eMMC FAT32分区中)、因此 ROM 代码切换到列表中的下一个引导设备、直至到达 UART。 到达 UART 时、它打印 CCCCCC... 在控制台上。

    [引用 USER="user4451846"]您是指 TRM 中的 mboot[4:0]吗? 在我的情况下、mboot[4:0]= 10111、当我尝试从 eMMC 用户数据区域和 eMMC 引导分区进行引导时、我保持不变。

    是的。 mboot[4:0]引脚看起来是正确的。

    [引述 user="user4451846">我 浏览过您提供的 wiki。 但我没有发现对我的案例有用的东西。因为他们对如何从 eMMC 引导分区进行引导几乎不关心。

    检查跟踪矢量值以了解 ROM 代码的阶段。 您需要使用 JTAG 将电路板与 CCS 连接。

    如果您可以通过 JTAG 进行连接、请打开反汇编窗口以查看程序计数器(PC)的位置。 它应该在0x20000-0x2C000中的某个位置(也就是说、在 ROM 代码中的某个位置)。 如果您在中断表向量(0x20080-0x200BC)中、代码会卡在死循环中。 请参阅 TRM 的初始化一章以确定它是哪个死循环。 这将为您提供出错的线索。 通常情况下、它将是数据中止、这意味着处理器尝试访问错误地址。

    此致、
    帕维尔

     

     

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

    [引用用户="Pavel Bodev"]

    根据我的理解、您能够以原始模式从 eMMC 引导 DM816x 板、现在尝试切换到"文件系统模式"。

    [/报价]

    我对 "File system modei"和"raw mode"之间的区别感到困惑。 根据 RTM、在原始模式下、SD 卡也可以在 FAT 文件系统中进行格式化、这与"文件系统 modeI"中的格式相同。 因此剂量意味着这两种模式之间的主要区别是 MLO 文件是否包含 TOC 标头? 如果我的理解是正确的、那么我在 eMMC 引导分区和 eMMC 用户数据区域中都使用了"文件系统 modei"。 因为我没有在 MLO 文件中添加 TOC 标头。

    [引用用户="Pavel Bodev"]

    您是否对原始模式和文件系统模式使用相同的 MLO 映像? 您是否在 MMC/SD 卡(非 eMMC)上尝试过该 MLO 映像(如果是)、是否成功引导? 请注意、在原始模式和文件系统模式之间、MLO 映像可能有不同的要求。 在原始模式下、您将拥有 MLO 文件+ TOC 标头(512字节标头)、而在文件系统模式下、您将没有 TOC 标头、  

    [/报价]

    是的、我使用相同的 MLO 文件。 根据我的理解、引导分区区域和用户数据区域都是 eMMC 的物理分区。 因此 ,我可以使用相同的 MLO 和 uboot.bin 文件,并在这两种情况下使用相同的引导模式和操作。 我有误解吗? 加电时、dm8168是否可能无法识别 eMMC 的两个引导分区、或 dm8168是否可能以不同的方式处理引导分区区域和用户数据区域?

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

    [引用 user="user4451846"]根据 RTM,在原始模式下,SD 卡也可以在 FAT 文件系统中进行格式化,这与“文件系统 modeI”中的格式相同。

    您在 TRM 中的哪个位置可以找到该信息? 请指定章节编号和页码。 我进行了搜索、但无法找到此类信息。

    [引用 user="user4451846"]因此剂量意味着两种模式之间的主要区别是 MLO 文件是否包含 TOC 标头?

    是的。

    RAW 模式下,引导映像可以位于主区域中四个连续位置之一。 通过读取扇区#0、#256、#512、#768来检测原始模式。 然后验证这些部门的内容是否存在25.10节所述的目录结构。

    在 RAW 模式下、不能使用 MLO 文件。 您需要向 MLO 文件添加 TOC 标头-有一个特定的512字节标头、需要首先放置 ROM 以识别映像并切换到原始模式。 MLO 文件是引导二进制文件+ 8字节标头、原始映像是 MLO + 512字节 TOC 标头。 如果没有 TOC 标头、RAW 模式将不起作用。 对于引导 MLO、TOC 只需要包含一个虚拟 CHSETTINGS 段。

    [引用 USER="user4451846">如果我的理解正确,则我在 eMMC 引导分区和 eMMC 用户数据区域中都使用了“文件系统模式”。 因为我没有在 MLO 文件中添加 TOC 标头。

    您是否对用户数据区域使用 FAT 文件系统(FAT12/16/32)? 如果是、则似乎您正在对用户区域和引导区域使用"文件系统模式"。

    此致、
    帕维尔

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

    大家好、Pavel

    很抱歉在这么长时间后回复您。

    [引用用户="Pavel Bodev"]

    您在 TRM 中的哪个位置可以找到该信息? 请指定章节编号和页码。 我进行了搜索、但无法找到此类信息。

    [/报价]

    在 TRM 25.7.4中,“原始模式,直接从用户区域中的扇区读取图像数据。 SD 卡的内容可以格式化为原始二进制文件或在 FAT 文件系统中。"。 我认为这意味着在原始模式下、eMMC 分区也可以在 FAT 文件系统中进行格式化。

    [引用 USER="Pavel Botev"]如果是,则似乎您正在为用户区域和引导区域使用“文件系统模式”。

    我只是在从 eMMC 引导区域或 eMMC 用户区域引导时执行相同的操作。 我无法从 eMMC 引导分区引导、而它可以从 eMMC 的用户区域成功引导。 那么、从引导分区引导时、我是否发生了错误? 还是 DM8168不会从 eMMC 的引导分区进行 SUPPROT 引导? 从 eMMC 引导时、Rom 代码是否具有分区大小限制(我问这是因为我的 eMMC 设备的两个引导分区的大小仅为1MB)?

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

    [引用 user4451846]TRM 25.7.4“原始模式,从用户区域的扇区直接读取图像数据。 SD 卡的内容可以格式化为原始二进制文件或在 FAT 文件系统中。"。 我认为这意味着在原始模式下、eMMC 分区也可以在 FAT 文件系统中进行格式化。

    不,我不这么认为。 您使用的 DM816x TRM 是哪个版本? 在版本 C (SPRUGX8C)上、我们具有以下内容:

    25.7.4.1概述

    在以下情况下、ROM 代码支持从 SD 卡引导:

    •原始模式、直接从用户区域中的扇区读取图像数据。
    •文件系统模式(支持 FAT12/16/32、带或不带主引导记录)、从引导文件读取映像数据。

    25.7.4.5初始化和检测

    如前所述、SD 卡的内容可以格式化为原始二进制文件或在 FAT 文件系统中。 ROM 代码从映像文件系统中的引导文件中读取原始扇区并从中引导。

    根据我的理解、文件系统不能在原始模式下使用。

    [引用 user="user4451846">当从 eMMC 引导区域或 eMMC 用户区域引导时,我执行相同的操作。 我无法从 eMMC 引导分区引导、而它可以从 eMMC 的用户区域成功引导。 那么、从引导分区引导时、我是否发生了错误? 还是 DM8168不会从 eMMC 的引导分区进行 SUPPROT 引导? 从 eMMC 引导时、Rom 代码是否存在分区大小限制(我提出这一问题是因为我的 eMMC 设备的两个引导分区的大小仅为1MB)?

    您应该能够从 eMMC 引导分区/dev/mmcblk1p1.引导

    请向我提供您正在执行的确切步骤:

    1.创建 MLO 和 u-boot.bin 文件

    2.将 eMMC 引导分区 /dev/mmcblk1p1格式化为 FAT 和闪存 MLO/u-boot.bin 文件

    3.将 eMMC 用户区域 /dev/mmcblk1p2格式化为 FAT 和闪存 MLO/u-boot.bin 文件

    此致、
    帕维尔

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

    [引用 user="Pavel Bodev"]您应该能够从 eMMC 引导分区/dev/mmcblk1p1.进行引导[/quot]

    我想您可能会误解 eMMC 的引导分区。 eMMC 的两个引导分区显示为/dev/mmcblk0boot0和/dev/mmcblk0boot1、用户数据区域 显示为/dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk0p3.

    以下是我的确切步骤:

    1.change mboot[4:0]至 mboot[4:0]= 10011、以便从 nand 闪存引导。

    2.

    /# fdisk /dev/mmcblk0boot0

    磁盘/dev/mmcblk0boot0:1 MB、1048576字节
    4个缸盖、16个扇区/履带、32个气缸
    单位= 64 * 512 = 32768字节的圆柱体

    2.

    命令(m 表示帮助):n
    命令操作
    e 扩展
    P 主分区(1-4)
    P
    分区编号(1-4):1.
    第一个气缸(1-32、默认值1):1.
    最后一个圆柱体或+size 或+sizeM 或+sizeK (1-32、默认值32):20

    命令(m 表示帮助):n
    命令操作
    e 扩展
    P 主分区(1-4)
    P
    分区编号(1-4):2.
    第一个气缸(21-32、默认21):使用默认值21
    最后一个圆柱体或+size 或+sizeM 或+sizeK (21-32、默认32):使用默认值32

    命令(m 表示帮助):t
    分区编号(1-4):1.
    十六进制代码(键入 L 以列出代码):l

    0空1b 隐藏 Win95 FAT32 9f BSD/OS
    1 FAT12 1c 隐藏 W95 FAT32 (LBA) a0 Thinkpad 休眠
    4 FAT16 <32M 1e Hidden W95 FAT16 (LBA) A5 FreeBSD
    5扩展3c Part.Magic recovery A6 OpenBSD
    6 FAT16 41 PPC PREP Boot A8 Darwin UFS
    7 HPFS/NTFS 42 SFS A9 NetBSD
    OS/2 Boot Manager 63 GNU HURD 或 SysV AB Darwin 引导
    b Win95 FAT32 80 Old Minix B7 BSDI FS
    C Win95 FAT32 (LBA) 81 Minix /旧版 Linux B8 BSDI 交换
    e Win95 FAT16 (LBA) 82 Linux swap be Solaris 引导
    f Win95 Ext'(LBA) 83 Linux EB BeOS FS
    11 Hidden FAT12 84 OS/2 Hidden C:Drive ee EFI GPT
    12 Compaq Diagnostics 85 Linux extended ef EFI (FAT-12/16/32)
    14隐藏 FAT16 <32M 86 NTFS 卷集 f0 Linux/PA-RISC 引导
    16隐藏 FAT16 87 NTFS 卷集 f2 DOS 辅助
    17 Hidden HPFS/NTFS 8e Linux LVM FD Linux RAID 自动检测
    十六进制代码(键入 L 以列出代码):c.
    将分区1的系统类型更改为 c (Win95 FAT32 (LBA))

    命令(m 表示帮助):a.
    分区编号(1-4):1.

    命令(m 表示帮助):p

    磁盘/dev/mmcblk0boot0:1 MB、1048576字节
    4个缸盖、16个扇区/履带、32个气缸
    单位= 64 * 512 = 32768字节的圆柱体

    器件引导启动结束块 ID 系统
    /dev/mmcblk0boot0p1 * 1 20 632 c Win95 FAT32 (LBA)
    /dev/mmcblk0boot0p2 21 32 384 83 Linux

    命令(m 表示帮助):W
    分区表已更改。
    调用 ioctl()以重新读取分区表
    mmcblk0boot0:P1 P2

    3.

    /# mkfs.vfat -F 32 -n boot /dev/mmcblk0boot0p1
    /# mkfs.ext2 -L rootfs /dev/mmcblk0boot0p2
    文件系统标签=rootfs
    操作系统类型:linux
    块大小=1024 (log=0)
    碎片大小=1024 (log=0)
    48个 inode、384个块
    为超级用户保留19个块(5%)
    第一个数据块= 1
    最大文件系统块数=262144
    1个块组
    每组8192个块、每组8192个块
    每组48个 inode

    4.

    /# mkdir /boot0

    /# mount /dev/mmcblk0boot0p1 /boot0

    5.

    /# cd /boot0/
    /boot0 # CP /files/MLO
    /boot0 # CP /files/u-boot1.bin

    6.断电。 将  订单中的 mboot 引脚更改为 mboot[4:0]= 10111、以便从 eMMC 引导。 然后加电。

    并且 无法成功引导。

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

    [引用 USER="user4451846">我认为您可能会误解 eMMC 的引导分区。 eMMC 的两个引导分区显示为/dev/mmcblk0boot0和/dev/mmcblk0boot1、用户数据区域 显示为/dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk0p3.

    谢谢您的解释、我想我现在理解了主要问题。

    DM816x 器件不支持从 eMMC 引导区域分区(/dev/mmcblkXboot0)引导。 您只能使用 eMMC 用户区域分区(/dev/mmcblkXp1)从 eMMC 引导。 检查以下 e2e 线程、这些线程适用于 AM335x 器件、但 DM816x 器件也是如此。

    仅 AM57x/DRA7x 器件支持从 eMMC 引导区域分区(/dev/mmcblkXboot0)引导、该引导模式称为备用引导模式、有关更多信息、请参阅以下指针:

    processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User's_Guide#Using_SD.2C_eMMC_or_USB_storage

    从 eMMC 引导分区引导 MLO 和 u-boot

    processors.wiki.ti.com/.../SD_User's_Guide

    此致、
    帕维尔

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

    感谢您的回复。 我认为这可能会解释为何无法从/dev/mmcblkXbootX.引导 现在、我想尝试其他方法。 e2e 线程中  

    它提到  "您可能能够修改 u-boot 代码、这样引导 ROM 将从用户数据区域加载 MLO、修改后的 MLO 将在引导分区中查找 u-boot。" 因此、如果我要将 MLO 放在用户数据区域中并将 u-boot 放在引导分区/dev/mmcblkXbootX?中、我应该遵循哪些确切的步骤

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

    [引用用户="Xiajie Hu 的说法]它提到  "您可以修改 u-boot 代码、这样引导 ROM 将从用户数据区域加载 MLO、修改后的 MLO 将在引导分区中查找 u-boot。" 因此、如果我要将 MLO 放在用户数据区域中并将 u-boot 放在引导分区/dev/mmcblkXbootX?中、我应该遵循哪些确切的步骤

    我没有包含确切步骤的列表。 通常、应修改 MLO 代码以从 eMMC 引导区域加载 u-boot、因为 默认情况下、MLO 将从用户区域加载 u-boot。

    如需详细的软件支持、请联系下面推荐的任何合作伙伴。

    此致、
    帕维尔

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

    此致、
    HU