嵌入式ARM64 Linux内核FIT uimage方式启动

平台:orangepi4 rockchip rk3399 LPDDR4 4G eMMC 16G

系统:ubuntu 20.04

FIT简介

device tree在ARM架构中普及之后,u-boot也马上跟进、大力支持,毕竟,美好的Unify kernel的理想,需要bootloader的成全。为了支持基于device tree的unify kernel,u-boot需要一种新的Image格式,这种格式需要具备如下能力:

1. Image中需要包含多个dtb文

2. 可以方便的选择使用哪个dtb文件boot kernel

综合上面的需求,u-boot推出了全新的image格式----FIT uImage,其中FIT是flattened image tree的简称。是不是觉得FIT和FDT(flattened device tree)有点像?没错,它利用了Device Tree Source files(DTS)的语法,生成的image文件也和dtb文件类似(称作itb),生成过程如下

image source file        mkimage + dtc                       transfer to target
           +                -------------> image file -----------> bootm
image data file(s)

其中image source file(.its)和device tree source file(.dts)类似,负责描述要生成的image file的信息(上面第2章描述的信息)。mkimage和dtc工具,可以将.its文件以及对应的image data file,打包成一个image file。我们将这个文件下载到么memory中,使用bootm命令就可以执行了。

配置内核

配置linux内核

 

 

打开RAM block device support选项,把Default RAM disk size设置成32768,否则会报错RAMDISK: incomplete write (2584 != 32768)

编译内核,得到Image.gz文件

制作ramdisk镜像

通过busybox制作ramdisk的文件系统镜像,busybox制作根文件系统的过程参见我的文章orangepi4 rk3399 Linux内核编译及根文件系统构建_anqi8955的专栏-CSDN博客

用一下脚本制作ramdisk格式的文件系统镜像:

#!/bin/bash
rm ramdisk.gz
mkdir temp
sudo dd if=/dev/zero of=ramdisk bs=1024 count=8192
sudo mke2fs -F -m0 ramdisk #格式化,-F强制,-m0不为管理员预留空间
sudo mount -t ext2 ramdisk temp
cd temp
sudo cp ../_install/* ./ -afR
cd ..
sudo umount temp
rm -r temp
gzip -v9 ramdisk   #生成ramdisk.gz

得到ramdisk.gz文件

 创建ITS文件

 这里要创建一个its文件用于指导dtc生成itb文件,需要用到三个文件:

1 Image.gz 内核镜像,这是内核编译后生成的镜像文件

2 kernel.dtb DeviceTree编译后生成的文件,这里对于不同的cpu要使用不同的文件,我这里用的是rk3399-khadas-edge.dtb对应的我的cpu是rk3399,在内核的arch/arm64/boot/dts/mach-rockchip/下面

3 ramdisk.gz 这是要挂载的文件系统镜像,目前支持的就是这个文件系统

这里的load地址和entry地址要一致,这个值是可以变的,不影响启动

/*
 * Simple U-Boot uImage source file containing a single kernel and FDT blob
 */

/dts-v1/;

/ {
        description = "Simple image with single Linux kernel and FDT blob";
        #address-cells = <1>;

        images {
                kernel {
                        description = "Vanilla Linux kernel";
                        data = /incbin/("./Image.gz");
                        type = "kernel";
                        arch = "arm64";
                        os = "linux";
                        compression = "gzip";
                        load = <0x20000000>;
                        entry = <0x20000000>;
                        hash-1 {
                                algo = "crc32";
                        };
                        hash-2 {
                                algo = "sha1";
                        };
                };
                fdt-1 {
                        description = "Flattened Device Tree blob";
                        data = /incbin/("./rk3399-khadas-edge.dtb");
                        type = "flat_dt";
                        arch = "arm64";
                        compression = "none";
                        hash-1 {
                                algo = "crc32";
                        };
                        hash-2 {
                                algo = "sha1";
                        };
                };
                ramdisk-1{
                    description = "Ramdisk for project-x";
                    data = /incbin/("ramdisk.gz");
                    type = "ramdisk";
                    arch = "arm64";
                    os = "linux";
                    load = <00000000>;
                    entry = <00000000>;
                    compression = "gzip";
                    hash-1 {
                        algo = "crc32";
                    };
                };

        };

        configurations {
                default = "conf-1";
                conf-1 {
                        description = "Boot Linux kernel with FDT blob";
                        kernel = "kernel";
                        fdt = "fdt-1";
                        ramdisk = "ramdisk-1";
                };
        };
};

