2017-08-03 2 views
0

カーネル4.12を私のボードに移植しようとしていますが、私は非常に奇妙な問題に直面しています。Linuxカーネルを起動するときに矛盾が出る

いくつかのコンテキスト:デバイスツリーをサポートしたzImageから起動して、ブートローダとしてu-bootを使用しています。ボードにはSitara AM3352があります。

何が起こるかは、時にはですが、カーネルは印刷を開始しますが、ほとんどの場合、何もしません。

状況1:

U-Boot# bootz $kloadaddr - $fdtaddr 
## Current stack ends at 0x83ee8bf8 Kernel image @ 0x80007fc0 [ 0x00000000 - 0x002d9430 ] 
## Flattened Device Tree blob at 88000000 
    Booting using the fdt blob at 0x88000000 
using: FDT 
using: FDT 
    Loading Device Tree to 83edd000, end 83ee7337 ... OK 
## Transferring control to Linux (at address 80007fc0)... 

Starting kernel ... 

状況2:私は何のバグ、カーネルパニックに実行するように期待していたものの

/dts-v1/;                        

#include "am33xx.dtsi"                     
#include <dt-bindings/interrupt-controller/irq.h>              

/{                          
    model = "Test Board";                    
    compatible = "guilherme,test_board", "ti,am33xx";               

    [email protected] {                      
     device_type = "memory";                   
     reg = <0x80000000 0x04000000>; /* 64 MB */               
    };                         

    chosen {                        
     stdout-path = &uart0;                    
     bootargs ="console=ttyO0,115200n8 root=/dev/mtdblock10 rw rootfstype=jffs2 noinitrd earlycon";  
    }; 

}; 

U-Boot# bootz $kloadaddr - $fdtaddr 
## Current stack ends at 0x83ee8bf8 Kernel image @ 0x80007fc0 [ 0x00000000 - 0x002d9430 ] 
## Flattened Device Tree blob at 88000000 
    Booting using the fdt blob at 0x88000000 
using: FDT 
using: FDT 
    Loading Device Tree to 83edd000, end 83ee7337 ... OK 
## Transferring control to Linux (at address 80007fc0)... 

Starting kernel ... 

