1、系统
物理机 ubuntu1804
2、创建编译环境
1)下载 gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz
wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
2)解压并移动到指定目录

tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/
3)建立环境变量
sudo gedit /etc/profile
最后一行添加目录
export PATH=/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin:$PATH
更新
source /etc/profile
注销后重新登陆
终端中尝试输入下列命令,检查是否编译环境是否创建成功
arm-linux-gnueabihf-gcc -v
注意:曾经无法创建成功,是因为解压后的文件目录opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf没有执行权限,需要通过chmod 777更改
3、编译u-boot
下载源文件,以下方式下载较慢,可以通过浏览器打开,进入分支后,下载Code压缩包,然后解压
git clone -b v3s-spi-experimental https://github.com/Lichee-Pi/u-boot.git
注意不是此分支git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current
解压进入目录,然后执行配置
按照官方教程提示找不到配置文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig
调整了下顺序
ARCH=arm make CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig
配置uboot支持flash:
make ARCH=arm menuconfig
uboot或Linux内核可以通过输入"makemenuconfig"来打开图形化配置界面,menuconfig是一套图形化的配置工具,需要ncurses库支持。ncurses库提供了一系列的API函数供调用者生成基于文本的图形界面,因此需要先在Ubuntu中安装ncurses库,命令如下:
sudo apt-get install build-essential
sudo apt-get install libncurses5
sudo apt-get install libncurses5-dev
进入图形界面后
Device Drivers —>
SPI Flash Support —>
[*] Legacy SPI Flash Interface support
[ ] SPI flash Bank/Extended address register support     (16M以上的flash需要开启这个选项)
[*] Macronix SPI flash support    (选择spi flash对应的厂商,我用的是W25Q128这个型号)
[*] Support for SPI Flash on Allwinner SoCs in SPL
如图:
添加环境变量
修改u-boot/include/configs/sun8i.h文件,添加以下内容,注意添加的位置在“#include <configs/sunxi-common.h>”的前边。
vi include/configs/sun8i.h
#define CONFIG_BOOTCOMMAND "sf probe 0; sf read 0x41800000 0x100000 0x10000; sf read 0x41000000 0x110000 0x400000; bootz 0x41000000 - 0x41800000"
#define CONFIG_BOOTARGS "console=ttyS0,115200 earlyprintk panic=5 rootwait mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2"
环境命令解析:
sf probe 0; //初始化Flash设备(CS拉低)
sf read 0x41800000 0x100000 0x10000; //从flash0x100000(1MB)位置读取dtb放到内存0x41800000偏移处。 //如果是bsp的bin,则是0x41d00000
sf read 0x41000000 0x110000 0x400000; //从flash0x110000(1MB+64KB)位置读取dtb放到内存0x41000000偏移处。
bootz 0x41000000 (内核地址)- 0x41800000(dtb地址) 启动内核
启动参数解析:
console=ttyS0,115200 earlyprintk panic=5 rootwait //在串口0上输出信息
mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2 //spi32766.0是设备名,后面是分区大小,名字,读写属性。
root=31:03表示根文件系统是mtd3;jffs2格式

开始编译,注意dtc版本需要1.4以上版本
u-boot目录下执行:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
会在目录下生成 u-boot-sunxi-with-spl.bin
4、编译内核
下载内核源码,同样如果网速慢,可以在浏览器中下载分支压缩包
git clone -b zero-4.13.y https://github.com/Lichee-Pi/linux.git
解压后进入目录
cd linux
ARCH=arm make licheepi_zero_defconfig
ARCH=arm make menuconfig
进入配置界面,首先添加SPI-NOR的支持:
Device Drivers —>
<*> Memory Technology Device (MTD) support —>
<*> Command line partition table parsing     (该选项用来解析uboot传递过来的flash分区信息)
<*> SPI-NOR device support —>    (选中即可,下级菜单默认)
添加对jffs2文件系统的支持:
File systems —>
[*] Miscellaneous filesystems —>
<*> Journalling Flash File System v2 (JFFS2) support
设备树配置
修改dts配置,添加spi flash节点:
gedit arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts
添加下面的代码:
&spi0 {
status ="okay";
w25q128:w25q128@0 {
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <50000000>;
#address-cells = <1>;
#size-cells = <1>;
};
};

