i.MX8M Mini更换DDR4 4G问题
更换DDR4 4G 步骤:
1. 修改MX8M_Mini_DDR4_RPA_v18.xlsx文件,生成ds文件。
2. 使用MSCALE_DDR_Tool.exe,Calibration正常。Stress Test 也正常。生成ddr4_timing.c
3. 将ddr4_timing.c文件覆盖myir-imx-uboot/board/myir/myd_imx8mm/中的。
4. myir-imx-uboot/include/configs/myd_imx8mm.h文件中修改
#define PHYS_SDRAM 0x40000000
#define PHYS_SDRAM_SIZE 0xC0000000 /* 3GB DDR */
#define PHYS_SDRAM_2 0x100000000
#define PHYS_SDRAM2_SIZE 0x40000000 /* 1GB DDR */
5. 编译u-boot,烧录到板子中。
出现的问题:
app跑一段时间后,挂掉了,dmesg信息:
16634.925533] 001: kernel BUG at arch/arm64/kernel/traps.c:408!
[16634.925552] 001: Internal error: Oops - BUG: 0 [#1] PREEMPT_RT SMP
[16634.925561] 001: Modules linked in:
[16634.925569] 001: CPU: 1 PID: 234 Comm: galcore_deamon/ Not tainted 5.4.47-rt28-gemini-i.mx8mm #264
[16634.925581] 001: Hardware name: System-V1.0 i.MX8MM board (DT)
[16634.925584] 001: pstate: 00000005 (nzcv daif -PAN -UAO)
[16634.925589] 001: pc : do_undefinstr+0x2f4/0x318
[16634.925606] 001: lr : do_undefinstr+0x1e8/0x318
[16634.925610] 001: sp : ffff8000137a3af0
[16634.925614] 001: x29: ffff8000137a3af0 x28: ffff0000f928dd00
[16634.925619] 001: x27: ffff0000f9224c00 x26: ffff80001003b978
[16634.925623] 001: x25: 0000000000000000 x24: 0000000000000000
[16634.925628] 001: x23: 0000000000000005 x22: ffff800010f962fc
[16634.925632] 001: x21: ffff8000137a3c90 x20: ffff0000f928dd00
[16634.925637] 001: x19: ffff8000137a3b50 x18: 0000000000000000
[16634.925647] 001: x17: 0000000000000000 x16: 0000000000000000
[16634.925651] 001: x15: 0000000000000000 x14: ffff0000f824be00
[16634.925654] 001: x13: ffff8000e9129000 x12: 0000000034d4d91d
[16634.925658] 001: x11: 0000000000000000 x10: 0000000000000040
[16634.925661] 001: x9 : ffff0000f9224cb8 x8 : ffff0000f9224c80
[16634.925664] 001: x7 : ffff0000f73098a8 x6 : ffff8000137a3b48
[16634.925667] 001: x5 : 00000000d5300000 x4 : ffff80001269a148
[16634.925670] 001: x3 : 000000007b100000 x2 : 0000000100000000
[16634.925674] 001: x1 : ffff0000f928dd00 x0 : 0000000000000005
[16634.925679] 001: Call trace:
[16634.925683] 001: do_undefinstr+0x2f4/0x318
[16634.925686] 001: el1_undef+0x10/0x84
[16634.925693] 001: gckHARDWARE_SetPowerState+0x12c/0x850
[16634.925708] 001: gckOS_Broadcast+0xa4/0x140
[16634.925718] 001: _TryToIdleGPU+0x104/0x138
[16634.925727] 001: gckEVENT_Notify+0x370/0x380
[16634.925730] 001: gckHARDWARE_Notify+0x28/0x50
[16634.925734] 001: gckKERNEL_Notify+0x38/0x48
[16634.925737] 001: threadRoutine+0x44/0xa0
[16634.925740] 001: kthread+0xfc/0x128
[16634.925749] 001: ret_from_fork+0x10/0x18
[16634.925760] 001: Code: f9401bf7 17ffff7c a9025bf5 f9001bf7 (d4210000)
[16634.925774] 001: ---[ end trace 0000000000000002 ]---
[16634.925784] 001: note: galcore_deamon/[234] exited with preempt_count 1
[16634.926175] 001: ------------[ cut here ]------------
[16634.926195] 001: WARNING: CPU: 1 PID: 0 at kernel/rcu/tree.c:571 rcu_eqs_enter.isra.0+0xac/0xb8
[16634.926245] 001: Modules linked in:
[16634.926259] 001: CPU: 1 PID: 0 Comm: swapper/1 Tainted: G D 5.4.47-rt28-gemini-i.mx8mm #264
[16634.926271] 001: Hardware name: Spectrum-System-V1.0 i.MX8MM board (DT)
[16634.926276] 001: pstate: 200003c5 (nzCv DAIF -PAN -UAO)
[16634.926280] 001: pc : rcu_eqs_enter.isra.0+0xac/0xb8
[16634.926285] 001: lr : rcu_idle_enter+0x14/0x20
[16634.926290] 001: sp : ffff800012a63f20
[16634.926295] 001: x29: ffff800012a63f20 x28: 0000000000000000
[16634.926301] 001: x27: 0000000000000000 x26: 0000000000000000
[16634.926307] 001: x25: ffff0000f91a0c00 x24: ffff0000fb2c88c0
[16634.926312] 001: x23: ffff0000f824be00 x22: ffff80001219f8b8
[16634.926315] 001: x21: ffff80001268e1f8 x20: 0000000000000001
[16634.926320] 001: x19: ffff80001268e118 x18: 0000000000000005
[16634.926329] 001: x17: 0000000000000007 x16: 000000000000000e
[16634.926333] 001: x15: 0000000000000004 x14: 0000000000000019
[16634.926337] 001: x13: 0000000000000000 x12: 0000000000000000
[16634.926340] 001: x11: 0000000000000000 x10: 0000000000000212
[16634.926344] 001: x9 : ffff800012a63e70 x8 : ffff0000f824d930
[16634.926348] 001: x7 : 00000f211edc04a8 x6 : 0000001efd865246
[16634.926352] 001: x5 : 00000000000001b1 x4 : 0000000000b91f7c
[16634.926356] 001: x3 : 4000000000000002 x2 : 4000000000000000
[16634.926360] 001: x1 : ffff0000fb2cc340 x0 : ffff8000121a3340
[16634.926367] 001: Call trace:
[16634.926372] 001: rcu_eqs_enter.isra.0+0xac/0xb8
[16634.926378] 001: rcu_idle_enter+0x14/0x20
[16634.926381] 001: do_idle+0x1e8/0x290
[16634.926400] 001: cpu_startup_entry+0x28/0x48
[16634.926403] 001: secondary_start_kernel+0x154/0x190
[16634.926420] 001: ---[ end trace 0000000000000003 ]---
还有一次信息是这样的:
[ 668.000685] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000001
[ 668.001089] Mem abort info:
[ 668.001095] ESR = 0x96000004
[ 668.001100] EC = 0x25: DABT (current EL), IL = 32 bits
[ 668.001103] SET = 0, FnV = 0
[ 668.001105] EA = 0, S1PTW = 0
[ 668.001109] Data abort info:
[ 668.001111] ISV = 0, ISS = 0x00000004
[ 668.001114] CM = 0, WnR = 0
[ 668.001119] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000135f3c000
[ 668.001125] [0000000000000001] pgd=0000000000000000
[ 668.001141] Internal error: Oops: 96000004 [#1] PREEMPT_RT SMP
[ 668.001154] Modules linked in:
[ 668.001167] CPU: 3 PID: 4773 Comm: head Not tainted 5.4.47-rt28-gemini-i.mx8mm #264
[ 668.001175] Hardware name: System-V1.0 i.MX8MM board (DT)
[ 668.001179] pstate: 60000005 (nZCv daif -PAN -UAO)
[ 668.001185] pc : follow_managed+0x16c/0x2e0
[ 668.001227] lr : follow_managed+0x164/0x2e0
[ 668.001231] sp : ffff80001e53b9e0
[ 668.001236] x29: ffff80001e53b9e0 x28: ffff0000e0050000
[ 668.001243] x27: 0000000000000000 x26: 0000000000000000
[ 668.001249] x25: 0000000000000316 x24: ffff0000f8738520
[ 668.001256] x23: 0000000000000001 x22: 000000000021000c
[ 668.001262] x21: 0000000000000000 x20: ffff80001e53bd00
[ 668.001266] x19: ffff80001e53bb18 x18: 0000000000000000
[ 668.001270] x17: 0000000000000000 x16: 0000000000000000
[ 668.001273] x15: 0000000000000000 x14: 0000000000000000
[ 668.001277] x13: ffff0000e0050000 x12: 0000000000000000
[ 668.001281] x11: fefefefefefefeff x10: 0000fffffc4d9e66
[ 668.001285] x9 : ffff0000f70214b0 x8 : ffffffffffffffff
[ 668.001289] x7 : 662f73662f737973 x6 : 0000000000000003
[ 668.001293] x5 : 0000000000000043 x4 : ffff0000f7021520
[ 668.001296] x3 : 0000000100000000 x2 : ffff0000e0050000
[ 668.001300] x1 : 0000000000000000 x0 : 0000000000000001
[ 668.001306] Call trace:
[ 668.001313] follow_managed+0x16c/0x2e0
[ 668.001317] lookup_fast+0x114/0x2f0
[ 668.001327] walk_component+0x50/0x380
[ 668.001330] link_path_walk.part.0+0x2e4/0x4f8
[ 668.001333] path_openat+0x98/0x1140
[ 668.001335] do_filp_open+0x84/0x108
[ 668.001341] do_sys_open+0x180/0x228
[ 668.001354] __arm64_sys_openat+0x2c/0x38
[ 668.001357] el0_svc_common.constprop.0+0x78/0x178
[ 668.001368] el0_svc_handler+0x34/0xa0
[ 668.001371] el0_svc+0x8/0xc
[ 668.001396] Code: f9400660 9400422e 35000afa f9000277 (f94002f7)
[ 668.001410] ---[ end trace 0000000000000002 ]---
[ 691.395464] Unable to handle kernel paging request at virtual address 00000000f4768028
[ 691.395498] Mem abort info:
[ 691.395500] ESR = 0x96000044
[ 691.395502] EC = 0x25: DABT (current EL), IL = 32 bits
[ 691.395506] SET = 0, FnV = 0
[ 691.395508] EA = 0, S1PTW = 0
[ 691.395510] Data abort info:
[ 691.395512] ISV = 0, ISS = 0x00000044
[ 691.395513] CM = 0, WnR = 1
[ 691.395517] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000135c0e000
[ 691.395523] [00000000f4768028] pgd=0000000000000000
[ 691.395534] Internal error: Oops: 96000044 [#2] PREEMPT_RT SMP
[ 691.395542] Modules linked in:
[ 691.395550] CPU: 2 PID: 660 Comm: App Tainted: G D 5.4.47-rt28-gemini-i.mx8mm #264
[ 691.395555] Hardware name: System-V1.0 i.MX8MM board (DT)
[ 691.395558] pstate: 00000005 (nzcv daif -PAN -UAO)
[ 691.395562] pc : unix_scm_to_skb+0x34/0xa8
[ 691.395578] lr : unix_stream_sendmsg+0xd4/0x330
[ 691.395583] sp : ffff800013293ad0
[ 691.395586] x29: ffff800013293ad0 x28: ffff0000f5a10a08
[ 691.395595] x27: 000000000000000c x26: 00000000f4768000
[ 691.395600] x25: ffff0000f5a10000 x24: ffff0000ea038000
[ 691.395604] x23: 0000000000000000 x22: 0000000000000001
[ 691.395607] x21: 0000000000000000 x20: 00000000f4768000
[ 691.395610] x19: ffff800013293b98 x18: 0000000000000000
[ 691.395614] x17: 0000000000000000 x16: 0000000000000000
[ 691.395617] x15: 0000000000000000 x14: 0000000000000000
[ 691.395620] x13: 0000000000000000 x12: 0000000000000000
[ 691.395623] x11: 0000000000000000 x10: 0000000000000000
[ 691.395626] x9 : 0000000000000000 x8 : ffff0000f4768000
[ 691.395630] x7 : 0000000000000001 x6 : 0000000000000301
[ 691.395633] x5 : 0000000000000300 x4 : ffff0000f5a101fc
[ 691.395636] x3 : 0000000000000001 x2 : 0000000000000001
[ 691.395639] x1 : 00000000f4768000 x0 : ffff80001117e61c
[ 691.395643] Call trace:
[ 691.395646] unix_scm_to_skb+0x34/0xa8
[ 691.395649] unix_stream_sendmsg+0xd4/0x330
[ 691.395656] ____sys_sendmsg+0x260/0x288
[ 691.395664] ___sys_sendmsg+0x90/0xe0
[ 691.395666] __sys_sendmsg+0x78/0xd0
[ 691.395670] __arm64_sys_sendmsg+0x2c/0x38
[ 691.395673] el0_svc_common.constprop.0+0x78/0x178
[ 691.395681] el0_svc_handler+0x34/0xa0
[ 691.395683] el0_svc+0x8/0xc
[ 691.395695] Code: f9400275 b4000075 aa1503e0 97d0abd2 (f9001695)
[ 691.395702] ---[ end trace 0000000000000003 ]---
Hi @zloves
你用的是那个版本的BSP
感谢回复,我用的是下边链接这个,之前板子是2G的DDR,不够用了,换4G后出现这个问题,有没有可能是没有焊接好,我用memtester测试,也都能通过,没有报错。
1.你需要确认一下,2G换到4G在硬件上是否有细微差异
2.换一颗DDR料/重新加焊一下试试。
也有可能是手工焊接的问题,做了4片板子,MSCALE_DDR_Tool都能通过。便memtester均有多多少少的问题。
另外,请问教一下,DDR从2G改为4G,我上边的改法没有问题吧,还有没有别的地方需要修改?