大家好、专家
SoC:DRA750
SDK 版本:3.2
内核版本:Linux-4.4.84
我们的客户在其基于 DRA750的系统中遇到 Samsung eMMC 问题。 下面的列表是我们的客户提供的详细信息。 感谢你的帮助!
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
我们收到了异常产品、下面将分析错误状态。
- 此问题的基本信息:
在桌面/调试环境中重现:无
在实际产品中重现:2%
重现情况:系统启动/或运行。
问题详细信息:文件系统无法引导,因为密钥文件(显示在下面)丢失或损坏。 但内核是引导的。
- 我们产品的基本信息:
SDK 版本:3.2
内核版本:Linux-4.4.84
客户修改 MMC 驱动程序:无。
- KLM8G1GEUF-B04P-EMMC-8GB-Ver5.1-3.3V-8 (称为 Samsung eMMC)的产品信息
- 元段(闪存类型 SLC):
- eMMC 框架,
- 映射选项卡:逻辑和物理地址的地址映射
- (__LW_AT__用户无法访问这些段)
- 用户数据部分(闪存类型:MLC):我们将此部分用于内核/rootfs 存储。
- 元段(闪存类型 SLC):
- MMC 控制器在 HS200模式下工作、但 I/O 电压为3.3V、与规格(嵌入式多媒体卡(e•MMC)电气标准(5.1) JESD84-B51的6.6.2.2节)相违背。
- 我们已经使用 MMC 驱动程序进行了仔细检查、发现该驱动程序已通过寄存器0x13c 将模式切换到1.8V (地址偏移量0x13c 来自源代码、实际地址可能为0x3c。 寄存器名称是 AC12)位19 (从源搜索 AC12_V1V8_SIGEN)。 问题是、为什么电压不是1.8V?
- /opt/user/dms 或/opt/user/lib/init 文件(/opt 随/dev/mmcblk0p2一起安装、并且库和程序在此处编程。) 损坏。 内核错误日志如下。
[ 36.242869] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 1, block bitmap and bg descriptor inconsistent: 387 vs 390 free clusters [ 36.260867] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 2, block bitmap and bg descriptor inconsistent: 8189 vs 8192 free clusters [ 36.285184] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 3, block bitmap and bg descriptor inconsistent: 3776 vs 3779 free clusters [ 36.300090] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 4, block bitmap and bg descriptor inconsistent: 1459 vs 1462 free clusters [ 36.315835] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 5, block bitmap and bg descriptor inconsistent: 7752 vs 7755 free clusters [ 36.330445] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 6, block bitmap and bg descriptor inconsistent: 8189 vs 8192 free clusters [ 36.344824] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 7, block bitmap and bg descriptor inconsistent: 1565 vs 1568 free clusters [ 36.360756] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 8, block bitmap and bg descriptor inconsistent: 917 vs 920 free clusters [ 36.375191] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 9, block bitmap and bg descriptor inconsistent: 1786 vs 1789 free clusters [ 36.390123] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:758: group 10, block bitmap and bg descriptor inconsistent: 877 vs 880 free clusters [ 56.762658] virtio_rpmsg_bus virtio2: msg received with no recipient [[LPCan] destroySystemCan [libcan] Release inUsd pool: 3 [ 56.802772] virtio_rpmsg_bus virtio2: msg received with no recipient [libcan] destroy CAN channel:90200 type:Physics endpoint:Client at pool[3] DONE !!![ 56.810417] EXT4-fs error (device mmcblk0p3): ext4_mb_generate_buddy:758: group 1, [libcan] destroySystemCan DONE !!! block bitmap and bg descriptor inconsistent: 14509 vs 14510 free clusters [ 56.836192] JBD2: Spotted dirty metadata buffer (dev = mmcblk0p3, blocknr = 0). There's a risk of filesystem corruption in case of system crash. Requesting system rebootesses [ 58.718159] reboot: Restarting system
- 我们尝试更新系统、内核严重错误显示如下:
[ 234.138843] Unable to handle kernel paging request at virtual address ffffffec [ 234.146104] pgd = ee195d80 [ 234.148821] [ffffffec] *pgd=80000080007003, *pmd=affa6003, *pte=00000000 [ 234.155578] Internal error: Oops: 207 [#1] PREEMPT SMP ARM [ 234.161085] Modules linked in: [ 234.164161] CPU: 0 PID: 1222 Comm: tar Not tainted 4.4.84+ #1 [ 234.169929] Hardware name: Generic DRA74X (Flattened Device Tree) [ 234.176049] task: eee24980 ti: e8162000 task.ti: e8162000 [ 234.181476] PC is at iommu_fault_handler+0x18/0x14c [ 234.186375] LR is at handle_irq_event_percpu+0xb4/0x160 [ 234.191622] pc : [<c02a15ec>] lr : [<c0072968>] psr: a0030193 [ 234.191622] sp : e8163b00 ip : e8163b40 fp : e8163b3c [ 234.203148] r10: c06c8b67 r9 : eee2ca80 r8 : 00000169 [ 234.208394] r7 : 00000000 r6 : 00000000 r5 : ee5f9a10 r4 : ee61a980 [ 234.214947] r3 : c02a15d4 r2 : c05b8cbc r1 : ee5f9a10 r0 : 00000000 [ 234.221501] Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user [ 234.228752] Control: 30c5387d Table: ae195d80 DAC: fffffffd [ 234.234520] Process tar (pid: 1222, stack limit = 0xe8162210) [ 234.240289] Stack: (0xe8163b00 to 0xe8164000) [ 234.244665] 3b00: eee74f00 ffffffff eee249c8 337f0133 00000400 e8163b20 ee61a980 eee2cae0 [ 234.252877] 3b20: 00000000 00000000 00000169 eee2ca80 e8163b84 e8163b40 c0072968 c02a15e0 [ 234.261088] 3b40: e7cd5680 c06863a4 e8163bc4 c05b8cd0 c05b8cbc c05b8c94 c0063778 eee2ca80 [ 234.269300] 3b60: eee2cae0 c06b0ca4 00000000 eec08000 00000000 000006b4 e8163ba4 e8163b88 [ 234.277511] 3b80: c0072a54 c00728c0 eee2ca80 eee2cae0 c06b0ca4 00000000 e8163bc4 e8163ba8 [ 234.285723] 3ba0: c0075d98 c0072a20 c068640c 00000169 00000000 00000000 e8163bd4 e8163bc8 [ 234.293935] 3bc0: c0071f94 c0075ce4 e8163bfc e8163bd8 c007226c c0071f74 c068c7d4 fa21200c [ 234.302146] 3be0: e8163c28 fa212000 fa213000 00000000 e8163c24 e8163c00 c0009490 c0072214 [ 234.310357] 3c00: c0189e1c a0030013 ffffffff e8163c5c 000a794c 00000000 e8163c8c e8163c28 [ 234.318569] 3c20: c0013cc0 c000945c eef42000 0000148b 00000001 eef41c00 eef41800 00000002 [ 234.326781] 3c40: 00000001 0000148b 000a794c 00000000 000006b4 e8163c8c e8163c90 e8163c78 [ 234.334993] 3c60: c0189f48 c0189e1c a0030013 ffffffff 00000001 00000000 eef41800 00000002 [ 234.343205] 3c80: e8163cb4 e8163c90 c0189f48 c0189df4 00001000 00000000 e7e8c0b0 e7e8c0b0 [ 234.351416] 3ca0: 000a794c 00000000 e8163cd4 e8163cb8 c016c75c c0189f30 00000000 00001000 [ 234.359629] 3cc0: 00000007 e7e8c0b0 e8163cfc e8163cd8 c01228f8 c016c730 e7e8c0b0 efeeda80 [ 234.367839] 3ce0: 000a794c 00000000 000a794c 00000000 e8163d3c e8163d00 c012b7e8 c01228cc [ 234.376051] 3d00: 000006b4 000006b4 efeeda80 00000000 00000000 e7e8c0b0 00000000 000006b4 [ 234.384262] 3d20: e7e8c17c ee84d800 e57cca80 000006b4 e8163d94 e8163d40 c016b5f8 c012b714 [ 234.392473] 3d40: 000006b4 000006b4 efeeda80 00000000 ffeff000 ffefe000 000a8000 00000000 [ 234.400684] 3d60: 000a794c 00000000 c0225e3c c016b4f0 e8163ef4 e7e8c17c 000006b4 0000094c [ 234.408896] 3d80: c04c3c9c 000006b4 e8163df4 e8163d98 c00b7ec4 c016b4fc 000006b4 000006b4 [ 234.417108] 3da0: efeeda80 00000000 00000000 e8162000 00000000 e57cca80 000a794c 00000000 [ 234.425319] 3dc0: efeeda80 00000000 000000ea 00000000 e57cca80 e8163f08 e7e8c17c e8163ef4 [ 234.433530] 3de0: e7e8c118 00000000 e8163e44 e8163df8 c00b9b38 c00b7dac e8163e34 e8163e08 [ 234.441742] 3e00: 000000ea 07a7dd4c 00000001 ee849148 e8163e60 00000000 ee614198 00000000 [ 234.449954] 3e20: e8163f08 e7e8c0b0 e8163ef4 e57cca80 e7e8c118 00001000 e8163edc e8163e48 [ 234.458166] 3e40: c0161070 c00b99a0 e8163e84 e8163e58 c01161a4 c00fe50c 000000ea 07a7dd4c [ 234.466378] 3e60: 000000ea 07a7dd4c 00001000 ee62ee30 eeff7d00 00000000 e8163edc 00000000 [ 234.474589] 3e80: c0103f10 c01160fc 00020002 eeff7d18 ea40a780 e8162000 e8163ef4 c04bf918 [ 234.482801] 3ea0: 00000000 00000000 00000006 ee62ee00 00001000 e57cca80 00000000 00001000 [ 234.491012] 3ec0: e8163f80 000a794c 00000000 00000000 e8163f4c e8163ee0 c00fc138 c0160e40 [ 234.499223] 3ee0: 00001000 c006a8cc ea40a780 bee17998 00001000 00000001 00000000 00001000 [ 234.507434] 3f00: e8163eec 00000001 e57cca80 00000000 000a794c 00000000 00000000 e8163e7c [ 234.515647] 3f20: 00000000 00000000 e57cca80 00001000 bee17998 e8163f80 c000fac4 e8162000 [ 234.523859] 3f40: e8163f7c e8163f50 c00fc924 c00fc090 00000000 00000000 e8163f7c e57cca80 [ 234.532071] 3f60: e57cca80 bee17998 00001000 c000fac4 e8163fa4 e8163f80 c00fd194 c00fc898 [ 234.540283] 3f80: 000a794c 00000000 00000000 0000004a bee17998 00000004 00000000 e8163fa8 [ 234.548494] 3fa0: c000f920 c00fd154 00000000 0000004a 0000004a bee17998 00001000 ffffffff [ 234.556705] 3fc0: 00000000 0000004a bee17998 00000004 000c8e34 00000000 ffffffff 00001000 [ 234.564917] 3fe0: 00000000 bee1795c 0001bac7 b6e33556 60030030 0000004a 8152900b 38299c89 [ 234.573124] Backtrace: [ 234.575592] [<c02a15d4>] (iommu_fault_handler) from [<c0072968>] (handle_irq_event_percpu+0xb4/0x160) [ 234.584848] r9:eee2ca80 r8:00000169 r7:00000000 r6:00000000 r5:eee2cae0 r4:ee61a980 [ 234.592666] [<c00728b4>] (handle_irq_event_percpu) from [<c0072a54>] (handle_irq_event+0x40/0x64) [ 234.601573] r10:000006b4 r9:00000000 r8:eec08000 r7:00000000 r6:c06b0ca4 r5:eee2cae0 [ 234.609474] r4:eee2ca80 [ 234.612026] [<c0072a14>] (handle_irq_event) from [<c0075d98>] (handle_fasteoi_irq+0xc0/0x194) [ 234.620584] r7:00000000 r6:c06b0ca4 r5:eee2cae0 r4:eee2ca80 [ 234.626304] [<c0075cd8>] (handle_fasteoi_irq) from [<c0071f94>] (generic_handle_irq+0x2c/0x3c) [ 234.634949] r7:00000000 r6:00000000 r5:00000169 r4:c068640c [ 234.640666] [<c0071f68>] (generic_handle_irq) from [<c007226c>] (__handle_domain_irq+0x64/0xbc) [ 234.649405] [<c0072208>] (__handle_domain_irq) from [<c0009490>] (gic_handle_irq+0x40/0x7c) [ 234.657789] r9:00000000 r8:fa213000 r7:fa212000 r6:e8163c28 r5:fa21200c r4:c068c7d4 [ 234.665604] [<c0009450>] (gic_handle_irq) from [<c0013cc0>] (__irq_svc+0x40/0x74) [ 234.673117] Exception stack(0xe8163c28 to 0xe8163c70) [ 234.678189] 3c20: eef42000 0000148b 00000001 eef41c00 eef41800 00000002 [ 234.686400] 3c40: 00000001 0000148b 000a794c 00000000 000006b4 e8163c8c e8163c90 e8163c78 [ 234.694611] 3c60: c0189f48 c0189e1c a0030013 ffffffff [ 234.699679] r9:00000000 r8:000a794c r7:e8163c5c r6:ffffffff r5:a0030013 r4:c0189e1c [ 234.707502] [<c0189de8>] (ext4_journal_check_start) from [<c0189f48>] (__ext4_journal_start_sb+0x24/0x84) [ 234.717106] r5:00000002 r4:eef41800 [ 234.720716] [<c0189f24>] (__ext4_journal_start_sb) from [<c016c75c>] (ext4_dirty_inode+0x38/0x68) [ 234.729622] r7:00000000 r6:000a794c r5:e7e8c0b0 r4:e7e8c0b0 [ 234.735341] [<c016c724>] (ext4_dirty_inode) from [<c01228f8>] (__mark_inode_dirty+0x38/0x244) [ 234.743898] r5:e7e8c0b0 r4:00000007 [ 234.747504] [<c01228c0>] (__mark_inode_dirty) from [<c012b7e8>] (generic_write_end+0xe0/0x14c) [ 234.756150] r9:00000000 r8:000a794c r7:00000000 r6:000a794c r5:efeeda80 r4:e7e8c0b0 [ 234.763967] [<c012b708>] (generic_write_end) from [<c016b5f8>] (ext4_da_write_end+0x108/0x27c) [ 234.772612] r10:000006b4 r9:e57cca80 r8:ee84d800 r7:e7e8c17c r6:000006b4 r5:00000000 [ 234.780512] r4:e7e8c0b0 [ 234.783068] [<c016b4f0>] (ext4_da_write_end) from [<c00b7ec4>] (generic_perform_write+0x124/0x1bc) [ 234.792061] r10:000006b4 r9:c04c3c9c r8:0000094c r7:000006b4 r6:e7e8c17c r5:e8163ef4 [ 234.799962] r4:c016b4f0 [ 234.802515] [<c00b7da0>] (generic_perform_write) from [<c00b9b38>] (__generic_file_write_iter+0x1a4/0x200) [ 234.812206] r10:00000000 r9:e7e8c118 r8:e8163ef4 r7:e7e8c17c r6:e8163f08 r5:e57cca80 [ 234.820105] r4:00000000 [ 234.822659] [<c00b9994>] (__generic_file_write_iter) from [<c0161070>] (ext4_file_write_iter+0x23c/0x4f0) [ 234.832262] r10:00001000 r9:e7e8c118 r8:e57cca80 r7:e8163ef4 r6:e7e8c0b0 r5:e8163f08 [ 234.840161] r4:00000000 [ 234.842716] [<c0160e34>] (ext4_file_write_iter) from [<c00fc138>] (__vfs_write+0xb4/0xe4) [ 234.850925] r10:00000000 r9:00000000 r8:000a794c r7:e8163f80 r6:00001000 r5:00000000 [ 234.858824] r4:e57cca80 [ 234.861376] [<c00fc084>] (__vfs_write) from [<c00fc924>] (vfs_write+0x98/0x174) [ 234.868713] r9:e8162000 r8:c000fac4 r7:e8163f80 r6:bee17998 r5:00001000 r4:e57cca80 [ 234.876528] [<c00fc88c>] (vfs_write) from [<c00fd194>] (SyS_write+0x4c/0xa8) [ 234.883604] r8:c000fac4 r7:00001000 r6:bee17998 r5:e57cca80 r4:e57cca80 [ 234.890375] [<c00fd148>] (SyS_write) from [<c000f920>] (ret_fast_syscall+0x0/0x34) [ 234.897974] r7:00000004 r6:bee17998 r5:0000004a r4:00000000 [ 234.903690] Code: e24cb004 e24dd018 e1a05001 e5910010 (e5103014) [ 234.909811] ---[ end trace bdbbaabf06960aa5 ]--- [ 234.914445] Kernel panic - not syncing: Fatal exception in interrupt [ 234.920834] CPU1: stopping [ 234.923559] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G D 4.4.84+ #1 [ 234.930812] Hardware name: Generic DRA74X (Flattened Device Tree) [ 234.936928] Backtrace: [ 234.939402] [<c0012fcc>] (dump_backtrace) from [<c00131c8>] (show_stack+0x18/0x1c) [ 234.947002] r7:eec99f48 r6:20080193 r5:00000000 r4:c06b0964 [ 234.952728] [<c00131b0>] (show_stack) from [<c0215fe8>] (dump_stack+0x8c/0xa0) [ 234.959986] [<c0215f5c>] (dump_stack) from [<c00155c0>] (handle_IPI+0x184/0x198) [ 234.967411] r7:eec99f48 r6:00000000 r5:00000001 r4:c068640c [ 234.973128] [<c001543c>] (handle_IPI) from [<c00094c8>] (gic_handle_irq+0x78/0x7c) [ 234.980727] r7:fa212000 r6:eec99f48 r5:fa21200c r4:c068c7d4 [ 234.986441] [<c0009450>] (gic_handle_irq) from [<c0013cc0>] (__irq_svc+0x40/0x74) [ 234.993955] Exception stack(0xeec99f48 to 0xeec99f90) [ 234.999027] 9f40: 00000000 ef338388 fe600000 00000000 eec98000 c068c4ac [ 235.007241] 9f60: c0685364 c04b8fa4 eec99fb8 c06c8b65 c068c4f8 eec99fa4 eec99f84 eec99f98 [ 235.015452] 9f80: c0026300 c0010440 60080013 ffffffff [ 235.020521] r9:c06c8b65 r8:eec99fb8 r7:eec99f7c r6:ffffffff r5:60080013 r4:c0010440 [ 235.028342] [<c0010418>] (arch_cpu_idle) from [<c0069678>] (default_idle_call+0x28/0x34) [ 235.036470] [<c0069650>] (default_idle_call) from [<c00697a8>] (cpu_startup_entry+0x124/0x190) [ 235.045121] [<c0069684>] (cpu_startup_entry) from [<c00151a8>] (secondary_start_kernel+0x16c/0x178) [ 235.054203] r7:c06ca288 [ 235.056754] [<c001503c>] (secondary_start_kernel) from [<8000956c>] (0x8000956c) [ 235.064178] r7:c06ca288 r6:30c0387d r5:00000000 r4:aec47380 [ 235.069897] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
- 针对软件部门提出的问题、硬件部门测量了 Samsung eMMC 和 Micron eMMC 的时钟和数据波形
- Samsung eMMC 的时钟频率约为192MHz、并且 clk 和数据波形严重失真
- Samsung eMMC 的时钟波形
- Samsung eMMC 的数据波形
- Samsung eMMC 的数据波形眼图
- Micron eMMC 的时钟波形
- Micron eMMC 的时钟波形眼图
- Micron eMMC 的数据波形
- Micron eMMC 的数据波形眼图
- 在 Samsung eMMC 的数据表中、3V I/O 端口的最大速度为52MHz
- DRA750的总线速度模式说明
- HS200模式选择流程图
- 软件设置的总线速度模式为 HS200模式、eMMC 将首先检测 Vccq 引脚的电平、以确定是否选择了 HS200模式。由于 I/O 端口使用3.3V 电平、因此无法满足 HS200模式的工作条件。但是、DRA750和 Samsung eMMC 的时钟速度会自动协商 到192MHz。
- 为什么在不满足运行条件时仍协商 HS200模式