前几次出现文件系统无法挂载的问题,出现以下提示
jffs2: Node at 0x00000f6c with length 0x00000144 would run over the end of the erase block
[    1.133830] jffs2: Perhaps the file system was created with the wrong erase size?
[    1.141435] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f70: 0x0144 instead
[    1.150994] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f74: 0x912a instead
[    1.160547] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f78: 0x0002 instead
[    1.170127] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f7c: 0x000d instead
[    1.180689] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f80: 0x81a4 instead
[    1.190183] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f84: 0x03e8 instead
[    1.199668] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f88: 0x11d8 instead
[    1.209151] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f8c: 0xdec2 instead
[    1.218634] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f90: 0xdec2 instead
[    1.228102] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000f94: 0xdec2 instead
[    1.237581] jffs2: Further such events for this erase block will not be printed
[    1.245110] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001000: 0x3fb1 instead
[    1.254615] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001004: 0x1a28 instead
[    1.264102] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001008: 0x7f01 instead
[    1.273586] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000100c: 0x505d instead
[    1.283098] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001010: 0x84c8 instead
[    1.292588] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001014: 0xd8d1 instead
[    1.302072] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001018: 0x4001 instead
[    1.311555] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000101c: 0x8485 instead
[    1.321033] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001020: 0x65b1 instead
[    1.330514] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00001024: 0x5d81 instead
按照官方说明
mkfs.jffs2 使用的最小擦除尺寸是8KB,而spi flash的扇区大小是4KB,所以按照扇区擦除的话,会无法使用,所以必须使用块擦除。
编译内核前先确认下drivers/mtd/spi-nor/spi-nor.c里,自己使用的flash的相关信息
#define SECT_4K BIT(0) /* SPINOR_OP_BE_4K works uniformly */
如果发现信息里有SECT_4K,则会导致jffs2不能正常擦除(64KB),需要去掉该flag。

执行编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules_install
编译完成后,zImage在arch/arm/boot/下,驱动模块在out/下,sun8i-v3s-licheepi-zero-dock.dtb在arch/arm/boot/dts/下
5、文件系统
16M SPI Falsh中使用rootfs-brmin.tar.gz
Flash支持jffs2文件系统格式,所以需要使用此该rootfs制作jffs2文件系统镜像、
下载jffs2文件系统制作工具
sudo apt-get install mtd-utils
制作文件系统镜像:
mkdir rootfs
sudo tar xzvf rootfs-brmin.tar.gz -C rootfs
sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img
#如果使用32M的flash  mx25l25635,则需要做一些修改:
sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0x1AF0000 -d rootfs/ -o jffs2.img
-p 指的是rootfs占据的总空间:16M-1M-64K-4M=0xAF0000 或者 32M-1M-64K-4M=0x1AF0000
-s 页大小0x100 256字节
-e 块大小0x10000 64k
jffs2.img是生成的文件系统镜像。
6、制作系统镜像
最后将uboot,dtb,kernel,rootfs打包成一个系统镜像,命令如下:
dd if=/dev/zero of=flashimg.bin bs=16M count=1
dd if=u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc
dd if=linux-zero-4.13.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024  conv=notrunc
dd if=linux-zero-4.13.y/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088  conv=notrunc
dd if=jffs2.img of=flashimg.bin  bs=1K seek=5184  conv=notrunc
第一步:生成一个空文件,大小是16MB
第二步:将uboot添加到文件开头
第三步:将dtb放到1M偏移处
第四步:将kernel放到1M+64K偏移处
第五步:将rootfs放到1M+64K+4M偏移处
偏移大小是seek,单位是KB。
执行完毕后生成镜像文件flashimg.bin

