저는 BeagleBone Black용 시스템을 개발 중입니다. 저는 Yocto 프로젝트를 사용하여 U-Boot, 커널 및 RFS를 생성하고 있습니다.
이 시스템의 부팅 시간을 줄이기 위해 U-Boot Falcon 모드를 설정하려고 합니다. 이 링크를 사용 설명서로 사용하고 있습니다.
https://embexus.com/2017/05/07/fast-boot-linux-with-u-boot-falcon-mode/
이를 달성하기 위해 먼저 이 매뉴얼에 지정된 U-Boot 버전을 다운로드하고 필요한 구성 변경을 수행했습니다. 그 후, 저는 Yocto의 툴체인(이전에 populate_sdk에 의해 생성됨)을 사용하여 아무런 문제 없이 U-Boot를 컴파일했습니다.
그 후 Falcon 모드는 uImage만 지원하므로 전체 시스템(커널 및 RFS 포함)을 Yocto로 다시 빌드하여 zImage 대신 uImage를 빌드했습니다.
필요한 파일을 BeagleBone Black에 복사하기 위해 SD 카드를 사용하고 있습니다. 카드의 처음 16MiB는 포맷되지 않았고 나머지는 ROOT(/dev/mmcblk0p1) 레이블이 있는 ext4로 포맷되었습니다. DD를 사용하여 am335x-boneblack.dtb, MLO, u-boot.img 및 uImage를 SD 카드의 첫 번째 16MiB에 있는 해당 영역에 복사한 다음 ROOT 파티션을 /mnt에 마운트하고 거기에 RFS 아카이브를 추출했습니다.
BeagleBone Black을 연결하고 전원을 켠 후 SD 카드에서 부팅하고 U-Boot 설정을 Falcon 모드로 들어갔습니다. 나는 다음과 같은 일련의 명령을 사용합니다.
=> setenv bootcmd "setenv bootargs console=ttyO0,115200n8 consoleblank=0 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait init=/usr/bin/run-qtdemo.sh lpj=4980736; mmc 읽기 83000000 80 180; mmc 읽기 82000000 900 3000; 82000000 - 83000000"
=> 환경 저장
=> mmc는 82000000 900 3000을 읽습니다.
=> mmc는 83000000 80 180을 읽습니다.
=> spl 수출 fdt 82000000 - 83000000
=>mmc 쓰기 83000000 80 180
=> setenv boot_os 1
=> 환경 저장
=> 재설정
시스템이 재부팅된 후 SPL은 U-Boot를 건너뛰고 커널 실행을 시작하지만 커널이 RFS를 마운트할 수 없어 커널이 충돌하게 됩니다. 다음은 Grabserial을 사용하여 캡처한 로그 파일입니다.
[0.000001 0.000001]
[0.000397 0.000396] U-Boot SPL 2017.05-rc3-dirty (Apr 07 2019 - 18:01:50)
[0.096303 0.096303] Trying to boot from MMC1
[1.628782 1.532479] [ 0.000000] Booting Linux on physical CPU 0x0
[1.633051 0.004269] [ 0.000000] Linux version 4.10.17-yocto-standard (oe-user@oe-host) (gcc version 6.4.0 (GCC) ) #8 PREEMPT Thu Apr 11 14:47:37 CEST 2019
[1.645767 0.012716] [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[1.653299 0.007532] [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[1.661486 0.008187] [ 0.000000] OF: fdt:Machine model: TI AM335x BeagleBone Black
[1.667507 0.006021] [ 0.000000] cma: Reserved 16 MiB at 0x8e800000
[1.672140 0.004633] [ 0.000000] Memory policy: Data cache writeback
[1.676907 0.004767] [ 0.000000] CPU: All CPU(s) started in SVC mode.
[1.681718 0.004811] [ 0.000000] AM335X ES2.1 (sgx neon)
[1.685356 0.003638] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64704
[1.693911 0.008555] [ 0.000000] Kernel command line:
[1.697114 0.003203] [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[1.703286 0.006172] [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[1.710582 0.007296] [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[1.717670 0.007088] [ 0.000000] Memory: 230608K/261120K available (6144K kernel code, 517K rwdata, 2216K rodata, 1024K init, 607K bss, 14128K reserved, 16384K cma-reserved, 0K highmem)
[1.733082 0.015412] [ 0.000000] Virtual kernel memory layout:
[1.737264 0.004182] [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[1.743266 0.006002] [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[1.749241 0.005975] [ 0.000000] vmalloc : 0xd0800000 - 0xff800000 ( 752 MB)
[1.755347 0.006106] [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[1.761236 0.005889] [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[1.767210 0.005974] [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[1.773212 0.006002] [ 0.000000] .text : 0xc0008000 - 0xc0700000 (7136 kB)
[1.779217 0.006005] [ 0.000000] .init : 0xc0a00000 - 0xc0b00000 (1024 kB)
[1.785208 0.005991] [ 0.000000] .data : 0xc0b00000 - 0xc0b814e4 ( 518 kB)
[1.791293 0.006085] [ 0.000000] .bss : 0xc0b83000 - 0xc0c1acb0 ( 608 kB)
[1.797201 0.005908] [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[1.804013 0.006812] [ 0.000000] Preemptible hierarchical RCU implementation.
[1.809575 0.005562] [ 0.000000] Build-time adjustment of leaf fanout to 32.
[1.815127 0.005552] [ 0.000000] NR_IRQS:16 nr_irqs:16 16
[1.818937 0.003810] [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[1.826555 0.007618] [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz
[1.832174 0.005619] [ 0.000012] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[1.840346 0.008172] [ 0.000030] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[1.849981 0.009635] [ 0.000042] OMAP clocksource: timer1 at 24000000 Hz
[1.855065 0.005084] [ 0.000475] clocksource_probe: no matching clocksources found
[1.861101 0.006036] [ 0.000689] Console: colour dummy device 80x30
[1.865725 0.004624] [ 0.001911] console [tty0] enabled
[1.869290 0.003565] [ 0.001958] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
[1.875808 0.006518] [ 0.089006] pid_max: default: 32768 minimum: 301
[1.880669 0.004861] [ 0.089171] Security Framework initialized
[1.884996 0.004327] [ 0.089393] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[1.891937 0.006941] [ 0.089447] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[1.899212 0.007275] [ 0.090451] CPU: Testing write buffer coherency: ok
[1.904399 0.005187] [ 0.090568] ftrace: allocating 22859 entries in 68 pages
[1.909914 0.005515] [ 0.156899] Setting up static identity map for 0x80100000 - 0x80100058
[1.916699 0.006785] [ 0.158796] devtmpfs: initialized
[1.920157 0.003458] [ 0.168460] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[1.928166 0.008009] [ 0.168880] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[1.939199 0.011033] [ 0.169033] futex hash table entries: 256 (order: -1, 3072 bytes)
[1.944809 0.005610] [ 0.170429] pinctrl core: initialized pinctrl subsystem
[1.950257 0.005448] [ 0.171577] NET: Registered protocol family 16
[1.954909 0.004652] [ 0.173421] DMA: preallocated 256 KiB pool for atomic coherent allocations
[1.962088 0.007179] [ 0.189224] omap_hwmod: debugss: _wait_target_disable failed
[1.968037 0.005949] [ 0.268956] cpuidle: using governor ladder
[1.972304 0.004267] [ 0.298941] cpuidle: using governor menu
[1.976395 0.004091] [ 0.304595] OMAP GPIO hardware version 0.1
[1.980664 0.004269] [ 0.319164] hw-breakpoint: debug architecture 0x4 unsupported.
[1.986764 0.006100] [ 0.356613] edma 49000000.edma: TI EDMA DMA engine driver
[1.992418 0.005654] [ 0.360115] SCSI subsystem initialized
[1.996323 0.003905] [ 0.360524] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
[2.009942 0.013619] [ 0.361843] clocksource: Switched to clocksource timer1
[2.015323 0.005381] [ 0.418927] NET: Registered protocol family 2
[2.019914 0.004591] [ 0.419806] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[2.027148 0.007234] [ 0.419875] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[2.033788 0.006640] [ 0.419924] TCP: Hash tables configured (established 2048 bind 2048)
[2.040457 0.006669] [ 0.420031] UDP hash table entries: 256 (order: 0, 4096 bytes)
[2.046548 0.006091] [ 0.420073] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[2.053084 0.006536] [ 0.420256] NET: Registered protocol family 1
[2.057633 0.004549] [ 0.420915] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
[2.066084 0.008451] [ 0.423845] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[2.072920 0.006836] [ 0.439649] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[2.080576 0.007656] [ 0.439734] io scheduler noop registered
[2.084665 0.004089] [ 0.439761] io scheduler deadline registered
[2.089118 0.004453] [ 0.439820] io scheduler cfq registered (default)
[2.094047 0.004929] [ 0.440857] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[2.101416 0.007369] [ 0.443580] omap_uart 44e09000.serial: no wakeirq for uart0
[2.107256 0.005840] [ 0.443838] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a OMAP UART0
[2.117028 0.009772] [ 0.932508] console [ttyO0] enabled
[2.121283 0.004255] [ 0.936761] [drm] Initialized
[2.139157 0.017874] [ 0.954612] brd: module loaded
[2.143134 0.003977] [ 0.958557] mtdoops: mtd device (mtddev=name/number) must be supplied
[2.150543 0.007409] [ 0.965981] libphy: Fixed MDIO Bus: probed
[2.155208 0.004665] [ 0.970701] mousedev: PS/2 mouse device common for all mice
[2.161919 0.006711] [ 0.977377] omap_rtc 44e3e000.rtc: already running
[2.167438 0.005519] [ 0.982894] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[2.175388 0.007950] [ 0.990840] i2c /dev entries driver
[2.180034 0.004646] [ 0.995447] omap_hsmmc 48060000.mmc: Got CD GPIO
[2.283928 0.103894] [ 1.099232] mmc0: host does not support reading read-only switch, assuming write-enable
[2.294222 0.010294] [ 1.109707] mmc0: new high speed SDHC card at address 59b4
[2.303282 0.009060] [ 1.116858] oprofile: using arm/armv7
[2.309948 0.006666] [ 1.117008] u32 classifier
[2.313163 0.003215] [ 1.117010] Actions configured
[2.317326 0.004163] [ 1.117950] NET: Registered protocol family 10
[2.322162 0.004836] [ 1.123153] Segment Routing with IPv6
[2.325826 0.003664] [ 1.123227] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[2.337296 0.011470] [ 1.124014] NET: Registered protocol family 17
[2.341983 0.004687] [ 1.124062] Key type dns_resolver registered
[2.346677 0.004694] [ 1.124074] omap_voltage_late_init: Voltage driver support not added
[2.353365 0.006688] [ 1.124224] ThumbEE CPU extension supported.
[2.357928 0.004563] [ 1.148163] Key type encrypted registered
[2.362951 0.005023] [ 1.178445] mmcblk0: mmc0:59b4 SD 7.23 GiB
[2.369681 0.006730] [ 1.185172] mmcblk0: p1
[2.412548 0.042867] [ 1.227821] random: fast init done
[2.420917 0.008369] [ 1.236301] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[2.453160 0.032243] [ 1.268553] mmc1: switch to bus width 8 failed
[2.460255 0.007095] [ 1.275597] mmc1: new high speed MMC card at address 0001
[2.466603 0.006348] [ 1.282097] mmcblk1: mmc1:0001 M62704 3.56 GiB
[2.471676 0.005073] [ 1.287174] mmcblk1boot0: mmc1:0001 M62704 partition 1 2.00 MiB
[2.478235 0.006559] [ 1.293723] mmcblk1boot1: mmc1:0001 M62704 partition 2 2.00 MiB
[2.485966 0.007731] [ 1.301413] mmcblk1: p1
[2.569127 0.083161] [ 1.384356] tda998x 0-0070: found TDA19988
[2.574350 0.005223] [ 1.389814] tilcdc 4830e000.lcdc: bound 0-0070 (ops tda998x_ops)
[2.580708 0.006358] [ 1.396185] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[2.587651 0.006943] [ 1.403143] [drm] No driver support for vblank timestamp query.
[2.594200 0.006549] [ 1.409684] [drm] Cannot find any crtc or sizes - going 1024x768
[2.615149 0.020949] [ 1.425004] Console: switching to colour frame buffer device 128x48
[2.621760 0.006611] [ 1.437276] tilcdc 4830e000.lcdc: fb0: frame buffer device
[2.657146 0.035386] [ 1.472514] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[2.663349 0.006203] [ 1.478830] console [netcon0] enabled
[2.667345 0.003996] [ 1.482846] netconsole: network logging started
[2.672191 0.004846] [ 1.487700] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:47 UTC (946684847)
[2.682637 0.010446] [ 1.498110] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[2.690693 0.008056] [ 1.506199] Please append a correct "root=" boot option; here are the available partitions:
[2.699671 0.008978] [ 1.515180] 0100 4096 ram0
[2.703664 0.003993] [ 1.515185] (driver?)
[2.706178 0.002514] [ 1.521661] 0101 4096 ram1
[2.710182 0.004004] [ 1.521665] (driver?)
[2.712678 0.002496] [ 1.528199] 0102 4096 ram2
[2.716703 0.004025] [ 1.528202] (driver?)
[2.719194 0.002491] [ 1.534715] 0103 4096 ram3
[2.723162 0.003968] [ 1.534719] (driver?)
[2.725684 0.002522] [ 1.541183] 0104 4096 ram4
[2.729650 0.003966] [ 1.541186] (driver?)
[2.732162 0.002512] [ 1.547675] 0105 4096 ram5
[2.738608 0.006446] [ 1.547679] (driver?)
[2.743034 0.004426] [ 1.558524] 0106 4096 ram6
[2.749129 0.006095] [ 1.558528] (driver?)
[2.753662 0.004533] [ 1.569171] 0107 4096 ram7
[2.759692 0.006030] [ 1.569175] (driver?)
[2.764272 0.004580] [ 1.579769] 0108 4096 ram8
[2.770397 0.006125] [ 1.579773] (driver?)
[2.775025 0.004628] [ 1.590351] 0109 4096 ram9
[2.780838 0.005813] [ 1.590355] (driver?)
[2.785335 0.004497] [ 1.600824] 010a 4096 ram10
[2.791363 0.006028] [ 1.600827] (driver?)
[2.795817 0.004454] [ 1.611308] 010b 4096 ram11
[2.801780 0.005963] [ 1.611312] (driver?)
[2.806241 0.004461] [ 1.621706] 010c 4096 ram12
[2.812267 0.006026] [ 1.621709] (driver?)
[2.816625 0.004358] [ 1.632123] 010d 4096 ram13
[2.822554 0.005929] [ 1.632127] (driver?)
[2.826947 0.004393] [ 1.642430] 010e 4096 ram14
[2.832813 0.005866] [ 1.642433] (driver?)
[2.837177 0.004364] [ 1.652655] 010f 4096 ram15
[2.843025 0.005848] [ 1.652658] (driver?)
[2.847390 0.004365] [ 1.662806] b300 7584768 mmcblk0
[2.853348 0.005958] [ 1.662811] driver: mmcblk
[2.858089 0.004741] [ 1.673590] b301 7568384 mmcblk0p1 fe2505fb-01
[2.865468 0.007379] [ 1.673594]
[2.868861 0.003393] [ 1.684355] b308 3735552 mmcblk1
[2.874841 0.005980] [ 1.684359] driver: mmcblk
[2.879528 0.004687] [ 1.695009] b309 3734528 mmcblk1p1 00000000-01
[2.886829 0.007301] [ 1.695012]
[2.890104 0.003275] [ 1.705617] b318 2048 mmcblk1boot1
[2.896510 0.006406] [ 1.705621] (driver?)
[2.900640 0.004130] [ 1.716144] b310 2048 mmcblk1boot0
[2.906998 0.006358] [ 1.716147] (driver?)
[2.911117 0.004119] [ 1.726599] VFS: Unable to mount root fs on unknown-block(0,0)
[2.918851 0.007734] [ 1.734375] User configuration error - no valid root filesystem found
[2.927263 0.008412] [ 1.742775] Kernel panic - not syncing: Invalid configuration from end user prevents continuing
[2.938023 0.010760] [ 1.753547] CPU: 0 PID: 1 Comm: swapper Not tainted 4.10.17-yocto-standard #8
[2.947238 0.009215] [ 1.762660] Hardware name: Generic AM33XX (Flattened Device Tree)
[2.955222 0.007984] [ 1.770748] [<c010f250>] (unwind_backtrace) from [<c010c0cc>] (show_stack+0x20/0x24)
[2.965067 0.009845] [ 1.780595] [<c010c0cc>] (show_stack) from [<c039d94c>] (dump_stack+0x20/0x28)
[2.974413 0.009346] [ 1.789938] [<c039d94c>] (dump_stack) from [<c01f76f8>] (panic+0xc0/0x234)
[2.983431 0.009018] [ 1.798938] [<c01f76f8>] (panic) from [<c0a013c4>] (mount_block_root+0x22c/0x2d0)
[2.993078 0.009647] [ 1.808606] [<c0a013c4>] (mount_block_root) from [<c0a015b0>] (mount_root+0x60/0x78)
[3.003082 0.010004] [ 1.818584] [<c0a015b0>] (mount_root) from [<c0a01748>] (prepare_namespace+0x180/0x1c0)
[3.013416 0.010334] [ 1.828880] [<c0a01748>] (prepare_namespace) from [<c0a00f54>] (kernel_init_freeable+0x220/0x27c)
[3.024639 0.011223] [ 1.840145] [<c0a00f54>] (kernel_init_freeable) from [<c06a9674>] (kernel_init+0x18/0x11c)
[3.035327 0.010688] [ 1.850825] [<c06a9674>] (kernel_init) from [<c0107798>] (ret_from_fork+0x14/0x3c)
[3.045294 0.009967] [ 1.860793] ---[ end Kernel panic - not syncing: Invalid configuration from end user prevents continuing
로그 파일에 따르면 다음과 같을 수 있습니다.
1) 어떤 이유로 커널이 SD 카드에서 RFS를 부팅하는 것을 원하지 않습니다.
2) U-boot 환경 변수 bootargs가 올바르게 저장되지 않아 커널이 root=/dev/mmcblk0p1을 루트 매개변수의 값으로 인식할 수 없습니다.
누구든지 이 문제를 해결할 수 있는 방법에 대한 아이디어를 제공할 수 있습니까?
인사.
답변1
나 자신도 현재 팔콘 모드(Falcon Mode)로 어려움을 겪고 있습니다. bootargs
이 작업을 수행하기 전에 커널에 전달하려는 모든 항목을 설정 해야 한다고 확신합니다 spl export
. 오류 메시지가 빈 커널 명령줄과 일치 spl export
하도록 FDT를 편집합니다 bootargs
. bootcmd
팔콘 모드에서는 실행할 수 없습니다 .