当前位置: 首页 > news >正文

宝应123网站建设网中国万网创始人张向东

宝应123网站建设网,中国万网创始人张向东,成都seo优化排名推广,开办网站备案文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot#xff08;官方的Uboot#xff09;先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash o… 文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot官方的Uboot先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash on Allwinner SoCs in SPLBoot options 取消 Enable boot arguments打开Device Drivers下面的SPI Support在Device Drivers下面 MTD Support 中勾选 Enable MTD layer Driver Model for MTD driver在Command line interface的Device access commands勾选 mtd这样后续生成的uboot中才会有MTD相关的命令类似于SPI NOR Flash添加的sf命令Environment 取消勾选 Environment is in SPI flash这个选项是在打开SPI Support之后才会被看到 修改uboot输出文件使其可以在spinandflash上运行 五、构建Linux Kernel修改设备树修改 chosen增加SPI0节点 menuconfig里面配置增加驱动支持Memory Technology Device (MTD) support 勾选 SPI NAND device Support 和 Enable UBI - Unsorted block image![在这里插入图片描述](https://img-blog.csdnimg.cn/a156167e31c44ac7b92b7edb5ba912c3.png)File Systems的Miscellaneous filesystems中勾选UBIFS file system support, 这一步需要刚才的Enable UBI打开之后才能看到 编译Linux Kernel烧录 Linux Kernel 六、构建文件系统七、进入文件系统后的操作查看挂载的文件系统查看分区查看存储查看Linux内核启动参数查看目录信息 八、总结九、打包十、工程源码原始的文件配置好的文件 芯片W25N01GVZEIG 一、硬件介绍 datasheet上的描述 SLC工艺2KB*65536页10万次擦写次数 焊好以后用CH341A读了一下 V3s的启动顺序 上面这张图描述了soc启动的四个顺序分别是usb启动、sd卡启动、spi norflash启动、spi nandflash启动四种方式。前面的测试中一直走的是sd卡启动但是从成本和稳定性上说spi nandflash其实是最合适的。 sd 卡需要卡座拔插在震动环境下不稳定容易接触不良容量大其实也贵相当于EMMC。 spi nor flash容量一般在16MB左右也有32MB和64MB的但是价格较贵。 2023年9月16日15:36:26在某宝上数据对比一下 容量接口型号价格16MBspi nor flashW25Q128JVSIM3.832MBspi nor flashW25Q256JVEIQ7.1128MBspi nand flashW25N01GVZEIG4.0256MBspi nand flashW25N02KVZEIR5.9 所以16M/32M 的spi nor flash 真的没有什么优势。做非常简单的应用还可以其他就算了吧。故以后自己玩也要玩nand flash吧nor flash没有什么应用场景。 有兴趣可以看看我之前的记录 全志V3s学习记录Nor Flash使用一 全志V3s学习记录Nor Flash使用二 二、驱动支持 U-Boot驱动 使用http://sources.buildroot.net/uboot/u-boot-2022.04.tar.bz2 主线 Linux 驱动已经支持 4.19 及其以后的版本支持 spi nand https://github.com/torvalds/linux/blob/v4.19/drivers/mtd/nand/spi/winbond.c 目前主线Linux已经支持winbond:W25N01GVZEIG如下 在线Linux Kernel代码https://elixir.bootlin.com/linux/v5.2.20/source/drivers/mtd/nand/spi/winbond.c static const struct spinand_info winbond_spinand_table[] {SPINAND_INFO(W25M02GV, 0xAB,NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 2),NAND_ECCREQ(1, 512),SPINAND_INFO_OP_VARIANTS(read_cache_variants,write_cache_variants,update_cache_variants),0,SPINAND_ECCINFO(w25m02gv_ooblayout, NULL),SPINAND_SELECT_TARGET(w25m02gv_select_target)),SPINAND_INFO(W25N01GV, 0xAA,NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),NAND_ECCREQ(1, 512),SPINAND_INFO_OP_VARIANTS(read_cache_variants,write_cache_variants,update_cache_variants),0,SPINAND_ECCINFO(w25m02gv_ooblayout, NULL)), };三、烧录工具 xfel 之前烧录spi nor flash的时候使用的是sunxi-fel工具如果需要烧录spi nand flash image就需要xfel https://github.com/xboot/xfel 或者 git https://github.com/xboot/xfel.git 下载直接选main解压、直接make就可以了。 解压makesudo make install 需要安装sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev usage:xfel version - Show chip versionxfel hexdump address length - Dumps memory region in hexxfel dump address length - Binary memory dump to stdoutxfel read32 address - Read 32-bits value from device memoryxfel write32 address value - Write 32-bits value to device memoryxfel read address length file - Read memory to filexfel write address file - Write file to memoryxfel exec address - Call function addressxfel reset - Reset device using watchdogxfel sid - Show sid informationxfel jtag - Enable jtag debugxfel ddr [type] - Initial ddr controller with optional typexfel sign public-key private-key file - Generate ecdsa256 signature file for sha256 of sidxfel spinor - Detect spi nor flashxfel spinor erase address length - Erase spi nor flashxfel spinor read address length file - Read spi nor flash to filexfel spinor write address file - Write file to spi nor flashxfel spinand - Detect spi nand flashxfel spinand erase address length - Erase spi nand flashxfel spinand read address length file - Read spi nand flash to filexfel spinand write address file - Write file to spi nand flashxfel spinand splwrite split-size address file - Write file to spi nand flash with split supportxfel extra [...] - The extra commandsliefyuanubuntu:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 010: ID 048d:5702 Integrated Technology Express, Inc. Bus 002 Device 009: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 009: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode liefyuanubuntu:~$ xfel version AWUSBFEX ID0x00168100(V3S/S3) dflag0x44 dlength0x08 scratchpad0x00007e00 这就是ubuntu识别出来进入USB升级模式的V3s了。 简单使用一下 liefyuanubuntu:~$ xfel spinand Found spi nand flash W25N01GV with 134217728 bytes liefyuanubuntu:~$ xfel version AWUSBFEX ID0x00168100(V3S/S3) dflag0x44 dlength0x08 scratchpad0x00007e00 liefyuanubuntu:~$ sudo xfel spinand erase 0x0 0x100000 [sudo] password for liefyuan: 12% [ ] 4.334 MB/s, ETA 00:00 25% [ ] 4.334 MB/s, ETA 00:00 38% [ ] 4.377 MB/s, ETA 00:00 50% [ ] 4.363 MB/s, ETA 00:00 62% [ ] 4.386 MB/s, ETA 00:00 75% [ ] 4.348 MB/s, ETA 00:00 88% [ ] 4.392 MB/s, ETA 00:00 100% [] 1024.000 KB, 4.382 MB/s 四、构建U-Boot官方的Uboot 地址http://sources.buildroot.net/uboot/u-boot-2022.04.tar.bz2 驱动是支持的 liefyuanubuntu:~/V3s/u-boot-2022.04$ find ./ -name winbond.c ./drivers/mtd/nand/spi/winbond.c先编译一下 先编译一下看看有没有什么问题 make ARCHarm LicheePi_Zero_defconfig make ARCHarm menuconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf-最后一步报错了交叉编译器版本太老了。 *** Your GCC is older than 6.0 and is not supported arch/arm/config.mk:74: recipe for target checkgcc6 failed make: *** [checkgcc6] Error 1 换个高版本的交叉编译器 再装个软件sudo apt install swig 初步编译成功了 开始spi nand flash 代码层面的适配 拷贝spl_spinand_sunxi.c到arch/arm/mach-sunxi目录下文件地址 https://github.com/bamkrs/openwrt/blob/dolphinpi-spinand/package/boot/uboot-sunxi/src/arch/arm/mach-sunxi/spl_spinand_sunxi.cspl_spinand_sunxi.c需要做一些修改 添加头文件添加函数调用参数 // add by liefyuan #include image.h #include linux/delay.hret spl_parse_image_header(spl_image, bootdev, header); // modified by liefyuan然后在arch/arm/mach-sunxi/Kconfig 文件中添加内容 config SPL_SPINAND_SUNXIbool Support for SPI Nand Flash on Allwinner SoCs in SPLdepends on MACH_SUN8I_V3ShelpEnable support for SPI Nand Flash. This option allows SPL to read fromsunxi SPI Nand Flash. It uses the same method as the boot ROM, so doesnot need any extra configuration.1043gg 处添加吧 然后在 arch/arm/mach-sunxi/Makefile添加 spl_spinand_sunxi.c的编译选项 ifdef CONFIG_SPL_BUILD obj-$(CONFIG_MACH_SUNIV) dram_suniv.o obj-$(CONFIG_DRAM_SUN4I) dram_sun4i.o obj-$(CONFIG_DRAM_SUN6I) dram_sun6i.o obj-$(CONFIG_DRAM_SUN8I_A23) dram_sun8i_a23.o obj-$(CONFIG_DRAM_SUN8I_A33) dram_sun8i_a33.o obj-$(CONFIG_DRAM_SUN8I_A83T) dram_sun8i_a83t.o obj-$(CONFIG_DRAM_SUN9I) dram_sun9i.o obj-$(CONFIG_SPL_SPI_SUNXI) spl_spi_sunxi.o obj-$(CONFIG_SUNXI_DRAM_DW) dram_sunxi_dw.o obj-$(CONFIG_SUNXI_DRAM_DW) dram_timings/ obj-$(CONFIG_DRAM_SUN50I_H6) dram_sun50i_h6.o obj-$(CONFIG_DRAM_SUN50I_H6) dram_timings/ obj-$(CONFIG_DRAM_SUN50I_H616) dram_sun50i_h616.o obj-$(CONFIG_DRAM_SUN50I_H616) dram_timings/ obj-$(CONFIG_SPL_SPINAND_SUNXI) spl_spinand_sunxi.o endif继续在 arch/arm/dts/sun8i-v3s-licheepi-zero.dts文件中添加spi0的内容 spi0 {pinctrl-0 spi0_pins;pinctrl-names default;status okay;flash0 {#address-cells 1;#size-cells 1;compatible spi-nand;reg 0;spi-max-frequency 50000000;}; };最后在 include/configs/sun8i.h添加内容要在#include configs/sunxi-common.h之前添加。 #ifdef CONFIG_BOOTCOMMAND #undef CONFIG_BOOTCOMMAND #endif#ifdef COFNIG_BOOTARGS #undef CONFIG_BOOTARGS #endif#define CONFIG_BOOTCOMMAND mtd read spi-nand0 0x41800000 0x100000 0x20000; \mtd read spi-nand0 0x41000000 0x120000 0x500000; \bootz 0x41000000 - 0x41800000#define CONFIG_BOOTARGS consolettyS0,115200 earlyprintk panic5 rootwait \mtdpartsspi0.0:1M(uboot)ro,128k(dtb)ro,5M(kernel)ro,-(rootfs) ubi.mtd3 rootubi0:rootfs rw rootfstypeubifs 修改menuconfig配置 命令make ARCHarm menuconfig ARM architecture配置Support for SPI Nand Flash on Allwinner SoCs in SPL Boot options 取消 Enable boot arguments 打开Device Drivers下面的SPI Support 在Device Drivers下面 MTD Support 中勾选 Enable MTD layer Driver Model for MTD driver 在Command line interface的Device access commands勾选 mtd这样后续生成的uboot中才会有MTD相关的命令类似于SPI NOR Flash添加的sf命令 Environment 取消勾选 Environment is in SPI flash这个选项是在打开SPI Support之后才会被看到 OK更改完毕。 再次编译一下就OK了。 make ARCHarm LicheePi_Zero_defconfig make ARCHarm menuconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf-修改uboot输出文件使其可以在spinandflash上运行 此时u-boot-sunxi-with-spl.bin还不能被直接下载到nand flash。因为V3s默认从spi nand flash加载page内容是1个page加载1KB。我使用的是winbond的W25N01GVZEIG它的page是2KB。 脚本地址https://github.com/bamkrs/openwrt/blob/dolphinpi-spinand/target/linux/sunxi/image/gen_sunxi_spinand_onlyboot_img.sh 运行命令 ./gen_sunxi_spinand_onlyboot_img.sh split.bin u-boot-sunxi-with-spl.bin 2048 128其中split.bin代表生成的目标文件u-boot-sunxi-with-spl.bin表示刚刚编译好的uboot文件2048代表page大小单位是byte而128则代表block大小单位是k byte。 下载修改后的uboot文件到spinandflash文件 liefyuanubuntu:~/V3s/u-boot-3s-spi-experimental$ sudo xfel spinand erase 0x0 0x100000 [sudo] password for liefyuan: 100% [] 1024.000 KB, 4.381 MB/s liefyuanubuntu:~/V3s/u-boot-3s-spi-experimental$ sudo xfel spinand write 0x0 split.bin 100% [] 505.250 KB, 91.550 KB/s 写入文件是nandflash的由0开始的地址空间。 上电 U-Boot SPL 2022.04 (Sep 17 2023 - 22:00:15 0800) DRAM: 64 MiB Trying to boot from sunxi SPI-NAND sunxi SPI-NAND: Found Winbond W25N01GVxxIG (efaa21) sunxi SPI-NAND: Loading u-boot from 0x20000 sunxi SPI-NAND: u-boot hcrc OK!U-Boot 2022.04 (Sep 17 2023 - 22:00:15 0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB Core: 23 devices, 11 uclasses, devicetree: separate WDT: Not starting watchdog1c20ca0 MMC: mmc1c0f000: 0 Loading Environment from FAT... Card did not respond to voltage select! : -110 In: serial1c28000 Out: serial1c28000 Err: serial1c28000 Net: No ethernet found. Hit any key to stop autoboot: 0 Reading 131072 byte(s) (64 page(s)) at offset 0x00100000 Reading 5242880 byte(s) (2560 page(s)) at offset 0x00120000 zimage: Bad magic!五、构建Linux Kernel 源码https://github.com/Lichee-Pi/linux/tree/zero-5.2.y 修改设备树 修改 chosen chosen {bootargs consolettyS0,115200 earlyprintk panic5 rootwait mtdpartsspi0.0:1M(uboot)ro,128k(dtb)ro,5M(kernel)ro,-(rootfs) ubi.mtd3 rootubi0:rootfs rw rootfstypeubifs;};增加SPI0节点 文件地址linux-zero-5.2.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts spi0 {status okay;spi_nand: spi_nand0 {#address-cells 1;#size-cells 1;compatible spi-nand;reg 0;spi-max-frequency 50000000;partition0 {label uboot;reg 0x0 0x100000;read-only;};partition100000 {label dtb;reg 0x100000 0x20000;read-only;};partition120000 {label kernel;reg 0x120000 0x500000;read-only;};partition620000 {label rootfs;reg 0x620000 0x79E0000;};}; };menuconfig里面配置增加驱动支持 命令make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- menuconfig Memory Technology Device (MTD) support 勾选 SPI NAND device Support 和 Enable UBI - Unsorted block image File Systems的Miscellaneous filesystems中勾选UBIFS file system support, 这一步需要刚才的Enable UBI打开之后才能看到 编译Linux Kernel 清除make clean make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- licheepi_zero_defconfig time make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j16 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- dtbs make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- menuconfig 烧录 Linux Kernel sudo xfel spinand erase 0x100000 0x20000 sudo xfel spinand write 0x100000 sun8i-v3s-licheepi-zero-with-800x480-lcd.dtb sudo xfel spinand erase 0x120000 0x500000 sudo xfel spinand write 0x120000 zImage上电 U-Boot SPL 2022.04 (Sep 17 2023 - 22:00:15 0800) DRAM: 64 MiB Trying to boot from sunxi SPI-NAND sunxi SPI-NAND: Found Winbond W25N01GVxxIG (efaa21) sunxi SPI-NAND: Loading u-boot from 0x20000 sunxi SPI-NAND: u-boot hcrc OK!U-Boot 2022.04 (Sep 17 2023 - 22:00:15 0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB Core: 23 devices, 11 uclasses, devicetree: separate WDT: Not starting watchdog1c20ca0 MMC: mmc1c0f000: 0 Loading Environment from FAT... Card did not respond to voltage select! : -110 In: serial1c28000 Out: serial1c28000 Err: serial1c28000 Net: No ethernet found. Hit any key to stop autoboot: 0 Reading 131072 byte(s) (64 page(s)) at offset 0x00100000 Reading 5242880 byte(s) (2560 page(s)) at offset 0x00120000 zimage: Bad magic!U-Boot SPL 2022.04 (Sep 17 2023 - 22:00:15 0800) DRAM: 64 MiB Trying to boot from sunxi SPI-NAND sunxi SPI-NAND: Found Winbond W25N01GVxxIG (efaa21) sunxi SPI-NAND: Loading u-boot from 0x20000 sunxi SPI-NAND: u-boot hcrc OK!U-Boot 2022.04 (Sep 17 2023 - 22:00:15 0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB Core: 23 devices, 11 uclasses, devicetree: separate WDT: Not starting watchdog1c20ca0 MMC: mmc1c0f000: 0 Loading Environment from FAT... Card did not respond to voltage select! : -110 In: serial1c28000 Out: serial1c28000 Err: serial1c28000 Net: No ethernet found. Hit any key to stop autoboot: 0 Reading 131072 byte(s) (64 page(s)) at offset 0x00100000 Reading 5242880 byte(s) (2560 page(s)) at offset 0x00120000 Kernel image 0x41000000 [ 0x000000 - 0x4462a8 ] ## Flattened Device Tree blob at 41800000Booting using the fdt blob at 0x41800000Loading Device Tree to 42df9000, end 42dff021 ... OKStarting kernel ...[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.2.0-licheepi-zero (liefyuanubuntu) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #2 SMP Sun Sep 17 22:22:36 HKT 2023 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Lichee Pi Zero [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: Using PSCI v0.1 Function IDs from DT [ 0.000000] percpu: Embedded 16 pages/cpu s34508 r8192 d22836 u65536 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16256 [ 0.000000] Kernel command line: consolettyS0,115200 earlyprintk panic5 rootwait mtdpartsspi0.0:1M(uboot)ro,128k(dtb)ro,5M(kernel)ro,-(rootfs) ubi.mtd3 rootubi0:rootfs rw rootfstypeubifs [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 54004K/65536K available (7168K kernel code, 309K rwdata, 1748K rodata, 1024K init, 257K bss, 11532K reserved, 0K cma-reserved, 0K highmem) [ 0.000000] SLUB: HWalign64, Order0-3, MinObjects0, CPUs1, Nodes1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS8 to nr_cpu_ids1. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf16, nr_cpu_ids1 [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: GICv2 detected, but range too small and irqchip.gicv2_force_probe not set [ 0.000000] random: get_random_bytes called from start_kernel0x300/0x48c with crng_init0 [ 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.000008] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns [ 0.000020] Switching to timer-based delay loop, resolution 41ns [ 0.000207] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000453] Console: colour dummy device 80x30 [ 0.000509] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj240000) [ 0.000524] pid_max: default: 32768 minimum: 301 [ 0.000684] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.000699] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.001494] CPU: Testing write buffer coherency: ok [ 0.001994] /cpus/cpu0 missing clock-frequency property [ 0.002020] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.002813] Setting up static identity map for 0x40100000 - 0x40100060 [ 0.003023] rcu: Hierarchical SRCU implementation. [ 0.003573] smp: Bringing up secondary CPUs ... [ 0.003593] smp: Brought up 1 node, 1 CPU [ 0.003602] SMP: Total of 1 processors activated (48.00 BogoMIPS). [ 0.003609] CPU: All CPU(s) started in HYP mode. [ 0.003614] CPU: Virtualization extensions available. [ 0.004673] devtmpfs: initialized [ 0.008316] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 0.008615] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.008646] futex hash table entries: 256 (order: 2, 16384 bytes, linear) [ 0.008884] pinctrl core: initialized pinctrl subsystem [ 0.010035] NET: Registered protocol family 16 [ 0.010553] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.011815] hw-breakpoint: found 5 (1 reserved) breakpoint and 4 watchpoint registers. [ 0.011835] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.039592] SCSI subsystem initialized [ 0.039760] usbcore: registered new interface driver usbfs [ 0.039851] usbcore: registered new interface driver hub [ 0.039964] usbcore: registered new device driver usb [ 0.040374] mc: Linux media interface: v0.10 [ 0.040435] videodev: Linux video capture interface: v2.00 [ 0.040647] Advanced Linux Sound Architecture Driver Initialized. [ 0.042457] clocksource: Switched to clocksource arch_sys_counter [ 0.054799] NET: Registered protocol family 2 [ 0.055598] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear) [ 0.055636] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.055662] TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear) [ 0.055687] TCP: Hash tables configured (established 1024 bind 1024) [ 0.055836] UDP hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.055887] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.056173] NET: Registered protocol family 1 [ 0.058034] Initialise system trusted keyrings [ 0.058413] workingset: timestamp_bits30 max_order14 bucket_order0 [ 0.095330] Key type asymmetric registered [ 0.095353] Asymmetric key parser x509 registered [ 0.095451] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 0.095463] io scheduler mq-deadline registered [ 0.095469] io scheduler kyber registered [ 0.096519] sun4i-usb-phy 1c19400.phy: Couldnt request ID GPIO [ 0.100286] sun8i-v3s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver [ 0.100703] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pb not found, using dummy regulator [ 0.101422] pwm-backlight backlight: backlight supply power not found, using dummy regulator [ 0.207095] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled [ 0.210551] printk: console [ttyS0] disabled [ 0.230855] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq 34, base_baud 1500000) is a U6_16550A [ 0.776897] printk: console [ttyS0] enabled [ 0.782886] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator [ 0.816159] panel-simple panel: panel supply power not found, using dummy regulator [ 0.825484] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pc not found, using dummy regulator [ 0.837018] spi-nand spi0.0: Winbond SPI NAND was found. [ 0.842346] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64 [ 0.851243] 4 fixed-partitions partitions found on MTD device spi0.0 [ 0.857692] Creating 4 MTD partitions on spi0.0: [ 0.862530] 0x000000000000-0x000000100000 : uboot [ 0.870375] 0x000000100000-0x000000120000 : dtb [ 0.876231] 0x000000120000-0x000000620000 : kernel [ 0.882331] random: fast init done [ 0.895871] 0x000000620000-0x000008000000 : rootfs [ 1.066735] random: crng init done [ 1.153103] ehci_hcd: USB 2.0 Enhanced Host Controller (EHCI) Driver [ 1.159637] ehci-platform: EHCI generic platform driver [ 1.165246] ehci-platform 1c1a000.usb: EHCI Host Controller [ 1.170857] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1 [ 1.178853] ehci-platform 1c1a000.usb: irq 26, io mem 0x01c1a000 [ 1.212460] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00 [ 1.219633] hub 1-0:1.0: USB hub found [ 1.223604] hub 1-0:1.0: 1 port detected [ 1.228232] ohci_hcd: USB 1.1 Open Host Controller (OHCI) Driver [ 1.234555] ohci-platform: OHCI generic platform driver [ 1.240097] ohci-platform 1c1a400.usb: Generic Platform OHCI controller [ 1.246819] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2 [ 1.254782] ohci-platform 1c1a400.usb: irq 27, io mem 0x01c1a400 [ 1.327507] hub 2-0:1.0: USB hub found [ 1.331344] hub 2-0:1.0: 1 port detected [ 1.338664] usbcore: registered new interface driver usb-storage [ 1.346267] sun6i-rtc 1c20400.rtc: registered as rtc0 [ 1.351329] sun6i-rtc 1c20400.rtc: RTC enabled [ 1.356070] i2c /dev entries driver [ 1.360924] input: ns2009_ts as /devices/platform/soc/1c2ac00.i2c/i2c-0/0-0048/input/input0 [ 1.370612] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout16 sec, nowayout0) [ 1.379328] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pf not found, using dummy regulator [ 1.415092] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB [ 1.422648] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pg not found, using dummy regulator [ 1.434001] usbcore: registered new interface driver usbhid [ 1.439580] usbhid: USB HID core driver [ 1.446187] Initializing XFRM netlink socket [ 1.450498] NET: Registered protocol family 17 [ 1.455640] Registering SWP/SWPB emulation handler [ 1.461540] Loading compiled-in X.509 certificates [ 1.475480] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator [ 1.488036] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc0848700) [ 1.495606] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc08459fc) [ 1.503340] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 1.509947] [drm] No driver support for vblank timestamp query. [ 1.516932] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0 [ 1.577191] Console: switching to colour frame buffer device 100x30 [ 1.605681] sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device [ 1.613678] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator [ 1.625209] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 1.630975] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 3 [ 1.640115] hub 3-0:1.0: USB hub found [ 1.644084] hub 3-0:1.0: 1 port detected [ 1.649367] ubi0: attaching mtd3 [ 2.218438] ubi0: scanning is finished [ 2.222200] ubi0: empty MTD device detected [ 2.255116] ubi0: attached mtd3 (name rootfs, size 121 MiB) [ 2.260921] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.267867] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 2.274665] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.281615] ubi0: good PEBs: 975, bad PEBs: 0, corrupted PEBs: 0 [ 2.287644] ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128 [ 2.294873] ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 2177542106 [ 2.304004] ubi0: available PEBs: 951, total reserved PEBs: 24, PEBs reserved for bad PEB handling: 20 [ 2.313392] sun6i-rtc 1c20400.rtc: setting system clock to 1970-01-01T00:34:30 UTC (2070) [ 2.321843] vcc3v0: disabling [ 2.324878] vcc3v3: disabling [ 2.327871] vcc5v0: disabling [ 2.330836] ALSA device list: [ 2.333827] No soundcards found. [ 2.337799] ubi0: background thread ubi_bgt0d started, PID 93 [ 2.349302] VFS: Cannot open root device ubi0:rootfs or unknown-block(0,0): error -19 [ 2.357403] Please append a correct root boot option; here are the available partitions: [ 2.365795] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 2.374055] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.2.0-licheepi-zero #2 [ 2.381091] Hardware name: Allwinner sun8i Family [ 2.385824] [c010ed14] (unwind_backtrace) from [c010b72c] (show_stack0x10/0x14) [ 2.393566] [c010b72c] (show_stack) from [c071a650] (dump_stack0x84/0x98) [ 2.400788] [c071a650] (dump_stack) from [c011dddc] (panic0x110/0x2fc) [ 2.407750] [c011dddc] (panic) from [c0a01358] (mount_block_root0x214/0x2f0) [ 2.415229] [c0a01358] (mount_block_root) from [c0a01558] (prepare_namespace0x9c/0x194) [ 2.423660] [c0a01558] (prepare_namespace) from [c0732aa4] (kernel_init0x8/0x10c) [ 2.431570] [c0732aa4] (kernel_init) from [c01010e8] (ret_from_fork0x14/0x2c) [ 2.439128] Exception stack(0xc3833fb0 to 0xc3833ff8) [ 2.444175] 3fa0: 00000000 00000000 00000000 00000000 [ 2.452343] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.460508] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.467127] Rebooting in 5 seconds.. 很好上电成功了 六、构建文件系统 现成的文件系统 链接https://pan.baidu.com/s/1-HMjT5BCYq0aImIJcQyJlw 提取码lief –来自百度网盘超级会员V5的分享 系统名是root 无密码 spi nand flash 一般使用的文件系统是ubifs文件系统。涉及到两个工具 第一步先用mkfs.ubifs生成rootfs_ubifs.img文件其中-d target就是根文件目录的位置 sudo mkfs.ubifs -x lzo -F -m 2048 -e 126976 -c 732 -o rootfs_ubifs.img -d target第二步用ubinize生成最终的ubi.img sudo ubinize -o ubi.img -m 2048 -p 131072 -O 2048 -s 2048 ./ubinize.cfg -vubinize.cfg文件 [rootfs-volume] modeubi imagerootfs_ubifs.img vol_id0 vol_size92946432 vol_typedynamic vol_namerootfs vol_flagsautoresize vol_alignment1有了ubi.img之后就可以使用xfel工具烧录了。 sudo xfel spinand erase 0x620000 0x79DFFFF sudo xfel spinand write 0x620000 ubi.img 烧录成功后上电信息 U-Boot SPL 2022.04 (Sep 17 2023 - 22:00:15 0800) DRAM: 64 MiB Trying to boot from sunxi SPI-NAND sunxi SPI-NAND: Found Winbond W25N01GVxxIG (efaa21) sunxi SPI-NAND: Loading u-boot from 0x20000 sunxi SPI-NAND: u-boot hcrc OK!U-Boot 2022.04 (Sep 17 2023 - 22:00:15 0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB Core: 23 devices, 11 uclasses, devicetree: separate WDT: Not starting watchdog1c20ca0 MMC: mmc1c0f000: 0 Loading Environment from FAT... Card did not respond to voltage select! : -110 In: serial1c28000 Out: serial1c28000 Err: serial1c28000 Net: No ethernet found. Hit any key to stop autoboot: 0 Reading 131072 byte(s) (64 page(s)) at offset 0x00100000 Reading 5242880 byte(s) (2560 page(s)) at offset 0x00120000 Kernel image 0x41000000 [ 0x000000 - 0x4462a8 ] ## Flattened Device Tree blob at 41800000Booting using the fdt blob at 0x41800000Loading Device Tree to 42df9000, end 42dff021 ... OKStarting kernel ...[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.2.0-licheepi-zero (liefyuanubuntu) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #2 SMP Sun Sep 17 22:22:36 HKT 2023 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Lichee Pi Zero [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: Using PSCI v0.1 Function IDs from DT [ 0.000000] percpu: Embedded 16 pages/cpu s34508 r8192 d22836 u65536 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16256 [ 0.000000] Kernel command line: consolettyS0,115200 earlyprintk panic5 rootwait mtdpartsspi0.0:1M(uboot)ro,128k(dtb)ro,5M(kernel)ro,-(rootfs) ubi.mtd3 rootubi0:rootfs rw rootfstypeubifs [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 54004K/65536K available (7168K kernel code, 309K rwdata, 1748K rodata, 1024K init, 257K bss, 11532K reserved, 0K cma-reserved, 0K highmem) [ 0.000000] SLUB: HWalign64, Order0-3, MinObjects0, CPUs1, Nodes1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS8 to nr_cpu_ids1. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf16, nr_cpu_ids1 [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: GICv2 detected, but range too small and irqchip.gicv2_force_probe not set [ 0.000000] random: get_random_bytes called from start_kernel0x300/0x48c with crng_init0 [ 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.000008] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns [ 0.000021] Switching to timer-based delay loop, resolution 41ns [ 0.000203] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000445] Console: colour dummy device 80x30 [ 0.000501] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj240000) [ 0.000518] pid_max: default: 32768 minimum: 301 [ 0.000678] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.000695] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.001498] CPU: Testing write buffer coherency: ok [ 0.002002] /cpus/cpu0 missing clock-frequency property [ 0.002028] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.002792] Setting up static identity map for 0x40100000 - 0x40100060 [ 0.003005] rcu: Hierarchical SRCU implementation. [ 0.003552] smp: Bringing up secondary CPUs ... [ 0.003574] smp: Brought up 1 node, 1 CPU [ 0.003584] SMP: Total of 1 processors activated (48.00 BogoMIPS). [ 0.003590] CPU: All CPU(s) started in HYP mode. [ 0.003595] CPU: Virtualization extensions available. [ 0.004666] devtmpfs: initialized [ 0.008313] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 0.008616] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.008647] futex hash table entries: 256 (order: 2, 16384 bytes, linear) [ 0.008888] pinctrl core: initialized pinctrl subsystem [ 0.010027] NET: Registered protocol family 16 [ 0.010546] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.011810] hw-breakpoint: found 5 (1 reserved) breakpoint and 4 watchpoint registers. [ 0.011827] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.039494] SCSI subsystem initialized [ 0.039663] usbcore: registered new interface driver usbfs [ 0.039754] usbcore: registered new interface driver hub [ 0.039863] usbcore: registered new device driver usb [ 0.040242] mc: Linux media interface: v0.10 [ 0.040330] videodev: Linux video capture interface: v2.00 [ 0.040556] Advanced Linux Sound Architecture Driver Initialized. [ 0.042370] clocksource: Switched to clocksource arch_sys_counter [ 0.054726] NET: Registered protocol family 2 [ 0.055518] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear) [ 0.055555] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.055584] TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear) [ 0.055607] TCP: Hash tables configured (established 1024 bind 1024) [ 0.055753] UDP hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.055807] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.056106] NET: Registered protocol family 1 [ 0.057942] Initialise system trusted keyrings [ 0.058328] workingset: timestamp_bits30 max_order14 bucket_order0 [ 0.095103] Key type asymmetric registered [ 0.095125] Asymmetric key parser x509 registered [ 0.095222] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 0.095235] io scheduler mq-deadline registered [ 0.095242] io scheduler kyber registered [ 0.096292] sun4i-usb-phy 1c19400.phy: Couldnt request ID GPIO [ 0.100066] sun8i-v3s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver [ 0.100482] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pb not found, using dummy regulator [ 0.101204] pwm-backlight backlight: backlight supply power not found, using dummy regulator [ 0.206901] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled [ 0.210326] printk: console [ttyS0] disabled [ 0.230632] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq 34, base_baud 1500000) is a U6_16550A [ 0.776672] printk: console [ttyS0] enabled [ 0.782652] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator [ 0.815920] panel-simple panel: panel supply power not found, using dummy regulator [ 0.825241] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pc not found, using dummy regulator [ 0.836785] spi-nand spi0.0: Winbond SPI NAND was found. [ 0.842113] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64 [ 0.851018] 4 fixed-partitions partitions found on MTD device spi0.0 [ 0.857466] Creating 4 MTD partitions on spi0.0: [ 0.862266] 0x000000000000-0x000000100000 : uboot [ 0.870113] 0x000000100000-0x000000120000 : dtb [ 0.875974] 0x000000120000-0x000000620000 : kernel [ 0.882146] random: fast init done [ 0.895633] 0x000000620000-0x000008000000 : rootfs [ 1.066444] random: crng init done [ 1.152066] ehci_hcd: USB 2.0 Enhanced Host Controller (EHCI) Driver [ 1.158675] ehci-platform: EHCI generic platform driver [ 1.164241] ehci-platform 1c1a000.usb: EHCI Host Controller [ 1.169848] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1 [ 1.177848] ehci-platform 1c1a000.usb: irq 26, io mem 0x01c1a000 [ 1.212377] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00 [ 1.219546] hub 1-0:1.0: USB hub found [ 1.223520] hub 1-0:1.0: 1 port detected [ 1.228140] ohci_hcd: USB 1.1 Open Host Controller (OHCI) Driver [ 1.234467] ohci-platform: OHCI generic platform driver [ 1.240007] ohci-platform 1c1a400.usb: Generic Platform OHCI controller [ 1.246726] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2 [ 1.254694] ohci-platform 1c1a400.usb: irq 27, io mem 0x01c1a400 [ 1.327423] hub 2-0:1.0: USB hub found [ 1.331262] hub 2-0:1.0: 1 port detected [ 1.338553] usbcore: registered new interface driver usb-storage [ 1.346152] sun6i-rtc 1c20400.rtc: registered as rtc0 [ 1.351212] sun6i-rtc 1c20400.rtc: RTC enabled [ 1.355953] i2c /dev entries driver [ 1.360813] input: ns2009_ts as /devices/platform/soc/1c2ac00.i2c/i2c-0/0-0048/input/input0 [ 1.370500] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout16 sec, nowayout0) [ 1.379224] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pf not found, using dummy regulator [ 1.415004] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB [ 1.422572] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pg not found, using dummy regulator [ 1.433929] usbcore: registered new interface driver usbhid [ 1.439505] usbhid: USB HID core driver [ 1.446113] Initializing XFRM netlink socket [ 1.450423] NET: Registered protocol family 17 [ 1.455540] Registering SWP/SWPB emulation handler [ 1.461453] Loading compiled-in X.509 certificates [ 1.475387] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator [ 1.487938] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc0848700) [ 1.495525] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc08459fc) [ 1.503262] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 1.509869] [drm] No driver support for vblank timestamp query. [ 1.516859] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0 [ 1.577117] Console: switching to colour frame buffer device 100x30 [ 1.605592] sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device [ 1.613580] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator [ 1.625097] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 1.630863] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 3 [ 1.639991] hub 3-0:1.0: USB hub found [ 1.643951] hub 3-0:1.0: 1 port detected [ 1.649229] ubi0: attaching mtd3 [ 2.236686] ubi0: scanning is finished [ 2.282072] ubi0: volume 0 (rootfs) re-sized from 732 to 951 LEBs [ 2.289265] ubi0: attached mtd3 (name rootfs, size 121 MiB) [ 2.295090] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.301957] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 2.308784] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.315757] ubi0: good PEBs: 975, bad PEBs: 0, corrupted PEBs: 0 [ 2.321756] ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 2.328991] ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 405437201 [ 2.338037] ubi0: available PEBs: 0, total reserved PEBs: 975, PEBs reserved for bad PEB handling: 20 [ 2.347328] sun6i-rtc 1c20400.rtc: setting system clock to 1970-01-01T00:23:16 UTC (1396) [ 2.355804] vcc3v0: disabling [ 2.358782] vcc3v3: disabling [ 2.361746] vcc5v0: disabling [ 2.364799] ALSA device list: [ 2.367768] No soundcards found. [ 2.371779] ubi0: background thread ubi_bgt0d started, PID 93 [ 2.388321] UBIFS (ubi0:0): Mounting in unauthenticated mode [ 2.397175] UBIFS (ubi0:0): background thread ubifs_bgt0_0 started, PID 94 [ 2.495382] UBIFS (ubi0:0): start fixing up free space [ 2.933104] UBIFS (ubi0:0): free space fixup complete [ 2.988109] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name rootfs [ 2.995678] UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 3.005611] UBIFS (ubi0:0): FS size: 91549696 bytes (87 MiB, 721 LEBs), journal size 9023488 bytes (8 MiB, 72 LEBs) [ 3.016060] UBIFS (ubi0:0): reserved for root: 0 bytes (0 KiB) [ 3.021893] UBIFS (ubi0:0): media format: w4/r0 (latest is w5/r0), UUID 0D89ACE3-5309-484C-888D-2628D2752C10, small LPT model [ 3.045981] VFS: Mounted root (ubifs filesystem) on device 0:13. [ 3.055787] devtmpfs: mounted [ 3.061247] Freeing unused kernel memory: 1024K [ 3.067684] Run /sbin/init as init process Starting logging: OK Starting mdev... /etc/init.d/S10mdev: line 21: cant create /proc/sys/kernel/hotplug: nonexistent directory modprobe: cant change directory to /lib/modules: No such file or directory Initializing random number generator... done. Starting network: OKWelcome to Lichee Pi Lichee login: Welcome to Lichee Pi Lichee login: Welcome to Lichee Pi Lichee login: root # ls # cd / # ls bin lib media proc sbin usr dev lib32 mnt root sys var etc linuxrc opt run tmp # 用户名root无密码 跑起来了 七、进入文件系统后的操作 查看挂载的文件系统 # mount ubi0:rootfs on / type ubifs (rw,relatime,assertread-only,ubi0,vol0) devtmpfs on /dev type devtmpfs (rw,relatime,size27000k,nr_inodes6750,mode755) proc on /proc type proc (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,gid5,mode620,ptmxmode000) tmpfs on /dev/shm type tmpfs (rw,relatime,mode777) tmpfs on /tmp type tmpfs (rw,relatime) tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode755) sysfs on /sys type sysfs (rw,relatime)查看分区 # cat /proc/mtd* dev: size erasesize name mtd0: 00100000 00020000 uboot mtd1: 00020000 00020000 dtb mtd2: 00500000 00020000 kernel mtd3: 079e0000 00020000 rootfs# ls /dev/mtd* /dev/mtd0 /dev/mtd1 /dev/mtd2 /dev/mtd3 /dev/mtd0ro /dev/mtd1ro /dev/mtd2ro /dev/mtd3ro查看存储 # df -h Filesystem Size Used Available Use% Mounted on ubi0:rootfs 80.1M 2.1M 78.0M 3% / devtmpfs 26.4M 0 26.4M 0% /dev tmpfs 26.9M 0 26.9M 0% /dev/shm tmpfs 26.9M 20.0K 26.8M 0% /tmp tmpfs 26.9M 16.0K 26.9M 0% /run 查看Linux内核启动参数 # cat /proc/cmdline consolettyS0,115200 earlyprintk panic5 rootwait mtdpartsspi0.0:1M(uboot)ro,128k(dtb)ro,5M(kernel)ro,-(rootfs) ubi.mtd3 rootubi0:rootfs rw rootfstypeubifs查看目录信息 # ls -lh total 0 drwxr-xr-x 2 1000 1000 4.5K Mar 24 2017 bin drwxr-xr-x 8 root root 12.3K Jan 1 00:35 dev drwxr-xr-x 5 1000 1000 1.5K Jan 1 00:35 etc drwxr-xr-x 2 1000 1000 2.3K Mar 24 2017 lib lrwxrwxrwx 1 1000 1000 3 Sep 17 2023 lib32 - lib lrwxrwxrwx 1 1000 1000 11 Sep 17 2023 linuxrc - bin/busybox drwxr-xr-x 2 1000 1000 160 Feb 28 2017 media drwxr-xr-x 2 1000 1000 160 Feb 28 2017 mnt drwxr-xr-x 3 1000 1000 224 Feb 26 2022 opt dr-xr-xr-x 44 root root 0 Jan 1 00:00 proc drwx------ 2 1000 1000 232 Jan 1 00:35 root drwxr-xr-x 3 root root 140 Jan 1 00:35 run drwxr-xr-x 2 1000 1000 3.5K Mar 24 2017 sbin dr-xr-xr-x 12 root root 0 Jan 1 00:35 sys drwxrwxrwt 2 root root 60 Jan 1 00:35 tmp drwxr-xr-x 6 1000 1000 480 Mar 24 2017 usr drwxr-xr-x 4 1000 1000 672 Mar 24 2017 var八、总结 编译Uboot make clean make ARCHarm LicheePi_Zero_Spinand_defconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- ./gen_sunxi_spinand_onlyboot_img.sh split.bin u-boot-sunxi-with-spl.bin 2048 128 编译Linux Kernel make clean make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- licheepi_zero_spinand_defconfig time make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j16 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- dtbs九、打包 拷贝 cp ../u-boot-2022.04-spinand/split.bin ./ cp ../linux-zero-5.2.y-spinand/arch/arm/boot/zImage ./ cp ../linux-zero-5.2.y-spinand/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb ./ tar -xvf rootfs.tarsudo ./step1_gen_rootfs_ubifs_img.sh sudo ./step2_gen_ubi_img.sh sudo ./step3_gen_flash_img.sh0x0 ~ 0xFFFFF : 0x100000 1 MiB 0x100000 ~ 0x11FFFF : 0x20000 128 KiB 0x120000 ~ 0x61FFFF : 0x500000 5 MiB 0x620000 ~ 0x7FFFFFF : 0x79DFFFF 124800 KiB121.875 MiB打包脚本 step3_gen_flash_img.sh #!/bin/bash rm -f flashimg.bin dd if/dev/zero offlashimg.bin bs1M count20 dd ifu-boot-sunxi-with-spl.bin_split_exp offlashimg.bin bs1K count1024 convnotrunc dd ifsun8i-v3s-licheepi-zero.dtb offlashimg.bin bs1K count128 seek1024 convnotrunc dd ifzImage offlashimg.bin bs1K count5120 seek1152 convnotrunc dd ifubi.img offlashimg.bin bs1K seek6272 convnotrunc烧录 sudo xfel spinand erase 0x0 0x8000000 sudo xfel spinand write 0 flashimg.bin十、工程源码 原始的文件 链接https://pan.baidu.com/s/1uvlJGbLpLvEWhCeeKw6o9w 提取码lief –来自百度网盘超级会员V5的分享 配置好的文件 链接https://pan.baidu.com/s/1x2_cxEVv75nfhLBARodRwQ 提取码lief –来自百度网盘超级会员V5的分享 参考 全志V3S嵌入式驱动开发spi-nand image制作https://whycan.com/t_3123.htmlhttps://whycan.com/viewtopic.php?pid91704#p91704https://whycan.com/p_80604.html
http://www.sczhlp.com/news/157566/