7、烧写镜像
下载sunxiflash烧写工具,安装与下载参考:https://blog.csdn.net/qq_40860568/article/details/100519832
进入fel模式
Zero有一个usb下载模式称为fel模式,进入fel模式有下面几种方式:
TF卡和spi flash 同时没有可启动镜像
也就是说你不插SD卡,且焊接的是新的或者没有有效镜像的spi flash,那就上电自动进入fel下载模式
SD卡中有进入fel模式的特殊固件 fel-sdboot.sunxi
如果你的spiflash已经有了启动镜像,那么需要在TF卡中烧入一个sunxi提供的启动工具(dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8),那么插入该TF卡启动会进入fel模式;
上电时SPI_MISO拉低到GND
通常使用此方法最为方便。该引脚为boot引脚,上电时出于低电平即会进入fel下载模式。
sunxi-fel的操作
进入fel模式后使用usb数据线连接pc和zero,即可进行操作。
sudo sunxi-fel version #查看连接的cpu信息
AWUSBFEX soc=00001681(V3s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
sudo sunxi-fel spiflash-info #显示flash信息
Manufacturer: Unknown (C2h), model: 20h, size: 33554432 bytes.
执行如下命令烧入我们前边制作好的镜像文件
sudo sunxi-fel -p spiflash-write 0 flashimg.bin
# -p 显示进度条
# spiflash-info Retrieves basic information
# spiflash-hex[dump] addr length Dumps SPI flash region in hex
# spiflash-read addr length file Write SPI flash contents into file
# spiflash-write addr file Store file contents into SPI flash
SPI flash下载速度约50KB/s,等待5分钟(16MB)或者10分钟(32MB),烧写完成,如果一切顺利,重新上电zero那么就会进入linux系统了,账号是root没有密码。
第一次成功进入登陆界面后,发现root账户登陆不进去,检查发现根文件系统是复制的文件夹,出现确实文件,后来复制压缩包,重新制作镜像后成功登陆。
Welcome to minicom 2.7.1
OPTIONS: I18n
Compiled on Aug 13 2017, 15:25:34.
Port /dev/ttyUSB0, 21:23:29
Press CTRL-A Z for help on special keys
U-Boot SPL 2017.01-rc2 (Dec 10 2020 - 22:41:13)
DRAM: 64 MiB
Trying to boot from sunxi SPI
U-Boot 2017.01-rc2 (Dec 10 2020 - 22:41:13 +0800) Allwinner Technology
CPU:   Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM:  64 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 environment
Setting up a 480x272 lcd console (overscan 0x0)
dotclock: 10000kHz = 10000kHz: (1 * 3MHz * 20) / 6
In:    serial@01c28000
Out:   serial@01c28000
Err:   serial@01c28000
U-Boot 2017.01-rc2 (Dec 10 2020 - 22:41:13 +0800) Allwinner Technology
CPU:   Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM:  64 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 environment
Setting up a 480x272 lcd console (overscan 0x0)
dotclock: 10000kHz = 10000kHz: (1 * 3MHz * 20) / 6
In:    serial@01c28000
Out:   serial@01c28000
Err:   serial@01c28000
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 0x10000
SF: 65536 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 41800000
Booting using the fdt blob at 0x41800000
Loading Device Tree to 42dfa000, end 42dffecd ... OK
Starting kernel ...
U-Boot SPL 2017.01-rc2 (Dec 10 2020 - 22:41:13)
DRAM: 64 MiB
Trying to boot from sunxi SPI
U-Boot 2017.01-rc2 (Dec 10 2020 - 22:41:13 +0800) Allwinner Technology
CPU:   Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM:  64 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 environment
Setting up a 480x272 lcd console (overscan 0x0)
dotclock: 10000kHz = 10000kHz: (1 * 3MHz * 20) / 6
In:    serial@01c28000
Out:   serial@01c28000
Err:   serial@01c28000
U-Boot 2017.01-rc2 (Dec 10 2020 - 22:41:13 +0800) Allwinner Technology
CPU:   Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM:  64 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 environment
Setting up a 480x272 lcd console (overscan 0x0)
dotclock: 10000kHz = 10000kHz: (1 * 3MHz * 20) / 6
In:    serial@01c28000
Out:   serial@01c28000
Err:   serial@01c28000
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 0x10000
SF: 65536 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 41800000
Booting using the fdt blob at 0x41800000
Loading Device Tree to 42dfa000, end 42dffecd ... OK
Starting kernel ...
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.13.16-licheepi-zero (hero@hero-Lenovo-3000-G430)0
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instructie
[    0.000000] OF: fdt: Machine model: Lichee Pi Zero with Dock
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] percpu: Embedded 16 pages/cpu @c3edf000 s33868 r8192 d23476 u6556
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pa9
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk panic=5 ro2
[    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: 54568K/65024K available (6144K kernel code, 217K rwdata,)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc4000000 - 0xff800000   ( 952 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc3f80000   (  63 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0700000   (7136 kB)
[    0.000000]       .init : 0xc0900000 - 0xc0a00000   (1024 kB)
[    0.000000]       .data : 0xc0a00000 - 0xc0a367c0   ( 218 kB)
[    0.000000]        .bss : 0xc0a3daf0 - 0xc0a7fcac   ( 265 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU event tracing is enabled.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycless
[    0.000008] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398s
[    0.000021] Switching to timer-based delay loop, resolution 41ns
[    0.000187] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, maxs
[    0.000413] Console: colour dummy device 80x30
[    0.000447] Calibrating delay loop (skipped), value calculated using timer f)
[    0.000461] pid_max: default: 32768 minimum: 301
[    0.000590] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000603] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001187] CPU: Testing write buffer coherency: ok
[    0.001552] /cpus/cpu@0 missing clock-frequency property
[    0.001574] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002005] Setting up static identity map for 0x40100000 - 0x40100060
[    0.002178] Hierarchical SRCU implementation.
[    0.002689] smp: Bringing up secondary CPUs ...
[    0.002702] smp: Brought up 1 node, 1 CPU
[    0.002712] SMP: Total of 1 processors activated (48.00 BogoMIPS).
[    0.002719] CPU: All CPU(s) started in SVC mode.
[    0.003460] devtmpfs: initialized
[    0.006596] VFP support v0.3: implementor 41 architecture 2 part 30 variant 5
[    0.006882] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, ms
[    0.006907] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.007071] pinctrl core: initialized pinctrl subsystem
[    0.007932] random: get_random_u32 called from bucket_table_alloc+0xf4/0x2440
[    0.008067] NET: Registered protocol family 16
[    0.008539] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.009657] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint.
[    0.009675] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.022929] SCSI subsystem initialized
[    0.023227] usbcore: registered new interface driver usbfs
[    0.023293] usbcore: registered new interface driver hub
[    0.023388] usbcore: registered new device driver usb
[    0.023632] pps_core: LinuxPPS API ver. 1 registered
[    0.023642] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giom>
[    0.023663] PTP clock support registered
[    0.023889] Advanced Linux Sound Architecture Driver Initialized.
[    0.025735] clocksource: Switched to clocksource arch_sys_counter
[    0.036536] NET: Registered protocol family 2
[    0.037124] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.037158] TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
[    0.037181] TCP: Hash tables configured (established 1024 bind 1024)
[    0.037305] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.037352] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.037562] NET: Registered protocol family 1
[    0.038136] RPC: Registered named UNIX socket transport module.
[    0.038157] RPC: Registered udp transport module.
[    0.038163] RPC: Registered tcp transport module.
[    0.038169] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.040244] workingset: timestamp_bits=30 max_order=14 bucket_order=0
[    0.049180] NFS: Registering the id_resolver key type
[    0.049229] Key type id_resolver registered
[    0.049237] Key type id_legacy registered
[    0.049281] jffs2: version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
[    0.050801] random: fast init done
[    0.053668] Block layer SCSI generic (bsg) driver version 0.4 loaded (major )
[    0.053691] io scheduler noop registered
[    0.053699] io scheduler deadline registered
[    0.053971] io scheduler cfq registered (default)
[    0.053984] io scheduler mq-deadline registered
[    0.053990] io scheduler kyber registered
[    0.058302] sun8i-v3s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.127514] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.130741] console [ttyS0] disabled
[    0.151012] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 36, base_baud = 1A
[    0.741148] console [ttyS0] enabled
[    0.749164] m25p80 spi32766.0: w25q128 (16384 Kbytes)
[    0.754248] spi32766.0: parser cmdlinepart: 4
[    0.758690] 4 cmdlinepart partitions found on MTD device spi32766.0
[    0.764950] Creating 4 MTD partitions on "spi32766.0":
[    0.770116] 0x000000000000-0x000000100000 : "uboot"
[    0.775622] 0x000000100000-0x000000110000 : "dtb"
[    0.780837] 0x000000110000-0x000000510000 : "kernel"
[    0.786234] 0x000000510000-0x000001000000 : "rootfs"
[    0.791984] libphy: Fixed MDIO Bus: probed
[    0.796672] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[    0.802464] dwmac-sun8i 1c30000.ethernet: No regulator found
[    0.808244] dwmac-sun8i 1c30000.ethernet: Will use internal PHY
[    0.814396] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
[    0.820105] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supportd
[    0.827336] dwmac-sun8i 1c30000.ethernet: Normal descriptors
[    0.832988] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supportd
[    0.840214] dwmac-sun8i 1c30000.ethernet: COE Type 2
[    0.845171] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
[    0.852146] libphy: stmmac: probed
[    0.857478] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.864015] ehci-platform: EHCI generic platform driver
[    0.869639] ehci-platform 1c1a000.usb: EHCI Host Controller
[    0.875254] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus 1
[    0.883236] ehci-platform 1c1a000.usb: irq 26, io mem 0x01c1a000
[    0.915750] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[    0.923018] hub 1-0:1.0: USB hub found
[    0.926973] hub 1-0:1.0: 1 port detected
[    0.931493] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.937789] ohci-platform: OHCI generic platform driver
[    0.943357] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[    0.950099] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus 2
[    0.958048] ohci-platform 1c1a400.usb: irq 27, io mem 0x01c1a400
[    1.030873] hub 2-0:1.0: USB hub found
[    1.034693] hub 2-0:1.0: 1 port detected
[    1.042311] udc-core: couldn't find an available UDC - added [g_cdc] to lists
[    1.051883] input: 1c22800.lradc as /devices/platform/soc/1c22800.lradc/inpu0
[    1.060794] sun6i-rtc 1c20400.rtc: rtc core: registered rtc-sun6i as rtc0
[    1.067699] sun6i-rtc 1c20400.rtc: RTC enabled
[    1.072236] i2c /dev entries driver
[    1.077097] input: ns2009_ts as /devices/platform/soc/1c2ac00.i2c/i2c-0/0-001
[    1.086588] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, no)
[    1.155785] sunxi-mmc 1c0f000.mmc: base:0xc407b000 irq:23
[    1.215766] sunxi-mmc 1c10000.mmc: base:0xc4144000 irq:24
[    1.222171] usbcore: registered new interface driver usbhid
[    1.227830] usbhid: USB HID core driver
[    1.233276] sun4i-codec 1c22c00.codec: ASoC: /soc/codec-analog@01c23000 not d
[    1.241314] sun4i-codec 1c22c00.codec: Failed to register our card
[    1.248780] NET: Registered protocol family 17
[    1.253359] Key type dns_resolver registered
[    1.257895] Registering SWP/SWPB emulation handler
[    1.270298] simple-framebuffer 43f80000.framebuffer: framebuffer at 0x43f8000
[    1.280914] simple-framebuffer 43f80000.framebuffer: format=x8r8g8b8, mode=40
[    1.293186] Console: switching to colour frame buffer device 60x34
[    1.301651] simple-framebuffer 43f80000.framebuffer: fb0: simplefb registere!
[    1.310217] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto sr
[    1.321573] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[    1.327414] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus3
[    1.336654] hub 3-0:1.0: USB hub found
[    1.340542] hub 3-0:1.0: 1 port detected
[    1.345600] using random self ethernet address
[    1.350155] using random host ethernet address
[    1.355703] usb0: HOST MAC 52:8e:e2:88:95:0b
[    1.360117] usb0: MAC 9a:a2:05:7a:79:6c
[    1.363997] g_cdc gadget: CDC Composite Gadget, version: King Kamehameha Day8
[    1.371516] g_cdc gadget: g_cdc ready
[    1.377836] sun4i-codec 1c22c00.codec: Codec <-> 1c22c00.codec mapping ok
[    1.387564] sun6i-rtc 1c20400.rtc: setting system clock to 1970-12-31 02:05:)
[    1.396394] vcc3v3: disabling
[    1.399368] vcc5v0: disabling
[    1.402332] ALSA device list:
[    1.405295]   #0: V3s Audio Codec
[    1.446985] random: crng init done
[    1.981287] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    1.988532] devtmpfs: mounted
[    1.992717] Freeing unused kernel memory: 1024K
[    2.877327] g_cdc gadget: high-speed config #1: CDC Composite (ECM + ACM)
Starting logging: OK
Starting mdev...
modprobe: can't change directory to '/lib/modules': No such file or directory
Initializing random number generator... done.
Starting network: OK
Welcome to Lichee Pi
Lichee login: root
# passwd root
Changing password for root
New password:
Bad password: too short
Retype password:
passwd: password for root changed by root
# reboot

