在wsl下开发T113的主线linux(最新gcc+awboot+最新kernel+最新buildroot)
-
转载地址:在wsl下开发T113的主线linux(最新gcc+awboot+最新kernel+最新buildroot)
作者:epoko -
这篇文章记录了在wsl系统下编译调试awboot和linux的全过程
硬件要求:任意T113-S3芯片的板子,SPI0接spinand标准接法。
1、准备wsl开发环境
首先在win10或win11下安装wsl,选择wsl1或者wsl2都可以,wsl2的性能更高一些,wsl1的跨系统文件操作速度更快一些,我这里因为有一些工程在win文件系统下,所以选择了wsl1,发行版使用最新的Ubuntu 22.04.01 LTS。
这里我没有选用vm虚拟机安装ubuntu开发的原因是虚拟机下的文件交互不够方便,特别是git和文件对比,有时在内核源码改了一些文件,使用win下的TortoiseGit工具就可以很方便的查看差异,提交变更。使用beyond compare也可很方便的比较各种文件文件夹的不同版本的差异。
在win资源管理器下可以直接查看wsl的linux根目录,右键可以直接执行各种操作,就像操作win文件一样这里编译开发的核心软件只有一个,就是VS code,安装好后添加所需的插件。
串口调试工具使用MobaXterm下载交叉编译器,这里使用arm官方最新的GCC 12.2
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
下载后解压在wsl的主目录,在.bashrc中添加编译器路径PATH="$PATH:/home/wsl/arm-none-linux-gnueabihf/bin"
2、编译awboot
意外发现有awboot能够代替uboot直接引导内核,体验了一下果断选择awboot,因为足够简洁,编译大小只有32k,和uboot接近1M的体量相比,简直是小而美,启动速度也比uboot快上不少,也能同时支持sd卡,spinand,spinorflash启动。
https://github.com/szemzoa/awboot说起uboot不禁想起几年前路由器第三方固件盛行的时期,那时的路由器还没有很复杂的方案,第三方固件往往比官方固件更易用功能更丰富,买个普通路由器换颗flash,内存芯片刷个系统就能获得更丰富的功能体验,各种固件openwrt,Padavan,高格百花齐放,为了刷机方便,系统的uboot都要支持tftp,串口甚至web的文件传输接口,由此孕育而出了大名鼎鼎的Breed,仅仅为了更新固件更方便,不用spi flash编程器那么麻烦的烧写。而到了全志嵌入式这边,由于自带usb接口的BROM,使用sunxi-fel或者xfel烧写flash已足够方便,所以使用uboot更新固件的需求就不是那么大,况且全志的方案比路由器的方案定制性更高一些,没有通用的第三方固件可以刷,所以uboot的功能就完全成了摆设,让用户使用sunxi-fel更新固件都要比uboot更新固件更稳定更实用,消费者用户用不到,开发人员也不会去用,那uboot的1m大小,集成的各种usb,网络,屏幕驱动,环境变量,文件系统,设备树编辑等功能就显得格外多余。
awboot相比spl+uboot的区别就是少了一次跳转的过程,由BROM拉起的boot0拥有足足160kb的sram,足够编写执行引导kernel的代码,所以这何尝不是一种恰到好处。
下面是awboot的编译过程:
修改makefile中的CROSS_COMPILE编译器定义为arm-none-linux-gnueabihf,或者使用make CROSS_COMPILE=arm-none-linux-gnueabihf
命令编译
如果不是git拉取的而是手动下载解压的源码,需要去除git编译目标,位于makefile line:49
出现DWORD重复定义的错误,删除lib\fatfs\integer.h中的DWORD定义
链接出现未定义函数__aeabi_unwind_cpp_pr0,makefile中添加编译选项CFLAGS += -lgcc_eh
链接出现未定义函数raise,在main.c中添加函数int raise(void) { return 0; }
编译成功,出现awboot.bin等文件
3、写入spinand测试
接下来是烧写入硬件验证,我的板子焊接的是W25N01GV,这里使用xfel,因为支持写入spi-nand。
https://github.com/xboot/xfel为什么不使用sd卡验证,因为烧写sd卡需要:
拔卡->插到电脑->dd命令写入->拔卡->插到板子上。
而写入spi-nand只需要:
按着boot键同时按复位键->xfel命令写入(可以飞线两个按键,复位键接到reset脚到地,boot键接到spi-cs脚到地)。
步骤大幅减少,同时没有拔插sd卡造成的触点磨损。同时因为使用的wsl系统,并不能很方便的使用dd命令写入sd卡。虽然wsl下也不能直接访问全志的usb设备,但是xfel有win的版本,wsl下可直接执行exe文件,所以只需要下载xfel-windows解压到wsl中,在.bashrc中添加命令别名alias xfel='/home/wsl/xfel-windows-v1.2.9/xfel.exe'
即可在wsl中使用win版的xfel,就像linux中的xfel一模一样。make spi-boot.img xfel version xfel spinand xfel spinand erase 0 0x8000000 xfel spinand write 0 spi-boot.img
复位重启,可以在串口看到awboot打印的信息
awboot默认使用uart5打印,其他串口可以修改board.c中的配置,非常通俗易懂
内核加载地址如下表,可在board.h中修改- spi-nand内存划分 起始地址 空间容量
- awboot 0 0x40000(256k)
- dtb 0x40000 0x40000(256k)
- kernel 0x80000 任意
[I] AWBoot r6143 starting... [I] SPI-NAND: W25N01GV detected [E] SPI-NAND: DTB verification failed [F] SPI-NAND: loading failed restarting...
4、编译kernel
接下来编译kernel,编译过程可能会出现缺少命令的报错,大概是下面这几个
sudo apt update sudo apt install flex bison bc libncurses-dev
目前linux主线的最新版本并没有适配t113的相关外设驱动,虽然能启动并串口打印,但其他的一些外设并没有驱动,还不是可用的状态,所以这里选择全志D1的kernel进行修改。
https://github.com/smaeul/linux/tree/d1/allunzip linux-d1-all.zip cd linux-d1-all
应用awboot提供的linux补丁
linux/allow_select_d1_ccu_on_t113.patch linux/ccu-sun20i-make_cpux_clk_critical_for_t113.patch linux/second_core_support_in_platsmp.patch linux/d1s_t113_can_bus.patch
在arch\arm\configs\sunxi_defconfig中添加D1时钟
CONFIG_SUN20I_D1_CCU=y CONFIG_SUN20I_D1_R_CCU=y
添加sun8i-t113.dtsi和sun8i-t113-mangopi-dual.dts设备树配置文件到arch\arm\boot\dts
在arch\arm\boot\dts\Makefile的line:1389 处,CONFIG_MACH_SUN8I配置中添加sun8i-t113-mangopi-dual.dtbawboot提供的sun8i-t113-mangopi-dual.dts设备树文件调试终端串口是5,需要改成uart0。
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- sunxi_defconfig make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- zImage -j4 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- dtbs xfel spinand write 0x40000 arch/arm/boot/dts/sun8i-t113-mangopi-dual.dtb xfel spinand write 0x80000 arch/arm/boot/zImage
复位,串口成功打印内核信息,目前spinand中还没有文件系统,所以系统无法启动成功。
5、构建ubi文件系统
接下来是构建文件系统,这里使用最新的buildroot
https://buildroot.org/downloads/buildroot-2022.11.tar.gztar xf buildroot-2022.11.tar.gz
cd buildroot-2022.11
make menuconfig
配置目标指令集类型
配置外部自定义编译器
配置生成文件系统类型为ubifs,最大逻辑擦除块数量决定了spinand的容量,我这里是128M的spinand,所以128M/128k = 1024
上面的这些配置操作可以用下面的默认配置文件代替,在configs文件夹创建sunxi_t113_spinand_defconfig文件,添加下面内容,使用make sunxi_t113_spinand_defconfig载入配置。
# architecture BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y # Toolchain BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_PATH="/home/wsl/arm-none-linux-gnueabihf" BR2_TOOLCHAIN_EXTERNAL_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_PREFIX="arm-none-linux-gnueabihf" BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-none-linux-gnueabihf" BR2_TOOLCHAIN_EXTERNAL_GCC_12=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y # BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y # system # kernel # bootloader # filesystem / image BR2_TARGET_ROOTFS_UBI=y BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x20000 BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 BR2_TARGET_ROOTFS_UBIFS=y BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x800 BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=1024 BR2_TARGET_ROOTFS_UBIFS_OPTS="-F"
配置完成后make开始编译,接下来就是漫长的下载编译过程,大概需要半小时。
编译成功后会生成output/images/rootfs.ubi,使用xfel命令写入。xfel spinand erase 0x800000 0x7800000
xfel spinand write 0x800000 output/images/rootfs.ubi
复位发现没有启动成功,原来内核默认没有打开mtd和ubi支持,在内核配置添加下面选项Device Drivers -> Memory Technology Device (MTD) support -> NAND -> SPI NAND device Support
Device Drivers -> Memory Technology Device (MTD) support -> Enable UBI - Unsorted block images
File Systems -> Miscellaneous filesystems -> UBIFS file system support
或者在arch\arm\configs\sunxi_defconfig中添加CONFIG_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_UBI=y
CONFIG_UBIFS_FS=y
后重新载入配置。另外设备树中的启动参数和分区也需要修改
bootargs = "mem=128M ubi.mtd=3 rootfstype=ubifs root=ubi0:rootfs rw rootwait console=ttyS0,115200"; &spi0 { pinctrl-0 = <&spi0_pins>; pinctrl-names = "default"; status = "okay"; spi_nand: spi_nand@0 { #address-cells = <1>; #size-cells = <1>; compatible = "spi-nand"; reg = <0>; partition@0 { label = "awboot"; reg = <0x0 0x40000>; /* 256K */ read-only; }; partition@40000 { label = "dtb"; reg = <0x40000 0x40000>; /* 256k */ read-only; }; partition@80000 { label = "kernel"; reg = <0x80000 0x780000>; /* 7.5MB */ read-only; }; partition@800000 { label = "rootfs"; reg = <0x800000 0x7800000>; }; }; };
修改完后重新写入spi-nand,系统顺利启动,一个标准linux 6.1的基础busybox文件系统就做好了,可以根据不同应用可在buildroot添加所需的命令,下面是我常用的一些命令,总之非常方便。
make menuconfig System configuration ---> [*] Enable root login with password Target packages ---> Networking applications ---> dropbear Target packages ---> Libraries ---> Hardware handling ---> tslib Target packages ---> Text editors and viewers ---> nano Target packages ---> System tools ---> htop iperf3 coremark dhrystone make busybox-menuconfig Archival Utilities ---> Make tar xxx, Autodetect compressed tarballs Linux System Utilities ---> Support mounting CIFS/SMB file systems Networking Utilities ---> httpd Networking Utilities ---> ntpd Networking Utilities ---> udhcpd Process Utilities ---> Support thread display in ps/pstree/top Process Utilities ---> pgrep Process Utilities ---> pmap Process Utilities ---> Show the number of users
完整启动日志
[I] AWBoot r6143 starting... [I] SPI-NAND: W25N01GV detected [I] SPI-NAND: read dt blob of size 22242 at 43.00MB/S [I] SPI-NAND: read Image of size 5424416 at 49.00MB/S [I] booting linux... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.1.0-rc3 (wsl@DESKTOP-NQRKTHB) (arm-none-linux-gnueabihf-gcc (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24)) 12.2.1 20221205, GNU ld (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.1210) #7 SMP Fri Dec 30 18:52:12 CST 2022 [ 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 instruction cache [ 0.000000] OF: fdt: Machine model: MangoPi MQ-Dual [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] cma: Reserved 16 MiB at 0x47000000 [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000040000000-0x0000000047ffffff] [ 0.000000] HighMem empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000040000000-0x0000000047ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x0000000047ffffff] [ 0.000000] percpu: Embedded 11 pages/cpu s15764 r8192 d21100 u45056 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 32512 [ 0.000000] Kernel command line: mem=128M ubi.mtd=3 rootfstype=ubifs root=ubi0:rootfs rw rootwait console=ttyS0,115200 [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off [ 0.000000] Memory: 99804K/131072K available (8192K kernel code, 952K rwdata, 2188K rodata, 1024K init, 270K bss, 14884K reserved, 16384K cma-reserved, 0K highmem) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 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.000013] Switching to timer-based delay loop, resolution 41ns [ 0.000188] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000681] Console: colour dummy device 80x30 [ 0.000724] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000) [ 0.000740] pid_max: default: 32768 minimum: 301 [ 0.000901] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.000916] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.001461] CPU: Testing write buffer coherency: ok [ 0.001766] /cpus/cpu@0 missing clock-frequency property [ 0.001795] /cpus/cpu@1 missing clock-frequency property [ 0.001805] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.002581] Setting up static identity map for 0x40100000 - 0x40100060 [ 0.002720] rcu: Hierarchical SRCU implementation. [ 0.002725] rcu: Max phase no-delay instances is 1000. [ 0.003261] smp: Bringing up secondary CPUs ... [ 0.003971] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.004097] smp: Brought up 1 node, 2 CPUs [ 0.004107] SMP: Total of 2 processors activated (96.00 BogoMIPS). [ 0.004114] CPU: All CPU(s) started in SVC mode. [ 0.004635] devtmpfs: initialized [ 0.008727] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 0.008927] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.008951] futex hash table entries: 512 (order: 3, 32768 bytes, linear) [ 0.009546] pinctrl core: initialized pinctrl subsystem [ 0.010921] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.011968] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.012787] thermal_sys: Registered thermal governor 'step_wise' [ 0.012969] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.012981] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.020855] platform 5460000.tcon-top: Fixing up cyclic dependency with 5200000.mixer [ 0.020919] platform 5460000.tcon-top: Fixing up cyclic dependency with 5100000.mixer [ 0.021185] platform 5461000.lcd-controller: Fixing up cyclic dependency with 5460000.tcon-top [ 0.021537] platform 5470000.lcd-controller: Fixing up cyclic dependency with 5604000.tv-encoder [ 0.021593] platform 5470000.lcd-controller: Fixing up cyclic dependency with 5460000.tcon-top [ 0.022352] platform 7090000.rtc: Fixing up cyclic dependency with 7010000.clock-controller [ 0.032234] SCSI subsystem initialized [ 0.032716] usbcore: registered new interface driver usbfs [ 0.032754] usbcore: registered new interface driver hub [ 0.032791] usbcore: registered new device driver usb [ 0.032977] mc: Linux media interface: v0.10 [ 0.033022] videodev: Linux video capture interface: v2.00 [ 0.033106] pps_core: LinuxPPS API ver. 1 registered [ 0.033112] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.033127] PTP clock support registered [ 0.033547] Advanced Linux Sound Architecture Driver Initialized. [ 0.034416] clocksource: Switched to clocksource arch_sys_counter [ 0.041644] NET: Registered PF_INET protocol family [ 0.041849] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.042389] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.042417] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.042428] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.042444] TCP bind hash table entries: 1024 (order: 2, 16384 bytes, linear) [ 0.042479] TCP: Hash tables configured (established 1024 bind 1024) [ 0.042567] UDP hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.042599] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) [ 0.042749] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.043429] RPC: Registered named UNIX socket transport module. [ 0.043443] RPC: Registered udp transport module. [ 0.043447] RPC: Registered tcp transport module. [ 0.043450] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.044815] workingset: timestamp_bits=30 max_order=15 bucket_order=0 [ 0.049789] NFS: Registering the id_resolver key type [ 0.049854] Key type id_resolver registered [ 0.049858] Key type id_legacy registered [ 0.050022] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246) [ 0.050031] io scheduler mq-deadline registered [ 0.050036] io scheduler kyber registered [ 0.108727] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled [ 0.118865] CAN device driver interface [ 0.122269] sun6i-rtc 7090000.rtc: registered as rtc0 [ 0.122395] sun6i-rtc 7090000.rtc: setting system clock to 1970-01-02T00:00:00 UTC (86400) [ 0.122514] sun6i-rtc 7090000.rtc: RTC enabled [ 0.122857] i2c_dev: i2c /dev entries driver [ 0.124723] sunxi-wdt 20500a0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0) [ 0.125850] sun8i-ce 3040000.crypto: Set mod clock to 300000000 (300 Mhz) from 400000000 (400 Mhz) [ 0.126215] sun8i-ce 3040000.crypto: will run requests pump with realtime priority [ 0.126553] sun8i-ce 3040000.crypto: will run requests pump with realtime priority [ 0.126774] sun8i-ce 3040000.crypto: will run requests pump with realtime priority [ 0.126977] sun8i-ce 3040000.crypto: will run requests pump with realtime priority [ 0.127118] sun8i-ce 3040000.crypto: Register cbc(aes) [ 0.127146] sun8i-ce 3040000.crypto: Register ecb(aes) [ 0.127157] sun8i-ce 3040000.crypto: Register cbc(des3_ede) [ 0.127166] sun8i-ce 3040000.crypto: Register ecb(des3_ede) [ 0.127195] sun8i-ce 3040000.crypto: CryptoEngine Die ID 0 [ 0.128073] usbcore: registered new interface driver usbhid [ 0.128082] usbhid: USB HID core driver [ 0.130773] NET: Registered PF_PACKET protocol family [ 0.130787] can: controller area network core [ 0.130861] NET: Registered PF_CAN protocol family [ 0.130869] can: raw protocol [ 0.130876] can: broadcast manager protocol [ 0.130885] can: netlink gateway - max_hops=1 [ 0.130991] Key type dns_resolver registered [ 0.131078] Registering SWP/SWPB emulation handler [ 0.151942] sun20i-d1-pinctrl 2000000.pinctrl: initialized sunXi PIO driver [ 0.153211] printk: console [ttyS0] disabled [ 0.173477] 2500000.serial: ttyS0 at MMIO 0x2500000 (irq = 231, base_baud = 1500000) is a 16550A [ 0.980691] printk: console [ttyS0] enabled [ 0.987508] spi-nand spi0.0: Winbond SPI NAND was found. [ 0.992841] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64 [ 1.001736] 4 fixed-partitions partitions found on MTD device spi0.0 [ 1.008126] Creating 4 MTD partitions on "spi0.0": [ 1.012920] 0x000000000000-0x000000040000 : "awboot" [ 1.018743] 0x000000040000-0x000000080000 : "dtb" [ 1.024176] 0x000000080000-0x000000800000 : "kernel" [ 1.038649] 0x000000800000-0x000008000000 : "rootfs" [ 1.194220] phy phy-4100400.phy.0: Changing dr_mode to 1 [ 1.195527] usb_phy_generic usb_phy_generic.1.auto: dummy supplies not allowed for exclusive requests [ 1.199603] ehci-platform 4101000.usb: EHCI Host Controller [ 1.209317] musb-hdrc musb-hdrc.2.auto: MUSB HDRC host driver [ 1.214352] ehci-platform 4101000.usb: new USB bus registered, assigned bus number 1 [ 1.220112] musb-hdrc musb-hdrc.2.auto: new USB bus registered, assigned bus number 2 [ 1.236616] hub 2-0:1.0: USB hub found [ 1.236719] ehci-platform 4200000.usb: EHCI Host Controller [ 1.240434] hub 2-0:1.0: 1 port detected [ 1.247931] ohci-platform 4200400.usb: Generic Platform OHCI controller [ 1.256590] ohci-platform 4200400.usb: new USB bus registered, assigned bus number 3 [ 1.264527] ehci-platform 4101000.usb: irq 233, io mem 0x04101000 [ 1.270652] ehci-platform 4200000.usb: new USB bus registered, assigned bus number 4 [ 1.270760] ohci-platform 4200400.usb: irq 237, io mem 0x04200400 [ 1.286255] ehci-platform 4200000.usb: irq 235, io mem 0x04200000 [ 1.292563] sunxi-mmc 4020000.mmc: Got CD GPIO [ 1.294477] ehci-platform 4101000.usb: USB 2.0 started, EHCI 1.00 [ 1.303231] ubi0: attaching mtd3 [ 1.308189] hub 1-0:1.0: USB hub found [ 1.312277] hub 1-0:1.0: 1 port detected [ 1.322619] sunxi-mmc 4020000.mmc: initialized, max. request size: 2047 KB, uses new timings mode [ 1.334453] ehci-platform 4200000.usb: USB 2.0 started, EHCI 1.00 [ 1.341315] hub 4-0:1.0: USB hub found [ 1.345162] hub 4-0:1.0: 1 port detected [ 1.359176] hub 3-0:1.0: USB hub found [ 1.362978] hub 3-0:1.0: 1 port detected [ 1.444542] ohci-platform 4101400.usb: Generic Platform OHCI controller [ 1.451202] ohci-platform 4101400.usb: new USB bus registered, assigned bus number 5 [ 1.459287] ohci-platform 4101400.usb: irq 236, io mem 0x04101400 [ 1.539278] hub 5-0:1.0: USB hub found [ 1.543116] hub 5-0:1.0: 1 port detected [ 1.574453] random: crng init done [ 2.100239] ubi0: scanning is finished [ 2.114539] ubi0: attached mtd3 (name "rootfs", size 120 MiB) [ 2.120305] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.127199] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 2.133981] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.140952] ubi0: good PEBs: 960, bad PEBs: 0, corrupted PEBs: 0 [ 2.146964] ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 2.154178] ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 2041766426 [ 2.163310] ubi0: available PEBs: 0, total reserved PEBs: 960, PEBs reserved for bad PEB handling: 20 [ 2.172542] ubi0: background thread "ubi_bgt0d" started, PID 85 [ 2.172894] ALSA device list: [ 2.181451] No soundcards found. [ 2.186632] UBIFS (ubi0:0): Mounting in unauthenticated mode [ 2.192477] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" started, PID 86 [ 2.249179] UBIFS (ubi0:0): recovery needed [ 2.379732] UBIFS (ubi0:0): recovery completed [ 2.384300] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "rootfs" [ 2.391721] UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 2.401642] UBIFS (ubi0:0): FS size: 117452800 bytes (112 MiB, 925 LEBs), max 1024 LEBs, journal size 9023488 bytes (8 MiB, 72 LEBs) [ 2.413554] UBIFS (ubi0:0): reserved for root: 0 bytes (0 KiB) [ 2.419390] UBIFS (ubi0:0): media format: w4/r0 (latest is w5/r0), UUID 9AE4F0B9-2A05-4C7A-8644-AA2CE4D2FFF0, small LPT model [ 2.432511] VFS: Mounted root (ubifs filesystem) on device 0:13. [ 2.440323] devtmpfs: mounted [ 2.444496] Freeing unused kernel image (initmem) memory: 1024K [ 2.450581] Run /sbin/init as init processSB bus registered, assigned bus number 2 [ 1.228343] ehci-platform 4200000.usb: EHCI Host Controller [ 1.235904] hub 2-0:1.0: USB hub found [ 1.242613] ohci-platform 4200400.usb: Generic Platform OHCI controller [ 1.244554] hub 2-0:1.0: 1 port detected [ 1.255208] ehci-platform 4101000.usb: irq 233, io mem 0x04101000 [ 1.261339] ehci-platform 4200000.usb: new USB bus registered, assigned bus number 3 [ 1.264326] ohci-platform 4200400.usb: new USB bus registered, assigned bus number 4 [ 1.278588] ehci-platform 4200000.usb: irq 235, io mem 0x04200000 [ 1.284829] ehci-platform 4101000.usb: USB 2.0 started, EHCI 1.00 [ 1.284899] sunxi-mmc 4020000.mmc: Got CD GPIO [ 1.296563] ubi0: attaching mtd3 [ 1.300503] ohci-platform 4200400.usb: irq 237, io mem 0x04200400 [ 1.307274] hub 1-0:1.0: USB hub found [ 1.311088] hub 1-0:1.0: 1 port detected [ 1.315120] ehci-platform 4200000.usb: USB 2.0 started, EHCI 1.00 [ 1.320965] sunxi-mmc 4020000.mmc: initialized, max. request size: 2047 KB, uses new timings mode [ 1.322827] hub 3-0:1.0: USB hub found [ 1.333954] hub 3-0:1.0: 1 port detected [ 1.379177] hub 4-0:1.0: USB hub found [ 1.382997] hub 4-0:1.0: 1 port detected [ 1.444407] ohci-platform 4101400.usb: Generic Platform OHCI controller [ 1.451070] ohci-platform 4101400.usb: new USB bus registered, assigned bus number 5 [ 1.459134] ohci-platform 4101400.usb: irq 236, io mem 0x04101400 [ 1.539152] hub 5-0:1.0: USB hub found [ 1.542954] hub 5-0:1.0: 1 port detected [ 1.614309] random: crng init done [ 2.110704] ubi0: scanning is finished [ 2.124757] ubi0: attached mtd3 (name "rootfs", size 120 MiB) [ 2.130523] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.137436] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 2.144219] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.151185] ubi0: good PEBs: 960, bad PEBs: 0, corrupted PEBs: 0 [ 2.157205] ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 2.164431] ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 2041766426 [ 2.173555] ubi0: available PEBs: 0, total reserved PEBs: 960, PEBs reserved for bad PEB handling: 20 [ 2.183138] ALSA device list: [ 2.186140] No soundcards found. [ 2.186172] ubi0: background thread "ubi_bgt0d" started, PID 85 [ 2.197304] UBIFS (ubi0:0): Mounting in unauthenticated mode [ 2.203409] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" started, PID 86 [ 2.318154] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "rootfs" [ 2.325610] UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 2.335531] UBIFS (ubi0:0): FS size: 117452800 bytes (112 MiB, 925 LEBs), max 1024 LEBs, journal size 9023488 bytes (8 MiB, 72 LEBs) [ 2.347444] UBIFS (ubi0:0): reserved for root: 0 bytes (0 KiB) [ 2.353272] UBIFS (ubi0:0): media format: w4/r0 (latest is w5/r0), UUID 9AE4F0B9-2A05-4C7A-8644-AA2CE4D2FFF0, small LPT model [ 2.366769] VFS: Mounted root (ubifs filesystem) on device 0:13. [ 2.374505] devtmpfs: mounted [ 2.378644] Freeing unused kernel image (initmem) memory: 1024K [ 2.384764] Run /sbin/init as init process Starting syslogd: OK Starting klogd: OK Running sysctl: OK Initializing random number generator: OK Saving random seed: OK Starting network: OK Welcome to Buildroot buildroot login: root # # uname -a Linux buildroot 6.1.0-rc3 #7 SMP Fri Dec 30 18:52:12 CST 2022 armv7l GNU/Linux # # cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 48.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 processor : 1 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 48.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : Generic DT based system Revision : 0000 Serial : 0000000000000000 # # cat /proc/mtd dev: size erasesize name mtd0: 00040000 00020000 "awboot" mtd1: 00040000 00020000 "dtb" mtd2: 00780000 00020000 "kernel" mtd3: 07800000 00020000 "rootfs" # # mount ubi0:rootfs on / type ubifs (rw,relatime,assert=read-only,ubi=0,vol=0) devtmpfs on /dev type devtmpfs (rw,relatime,size=49900k,nr_inodes=12475,mode=755) proc on /proc type proc (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=666) tmpfs on /dev/shm type tmpfs (rw,relatime,mode=777) tmpfs on /tmp type tmpfs (rw,relatime) tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755) sysfs on /sys type sysfs (rw,relatime) # # df -h Filesystem Size Used Available Use% Mounted on ubi0:rootfs 102.9M 3.5M 99.5M 3% / devtmpfs 48.7M 0 48.7M 0% /dev tmpfs 57.2M 0 57.2M 0% /dev/shm tmpfs 57.2M 24.0K 57.2M 0% /tmp tmpfs 57.2M 16.0K 57.2M 0% /run # # time dd if=/dev/zero of=test.bin bs=1M count=64 conv=fsync 64+0 records in 64+0 records out real 0m 1.26s user 0m 0.00s sys 0m 0.48s # # # reboot # Stopping network: OK Saving random seed: OK Stopping klogd: OK Stopping syslogd: OK umount: devtmpfs busy - remounted read-only [ 123.118531] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" stops The system is going down NOW! Sent SIGTERM to all processes Sent SIGKILL to[ 125.165719] reboot: Restarting system
编译启动能够如此顺利必定少不了各位大佬的付出,特此感谢 big_smile
-
晕哥晕哥,我按照这个教程启动不了内核
-
@whycan 晕哥有没有遇到过卡[I] booting linux... 目前卡在这好久了,目前唯一的区别就是我用的spinand用的型号是 MX35LF1GE4AB
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号