20161216_jeffrey - silenceuncrio/diary GitHub Wiki
- 0830 - review
-
1000 - 參考
<u-boot-imx>\README
裡的說明 -
1055 - 修改
mtdparts
讓 uboot env 這一塊也佔一個 mtd - 1120 - 配合新的 nand flash layout 來修改
-
1225 - 配合新的 nand flash layout 來修改 mfgtool 的
ucl2.xml
-
1325 - uboot 顯示
*** Warning - bad CRC, using default environment
-
1410 - 使用
fw_setenv
把bootargs
裡的ubi.mtd
從 4(rootfs_a) 改成 9(rootfs_b)
review
昨天努力的點為 linux 去改 uboot 的 環境變數
就 yocto 的 u-boot-imx
recipe 做了一些努力都宣告失敗
- arron 幫忙改
u-boot-imx_2015.04.bbappend
走 bitbake 的 compile 流程fsl-release-bsp/sources/meta-proscend/recipes-bsp/u-boot/u-boot-imx_2015.04.bbappend
- 裝 yocto 的 toolchain 方便做 cross compile
- 試著自己 porting
fw_printenv
的 source code- header file 的相依性高的嚇人
還好找到 yocto 原生的 u-boot-fw-utils
recipe
- 還要從
u-boot-imx
recipe 借mx6ul_14x14_evk_nand_defconfig
來用- /configs/mx6ul_14x14_evk_nand_defconfig
終於得到一個可以在 m300 上執行的 fw_printenv
竟然還要在 m300 準備 /etc/fw_env.config 設定給 fw_printenv
用
最後讀到的 uboot env 竟然和原本的 uboot 設定不一樣
昨天一整天都是跌倒的過程
昨天在準備 /etc/fw_env.config 時有看到 <u-boot-imx>\include\configs\mx6ul_14x14_evk.h
裡的
#define CONFIG_ENV_OFFSET (8 << 20)
#define CONFIG_ENV_SECT_SIZE (128 << 10)
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
參考 <u-boot-imx>\README
裡的說明
- CONFIG_ENV_OFFSET:
Offset of environment data (variable area) to the
beginning of flash memory; for instance, with bottom boot
type flash chips the second sector can be used: the offset
for this sector is given here.
CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE.
- CONFIG_ENV_SECT_SIZE:
Size of the sector containing the environment.
b) Sometimes flash chips have few, equal sized, BIG sectors.
In such a case you don't want to spend a whole sector for
the environment.
- CONFIG_ENV_SIZE:
If you use this in combination with CONFIG_ENV_IS_IN_FLASH
and CONFIG_ENV_SECT_SIZE, you can specify to use only a part
of this flash sector for the environment. This saves
memory for the RAM copy of the environment.
It may also save flash memory if you decide to use this
when your environment is "embedded" within U-Boot code,
since then the remainder of the flash sector could be used
for U-Boot code. It should be pointed out that this is
STRONGLY DISCOURAGED from a robustness point of view:
updating the environment in flash makes it always
necessary to erase the WHOLE sector. If something goes
wrong before the contents has been restored from a copy in
RAM, your target system will be dead.
看來我需要修改一下 mtdparts
以便讓 uboot env 這一塊也佔一個 mtd
目前的 <u-boot-imx>\include\configs\mx6ul_14x14_evk.h
...
#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),-(rootfs) "
...
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
CONFIG_VIDEO_MODE \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 ubi.mtd=3 " \
"root=ubi0:rootfs rootfstype=ubifs " \
"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),-(rootfs)\0"\
"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
"nand read ${fdt_addr} 0x5000000 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
...
#define CONFIG_ENV_OFFSET (8 << 20)
#define CONFIG_ENV_SECT_SIZE (128 << 10)
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
linux kernel parser mtdparts
得到的
...
5 cmdlinepart partitions found on MTD device gpmi-nand
Creating 5 MTD partitions on "gpmi-nand":
0x000000000000-0x000004000000 : "boot"
0x000004000000-0x000005000000 : "kernel"
0x000005000000-0x000006000000 : "dtb"
0x000006000000-0x00000a000000 : "rootfs"
0x00000a000000-0x000010000000 : "test"
...
重新畫一張 nand flash layout
配合新的 nand flash layout 來修改 <u-boot-imx>\include\configs\mx6ul_14x14_evk.h
...
#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:" \
"2m(boot),2m(boot_env)," \
"10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a)," \
"4m(misc)," \
"10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)\0"
#define CONFIG_NAND_PARTITION CONFIG_MFG_NAND_PARTITION
...
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
CONFIG_VIDEO_MODE \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_NAND_PARTITION \
"kernel_addr=0x00400000\0" \
"dtb_addr=0x00E00000\0" \
"bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;"\
"nand read ${fdt_addr} ${dtb_addr} 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
...
#define CONFIG_ENV_OFFSET 0x00200000
#define CONFIG_ENV_SECT_SIZE 0x00200000
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
使用 bitbake u-boot-imx -c compile -vf 直接套 \include\configs\mx6ul_14x14_evk.h
再使用 bitbake u-boot-imx -c deploy 得到 image
配合新的 nand flash layout 來修改 mfgtool 的 ucl2.xml
主要是因為 rootfs 要燒錄的位置改了
而且 uboot env 那一塊也要清掉
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6SL" vid="15A2" pid="0063"/>
<STATE name="BootStrap" dev="MX6D" vid="15A2" pid="0061"/>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="BootStrap" dev="MX6SX" vid="15A2" pid="0071"/>
<STATE name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
<STATE name="BootStrap" dev="MX7D" vid="15A2" pid="0076"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="NAND Flash" desc="Choose NAND as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file ="firmware/u-boot.imx" ifdev="MX6UL">Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage" address="0x80800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL">Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL">Loading Initramfs.</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage-imx6ul-%6uldtb%-%nanddtb%.dtb" address="0x83000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6UL">Loading device tree.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<!--burn the uboot to NAND: -->
<CMD state="Updater" type="push" body="$ mount -t debugfs debugfs /sys/kernel/debug">Mounting debugfs</CMD>
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd0 0 0">Erasing Boot partition</CMD>
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd1 0 0">Erasing Boot env partition</CMD>
<CMD state="Updater" type="push" body="send" file="files/u-boot.imx" ifdev="MX6UL">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push" body="$ kobs-ng init -x -v --chip_0_device_path=/dev/mtd0 $FILE">Flashing Bootloader</CMD>
<!--burn the kernel to NAND: -->
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd2 0 0">Erasing Kernel partition</CMD>
<CMD state="Updater" type="push" body="send" file="files/zImage">Sending kernel zImage</CMD>
<CMD state="Updater" type="push" body="$ nandwrite -p /dev/mtd2 -p $FILE">Flashing Kernel</CMD>
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd3 0 0">Erasing dtb partition</CMD>
<CMD state="Updater" type="push" body="send" file="files/zImage-imx6ul-14x14-evk.dtb" ifdev="MX6UL">Sending Device Tree file</CMD>
<CMD state="Updater" type="push" body="$ nandwrite -p /dev/mtd3 -p $FILE">Flashing dtb</CMD>
<!--burn the rootfs to NAND: -->
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd4 0 0">Erasing rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ ubiformat /dev/mtd4"/>
<CMD state="Updater" type="push" body="$ ubiattach /dev/ubi_ctrl -m 4">Attaching UBI partition</CMD>
<CMD state="Updater" type="push" body="$ ubimkvol /dev/ubi0 -Nrootfs -m"/>
<CMD state="Updater" type="push" body="$ mkdir -p /mnt/mtd4"/>
<CMD state="Updater" type="push" body="$ mount -t ubifs ubi0:rootfs /mnt/mtd4"/>
<CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mtd4" file="files/core-image-minimal-imx6ulevk.tar.bz2" ifdev="MX6UL MX7D">Sending and writting rootfs</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
<CMD state="Updater" type="push" body="$ umount /mnt/mtd4">Unmounting rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
</UCL>
mfgtool 燒錄 - fail
...
mtd: opened '/dev/mtd0' - '(null)'
v4_rom_mtd_init()
fill_fcb()
mtd: bootstream too large
mtd_init failed!
UTP: sending Non-success to kernel for command $ kobs-ng init -x -v --chip_0_device_path=/dev/mtd0 $FILE.
utp_poll: exit with status 1280
參考 https://github.com/silenceuncrio/diary/wiki/20160802_jeffrey
原本是 64m
剛剛試過 2m... MfgTool 燒錄階段就出錯了
3m 確定可行
再畫一張 nand flash layout
再配合新的 nand flash layout 來修改 <u-boot-imx>\include\configs\mx6ul_14x14_evk.h
...
#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:" \
"3m(boot),1m(boot_env)," \
"10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a)," \
"4m(misc)," \
"10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)\0"
#define CONFIG_NAND_PARTITION CONFIG_MFG_NAND_PARTITION
...
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
CONFIG_VIDEO_MODE \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_NAND_PARTITION \
"kernel_addr=0x00400000\0" \
"dtb_addr=0x00E00000\0" \
"bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;"\
"nand read ${fdt_addr} ${dtb_addr} 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
...
#define CONFIG_ENV_OFFSET 0x00300000
#define CONFIG_ENV_SECT_SIZE 0x00100000
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
使用 bitbake u-boot-imx -c compile -vf 直接套 \include\configs\mx6ul_14x14_evk.h
再使用 bitbake u-boot-imx -c deploy 得到 image
mfgtool 燒錄 - ok
開機... ok
...
11 cmdlinepart partitions found on MTD device gpmi-nand
Creating 11 MTD partitions on "gpmi-nand":
0x000000000000-0x000000300000 : "boot"
0x000000300000-0x000000400000 : "boot_env"
0x000000400000-0x000000e00000 : "kernel_a"
0x000000e00000-0x000001000000 : "dtb_a"
0x000001000000-0x000007000000 : "rootfs_a"
0x000007000000-0x000008000000 : "config_a"
0x000008000000-0x000008400000 : "misc"
0x000008400000-0x000008e00000 : "kernel_b"
0x000008e00000-0x000009000000 : "dtb_b"
0x000009000000-0x00000f000000 : "rootfs_b"
0x00000f000000-0x000010000000 : "config_b"
...
UBI: attached mtd4 (name "rootfs_a", size 96 MiB) to ubi0
...
準備一下 m300 的 /etc/fw_env.config
root@M300:~# cat /etc/fw_env.config
# MTD device name Device offset Env. size Flash sector size
/dev/mtd1 0x00000000 0x00100000 0x00100000
root@M300:~#
- 把開發環境上的 images folder 掛載到 m300 上的
/tmp/images
cd /tmp
mkdir images
mount -t nfs 192.168.1.200:/home/jeffrey/M300/fsl-release-bsp/build_small/images images
root@M300:/tmp# images/fw_printenv
Warning: Bad CRC, using default environment
bootargs=root=/dev/mtdblock0 console=ttyAM0 console=tty
bootcmd=
bootdelay=2
baudrate=38400
奇怪了...
重開機回 uboot
U-Boot 2015.04-imx_v2015.04_3.14.52_1.1.0_ga+g6cf684a (Dec 16 2016 - 05:20:17)
CPU: Freescale i.MX6UL rev1.1 at 396 MHz
CPU: Temperature 46 C
Reset cause: POR
Board: MX6UL 14x14 EVK
I2C: ready
DRAM: 512 MiB
force_idle_bus: sda=0 scl=0 sda.gp=0x1d scl.gp=0x1c
NAND: 256 MiB
MMC: FSL_SDHC: 0
*** Warning - bad CRC, using default environment
Display: TFT43AB (480x272)
Video: 480x272x24
In: serial
Out: serial
Err: serial
Net: FEC1
Error: FEC1 address not set.
Normal Boot
Hit any key to stop autoboot: 0
=> printenv
baudrate=115200
bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;nand read ${fdt_addr} ${dtb_addr} 0x100000;bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
console=ttymxc0
dtb_addr=0x00E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
initrd_addr=0x83800000
initrd_high=0xffffffff
kernel_addr=0x00400000
loadaddr=0x80800000
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
panel=TFT43AB
Environment size: 1072/1048572 bytes
先 saveenv 一下
再重開機進 uboot
U-Boot 2015.04-imx_v2015.04_3.14.52_1.1.0_ga+g6cf684a (Dec 16 2016 - 05:20:17)
CPU: Freescale i.MX6UL rev1.1 at 396 MHz
CPU: Temperature 43 C
Reset cause: POR
Board: MX6UL 14x14 EVK
I2C: ready
DRAM: 512 MiB
force_idle_bus: sda=0 scl=0 sda.gp=0x1d scl.gp=0x1c
NAND: 256 MiB
MMC: FSL_SDHC: 0
Display: TFT43AB (480x272)
Video: 480x272x24
In: serial
Out: serial
Err: serial
Net: FEC1
Error: FEC1 address not set.
Normal Boot
Hit any key to stop autoboot: 0
=> printenv
baudrate=115200
bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;nand read ${fdt_addr} ${dtb_addr} 0x100000;bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
console=ttymxc0
dtb_addr=0x00E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
initrd_addr=0x83800000
initrd_high=0xffffffff
kernel_addr=0x00400000
loadaddr=0x80800000
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
panel=TFT43AB
Environment size: 1072/1048572 bytes
發現第一次 uboot 有顯示 *** Warning - bad CRC, using default environment
但第二次不見了
開機進 linux
root@M300:/tmp# cat /etc/fw_env.config
# MTD device name Device offset Env. size Flash sector size
/dev/mtd1 0x00000000 0x00100000 0x00100000
root@M300:/tmp# images/fw_printenv
baudrate=115200
bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;nand read ${fdt_addr} ${dtb_addr} 0x100000;bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
console=ttymxc0
dtb_addr=0x00E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
initrd_addr=0x83800000
initrd_high=0xffffffff
kernel_addr=0x00400000
loadaddr=0x80800000
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
panel=TFT43AB
哈哈 這一次就有了
來燒錄 rootfs 到 rootfs_b
去
- Erasing rootfs partition rootfs_b
flash_erase /dev/mtd9 0 0
- ubiformat
ubiformat /dev/mtd9
- Attaching UBI partition
ubiattach /dev/ubi_ctrl -m 9
- create UBI volumes for UBI device number 1
ubimkvol /dev/ubi1 -Nrootfs -m
mkdir -p /mnt/mtd9
mount -t ubifs ubi1:rootfs /mnt/mtd9
- writting rootfs
tar -jxv -C /mnt/mtd9 -f images/core-image-minimal-imx6ulevk.tar.bz2
- Unmounting rootfs partition
umount /mnt/mtd9
直接使用 fw_setenv
把 bootargs
裡的 ubi.mtd
從 4(rootfs_a) 改成 9(rootfs_b)
root@M300:/tmp# ./fw_printenv bootargs
bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
root@M300:/tmp# ./fw_setenv bootargs 'console=ttymxc0,115200 ubi.mtd=9 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)'
root@M300:/tmp# ./fw_printenv bootargs
bootargs=console=ttymxc0,115200 ubi.mtd=9 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
重開機
...
11 cmdlinepart partitions found on MTD device gpmi-nand
Creating 11 MTD partitions on "gpmi-nand":
0x000000000000-0x000000300000 : "boot"
0x000000300000-0x000000400000 : "boot_env"
0x000000400000-0x000000e00000 : "kernel_a"
0x000000e00000-0x000001000000 : "dtb_a"
0x000001000000-0x000007000000 : "rootfs_a"
0x000007000000-0x000008000000 : "config_a"
0x000008000000-0x000008400000 : "misc"
0x000008400000-0x000008e00000 : "kernel_b"
0x000008e00000-0x000009000000 : "dtb_b"
0x000009000000-0x00000f000000 : "rootfs_b"
0x00000f000000-0x000010000000 : "config_b"
...
UBI: attaching mtd9 to ubi0
...
UBI: scanning is finished
UBI: attached mtd9 (name "rootfs_b", size 96 MiB) to ubi0
...
打完收工
來請假囉