Lichee Zero SPI Flash编译实战记录相关推荐

  1. lichee linux nfs,SPI Flash 系统编译

    在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. 这里 使用 MX25L25645G, 32M SPI fl ...

  2. Licheepi zero SPI Flash 系统编译

    Licheepi zero SPI Flash 系统编译 在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. ...

  3. 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...

  4. 2017年5月问题记录与总结——powerpc p1020 spi flash驱动

    1.SPI基础 SPI是串行外围接口的意思,一般用来接一些低速的外围设备,比如eeprom,flash,ad传感器,rtc等.硬件上,SPI有四根线,SDI/SDO/CS/SCLK,具体的协议可以参看 ...

  5. STM32开发实战:W25Q32JV SPI Flash详解

    STM32开发实战:W25Q32JV SPI Flash详解 在STM32单片机的应用中,使用SPI Flash能够有效地扩展程序和数据存储空间.W25Q32JV SPI Flash是一种常用的Fla ...

  6. spi flash擦写调试记录

    最近在调试spi flash的擦写,问题是flash擦写uboot时,不成功.原来的uboot丢失. 测试发现是因为擦能成功,但是写时的地址不是secent大小,一个secent大小为64K. 看da ...

  7. FT2004(D2000)开发实战之SPI Flash固件烧写

    一 SPI Flash固件烧写 1.1 Windows电脑安装GZUT_EZP_XPro编程器2.0软件,安装成功后会生成如下图标 1.2 固定和安装SPI-Flash芯片 25系列SPI Flash ...

  8. nano spi flash linux构建指南

    title: nano spi flash linux构建指南 前言 本文介绍Licheepi nano SPI Flash镜像的制作过程.主要为小白首次入门做讲解! 制作嵌入式linux系统主要分四 ...

  9. 在RT-Thread STM32F407平台下配置SPI flash为U盘

    记录下SPI Flash U盘实现过程中踩过的坑,与您分享. 前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功.如下图 然后开始配置USB 1,在CubeMX,选择SU ...

