openwrt 7621内核启动异常,解决办法记录

解决openwrt 7621内核启动异常问题
本文记录了openwrt 7621设备遇到的内核启动异常情况,表现为内存乱跳。通过分析内核源码确定问题发生在系统初始化阶段。解决方案是对比官网不同硬件配置的镜像,找到可正常启动的版本,下载源码并编译,最终在dts文件中定位到memory的reg分配问题并进行修正。

启动异常现象

[    1.340000] /testcase-data/phandle-tests/consumer-a: arguments longer than property
[    1.360000] /testcase-data/phandle-tests/consumer-a: arguments longer than property
[    1.380000] irq: no irq domain found for /testcase-data/interrupts/intc0 !
[    1.390000] ### dt-test ### end of selftest - 115 passed, 0 failed
[    1.410000] VFS: Mounted root (squashfs filesystem) readonly on device 31:5.
[    1.420000] Freeing unused kernel memory: 208K (8048c000 - 804c0000)
[    1.510000] random: nonblocking pool is initialized
[    2.250000] Unhandled kernel unaligned access[#1]:
[    2.260000] CPU: 3 PID: 1 Comm: preinit Not tainted 3.18.36 #5
[    2.270000] task: 8f840000 ti: 8f82a000 task.ti: 8f82a000
[    2.280000] $ 0   : 00000000 00000000 811f6c40 12def009
[    2.290000] $ 4   : 8f802e00 00fef000 8fb63800 80475a30
[    2.300000] $ 8   : 80475a30 00000000 00000000 000670b4
[    2.320000] $12   : 0003c0d0 0000000c 00000000 00068fe4
[    2.330000] $16   : 00017ca9 000003c2 8f8e3800 8fb63894
[    2.340000] $20   : 8fb63800 001c23c2 8f0f1f00 00000025
[    2.350000] $24   : 00000000 80012f84                  
[    2.360000] $28   : 8f82a000 8f82bbc0 00000000 80185fb0
[    2.370000] Hi    : 00000002
[    2.370000] Lo    : 00000000
[    2.380000] epc   : 800ba3b0 kfree+0xac/0x178
[    2.390000]     Not tainted
[    2.390000] ra    : 80185fb0 squashfs_read_data+0x654/0x6c0
[    2.400000] Status: 1100d803 KERNEL EXL IE 
[    2.410000] Cause : 00800010
[    2.420000] BadVA : 12def00d
[    2.420000] PrId  : 0001992f (MIPS 1004Kc)
[    2.430000] Modules linked in:
[    2.440000] Process preinit (pid: 1, threadinfo=8f82a000, task=8f840000, tls=00000000)
[    2.450000] Stack : 00000000 00000036 0002005a 8f458f04 00008dc4 8f0f1f00 00000025 0000072d
          03200008 24050002 00000000 00000000 3c1c0003 279cd7b0 0399e021 240201b8
          8f0f1f80 814703a0 00000018 8f458e38 8f0f1fe0 00000000 8f0f1f00 80189a60
          8f82bca4 00000004 8fb11400 8f82bc94 00008dc4 00000000 8f0f1f00 00000000
          00000002 00000002 00000060 ffffffff 8f458e38 00000011 814703a0 001c23c2
          ...
[    2.520000] Call Trace:
[    2.530000] [<800ba3b0>] kfree+0xac/0x178
[    2.540000] [<80185fb0>] squashfs_read_data+0x654/0x6c0
[    2.550000] [<80189a60>] squashfs_readpage_block+0x30c/0x4a8
[    2.560000] 
[    2.560000] 
Code: 00a72821  8ca50000  00651821 <8c6d0004> 8c650008  1445002c  00000000  8c850014  8c690000 
[    2.580000] Unhandled kernel unaligned access[#2]:
[    2.590000] CPU: 3 PID: 1 Comm: preinit Tainted: G      D        3.18.36 #5
[    2.610000] task: 8f840000 ti: 8f82a000 task.ti: 8f82a000
[    2.620000] $ 0   : 00000000 00000000 ffff8bd2 00000001
[    2.630000] $ 4   : 00000001 00000001 00000001 00000000
[    2.640000] $ 8   : 9a604380 00000000 00989680 00000000
[    2.650000] $12   : 00000000 00000000 00000000 38202034
[    2.660000] $16   : 3c0341c6 814a8f80 ffff8bd7 00000000
[    2.670000] $20   : 00000001 80470000 00000003 804c0000
[    2.680000] $24   : 00000000 8001b0d8                  
[    2.690000] $28   : 8f82a000 8f82b938 ffff8bd7 8004f094
[    2.700000] Hi    : 00000000
[    2.700000] Lo    : 00000000
[    2.710000] epc   : 8004efd4 run_rebalance_domains+0xb8/0x2fc
[    2.720000]     Tainted: G      D       
[    2.730000] ra    : 8004f094 run_rebalance_domains+0x178/0x2fc
[    2.740000] Status: 1100d803 KERNEL EXL IE 
[    2.750000] Cause : 00800010
[    2.760000] BadVA : 3c03421e
[    2.760000] PrId  : 0001992f (MIPS 1004Kc)
[    2.770000] Modules linked in:
[    2.780000] Process preinit (pid: 1, threadinfo=8f82a000, task=8f840000, tls=00000000)
[    2.790000] Stack : 00000082 804c0000 0000000a 8f884000 80470000 0000000a 00000001 80066ac8
          00000001 00000001 00000000 00000000 00000020 8046809c 0000000a 00000006
          00000100 804c48c0 80468080 00000007 0000001c 8002bdb0 8f0f1f00 00000025
          00000000 8005f478 00000000 00000000 00400100 ffff8bd3 00000000 804c0000
          803cd200 0000000b 80000000 80185fb0 8f0f1f00 00000025 00000000 8002c174
          ...
[    2.860000] Call Trace:
[    2.870000] [<8004efd4>] run_rebalance_domains+0xb8/0x2fc
[    2.880000] [<8002bdb0>] __do_softirq+0x138/0x27c
[    2.890000] [<8002c174>] irq_exit+0x64/0x80
[    2.890000] [<80005830>] ret_from_irq+0x0/0x4
[    2.900000] [<800162d4>] die+0xd4/0x134
[    2.910000] [<80018098>] do_ade+0x400/0x798
[    2.920000] [<80005820>] ret_from_exception+0x0/0x10
[    2.930000] [<800ba3b0>] kfree+0xac/0x178
[    2.940000] [<80185fb0>] squashfs_read_data+0x654/0x6c0
[    2.950000] [<80189a60>] squashfs_readpage_block+0x30c/0x4a8
[    2.960000] 
[    2.960000] 
Code: 12000078  8fa50020  8ea24100 <8e030058> 00621023  04410014  240400fd  8e020050  8e050054 
[    2.980000] ---[ end trace 120d73d48ad9e18c ]---
[    2.990000] Kernel panic - not syncing: Fatal exception in interrupt
[    3.010000] ---[ end Kernel panic - not syncing: Fatal exception in interrupt

每次启动到了这个位置,内存就开始乱跳,通过内核源码分析,内核初始化完成,下一步是进系统做系统相关的初始化

解决办法

在openwrt官网,下载了几个硬件参数差不多的镜像文件,测试是否能成功启动

在找到能启动的镜像后,下载源码,搭建编译环境后,找到对应的dts文件,进行修改测试,发现是memory中reg分配的问题

原版的dts

修改后的dts

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值