生成镜像

使用mkimage -f 制作itb文件

mkimage -f kernel.its fit.itb

FIT description: Simple image with single Linux kernel and FDT blob
Created:         Tue Dec  7 03:49:02 2021
 Image 0 (kernel)
  Description:  Vanilla Linux kernel
  Created:      Tue Dec  7 03:49:02 2021
  Type:         Kernel Image
  Compression:  gzip compressed
  Data Size:    11565898 Bytes = 11294.82 KiB = 11.03 MiB
  Architecture: AArch64
  OS:           Linux
  Load Address: 0x20000000
  Entry Point:  0x20000000
  Hash algo:    crc32
  Hash value:   b72992af
  Hash algo:    sha1
  Hash value:   d2e47eff44fc1f69d2e559e0f54c5f4dc04db5d5
 Image 1 (fdt-1)
  Description:  Flattened Device Tree blob
  Created:      Tue Dec  7 03:49:02 2021
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    57862 Bytes = 56.51 KiB = 0.06 MiB
  Architecture: AArch64
  Hash algo:    crc32
  Hash value:   e59d32b7
  Hash algo:    sha1
  Hash value:   90c80a6779a00cdec1c5071d6f8dea3ed33867c4
 Image 2 (rootfs-1)
  Description:  Ramdisk for project-x
  Created:      Tue Dec  7 03:49:02 2021
  Type:         RAMDisk Image
  Compression:  Unknown Compression
  Data Size:    1177098 Bytes = 1149.51 KiB = 1.12 MiB
  Architecture: AArch64
  OS:           Linux
  Load Address: 0x00000000
  Entry Point:  0x00000000
  Hash algo:    crc32
  Hash value:   35b76a77
 Default Configuration: 'conf-1'
 Configuration 0 (conf-1)
  Description:  Boot Linux kernel with FDT blob
  Kernel:       kernel
  Init Ramdisk: rootfs-1
  FDT:          fdt-1

运行系统

进入uboot使用tftp命令下载镜像到内存中去

tftp 0x10000000 fit.itb

注意tftp这个地址0x10000000不能和上面内核的load地址一样,否则导致内核无法解压

使用bootm启动系统,在有多种配置情况下也可以用来指定配置启动 bootm 0x10000000#conf-1

但是每次上电后都要通过命令去手动启动比较麻烦,可以通过以下方式实现自动启动:

mmc erase 0x8000 8000  
mmc write 0x10000000 0x8000 8000
setenv distro_bootcmd 'mmc read 0x10000000 0x8000 8000;bootm 0x10000000'
saveenv

下面是启动日志:


U-Boot TPL 2021.04 (Dec 07 2021 - 00:28:19)
Channel 0: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
Channel 1: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
256B stride
lpddr4_set_rate: change freq to 400000000 mhz 0, 1
lpddr4_set_rate: change freq to 800000000 mhz 1, 0
Trying to boot from BOOTROM
Returning to boot ROM...

U-Boot SPL 2021.04 (Dec 07 2021 - 00:28:19 -0800)
Trying to boot from MMC2


U-Boot 2021.04 (Dec 07 2021 - 00:28:19 -0800)

SoC: Rockchip rk3399
Reset cause: POR
Model: Khadas Edge
DRAM:  3.9 GiB
MMC:   mmc@fe310000: 2, mmc@fe320000: 1, sdhci@fe330000: 0
Loading Environment from MMC... OK
In:    serial@ff1a0000
Out:   serial@ff1a0000
Err:   serial@ff1a0000
Model: Khadas Edge
Net:   
Warning: ethernet@fe300000 (eth0) using random MAC address - 3a:c4:e6:53:72:de
eth0: ethernet@fe300000
Hit any key to stop autoboot:  0 