最新文章

  1. 图像非极大值抑制 Sobel 边缘实现
  2. ES6的几个实用技巧,你了解吗?
  3. matlab产生ofdm信号,Matlab 完成简单的OFDM 信号的产生与解调程序.pdf
  4. Spring/SpringBoot常用注解总结
  5. android开发之bitmap转数组的方法
  6. java并发之CAS
  7. 初始化环境配置:CentOS 7.4x64 系统安装及基础配置
  8. 2019上半年这10本新书,技术大牛们都在追着看
  9. 让Windows Server 2008 R2 SP1 的“网络发现”真正能发现和被发现
  10. [转载]windows2003上IIS+PyISAPIe1.1..0部署成功
  11. 新华三副总裁李立:建设智慧城市的三大误区
  12. pl/sql查询中文乱码
  13. 普通交换机上的网卡绑定
  14. 第5章第25节:如何寻找和下载视频、音频素材 [PowerPoint精美幻灯片实战教程]
  15. Word论文参考文献排版
  16. 将一般算术表达式转化为逆波兰表达式,并求逆波兰表达式的值。
  17. “胡焕庸”线 - 中国人口分布地理界线
  18. 微分方程中解、特解、通解的区别
  19. 解决 org.gjt.mm.mysql.Driver 报错问题 实测有效
  20. intel RealSense摄像头比较

热门文章

  1. 为什么厂商做不出 1999 元的旗舰手机了?
  2. iPhone 6 / 6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?
  3. Nuwa框架的使用步骤以及demo演示
  4. flowable画图教程_Flowable从入门到入土(1)-初始Flowable
  5. 手机备忘录恢复办法有那些,第一时间补救”你的遗憾!
  6. Ubuntu切换到root用户无法找到环境变量PATH的问题
  7. 产品思维的《打胜仗》
  8. 清纯非主流_陕南赤子_新浪博客
  9. matlab-基础 字符串 倒序输出
  10. J9数字虚拟论:元宇宙的潜力:一股推动社会进步的力量