一、镜像打包
目前,我的Buildroot/Uboot/Linux的文件夹组织如下图所示
、
我的打包脚本如下:
#! /bin/bash
rm -rf ./output
mkdir ./output
cd ./output
OUT_FILENAME="flashimg.bin"
UBOOT_FILE=../u-boot/u-boot-sunxi-with-spl.bin
KERNEL_DIR=../linux
KERNEL_MODULES_DIR=$KERNEL_DIR/out/*
DTB_FILE=$KERNEL_DIR/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb
KERNEL_FILE=$KERNEL_DIR/arch/arm/boot/zImage
ROOTFS_FILE=../buildroot-2019.02.2/output/images/rootfs.tar
SPEC_FILE=./custom/*
SCRIPTES=./scripts/*.sh
dd if=/dev/zero of=$OUT_FILENAME bs=1M count=16
dd if=$UBOOT_FILE of=$OUT_FILENAME bs=1K conv=notrunc
dd if=$DTB_FILE of=$OUT_FILENAME bs=1K seek=1024 conv=notrunc
dd if=$KERNEL_FILE of=$OUT_FILENAME bs=1K seek=1088 conv=notrunc
mkdir rootfs
tar xf $ROOTFS_FILE -C ./rootfs
cp -r $KERNEL_MODULES_DIR rootfs/usr/
cp -r $SPEC_FILE rootfs/
# add some custom modify
#for f in $SCRIPTES; do
# ROOTFS_PATH=./rootfs bash "$f" -H
#done
fakeroot mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0xAF0000 -r rootfs -o rootfs.img -D rootfs
fakeroot mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0x400000 -o jffs2.img -D overlay
dd if=rootfs.img of=$OUT_FILENAME bs=1K seek=5184 conv=notrunc
dd if=jffs2.img of=$OUT_FILENAME bs=1M seek=12 conv=notrunc
rm -rf rootfs rootfs.img jffs2.img
通过如上脚本,会在output的目录下生成一个16MB大小的 flashimg.bin 文件
二、下载烧录
让设备进去烧录模式后(参考之前的文章 荔枝派Nano烧录 ),通过如下脚本将打包好的 flashimg.bin 烧录到Lichee开发板里面
#! /bin/bash
sunxi-fel -p spiflash-write 0 ./output/flashimg.bin
三、开机启动
在此附上,我的开机打印信息及图片
U-Boot SPL 2018.01-05679-g013ca45 (May 31 2019 - 16:21:44)
DRAM: 32 MiB
Trying to boot from MMC1
Card did not respond to voltage select!
mmc_init: -95, time 22
spl: mmc init failed with error: -95
Trying to boot from sunxi SPI
U-Boot 2018.01-05679-g013ca45 (May 31 2019 - 16:21:44 +0800) Allwinner TechnologyCPU: Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM: 32 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environmentSetting up a 800x480 lcd console (overscan 0x0)
In: serial@1c25000
Out: serial@1c25000
Err: serial@1c25000
Net: No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x100000, size 0x4000
SF: 16384 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 80c00000
Booting using the fdt blob at 0x80c00000
Loading Device Tree to 80e5f000, end 80e63f3e ... OKStarting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.15.0-rc8-licheepi-nano+ (root@cc28a9f98a11) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #2 Fri May 31 16:38:19 CST 2019
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Lichee Pi Nano
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] random: fast init done
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Memory: 22672K/32768K available (6144K kernel code, 238K rwdata, 1416K rodata, 1024K init, 246K bss, 10096K 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 : 0xc2800000 - 0xff800000 ( 976 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0x(ptrval) - 0x(ptrval) (7136 kB)
[ 0.000000] .init : 0x(ptrval) - 0x(ptrval) (1024 kB)
[ 0.000000] .data : 0x(ptrval) - 0x(ptrval) ( 239 kB)
[ 0.000000] .bss : 0x(ptrval) - 0x(ptrval) ( 247 kB)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000052] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000122] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000741] Console: colour dummy device 80x30
[ 0.000834] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070249] pid_max: default: 32768 minimum: 301
[ 0.070577] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070634] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.072200] CPU: Testing write buffer coherency: ok
[ 0.074127] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076840] devtmpfs: initialized
[ 0.083616] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.083693] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.083980] pinctrl core: initialized pinctrl subsystem
[ 0.086275] NET: Registered protocol family 16
[ 0.088265] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.090303] cpuidle: using governor menu
[ 0.117114] SCSI subsystem initialized
[ 0.117493] usbcore: registered new interface driver usbfs
[ 0.117656] usbcore: registered new interface driver hub
[ 0.117870] usbcore: registered new device driver usb
[ 0.118351] pps_core: LinuxPPS API ver. 1 registered
[ 0.118379] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti
[ 0.118454] PTP clock support registered
[ 0.119012] Advanced Linux Sound Architecture Driver Initialized.
[ 0.120741] clocksource: Switched to clocksource timer
[ 0.149049] NET: Registered protocol family 2
[ 0.150589] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.150672] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.150854] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.151248] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.151314] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.151851] NET: Registered protocol family 1
[ 0.153046] RPC: Registered named UNIX socket transport module.
[ 0.153088] RPC: Registered udp transport module.
[ 0.153103] RPC: Registered tcp transport module.
[ 0.153119] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.155451] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.157486] Initialise system trusted keyrings
[ 0.158102] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.176223] NFS: Registering the id_resolver key type
[ 0.176326] Key type id_resolver registered
[ 0.176347] Key type id_legacy registered
[ 0.176470] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.192266] Key type asymmetric registered
[ 0.192314] Asymmetric key parser 'x509' registered
[ 0.192534] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 0.192568] io scheduler noop registered
[ 0.192584] io scheduler deadline registered
[ 0.193377] io scheduler cfq registered (default)
[ 0.193412] io scheduler mq-deadline registered
[ 0.193430] io scheduler kyber registered
[ 0.194618] sun4i-usb-phy 1c13400.phy: Couldn't request ID GPIO
[ 0.204342] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.386045] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.393291] console [ttyS0] disabled
[ 0.413568] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 23, base_baud = 6250000) is a 16550A
[ 0.888519] console [ttyS0] enabled
[ 0.899276] panel-simple panel: panel supply power not found, using dummy regulator
[ 0.908876] SCSI Media Changer driver v0.25
[ 0.917069] m25p80 spi0.0: w25q128 (16384 Kbytes)
[ 0.921977] 4 ofpart partitions found on MTD device spi0.0
[ 0.927465] Creating 4 MTD partitions on "spi0.0":
[ 0.932346] 0x000000000000-0x000000100000 : "u-boot"
[ 0.940170] 0x000000100000-0x000000110000 : "dtb"
[ 0.947731] 0x000000110000-0x000000510000 : "kernel"
[ 0.955573] 0x000000510000-0x000001000000 : "rootfs"
[ 0.963943] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.970479] ehci-platform: EHCI generic platform driver
[ 0.976150] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.982475] ohci-platform: OHCI generic platform driver
[ 0.988152] usbcore: registered new interface driver usb-storage
[ 0.995227] udc-core: couldn't find an available UDC - added [g_cdc] to list of pending drivers
[ 1.004317] i2c /dev entries driver
[ 1.070879] sunxi-mmc 1c0f000.mmc: base:0x88bda01f irq:19
[ 1.078523] usbcore: registered new interface driver usbhid
[ 1.084237] usbhid: USB HID core driver
[ 1.107106] NET: Registered protocol family 17
[ 1.111916] Key type dns_resolver registered
[ 1.118691] Loading compiled-in X.509 certificates
[ 1.135171] sun4i-drm display-engine: bound 1e60000.display-backend (ops 0xc0739e58)
[ 1.144178] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc073913c)
[ 1.151963] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.158568] [drm] No driver support for vblank timestamp query.
[ 1.212624] Console: switching to colour frame buffer device 60x34
[ 1.235856] sun4i-drm display-engine: fb0: frame buffer device
[ 1.243065] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[ 1.252223] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[ 1.264125] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[ 1.269918] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1
[ 1.280069] hub 1-0:1.0: USB hub found
[ 1.284128] hub 1-0:1.0: 1 port detected
[ 1.289560] using random self ethernet address
[ 1.294194] using random host ethernet address
[ 1.300406] usb0: HOST MAC 06:2e:21:ed:6e:df
[ 1.304933] usb0: MAC c2:a9:66:88:d2:17
[ 1.308924] g_cdc gadget: CDC Composite Gadget, version: King Kamehameha Day 2008
[ 1.316482] g_cdc gadget: g_cdc ready
[ 1.321258] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.338770] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.345663] vcc3v3: disabling
[ 1.348650] ALSA device list:
[ 1.351695] #0: Loopback 1
[ 1.355481] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.364226] cfg80211: failed to load regulatory.db
[ 1.471925] random: crng init done
[ 1.877932] jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[ 1.897711] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[ 1.906289] devtmpfs: mounted
[ 1.914015] Freeing unused kernel memory: 1024K
Starting syslogd: OK
Starting klogd: OK
Initializing random number generator... done.
Starting network: OKWelcome to Buildroot
buildroot login: root
Password:
# ls
# cd /
# ls
bin lib media proc sbin usr
dev lib32 mnt root sys var
etc linuxrc opt run tmp
#