[ 0.000000] Booting Linux on physical CPU 0x0 
[ 0.000000] Linux version 4.12.0R01-Beta ([email protected]) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0)) #4 Thu Aug 3 14:30:16 BRT 2017 
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d 
[ 0.000000] CPU: PIPT/VIPT nonaliasing data cache, VIPT aliasing instruction cache 
[ 0.000000] OF: fdt: Machine model: Test Board 
[ 0.000000] earlycon: omapserial0 at MMIO 0x44e09000 (options '') 
[ 0.000000] bootconsole [omapserial0] enabled 
[ 0.000000] Memory policy: Data cache writeback 
[ 0.000000] CPU: All CPU(s) started in SVC mode. 
[ 0.000000] AM335X ES2.1 (neon) 
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 
[ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mtdblock10 rw rootfstype=jffs2 noinitrd earlycon 
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes) 
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) 
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) 
[ 0.000000] Memory: 56952K/65536K available (4096K kernel code, 179K rwdata, 1484K rodata, 1024K init, 438K bss, 8584K reserved, 0K cma-reserved, 0K highmem) 
[ 0.000000] Virtual kernel memory layout: 
[ 0.000000]  vector : 0xffff0000 - 0xffff1000 ( 4 kB) 
[ 0.000000]  fixmap : 0xffc00000 - 0xfff00000 (3072 kB) 
[ 0.000000]  vmalloc : 0xc4800000 - 0xff800000 (944 MB) 
[ 0.000000]  lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) 
[ 0.000000]  pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) 
[ 0.000000]  modules : 0xbf000000 - 0xbfe00000 ( 14 MB) 
[ 0.000000]  .text : 0xc0008000 - 0xc0500000 (5088 kB) 
[ 0.000000]  .init : 0xc0700000 - 0xc0800000 (1024 kB) 
[ 0.000000]  .data : 0xc0800000 - 0xc082cd90 (180 kB) 
[ 0.000000]  .bss : 0xc0831794 - 0xc089f2c8 (439 kB) 
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 
[ 0.000000] NR_IRQS:16 nr_irqs:16 16 
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts 
[ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz 
[ 0.000020] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns 
[ 0.008003] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns 
[ 0.017467] OMAP clocksource: timer1 at 24000000 Hz 
[ 0.022622] clocksource_probe: no matching clocksources found 
[ 0.028583] Calibrating delay loop... 599.04 BogoMIPS (lpj=1198080) 
[ 0.059960] pid_max: default: 32768 minimum: 301 
[ 0.064987] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) 
[ 0.071729] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) 
[ 0.079579] CPU: Testing write buffer coherency: ok 
[ 0.085216] Setting up static identity map for 0x80100000 - 0x80100060 
[ 0.095211] devtmpfs: initialized 
[ 0.107961] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 
[ 0.116265] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns 
[ 0.126579] futex hash table entries: 256 (order: -1, 3072 bytes) 
[ 0.132888] pinctrl core: initialized pinctrl subsystem 
[ 0.139759] NET: Registered protocol family 16 
[ 0.145433] DMA: preallocated 256 KiB pool for atomic coherent allocations 
[ 0.165036] omap_hwmod: debugss: _wait_target_disable failed 
[ 0.171060] Unhandled fault: external abort on non-linefetch (0x1028) at 0xf9e3e078 
[ 0.178849] pgd = c0004000 
[ 0.181618] [f9e3e078] *pgd=44e11452(bad) 
[ 0.185740] Internal error: : 1028 [#1] ARM 
[ 0.190019] Modules linked in: 
[ 0.193157] CPU: 0 PID: 1 Comm: swapper Not tainted 4.12.0R01-Beta #4 
[ 0.199760] Hardware name: Generic AM33XX (Flattened Device Tree) 
[ 0.206019] task: c3830000 task.stack: c382e000 
[ 0.210684] PC is at _update_sysc_cache+0x2c/0x94 
[ 0.215494] LR is at _enable+0x240/0x2a8 
[ 0.219517] pc : [<c0120b24>] lr : [<c0121314>] psr: 40000013 
[ 0.219517] sp : c382fe98 ip : c0124774 fp : 00000000 
[ 0.231311] r10: c0721838 r9 : 00000045 r8 : c08317c0 
[ 0.236673] r7 : c080abf0 r6 : 00000000 r5 : c0831c68 r4 : c080a5a4 
[ 0.243377] r3 : f9e3e078 r2 : c080b084 r1 : f9e3e000 r0 : c080a5a4 
[ 0.250083] Flags: nZcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none 
[ 0.257409] Control: 10c5387d Table: 80004019 DAC: 00000051 
[ 0.263307] Process swapper (pid: 1, stack limit = 0xc382e210) 
[ 0.269296] Stack: (0xc382fe98 to 0xc3830000) 
[ 0.273768] fe80:              00000000 c0121314 
[ 0.282173] fea0: 00000000 a0000013 c08092a8 c0803048 c080a5a4 c080a5d4 c080a5e8 c0709328 
[ 0.290574] fec0: c382fed4 d3053b52 c080ae5c d3053b52 c080a5a4 c0807808 c0709240 00000000 
[ 0.298975] fee0: c08317c0 c0121718 0000100c c0803048 00000002 c07099c8 00000000 c0709a6c 
[ 0.307377] ff00: 00000000 c0101794 00000154 c3ffed09 c0671b34 c0147200 000017c0 c0228d30 
[ 0.315777] ff20: c0803048 c05edd2c c07005dc 00000000 00000002 00000002 00000000 c0803048 
[ 0.324179] ff40: 00000000 c3ffed09 00000000 d3053b52 00000000 d3053b52 00000002 c072c0f8 
[ 0.332580] ff60: 00000002 c0721820 c08317c0 c08317c0 00000045 c0700dc8 00000002 00000002 
[ 0.340981] ff80: 00000000 c07005dc 00000000 c04a7cc0 00000000 00000000 00000000 00000000 
[ 0.349382] ffa0: 00000000 c04a7cc8 00000000 c010dd98 00000000 00000000 00000000 00000000 
[ 0.357783] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
[ 0.366184] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 ffffffff fffffffb 
[ 0.374609] [<c0120b24>] (_update_sysc_cache) from [<c0121314>] (_enable+0x240/0x2a8) 
[ 0.382637] [<c0121314>] (_enable) from [<c0709328>] (_setup+0xe8/0x4e8) 
[ 0.389516] [<c0709328>] (_setup) from [<c0121718>] (omap_hwmod_for_each+0x38/0x60) 
[ 0.397378] [<c0121718>] (omap_hwmod_for_each) from [<c0709a6c>] (__omap_hwmod_setup_all+0xa4/0xac) 
[ 0.406676] [<c0709a6c>] (__omap_hwmod_setup_all) from [<c0101794>] (do_one_initcall+0x50/0x18c) 
[ 0.415708] [<c0101794>] (do_one_initcall) from [<c0700dc8>] (kernel_init_freeable+0x140/0x1dc) 
[ 0.424650] [<c0700dc8>] (kernel_init_freeable) from [<c04a7cc8>] (kernel_init+0x8/0x10c) 
[ 0.433052] [<c04a7cc8>] (kernel_init) from [<c010dd98>] (ret_from_fork+0x14/0x3c) 
[ 0.440815] Code: e3110c01 e5901054 e6f13073 1a00000c (e5933000) 
[ 0.447075] ---[ end trace 396cebd12b8145f9 ]--- 
[ 0.451867] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b 
[ 0.451867] 
[ 0.461190] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b 
[ 0.461190] 
[ 1.373583] random: fast init done 

これは私の.dtsファイルです私はこの印刷の矛盾です。また、私は、この問題がいくつかの奇妙なu-boot configやカーネル自体に関連するものかどうかを特定する方法は見当たりません。

+1

実際にどのくらいのメモリがありますか?これはカスタムボードですか? dtsが言うように64MBしか持たないことを知るためにメモリ構成情報を更新しましたか? –

+0

カスタムボードで、メモリサイズは実際64MBです。 –

+0

メモリ設定やアドレスが間違っていると思います。 – 0andriy

答えて

0

だから、問題が見つかった!以前に設定したu-Bootで作業していたとき、私はu-Bootの変更を最小限に抑えようとしました。これらの既存の構成のうち、setenv bootargs = ...がありました。このbootargs定義は、.dtbファイルの定義よりも優先され、競合が発生します。この変数定義を削除すると、印刷の問題が解決されました。

システムが一見無作為に印刷していた理由は、bootargsの定義が、SDCardのイメージから起動するために使用されるピンの状態に依存していたためです。