相关文章:

  • 网站怎么在百度搜不到山东网站制作哪家好
  • 格泰网站建设什么是建站
  • 聊城做网站低费用深圳企业网站建设专业
  • 周村网站制作价格低云南学校 手机网站建设
  • 深入解析:python学智能算法(三十九)|使用PyTorch模块的normal()函数绘制正态分布函数图
  • 2025污水处理设备厂家 TOP 企业品牌推荐排行榜,一体化,生活,工业,养殖,医疗,农村,学校,餐厨,隧洞,高速污水处理设备公司推荐!
  • C#简单的连接本地SQL Server
  • 网络科技有限公司网站建设策划书游戏开发物语完美搭配
  • 个人网站做淘宝客违规展览公司网站模板
  • 我做网站啦 圆通导航在家做网站设计
  • 网站建设将新建用户授权为管理员石家庄 网站开发
  • 无锡网站营销公司简介怎么看一级还是二级域名
  • 郑州市科协网站网站开发大学
  • 厦门模板做网站360浏览器直接进入网站
  • 公司做营销型网站视频互动网站建设
  • 国外网站设计师网站如何做反爬
  • 国家建设部网站倪虹某网站项目策划书
  • 做外贸没有网站可以吗微商需要做网站吗
  • 咸阳万企网站建设深圳设计家官网
  • 营销网站建设内容win网络服务都未运行
  • 鄱阳县精准扶贫旅游网站建设目的ui最好的网站
  • 爬取漫画数据做网站如何做网站平台关注
  • 网站关键词堆砌陕西民盛建设有限公司网站
  • 广东的一起(17)做网站买了空间和域名 就有网站后台了吗
  • 网站前台空白装修图库大全图片
  • 网站部署设计wordpress如何集成小工具功能
  • 网站上线过程手机登录凡科网
  • 2025无锡高配网咖实力厂家推荐:电竞设备与沉浸体验优选指南
  • 2025无锡网咖权威推荐榜:停车便利体验佳,畅享上网好时光
  • 2025上海律师事务所权威推荐榜:多领域专业服务口碑之选