rk3576 Android14 分解启动过程
在日志角度分析 rk3576 启动过程,从 Loader 到 SPL,再到 ATF和 uboot启动,然后跳转内核,加载驱动、文件系统,最后启动Android。
作者:炭烤毛蛋 ,点击博主了解更多。
文章目录
- rk3576 Android14 分解启动过程
- 1 uboot
- 2 kernel
- 3 android
- Tips
- 结语
1 uboot
- RAMBOOT
SOC ram初级启动,启动 DDR 上电时序。
Boot0:Mar 1 2024 18:55:39, ver: 0.00
DDR 81dd75088a wesley.yao 24/04/16-11:19:41,fwver: v1.03
In
LPDDR4X, 2112MHz
channel[0] BW=16 Col=10 Bk=8 CS0 Row=17 CS1 Row=17 CS=2 Die BW=16 Size=4096MB
channel[1] BW=16 Col=10 Bk=8 CS0 Row=17 CS1 Row=17 CS=2 Die BW=16 Size=4096MB
Manufacturer ID:0xff
CH0 RX Vref:24.5%, RX DQS Vref:30.8%, TX Vref:22.8%,21.8%
DQ roc:
p3 n0, p0 n0, p3 n2, p5 n0, p7 n0, p3 n0, p2 n0, p6 n0, p5 n3,
p7 n0, p7 n0, p4 n0, p0 n0, p1 n0, p7 n0, p7 n0, p1 n0, p7 n5,
DQ rds:
h1 l0, h0 l0, h0 l0, h1 l0, h0 l0, h0 l0, h0 l0, h0 l0,
h0 l0, h2 l0, h0 l0, h0 l0, h0 l0, h0 l0, h1 l0, h0 l0,
DQS roc: p1 n0, p2, n0CH1 RX Vref:24.1%, RX DQS Vref:29.6%, TX Vref:21.8%,22.8%
DQ roc:
p0 n1, p6 n0, p7 n0, p0 n2, p1 n0, p2 n0, p5 n3, p0 n1, p2 n0,
p2 n0, p7 n0, p0 n1, p2 n0, p0 n0, p1 n0, p4 n0, p2 n0, p3 n0,
DQ rds:
h0 l0, h1 l0, h1 l0, h0 l0, h0 l0, h0 l0, h0 l0, h0 l0,
h0 l0, h0 l0, h0 l0, h0 l0, h0 l0, h0 l0, h0 l0, h0 l0,
DQS roc: p2 n0, p0, n0stride=0x3, ddr_config=0x4
hash bank_mask0-3 0x0 0x880 0x1100 0x2200, rank_mask0 0x400400
change to F1: 528MHz
change to F2: 1068MHz
change to F3: 1560MHz
change to F0: 2112MHz
out
- SPL 启动
U-Boot SPL board init
U-Boot SPL 2017.09-ge53b21c53e6-240430 #lxh (Apr 30 2024 - 15:30:38), fwver: v1.03
unknown raw ID 0 0 0
unrecognized JEDEC id bytes: 00, 00, 00
Trying to boot from MMC2
MMC: no card present
mmc_init: -123, time 0
spl: mmc init failed with error: -123
Trying to boot from MMC1
SPL: A/B-slot: _a, successful: 0, tries-remain: 7
Trying fit image at 0x4000 sector
## Verified-boot: 0
## Checking atf-1 0x40040000 ... sha256(e238bcae46...) + OK
## Checking uboot 0x40200000 ... sha256(31cc4117cb...) + OK
## Checking fdt 0x40341390 ... sha256(6d0c8a3eca...) + OK
## Checking atf-2 0x400f0000 ... sha256(1cc4399eab...) + OK
## Checking atf-3 0x3fe70000 ... sha256(3dfdd49eae...) + OK
## Checking optee 0x48400000 ... sha256(31c3421ab3...) + OK
Jumping to U-Boot(0x40200000) via ARM Trusted Firmware(0x40040000)
Total: 97.128/260.156 ms
- ATF 加载启动
INFO: Preloader serial: 0
NOTICE: BL31: v2.3():v2.3-763-g76e9c9f54:finley.xiao, fwver: v1.05
NOTICE: BL31: Built : 14:32:33, Apr 26 2024
INFO: ext 32k is detected
INFO: ARM GICv2 driver initialized
INFO: dfs DDR fsp_params[0].freq_mhz= 2112MHz
INFO: dfs DDR fsp_params[1].freq_mhz= 528MHz
INFO: dfs DDR fsp_params[2].freq_mhz= 1068MHz
INFO: dfs DDR fsp_params[3].freq_mhz= 1560MHz
INFO: Using opteed sec cpu_context!
INFO: boot cpu mask: 1
INFO: BL31: Initializing runtime services
INFO: BL31: Initializing BL32
I/TC:
I/TC: OP-TEE version: 3.13.0-791-g185dc3c92 #hisping.lin (gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16))) #2 Tue Apr 16 11:05:25 CST 2024 aarch64, fwver: v1.01
I/TC: OP-TEE memory: TEEOS 0x200000 TA 0xc00000 SHM 0x200000
I/TC: Primary CPU initializing
I/TC: Primary CPU switching to normal world boot
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x40200000
INFO: SPSR = 0x3c9
- uboot 启动
uboot 从 emmc 读取分区信息,加载内核启动前必须的驱动模块。然后是加载内核程序,并跳转到内核。
U-Boot 2017.09 (Jun 10 2024 - 18:06:01 +0800)Model: Rockchip RK3576 Evaluation board
MPIDR: 0x0
PreSerial: 0, raw, 0x2ad40000
DRAM: 8 GiB
Sysmem: init
Relocation Offset: bda1c000
Relocation fdt: fb9fa070 - fb9fece0
CR: M/C/I
Using default environmentoptee api revision: 2.0
mmc@2a310000: 1, mmc@2a330000: 0
Bootdev(atags): mmc 0
MMC0: HS400 Enhanced Strobe, 200Mhz
PartType: EFI
DM: v2
Android 14.0, Build 2024.2, v2
boot mode: None
RESC: 'boot', blk@0x0001f9a4
Device is: UNLOCKED
DTB: rk-kernel.dtb
HASH(ce): OK
ANDROID: fdt overlay OK
dw_dp_bind zyb enter
I2c1 speed: 100000Hz
PMIC: RK8060 (on=0x40, off=0x00)
vdd_cpu_big_s0 init 850000 uV
vdd_npu_s0 750000 uV
vdd_cpu_lit_s0 init 850000 uV
vdd_gpu_s0 init 750000 uV
vdd_logic_s0 init 750000 uV
vdd_ddr_s0 850000 uV
Model: Rockchip RK3576 IOTEST V10 Board
Rockchip UBOOT DRM driver version: v1.0.1
Assign plane mask automatically
VOP have 3 active VP
vp0 have layer nr:1[2 ], primary plane: 2
vp1 have layer nr:1[3 ], primary plane: 3
vp2 have layer nr:1[8 ], primary plane: 8
disp info 0, type:11, id:0
Monitor has basic audio support
base_parameter.mode:1920x1080
color_format:0
hdmi_select_link_config use tmds mode
mode:1920x1080 bus_format:0x100a
hdmi@27da0000: detailed mode clock 148500 kHz, flags[5]H: 1920 2008 2052 2200V: 1080 1084 1089 1125
bus_format: 100a
VOP update mode to: 1920x1080p60, type: HDMI0 for VP0
Unsupported bt709f at 10bit csc depth, use bt601f instead
acm and csc is not support
hdptx_ropll_cmn_config bus_width:16a8c8 rate:1485000
hdptx phy pll locked!
VP0 set crtc_clock to 1485KHz
Unsupported bt709f at 10bit csc depth, use bt601f instead
VOP VP0 enable Esmart0[654x270->654x270@633x405] fmt[0] addr[0xfdf00000]
CEA mode used vic=16
mtmdsclock:148500000
hdptx_ropll_cmn_config bus_width:16a8c8 rate:1485000
hdptx phy pll locked!
dw_hdmi_setup HDMI mode
don't use dsc mode
dw hdmi qp use tmds mode
bus_width:0x16a8c8,bit_rate:1485000
hdptx phy lane locked!
CLK: (uboot. arm: enter 1008000 KHz, init 1008000 KHz, kernel 0N/A)bpll 816000 KHzlpll 816000 KHzvpll 594000 KHzaupll 786431 KHzcpll 1000000 KHzgpll 1188000 KHzppll 1300000 KHzaclk_bus_root 396000 KHzpclk_bus_root 100000 KHzhclk_bus_root 198000 KHzaclk_top 786431 KHzaclk_top_mid 396000 KHzpclk_top 100000 KHzhclk_top 200000 KHz
Net: Net Initialization Skipped
No ethernet found.
Hit key to stop autoboot('CTRL+C'): 0
ANDROID: reboot reason: "(none)"
Vboot=0, AVB images, AVB verify
read_is_device_unlocked() ops returned that device is UNLOCKED
avb_slot_verify.c:763: ERROR: vbmeta: Error verifying vbmeta image: OK_NOT_SIGNED
preloaded: distribute image from 'boot
ANDROID: sha1(47ff7778ad...) + OK
Could not find "system" partition
Booting IMAGE kernel at 0x40400000 with fdt at 0x48300000...
Fdt Ramdisk skip relocation
## Booting Android Image at 0x403ff800 ...
Kernel: 0x40400000 - 0x428cf008 (37693 KiB)
ramdisk: 0x4a200000 - 0x4a364037 (1425 KiB)
## Flattened Device Tree blob at 0x48300000Booting using the fdt blob at 0x48300000XIP Kernel Image from 0x40400000 to 0x40400000 ... OKkernel loaded at 0x40400000, end = 0x428cf008Using Device Tree in place at 0000000048300000, end 0000000048343afe
scanning bus for devices...
Timedout waiting for UIC response
Host controller enable failed
ufshcd_pltfrm_init() failed -5
FDT: UFS was not detected, disabling UFS.
vp0, plane_mask:0x4, primary-id:2, curser-id:-1
vp1, plane_mask:0x8, primary-id:3, curser-id:-1
vp2, plane_mask:0x100, primary-id:8, curser-id:-1
## reserved-memory:drm-logo@0: addr=fdf00000 size=15a000ramoops@40110000: addr=40110000 size=e0000
Adding bank: 0x40200000 - 0x48400000 (size: 0x08200000)
Adding bank: 0x49400000 - 0x100000000 (size: 0xb6c00000)
Adding bank: 0x100000000 - 0x240000000 (size: 0x140000000)
Total: 751.216/789.743 ms
2 kernel
- 启动内核,加载重新初始化CPU
S4t3erw5t64wbjmbmnb
[ 1.037114][ T0] Unknown kernel command line parameters "storagemedia=emmc", will be passed to user space.
[ 1.039018][ T0] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[ 1.040317][ T0] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[ 1.041128][ T0] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[ 1.041837][ T0] software IO TLB: area num 8.
[ 1.057817][ T0] software IO TLB: mapped [mem 0x00000000f9f00000-0x00000000fdf00000] (64MB)
[ 1.153634][ T0] Memory: 8083228K/8370176K available (22272K kernel code, 4412K rwdata, 9108K rodata, 1792K init, 1006K bss, 270564K reserved, 16384K cma-reserved)
[ 1.155161][ T0] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[ 1.155937][ T0] trace event string verifier disabled
[ 1.156607][ T0] rcu: Preemptible hierarchical RCU implementation.
[ 1.157218][ T0] rcu: RCU event tracing is enabled.
[ 1.157713][ T0] rcu: RCU priority boosting: priority 1 delay 500 ms.
[ 1.158356][ T0] All grace periods are expedited (rcu_expedited).
[ 1.158965][ T0] Trampoline variant of Tasks RCU enabled.
[ 1.159508][ T0] Tracing variant of Tasks RCU enabled.
[ 1.160028][ T0] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[ 1.166662][ T0] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 1.170106][ T0] Root IRQ handler: gic_handle_irq
[ 1.170601][ T0] GIC: Using split EOI/Deactivate mode
[ 1.171704][ T0] rcu: Offload RCU callbacks from CPUs: 0-7.
[ 1.172287][ T0] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 1.201967][ T0] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[ 1.202617][ T0] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[ 1.203675][ T0] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[ 1.206069][ T0] kfence: initialized - using 524288 bytes for 63 objects at 0x(____ptrval____)-0x(____ptrval____)
[ 1.207182][ T0] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000)
[ 1.208196][ T0] pid_max: default: 32768 minimum: 301
[ 1.208727][ T0] LSM: Security Framework initializing
[ 1.209237][ T0] SELinux: Initializing.
[ 1.209720][ T0] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 1.210500][ T0] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 1.212333][ T1] cacheinfo: Unable to detect cache hierarchy for CPU 0
[ 1.213422][ T1] cblist_init_generic: Setting adjustable number of callback queues.
[ 1.214153][ T1] cblist_init_generic: Setting shift to 3 and lim to 1.
[ 1.214836][ T1] cblist_init_generic: Setting adjustable number of callback queues.
[ 1.215590][ T1] cblist_init_generic: Setting shift to 3 and lim to 1.
[ 1.216342][ T1] rcu: Hierarchical SRCU implementation.
[ 1.216848][ T1] rcu: Max phase no-delay instances is 1000.
[ 1.220063][ T1] smp: Bringing up secondary CPUs ...
- 加载总线设备驱动
部分设备需要内存空间作为缓存;常规外设需要复用GPIO,在启动日志中也可以看到。
1.246700][ T1] alternatives: applying system-wide alternatives
[ 1.252429][ T1] devtmpfs: initialized
[ 1.271478][ T1] Registered cp15_barrier emulation handler
[ 1.272009][ T1] Registered setend emulation handler
[ 1.272585][ T1] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 1.273528][ T1] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[ 1.274413][ T1] pinctrl core: initialized pinctrl subsystem
[ 1.275506][ T1] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 1.276963][ T1] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations
[ 1.277844][ T1] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 1.278655][ T1] audit: initializing netlink subsys (disabled)
[ 1.279298][ T68] audit: type=2000 audit(0.072:1): state=initialized audit_enabled=0 res=1
[ 1.281698][ T1] Registered FIQ tty driver
[ 1.282253][ T1] thermal_sys: Registered thermal governor 'fair_share'
[ 1.282256][ T1] thermal_sys: Registered thermal governor 'step_wise'
[ 1.282865][ T1] thermal_sys: Registered thermal governor 'user_space'
[ 1.283480][ T1] thermal_sys: Registered thermal governor 'power_allocator'
[ 1.284122][ T1] cpuidle: using governor menu
[ 1.285368][ T1] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 1.286167][ T1] ASID allocator initialised with 65536 entries
[ 1.288730][ T1] ramoops: boot-log-0 0x8000@0x0000000040110000
[ 1.289295][ T1] ramoops: dmesg-0 0x14000@0x0000000040118000
[ 1.289830][ T1] ramoops: dmesg-1 0x14000@0x000000004012c000
[ 1.292106][ T1] ramoops: console 0x80000@0x0000000040140000
[ 1.293294][ T1] ramoops: pmsg 0x30000@0x00000000401c0000
[ 1.294136][ T1] printk: console [ramoops-1] enabled
[ 1.294759][ T1] pstore: Registered ramoops as persistent store backend
[ 1.295381][ T1] ramoops: using 0xe0000@0x40110000, ecc: 0
[ 1.297794][ T1] platform mipi1-csi2: Fixed dependency cycle(s) with /csi2-dphy0/ports/port@1/endpoint@0
[ 1.298788][ T1] platform mipi3-csi2: Fixed dependency cycle(s) with /csi2-dphy3/ports/port@1/endpoint@0
[ 1.300017][ T1] platform rkcif-mipi-lvds1: Fixed dependency cycle(s) with /mipi1-csi2/ports/port@1/endpoint@0
[ 1.301109][ T1] platform rkcif-mipi-lvds3: Fixed dependency cycle(s) with /mipi3-csi2/ports/port@1/endpoint@0
[ 1.302197][ T1] platform rkisp-vir0: Fixed dependency cycle(s) with /rkcif-mipi-lvds3-sditf/port/endpoint
[ 1.303169][ T1] platform rkisp-vir1: Fixed dependency cycle(s) with /rkcif-mipi-lvds1-sditf/port/endpoint
[ 1.314815][ T1] platform 27d80000.dsi: Fixed dependency cycle(s) with /dsi@27d80000/panel@0/ports/port@0/endpoint
[ 1.315796][ T1] platform 27d80000.dsi: Fixed dependency cycle(s) with /vop@27d00000/ports/port@1/endpoint@1
[ 1.317138][ T1] platform 27da0000.hdmi: Fixed dependency cycle(s) with /vop@27d00000/ports/port@0/endpoint@2
[ 1.318290][ T1] platform 27e40000.dp: Fixed dependency cycle(s) with /vop@27d00000/ports/port@2/endpoint@4
[ 1.341078][ T1] rockchip-gpio 27320000.gpio: probed /pinctrl/gpio@27320000
[ 1.342039][ T1] rockchip-gpio 2ae10000.gpio: probed /pinctrl/gpio@2ae10000
[ 1.343102][ T1] rockchip-gpio 2ae20000.gpio: probed /pinctrl/gpio@2ae20000
[ 1.344091][ T1] rockchip-gpio 2ae30000.gpio: probed /pinctrl/gpio@2ae30000
[ 1.345003][ T1] rockchip-gpio 2ae40000.gpio: probed /pinctrl/gpio@2ae40000
[ 1.345759][ T1] rockchip-pinctrl pinctrl: probed pinctrl
[ 1.351265][ T1] KASLR disabled due to lack of seed
[ 1.360692][ T1] fiq_debugger fiq_debugger.0: error -ENXIO: IRQ fiq not found
[ 1.361377][ T1] fiq_debugger fiq_debugger.0: error -ENXIO: IRQ wakeup not found
[ 1.362074][ T1] fiq_debugger_probe: could not install nmi irq handler
[[ 1.362731][ T1] printk: console [ttyFIQ0] enabled1.362731][ T1] printk: console [ttyFIQ0] enabled
[ 1.363642][ T1] printk: bootconsole [uart8250] disabled
[ 1.363642][ T1] printk: bootconsole [uart8250] disabled
[ 1.364244][ T1] Registered fiq debugger ttyFIQ0
[ 1.367235][ T1] iommu: Default domain type: Translated
[ 1.367251][ T1] iommu: DMA domain TLB invalidation policy: strict mode
[ 1.367438][ T1] SCSI subsystem initialized
[ 1.367549][ T1] usbcore: registered new interface driver usbfs
[ 1.367575][ T1] usbcore: registered new interface driver hub
[ 1.367600][ T1] usbcore: registered new device driver usb
[ 1.367867][ T1] mc: Linux media interface: v0.10
[ 1.367898][ T1] videodev: Linux video capture interface: v2.00
[ 1.367939][ T1] pps_core: LinuxPPS API ver. 1 registered
[ 1.367947][ T1] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 1.367959][ T1] PTP clock support registered
[ 1.367986][ T1] EDAC MC: Ver: 3.0.0
[ 1.368485][ T1] arm-scmi firmware:scmi: Enabled polling mode TX channel - prot_id:16
[ 1.368561][ T1] arm-scmi firmware:scmi: SCMI Notifications - Core Enabled.
[ 1.368601][ T1] arm-scmi firmware:scmi: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0
[ 1.370025][ T1] Advanced Linux Sound Architecture Driver Initialized.
[ 1.370270][ T1] Bluetooth: Core ver 2.22
[ 1.370295][ T1] NET: Registered PF_BLUETOOTH protocol family
[ 1.370302][ T1] Bluetooth: HCI device and connection manager initialized
[ 1.370312][ T1] Bluetooth: HCI socket layer initialized
[ 1.370320][ T1] Bluetooth: L2CAP socket layer initialized
[ 1.370334][ T1] Bluetooth: SCO socket layer initialized
[ 1.371697][ T1] rockchip-cpuinfo cpuinfo: SoC : 35760000
- pcie 启动
uboot 阶段是单线程运行,启动到内核是多线程启动。从 pcie 日志分多步加载,其它驱动不受影响可以佐证。
[ 1.300620] rk-pcie 2a200000.pcie: invalid prsnt-gpios property in node
[ 1.306378] rk-pcie 2a200000.pcie: max MSI vector is 8
[ 1.306424] rk-pcie 2a200000.pcie: host bridge /pcie@2a200000 ranges:
[ 1.306447] rk-pcie 2a200000.pcie: err 0x0020000000..0x00200fffff -> 0x0020000000
[ 1.306464] rk-pcie 2a200000.pcie: IO 0x0020100000..0x00201fffff -> 0x0020100000
[ 1.306480] rk-pcie 2a200000.pcie: MEM 0x0020200000..0x0020ffffff -> 0x0020200000
[ 1.306492] rk-pcie 2a200000.pcie: MEM 0x0900000000..0x097fffffff -> 0x0900000000
[ 1.306598] rk-pcie 2a200000.pcie: iATU unroll: enabled
[ 1.306608] rk-pcie 2a200000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 1.512992] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.539880] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.567880] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.595881] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.623886] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.651883] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.679881] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.707879] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.735879] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 1.763880] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 4.320000] rk-pcie 2a200000.pcie: PCIe Link Fail, LTSSM is 0x3, hw_retries=0
[ 6.531949] rk_pcie_establish_link: 125 callbacks suppressed
[ 6.531956] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.560018] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.587952] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.615911] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.643960] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.672051] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.699985] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.727905] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.755908] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 6.783898] rk-pcie 2a200000.pcie: PCIe Linking... LTSSM is 0x3
[ 8.399910] rk-pcie 2a200000.pcie: PCIe Link Fail, LTSSM is 0x3, hw_retries=1
[ 9.429042] rk-pcie 2a200000.pcie: failed to initialize host
- 以太网启动
像以太网这种驱动则是单次加载,一步完成。
[ 1.344799] rk_gmac-dwmac 2a220000.ethernet: IRQ eth_lpi not found
[ 1.344956] rk_gmac-dwmac 2a220000.ethernet: supply phy not found, using dummy regulator
[ 1.345023] rk_gmac-dwmac 2a220000.ethernet: clock input or output? (output).
[ 1.345032] rk_gmac-dwmac 2a220000.ethernet: TX delay(0x1e).
[ 1.345040] rk_gmac-dwmac 2a220000.ethernet: RX delay(0x20).
[ 1.345119] rk_gmac-dwmac 2a220000.ethernet: integrated PHY? (no).
[ 1.345131] rk_gmac-dwmac 2a220000.ethernet: cannot get clock mac_clk_rx
[ 1.345139] rk_gmac-dwmac 2a220000.ethernet: cannot get clock mac_clk_tx
[ 1.345155] rk_gmac-dwmac 2a220000.ethernet: cannot get clock clk_mac_speed
[ 1.345379] rk_gmac-dwmac 2a220000.ethernet: init for RGMII
[ 1.345470] rk_gmac-dwmac 2a220000.ethernet: User ID: 0x30, Synopsys ID: 0x51
[ 1.345480] rk_gmac-dwmac 2a220000.ethernet: DWMAC4/5
[ 1.345489] rk_gmac-dwmac 2a220000.ethernet: DMA HW capability register supported
[ 1.345496] rk_gmac-dwmac 2a220000.ethernet: RX Checksum Offload Engine supported
[ 1.345503] rk_gmac-dwmac 2a220000.ethernet: TX Checksum insertion supported
[ 1.345509] rk_gmac-dwmac 2a220000.ethernet: Wake-Up On Lan supported
[ 1.345547] rk_gmac-dwmac 2a220000.ethernet: TSO supported
[ 1.345554] rk_gmac-dwmac 2a220000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[ 1.345561] rk_gmac-dwmac 2a220000.ethernet: Enabled L3L4 Flow TC (entries=2)
[ 1.345568] rk_gmac-dwmac 2a220000.ethernet: Enabled RFS Flow TC (entries=10)
[ 1.345576] rk_gmac-dwmac 2a220000.ethernet: TSO feature enabled
[ 1.345583] rk_gmac-dwmac 2a220000.ethernet: Using 40/40 bits DMA host/device width
[ 1.481070] rk_gmac-dwmac 2a230000.ethernet: IRQ eth_lpi not found
[ 1.481231] rk_gmac-dwmac 2a230000.ethernet: supply phy not found, using dummy regulator
[ 1.481305] rk_gmac-dwmac 2a230000.ethernet: clock input or output? (output).
[ 1.481314] rk_gmac-dwmac 2a230000.ethernet: TX delay(0x1d).
[ 1.481322] rk_gmac-dwmac 2a230000.ethernet: RX delay(0x20).
[ 1.481347] rk_gmac-dwmac 2a230000.ethernet: integrated PHY? (no).
[ 1.481356] rk_gmac-dwmac 2a230000.ethernet: cannot get clock mac_clk_rx
[ 1.481364] rk_gmac-dwmac 2a230000.ethernet: cannot get clock mac_clk_tx
[ 1.481379] rk_gmac-dwmac 2a230000.ethernet: cannot get clock clk_mac_speed
[ 1.481602] rk_gmac-dwmac 2a230000.ethernet: init for RGMII
[ 1.481692] rk_gmac-dwmac 2a230000.ethernet: User ID: 0x30, Synopsys ID: 0x51
[ 1.481702] rk_gmac-dwmac 2a230000.ethernet: DWMAC4/5
[ 1.481710] rk_gmac-dwmac 2a230000.ethernet: DMA HW capability register supported
[ 1.481718] rk_gmac-dwmac 2a230000.ethernet: RX Checksum Offload Engine supported
[ 1.481724] rk_gmac-dwmac 2a230000.ethernet: TX Checksum insertion supported
[ 1.481730] rk_gmac-dwmac 2a230000.ethernet: Wake-Up On Lan supported
[ 1.481764] rk_gmac-dwmac 2a230000.ethernet: TSO supported
[ 1.481771] rk_gmac-dwmac 2a230000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[ 1.481778] rk_gmac-dwmac 2a230000.ethernet: Enabled L3L4 Flow TC (entries=2)
[ 1.481786] rk_gmac-dwmac 2a230000.ethernet: Enabled RFS Flow TC (entries=10)
[ 1.481793] rk_gmac-dwmac 2a230000.ethernet: TSO feature enabled
[ 1.481799] rk_gmac-dwmac 2a230000.ethernet: Using 40/40 bits DMA host/device width
3 android
- 启动 selinux
[ 4.082508][ T1] init: Opening SELinux policy
[ 4.084813][ T1] init: Falling back to standard signature check. TODO implement support for fsverity SEPolicy.
[ 4.084913][ T1] init: Error: Apex SEPolicy failed signature check
[ 4.084932][ T1] init: Loading APEX Sepolicy from /system/etc/selinux/apex/SEPolicy.zip
[ 4.084963][ T1] init: Failed to open package /system/etc/selinux/apex/SEPolicy.zip: No such file or directory
[ 4.090620][ T1] init: Loading SELinux policy
[ 4.112681][ T1] SELinux: Permission bpf in class capability2 not defined in policy.
[ 4.112730][ T1] SELinux: Permission checkpoint_restore in class capability2 not defined in policy.
[ 4.112763][ T1] SELinux: Permission bpf in class cap2_userns not defined in policy.
[ 4.112776][ T1] SELinux: Permission checkpoint_restore in class cap2_userns not defined in policy.
[ 4.112915][ T1] SELinux: Class mctp_socket not defined in policy.
[ 4.112938][ T1] SELinux: Class user_namespace not defined in policy.
[ 4.112949][ T1] SELinux: the above unknown classes and permissions will be denied
[ 4.120697][ T1] SELinux: policy capability network_peer_controls=1
[ 4.120730][ T1] SELinux: policy capability open_perms=1
[ 4.120737][ T1] SELinux: policy capability extended_socket_class=1
[ 4.120745][ T1] SELinux: policy capability always_check_network=0
[ 4.120752][ T1] SELinux: policy capability cgroup_seclabel=0
[ 4.120759][ T1] SELinux: policy capability nnp_nosuid_transition=1
[ 4.120766][ T1] SELinux: policy capability genfs_seclabel_symlinks=0
[ 4.120773][ T1] SELinux: policy capability ioctl_skip_cloexec=0
[ 4.456411][ T68] audit: type=1403 audit(1719831070.648:2): auid=4294967295 ses=4294967295 lsm=selinux res=1
[ 4.460397][ T101] rk-pcie 2a200000.pcie: PCIe Link Fail, LTSSM is 0x3, hw_retries=0
[ 4.461094][ T1] selinux: SELinux: Loaded file context from:
[ 4.461111][ T1] selinux: /system/etc/selinux/plat_file_contexts
[ 4.461119][ T1] selinux: /system_ext/etc/selinux/system_ext_file_contexts
[ 4.461127][ T1] selinux: /vendor/etc/selinux/vendor_file_contexts
[ 4.461350][ T1] selinux: SELinux: Could not stat /dev/selinux: No such file or directory.
[ 4.482111][ T1] init: init second stage started!
[ 4.499094][ T1] selinux: SELinux: Loaded file context from:
[ 4.499117][ T1] selinux: /system/etc/selinux/plat_file_contexts
[ 4.499126][ T1] selinux: /system_ext/etc/selinux/system_ext_file_contexts
[ 4.499134][ T1] selinux: /vendor/etc/selinux/vendor_file_contexts
[ 4.514851][ T1] init: Using Android DT directory /proc/device-tree/firmware/android/
[ 4.522908][ T68] audit: type=1107 audit(1719831070.716:3): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=u:r:init:s0 msg='avc: denied { set } for property=persist.dbg.keep_debugfs_mounted pid=1 uid=0 gid=0 scontext=u:r:vendor_init:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service permissive=1'
- 启动 Android 前先加载各项基础服务
[ 4.530388][ T1] init: Setting property 'ro.product.cpu.abilist' to 'arm64-v8a,armeabi-v7a,armeabi'
[ 4.530407][ T1] init: Setting property 'ro.product.cpu.abilist32' to 'armeabi-v7a,armeabi'
[ 4.530425][ T1] init: Setting property 'ro.product.cpu.abilist64' to 'arm64-v8a'
[ 4.532798][ T1] selinux: SELinux: Loaded file context from:
[ 4.532828][ T1] selinux: /system/etc/selinux/plat_file_contexts
[ 4.532837][ T1] selinux: /system_ext/etc/selinux/system_ext_file_contexts
[ 4.532845][ T1] selinux: /vendor/etc/selinux/vendor_file_contexts
[ 4.532902][ T1] init: Running restorecon...
[ 4.545865][ T1] init: Created socket '/dev/socket/property_service', mode 666, user 0, group 0
[ 4.549973][ T1] init: SetupMountNamespaces done
[ 4.552078][ T1] init: Forked subcontext for 'u:r:vendor_init:s0' with pid 201
[ 4.553055][ T1] init: Parsing file /system/etc/init/hw/init.rc...
[ 4.554326][ T1] init: Added '/init.environ.rc' to import list
[ 4.554374][ T1] init: Added '/system/etc/init/hw/init.usb.rc' to import list
[ 4.554400][ T1] init: Added '/init.rk30board.rc' to import list
[ 4.554419][ T1] init: Added '/vendor/etc/init/hw/init.rk30board.rc' to import list
[ 4.554435][ T1] init: Added '/system/etc/init/hw/init.usb.configfs.rc' to import list
[ 4.554469][ T1] init: Added '/system/etc/init/hw/init.zygote64_32.rc' to import list
[ 4.556812][ T1] init: Parsing file /init.environ.rc...
[ 4.557292][ T1] init: Parsing file /system/etc/init/hw/init.usb.rc...
[ 4.557996][ T1] init: Parsing file /init.rk30board.rc...
- 加载文件系统
[ 3.943534][ T1] init: DSU not detected, proceeding with normal boot
[ 3.945132][ T1] init: [libfs_mgr] superblock s_max_mnt_count:65535,/dev/block/dm-0
[ 3.947242][ T1] EXT4-fs (dm-0): mounted filesystem without journal. Quota mode: none.
[ 3.947344][ T1] init: [libfs_mgr] __mount(source=/dev/block/dm-0,target=/system,type=ext4)=0: Success
[ 3.947721][ T1] init: Switching root to '/system
- ueventd 启动
uevent 相关服务守护进程已经开启,距离启动 Android还远吗!
[ 4.653555][ T202] ueventd: ueventd started!
[ 4.655855][ T202] selinux: SELinux: Loaded file context from:
[ 4.655884][ T202] selinux: /system/etc/selinux/plat_file_contexts
[ 4.655892][ T202] selinux: /system_ext/etc/selinux/system_ext_file_contexts
[ 4.655900][ T202] selinux: /vendor/etc/selinux/vendor_file_contexts
[ 4.656297][ T202] ueventd: Parsing file /system/etc/ueventd.rc...
[ 4.656727][ T202] ueventd: Added '/vendor/etc/ueventd.rc' to import list
[ 4.656760][ T202] ueventd: Added '/odm/etc/ueventd.rc' to import list
[ 4.657172][ T202] ueventd: Parsing file /vendor/etc/ueventd.rc...
[ 4.657534][ T202] ueventd: Added '/vendor/etc/ueventd.car.rc' to import list
[ 4.657974][ T202] ueventd: Parsing file /vendor/etc/ueventd.car.rc...
[ 4.658004][ T202] ueventd: Unable to read config file '/vendor/etc/ueventd.car.rc': open() failed: No such file or directory
[ 4.658038][ T202] ueventd: Parsing file /odm/etc/ueventd.rc...
[ 4.658058][ T202] ueventd: Unable to read config file '/odm/etc/ueventd.rc': open() failed: No such file or directory
- zygote 启动
[ 7.365355] [ T1] init: starting service 'statsd'...
[ 7.365774] [ T1] init: Created socket '/dev/socket/statsdw', mode 222, user 1066, group 1066
[ 7.370708] [ T1] init: ... started service 'statsd' has pid 526
[ 7.371143] [ T1] init: starting service 'netd'...
[ 7.371591] [ T1] init: Created socket '/dev/socket/dnsproxyd', mode 660, user 0, group 3003
[ 7.371933] [ T1] init: Created socket '/dev/socket/mdns', mode 660, user 0, group 1000
[ 7.372286] [ T1] init: Created socket '/dev/socket/fwmarkd', mode 660, user 0, group 3003
[ 7.376822] [ T1] init: ... started service 'netd' has pid 527
[ 7.377276] [ T1] init: starting service 'zygote'...
[ 7.377887] [ T1] init: Created socket '/dev/socket/zygote', mode 660, user 0, group 1000
[ 7.378244] [ T1] init: Created socket '/dev/socket/usap_pool_primary', mode 660, user 0, group 1000
- 加载开机动画
[ 7.969785][ T1] init: ... started service 'audioserver' has pid 554
[ 7.969835][ T1] init: service 'bootanim' requested start, but it is already running (flags: 134)
- 启动 Android
开机动画加载完成,正式跳转到Android系统。
[ 16.758093][ T1] init: Service 'bootanim' (pid 314) exited with status 0 oneshot service took 11.178000 seconds in background
[ 16.758123][ T1] init: Sending signal 9 to service 'bootanim' (pid 314) process group...
Tips
以上启动过程日志太过庞大,无法逐一注明,仅仅是摘录。因设备不同需要加载设备略有不同,受设备上电时序影响,也会调整设备驱动启动先后顺序。
结语
不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。