工具/软件:Linux
dm8168是否支持从 eMMC 引导分区引导? 它可以从用户数据区域成功引导。 但是,当我将 MLO、u-boot.bin 文件移动到 eMMC 引导分区,并将引导分区格式化为 FAT32时,它无法成功引导并继续打印‘□。 那么、问题是什么?如何从 eMMC 引导分区引导?
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
dm8168是否支持从 eMMC 引导分区引导? 它可以从用户数据区域成功引导。 但是,当我将 MLO、u-boot.bin 文件移动到 eMMC 引导分区,并将引导分区格式化为 FAT32时,它无法成功引导并继续打印‘□。 那么、问题是什么?如何从 eMMC 引导分区引导?
用户、
[引用 user="user4451846"]当将 MLO、u-boot.bin 文件放入 eMMC 用户数据区域时,它可以成功引导。 [/报价]
什么是 eMMC 用户数据区域? 从 eMMC 用户数据区域引导时,是否可以提供完整的控制台引导日志?
[引用 user="user4451846">但当我将 MLO 和 u-boot.bin 文件复制到两个引导分区时,我发现它无法引导。 它只打印□□□□。
您的意思是看到"CCC..." 打印控制台? 在这种情况下、您能否提供启动日志?
您的 sysboot 引脚配置是什么?
另请查看以下 wiki 以获取调试提示。
此致、
帕维尔
您好、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)
2001-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
此致、
帕维尔
[引用用户="Xiajie Hu 的说法]它提到 "您可以修改 u-boot 代码、这样引导 ROM 将从用户数据区域加载 MLO、修改后的 MLO 将在引导分区中查找 u-boot。" 因此、如果我要将 MLO 放在用户数据区域中并将 u-boot 放在引导分区/dev/mmcblkXbootX?中、我应该遵循哪些确切的步骤
我没有包含确切步骤的列表。 通常、应修改 MLO 代码以从 eMMC 引导区域加载 u-boot、因为 默认情况下、MLO 将从用户区域加载 u-boot。
如需详细的软件支持、请联系下面推荐的任何合作伙伴。
此致、
帕维尔