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.

AM4372: AM437 boot reliability

Part Number: AM4372


Tool/software:

We have been doing some boot reliability testing on our product board.  The board is based on one of the TW demo boards and we lifted the CPU/SDRAM design and routing exactly.    We’ve turned on watchdog in u-boot but we see about 1:10,000 times where the HMI does not successfully boot. I am going to try and load kernel symbols next week and add mtest to the uboot build and test memory.   Any insight or help is appreciated.

Two failure examples:

Addresses tend not to be consistent.  

 

Here’s one example:

1.492075] 8<--- cut here ---
[ 1.495161] Unable to handle kernel NULL pointer dereference at virtual address 00000070
[ 1.503290] pgd = 428bcacc
[ 1.506005] [00000070] *pgd=00000000
[ 1.509606] Internal error: Oops: 80000005 [#1] PREEMPT ARM
[ 1.515200] Modules linked in:
[ 1.518274] CPU: 0 PID: 55 Comm: kthreadd Not tainted 5.10.65-gdcc6bedb2c #1
[ 1.525350] Hardware name: Generic AM43 (Flattened Device Tree)
[ 1.531292] PC is at 0x00000070
[ 1.534442] LR is at 0xc088bc70
[ 1.537593] pc : [<00000070>] lr : [<c088bc70>] psr: 00000093
[ 1.543884] sp : c1a21f10 ip : 00000000 fp : c1a21f64
[ 1.549127] r10: c1a1bed0 r9 : 00000000 r8 : 00000000
[ 1.554371] r7 : 00000000 r6 : c0c0d630 r5 : c0c0d140 r4 : c11e8640
[ 1.560923] r3 : 00000072 r2 : 00000009 r1 : c11e8640 r0 : c0c0d140
[ 1.567478] Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment none
[ 1.574729] Control: 10c53c7d Table: 80004059 DAC: 00000051
[ 1.580496] Process kthreadd (pid: 55, stack limit = 0x52

 

 

And here’s another:

Starting kernel ...

[ 0.000000] BUG: Bad page state in process swapper pfn:8dee3

[ 0.001545] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'

[ 0.001558] This ensures that you still see kernel messages. Please

[ 0.001563] update your kernel commandline.

[ 1.272834] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!

[ 1.365991] BUG: FP instruction issued in kernel mode with FP unit disabled

[ 1.372996] FPEXC == 0x00000000

[ 1.376155] Internal error: Oops - undefined instruction: 0 [#1] PREEMPT ARM

[ 1.383234] Modules linked in:

[ 1.386311] CPU: 0 PID: 1 Comm: swapper Tainted: G B W 5.10.65-gdcc6bedb2c #1

[ 1.394609] Hardware name: Generic AM43 (Flattened Device Tree)

[ 1.400552] PC is at 0xff92f2a2

[ 1.403702] LR is at 0xff8ef2a0

[ 1.406855] pc : [<ff92f2a2>] lr : [<ff8ef2a0>] psr: a0000033

[ 1.413145] sp : c108deb8 ip : c13f4940 fp : c0b39830

[ 1.418389] r10: c0b39850 r9 : 000000c1 r8 : 00000000

[ 1.423632] r7 : c0c92344 r6 : ffffffff r5 : 00000001 r4 : c13e5400

[ 1.430185] r3 : c13f4900 r2 : ffff8ad0 r1 : 00000000 r0 : c13f4900

[ 1.436740] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment none

[ 1.444079] Control: 10c53c7d Table: 80004059 DAC: 00000051

[ 1.449848] Process swapper (pid: 1, stack limit = 0x(ptrval))

[ 1.455704] Stack: (0xc108deb8 to 0xc108e000)

[ 1.460079] dea0: c13f4700 c0c92348

  • Hi James,

    First we might want to check if the DDR is stable. You might want to run memtester in Linux for a long period of time (few hours or a day) on a range of memory (for example 32MB) to see if memtester reports any DDR failure.