MMC read: dev # 0, block # 32768, count 32768 ... 32768 blocks read: OK
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf-1' configuration
   Trying 'kernel' kernel subimage
     Description:  Vanilla Linux kernel
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x100000e8
     Data Size:    11565898 Bytes = 11 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x20000000
     Entry Point:  0x20000000
     Hash algo:    crc32
     Hash value:   b72992af
     Hash algo:    sha1
     Hash value:   d2e47eff44fc1f69d2e559e0f54c5f4dc04db5d5
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading ramdisk from FIT Image at 10000000 ...
   Using 'conf-1' configuration
   Trying 'rootfs-1' ramdisk subimage
     Description:  Ramdisk for project-x
     Type:         RAMDisk Image
     Compression:  gzip compressed
     Data Start:   0x10b16060
     Data Size:    1177098 Bytes = 1.1 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x00000000
     Entry Point:  0x00000000
     Hash algo:    crc32
     Hash value:   35b76a77
   Verifying Hash Integrity ... crc32+ OK
WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file!
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf-1' configuration
   Trying 'fdt-1' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x10b07d60
     Data Size:    57862 Bytes = 56.5 KiB
     Architecture: AArch64
     Hash algo:    crc32
     Hash value:   e59d32b7
     Hash algo:    sha1
     Hash value:   90c80a6779a00cdec1c5071d6f8dea3ed33867c4
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x10b07d60
   Uncompressing Kernel Image
   Loading Ramdisk to f5e0e000, end f5f2d60a ... OK
   Loading Device Tree to 00000000f5dfc000, end 00000000f5e0d205 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.6 (work@work-B85M-D3V) (aarch64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #3 SMP PREEMPT Tue Dec 7 18:45:12 CST 2021
[    0.000000] Machine model: Khadas Edge
[    0.000000] efi: UEFI not found.
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000000200000-0x00000000f7ffffff]
[    0.000000] NUMA: NODE_DATA [mem 0xf77e1c00-0xf77e3fff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000200000-0x00000000f7ffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000200000-0x00000000f7ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000200000-0x00000000f7ffffff]
[    0.000000] cma: Reserved 32 MiB at 0x00000000efc00000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 20 pages/cpu s41112 r8192 d32616 u81920
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 999432
[    0.000000] Policy zone: DMA
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 3915688K/4061184K available (14848K kernel code, 3068K rwdata, 8244K rodata, 6208K init, 496K bss, 112728K reserved, 32768K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=6, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=6.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=6
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fef00000
[    0.000000] ITS [mem 0xfee20000-0xfee3ffff]
[    0.000000] ITS@0x00000000fee20000: allocated 65536 Devices @480000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000000440000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000000450000
[    0.000000] GICv3: GIC: PPI partition interrupt-partition-0[0] { /cpus/cpu@0[0] /cpus/cpu@1[1] /cpus/cpu@2[2] /cpus/cpu@3[3] }
[    0.000000] GICv3: GIC: PPI partition interrupt-partition-1[1] { /cpus/cpu@100[4] /cpus/cpu@101[5] }
[    0.000000] random: get_random_bytes called from start_kernel+0x478/0x660 with crng_init=0
[    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000001] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.003820] Console: colour dummy device 80x25
[    0.004652] printk: console [tty0] enabled
[    0.004778] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000)
[    0.004822] pid_max: default: 32768 minimum: 301
[    0.004945] LSM: Security Framework initializing
[    0.005064] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.005121] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.007588] rcu: Hierarchical SRCU implementation.
[    0.008002] Platform MSI: interrupt-controller@fee20000 domain created
[    0.008451] PCI/MSI: /interrupt-controller@fee00000/interrupt-controller@fee20000 domain created
[    0.008789] fsl-mc MSI: interrupt-controller@fee20000 domain created
[    0.014977] EFI services will not be available.
[    0.015469] smp: Bringing up secondary CPUs ...
[    0.016170] Detected VIPT I-cache on CPU1
[    0.016217] GICv3: CPU1: found redistributor 1 region 0:0x00000000fef20000
[    0.016241] GICv3: CPU1: using allocated LPI pending table @0x0000000000460000
[    0.016313] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.017088] Detected VIPT I-cache on CPU2
[    0.017124] GICv3: CPU2: found redistributor 2 region 0:0x00000000fef40000
[    0.017144] GICv3: CPU2: using allocated LPI pending table @0x0000000000470000
[    0.017189] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.017881] Detected VIPT I-cache on CPU3
[    0.017915] GICv3: CPU3: found redistributor 3 region 0:0x00000000fef60000
[    0.017934] GICv3: CPU3: using allocated LPI pending table @0x0000000000500000
[    0.017977] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.018669] CPU features: detected: Spectre-v2
[    0.018682] CPU features: detected: Spectre-v3a
[    0.018696] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
[    0.018704] Detected PIPT I-cache on CPU4
[    0.018736] GICv3: CPU4: found redistributor 100 region 0:0x00000000fef80000
[    0.018755] GICv3: CPU4: using allocated LPI pending table @0x0000000000510000
[    0.018800] CPU4: Booted secondary processor 0x0000000100 [0x410fd082]
[    0.019531] Detected PIPT I-cache on CPU5
[    0.019562] GICv3: CPU5: found redistributor 101 region 0:0x00000000fefa0000
[    0.019580] GICv3: CPU5: using allocated LPI pending table @0x0000000000520000
[    0.019616] CPU5: Booted secondary processor 0x0000000101 [0x410fd082]
[    0.019739] smp: Brought up 1 node, 6 CPUs
[    0.020113] SMP: Total of 6 processors activated.
[    0.020135] CPU features: detected: 32-bit EL0 Support
[    0.020155] CPU features: detected: 32-bit EL1 Support
[    0.020178] CPU features: detected: CRC32 instructions
[    0.037514] CPU: All CPU(s) started at EL2
[    0.037592] alternatives: patching kernel code
[    0.040988] devtmpfs: initialized
[    0.050905] KASLR disabled due to lack of seed
[    0.051115] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.051151] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[    0.052141] pinctrl core: initialized pinctrl subsystem
[    0.053177] DMI not present or invalid.
[    0.053742] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.055885] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.056263] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.056638] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.056707] audit: initializing netlink subsys (disabled)
[    0.056916] audit: type=2000 audit(0.056:1): state=initialized audit_enabled=0 res=1
[    0.058237] thermal_sys: Registered thermal governor 'step_wise'
[    0.058247] thermal_sys: Registered thermal governor 'power_allocator'
[    0.058732] cpuidle: using governor menu
[    0.058904] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.059100] ASID allocator initialised with 65536 entries
[    0.061117] Serial: AMBA PL011 UART driver
[    0.090750] platform ff770000.syscon:phy@f780: Fixing up cyclic dependency with fe330000.mmc
[    0.098591] platform ff940000.hdmi: Fixing up cyclic dependency with ff8f0000.vop
[    0.098677] platform ff940000.hdmi: Fixing up cyclic dependency with ff900000.vop
[    0.106594] rockchip-gpio ff720000.gpio0: probed /pinctrl/gpio0@ff720000
[    0.107314] rockchip-gpio ff730000.gpio1: probed /pinctrl/gpio1@ff730000
[    0.107964] rockchip-gpio ff780000.gpio2: probed /pinctrl/gpio2@ff780000
[    0.108557] rockchip-gpio ff788000.gpio3: probed /pinctrl/gpio3@ff788000
[    0.109153] rockchip-gpio ff790000.gpio4: probed /pinctrl/gpio4@ff790000
[    0.126748] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.126780] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.126798] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.126815] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.128511] cryptd: max_cpu_qlen set to 1000
[    0.132012] ACPI: Interpreter disabled.
[    0.135626] vsys_3v3: supplied by vsys
[    0.135943] vsys_5v0: supplied by vsys
[    0.136917] iommu: Default domain type: Translated 
[    0.136938] iommu: DMA domain TLB invalidation policy: strict mode 
[    0.139346] vgaarb: loaded
[    0.139673] SCSI subsystem initialized
[    0.140127] usbcore: registered new interface driver usbfs
[    0.140183] usbcore: registered new interface driver hub
[    0.140232] usbcore: registered new device driver usb
[    0.141791] pps_core: LinuxPPS API ver. 1 registered
[    0.141808] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.141838] PTP clock support registered
[    0.142073] EDAC MC: Ver: 3.0.0
[    0.144900] FPGA manager framework
[    0.145007] Advanced Linux Sound Architecture Driver Initialized.
[    0.145834] clocksource: Switched to clocksource arch_sys_counter
[    0.146017] VFS: Disk quotas dquot_6.6.0
[    0.146091] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.146316] pnp: PnP ACPI: disabled
[    0.153739] NET: Registered PF_INET protocol family
[    0.154074] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.156864] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.157015] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.157379] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    0.158083] TCP: Hash tables configured (established 32768 bind 32768)
[    0.158236] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.158387] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.158674] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.159248] RPC: Registered named UNIX socket transport module.
[    0.159269] RPC: Registered udp transport module.
[    0.159282] RPC: Registered tcp transport module.
[    0.159295] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.159314] PCI: CLS 0 bytes, default 64
[    0.159659] Trying to unpack rootfs image as initramfs...
[    0.160270] rootfs image is not initramfs (no cpio magic); looks like an initrd
[    0.164168] Freeing initrd memory: 1148K
[    0.165152] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    0.165568] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available
[    0.166188] kvm [1]: IPA Size Limit: 40 bits
[    0.167720] kvm [1]: vgic-v2@fff20000
[    0.167762] kvm [1]: GIC system register CPU interface enabled
[    0.167992] kvm [1]: vgic interrupt IRQ18
[    0.168251] kvm [1]: Hyp mode initialized successfully
[    0.173783] Initialise system trusted keyrings
[    0.173988] workingset: timestamp_bits=42 max_order=20 bucket_order=0
[    0.180706] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.181401] NFS: Registering the id_resolver key type
[    0.181437] Key type id_resolver registered
[    0.181452] Key type id_legacy registered
[    0.181546] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.181565] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.181747] 9p: Installing v9fs 9p2000 file system support
[    0.245326] Key type asymmetric registered
[    0.245347] Asymmetric key parser 'x509' registered
[    0.245423] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.245445] io scheduler mq-deadline registered
[    0.245459] io scheduler kyber registered
[    0.256620] rockchip-usb2phy ff770000.syscon:usb2phy@e450: failed to create phy
[    0.257563] rockchip-usb2phy ff770000.syscon:usb2phy@e460: failed to create phy
[    0.274836] EINJ: ACPI disabled.
[    0.290551] dma-pl330 ff6d0000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.290586] dma-pl330 ff6d0000.dma-controller:       DBUFF-32x8bytes Num_Chans-6 Num_Peri-12 Num_Events-12
[    0.291816] dma-pl330 ff6e0000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.291843] dma-pl330 ff6e0000.dma-controller:       DBUFF-128x8bytes Num_Chans-8 Num_Peri-20 Num_Events-16
[    0.304000] vdd_log: supplied by regulator-dummy
[    0.310688] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.313398] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 37, base_baud = 1500000) is a 16550A
[    0.313581] serial serial0: tty port ttyS0 registered
[    0.314500] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 38, base_baud = 1500000) is a 16550A
[    0.419909] printk: console [ttyS2] enabled
[    0.422830] SuperH (H)SCI(F) driver initialized
[    0.424322] msm_serial: driver initialized
[    0.427943] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.435889] brd: module loaded
[    0.442992] loop: module loaded
[    0.445020] megasas: 07.717.02.00-rc1
[    0.448537] SPI driver mtd_dataflash has no spi_device_id for atmel,at45
[    0.449143] SPI driver mtd_dataflash has no spi_device_id for atmel,dataflash
[    0.454120] spi-nor spi0.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
[    0.456971] libphy: Fixed MDIO Bus: probed
[    0.459443] tun: Universal TUN/TAP device driver, 1.6
[    0.461458] thunder_xcv, ver 1.0
[    0.461790] thunder_bgx, ver 1.0
[    0.462142] nicpf, ver 1.0
[    0.464833] hclge is initializing
[    0.465153] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[    0.465797] hns3: Copyright (c) 2017 Huawei Corporation.
[    0.466342] e1000: Intel(R) PRO/1000 Network Driver
[    0.466782] e1000: Copyright (c) 1999-2006 Intel Corporation.
[    0.467337] e1000e: Intel(R) PRO/1000 Network Driver
[    0.467782] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.468351] igb: Intel(R) Gigabit Ethernet Network Driver
[    0.468835] igb: Copyright (c) 2007-2014 Intel Corporation.
[    0.469362] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.469932] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.471105] sky2: driver version 1.30
[    0.473517] VFIO - User Level meta-driver version: 0.3
[    0.481725] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.482356] ehci-pci: EHCI PCI platform driver
[    0.482802] ehci-platform: EHCI generic platform driver
[    0.483544] ehci-orion: EHCI orion driver
[    0.484128] ehci-exynos: EHCI Exynos driver
[    0.484689] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.485259] ohci-pci: OHCI PCI platform driver
[    0.485697] ohci-platform: OHCI generic platform driver
[    0.486428] ohci-exynos: OHCI Exynos driver
[    0.487928] usbcore: registered new interface driver usb-storage
[    0.493629] i2c_dev: i2c /dev entries driver
[    0.498547] rk808 4-001b: failed to read the chip id at 0x17
[    0.500004] fan53555-regulator 4-0040: Failed to get chip ID!
[    0.501404] fan53555-regulator 4-0041: Failed to get chip ID!
[    0.510028] dw_wdt ff848000.watchdog: No valid TOPs array specified
[    0.515383] sdhci: Secure Digital Host Controller Interface driver
[    0.515948] sdhci: Copyright(c) Pierre Ossman
[    0.517230] SPI driver mmc_spi has no spi_device_id for mmc-spi-slot
[    0.518445] Synopsys Designware Multimedia Card Interface Driver
[    0.520959] dwmmc_rockchip fe320000.mmc: IDMAC supports 32-bit address mode.
[    0.521255] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.521640] dwmmc_rockchip fe320000.mmc: Using internal DMA controller.
[    0.522755] dwmmc_rockchip fe320000.mmc: Version ID is 270a
[    0.523342] dwmmc_rockchip fe320000.mmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo
[    0.524436] dwmmc_rockchip fe320000.mmc: Got CD GPIO
[    0.525155] mmc2: CQHCI version 5.10
[    0.526584] ledtrig-cpu: registered to indicate activity on CPUs
[    0.529274] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.530896] usbcore: registered new interface driver usbhid
[    0.531404] usbhid: USB HID core driver
[    0.538142] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    0.542424] NET: Registered PF_PACKET protocol family
[    0.543070] 9pnet: Installing 9P2000 support
[    0.543506] Key type dns_resolver registered
[    0.544271] Loading compiled-in X.509 certificates
[    0.550143] mmc2: SDHCI controller on fe330000.mmc [fe330000.mmc] using ADMA
[    0.581386] vcc3v3_pcie: supplied by vsys_3v3
[    0.582825] vcc5v0_host: supplied by vsys_5v0
[    0.600817] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    0.601373] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[    0.602272] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000000002010010
[    0.603158] xhci-hcd xhci-hcd.0.auto: irq 70, io mem 0xfe800000
[    0.605010] hub 1-0:1.0: USB hub found
[    0.605416] hub 1-0:1.0: 1 port detected
[    0.606214] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    0.606734] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[    0.607444] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
[    0.608122] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.609677] hub 2-0:1.0: USB hub found
[    0.610097] hub 2-0:1.0: 1 port detected
[    0.610489] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    0.611018] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 3
[    0.611885] xhci-hcd xhci-hcd.1.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000000002010010
[    0.612809] xhci-hcd xhci-hcd.1.auto: irq 71, io mem 0xfe900000
[    0.614538] hub 3-0:1.0: USB hub found
[    0.615034] hub 3-0:1.0: 1 port detected
[    0.615891] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    0.616444] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 4
[    0.617190] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[    0.617925] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.619553] hub 4-0:1.0: USB hub found
[    0.619941] hub 4-0:1.0: 1 port detected
[    0.622563] mmc2: Command Queue Engine enabled
[    0.623013] mmc2: new HS400 Enhanced strobe MMC card at address 0001
[    0.624530] mmcblk2: mmc2:0001 AJTD4R 14.6 GiB 
[    0.629343] GPT:Primary header thinks Alt. header is not at the end of the disk.
[    0.629351] ehci-platform fe380000.usb: EHCI Host Controller
[    0.629390] ehci-platform fe380000.usb: new USB bus registered, assigned bus number 5
[    0.630069] GPT:471079 != 30535679
[    0.630079] GPT:Alternate GPT header not at the end of the disk.
[    0.630084] GPT:471079 != 30535679
[    0.630091] GPT: Use GNU Parted to correct GPT errors.
[    0.630790] ehci-platform fe380000.usb: irq 31, io mem 0xfe380000
[    0.631341]  mmcblk2: p1 p2 p3 p4
[    0.635254] mmcblk2boot0: mmc2:0001 AJTD4R 4.00 MiB 
[    0.637300] mmcblk2boot1: mmc2:0001 AJTD4R 4.00 MiB 
[    0.639400] mmcblk2rpmb: mmc2:0001 AJTD4R 4.00 MiB, chardev (234:0)
[    0.645955] ehci-platform fe380000.usb: USB 2.0 started, EHCI 1.00
[    0.647553] hub 5-0:1.0: USB hub found
[    0.647943] hub 5-0:1.0: 1 port detected
[    0.653162] ehci-platform fe3c0000.usb: EHCI Host Controller
[    0.653732] ehci-platform fe3c0000.usb: new USB bus registered, assigned bus number 6
[    0.654615] ehci-platform fe3c0000.usb: irq 33, io mem 0xfe3c0000
[    0.670108] ehci-platform fe3c0000.usb: USB 2.0 started, EHCI 1.00
[    0.671792] hub 6-0:1.0: USB hub found
[    0.672180] hub 6-0:1.0: 1 port detected
[    0.675217] ohci-platform fe3a0000.usb: Generic Platform OHCI controller
[    0.675870] ohci-platform fe3a0000.usb: new USB bus registered, assigned bus number 7
[    0.676741] ohci-platform fe3a0000.usb: irq 32, io mem 0xfe3a0000
[    0.739211] hub 7-0:1.0: USB hub found
[    0.739626] hub 7-0:1.0: 1 port detected
[    0.742684] ohci-platform fe3e0000.usb: Generic Platform OHCI controller
[    0.743338] ohci-platform fe3e0000.usb: new USB bus registered, assigned bus number 8
[    0.744252] ohci-platform fe3e0000.usb: irq 34, io mem 0xfe3e0000
[    0.807223] hub 8-0:1.0: USB hub found
[    0.807636] hub 8-0:1.0: 1 port detected
[    0.827456] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    0.830042] ALSA device list:
[    0.830336]   No soundcards found.
[    0.830883] dw-apb-uart ff1a0000.serial: forbid DMA for kernel console
[    0.839342] RAMDISK: gzip image found at block 0
[    0.940532] using deprecated initrd support, will be removed in 2021.
[    0.984085] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null). Quota mode: none.
[    0.984956] VFS: Mounted root (ext4 filesystem) on device 1:0.
Bad inittab entry at line 4
Welcome to tinyLinux
[    0.999559] tmpfs: Unknown parameter '  defaults'
mount: mounting tmpfs on /tmp failed: Invalid argument
Remounting the root filesystem
[    1.004023] EXT4-fs (ram0): re-mounted. Opts: (null). Quota mode: none.
/etc/init.d/rcS: line 7: can't create /proc/sys/kernel/hotplug: nonexistent directory

Please press Enter to activate this console. 
/ # 
/ # 
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值