1.硬件
使用beaglebone black提供的pcb制作的板子。
不同的地方为:BBB原来的cpu为AM3358(主频1000MHZ),我使用了AM3359(主频800MHZ)。
其他器件什么的都相同。
2.软件
内核,uboot和根文件系统都是使用的ti官方提供的ti-sdk-am335x-evm-07.00.00.00中的。
不同的地方:删除了uboot中read_eeprom部分代码;内核有添加几个驱动。
3.问题现象
(1)自己制作的板子使用过程中出现偶尔死机的现象,所有log几乎相同,都是“Unable to handle kernel paging request at virtual address xxxxx”,如下:
[ 5.675222] Unable to handle kernel paging request at virtual address f9f659a4
[ 5.682835] pgd = db8f4000
[ 5.685678] [f9f659a4] *pgd=44e11452(bad)
[ 5.689909] Internal error: Oops: 8000000d [#1] ARM
[ 5.695032] Modules linked in:
[ 5.698249] CPU: 0 PID: 977 Comm: mount.sh Not tainted 3.12.10-g7efe5c7-dirty #3
[ 5.706019] task: dd7f80c0 ti: db930000 task.ti: db930000
[ 5.711697] PC is at 0xf9f659a4
[ 5.715011] LR is at ext4_attr_show+0x28/0x34
[ 5.719588] pc : [<f9f659a4>] lr : [<c01611ac>] psr: a00f0013
[ 5.719588] sp : db931e68 ip : dc8a8508 fp : db931e74
[ 5.731650] r10: db931f5c r9 : dc8a85e0 r8 : db930000
[ 5.737140] r7 : db931e90 r6 : db8c7680 r5 : db931ed8 r4 : 00000000
[ 5.743998] r3 : f9f659a6 r2 : 00000000 r1 : dc8a8508 r0 : db931ed8
[ 5.750857] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
[ 5.758352] Control: 10c5387d Table: 9b8f4019 DAC: 00000015
[ 5.764390] Process mount.sh (pid: 977, stack limit = 0xdb930240)
(2)使用同一套软件(uboot,内核,根文件系统等等)的购买的BBB板子就没有出现死机的情况。
4.采取的措施
(1)咨询了TI技术支持,用AM3359替换AM3358后,在uboot中把MPU_DPLL改为800MHZ即可(其实内核会自动更改的)。此办法无用。
(2)参照ti提供的am335x ddr3 software leveling调校ddr3的配置,也没有效果。
不知道各位大神有没有什么想法和建议,应该从哪一方面分析解决这个问题?
|