u-boot下ubi 命令使用总结
查看MTD分区表
uBoot> mtdparts
uBoot> mtdparts
device nand0 <pxa3xx_nand-0>, # parts = 4
#: name size offset mask_flags
0: boot 0x000000200000 0x000000000000 0
1: env 0x000000200000 0x000000200000 0
2: UbiVols 0x000007800000 0x000000400000 0
3: Reserved 0x000000400000 0x000007c00000 0
active partition: nand0,0 - (boot) 0x000000200000 @ 0x000000000000
defaults:
mtdids : none
mtdparts: none
激活分区
uBoot> ubi part UbiVols
uBoot> ubi part UbiVols
Creating 1 MTD partitions on "nand0":
0x000000400000-0x000007c00000 : "mtd=2"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
UBI: attached mtd1 to ubi0
UBI: MTD device name: "mtd=2"
UBI: MTD device size: 120 MiB
UBI: number of good PEBs: 955
UBI: number of bad PEBs: 5
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 5
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 955
UBI: number of PEBs reserved for bad PEB handling: 9
UBI: max/mean erase counter: 9/0
查看当前激活分区
uBoot> ubi part
uBoot> ubi part
Device 0: nand0, partition UbiVols
Note: 如果当前没有被激活的分区,执行此命令时会出错:
uBoot> ubi part
Error, no UBI device/partition selected!
挂载分区
uBoot> ubimount
Usage:
ubifsmount <volume-name>
- mount 'volume-name' volume
uBoot> ubifsmount Rootfs-1
UBIFS: static UBI volume - read-only mode
UBIFS: mounted UBI device 0, volume 1, name "Rootfs-1"
UBIFS: mounted read-only
UBIFS: file system size: 40632320 bytes (39680 KiB, 38 MiB, 320 LEBs)
UBIFS: journal size: 5586944 bytes (5456 KiB, 5 MiB, 44 LEBs)
UBIFS: media format: w4/r0 (latest is w4/r0)
UBIFS: default compressor: zlib
UBIFS: reserved for root: 0 bytes (0 KiB)
查看分区内容
uBoot> ubifsls
uBoot> ubifsls
<DIR> 3440 Wed Jul 08 03:45:35 2020 bin
<DIR> 3176 Mon Feb 08 06:16:13 2021 dev
<DIR> 680 Thu Feb 25 06:05:37 2021 etc
<DIR> 1696 Tue Feb 02 03:42:45 2021 lib
<DIR> 160 Wed Feb 03 09:35:59 2021 mnt
<DIR> 160 Wed Jul 08 03:45:35 2020 tmp
<DIR> 160 Wed Jul 08 03:45:35 2020 sys
<DIR> 544 Wed Feb 24 05:46:21 2021 var
<DIR> 480 Wed Jul 08 03:45:37 2020 usr
<DIR> 224 Wed Jul 08 03:45:35 2020 home
<LNK> 11 Tue Feb 02 10:10:29 2021 init
<DIR> 160 Wed Jul 08 03:45:35 2020 proc
<DIR> 2032 Sat Feb 20 06:44:31 2021 sbin
<DIR> 232 Wed Jul 08 03:45:35 2020 root
<LNK> 11 Wed Jul 08 03:45:37 2020 linuxrc
259314 Wed Jan 13 07:58:12 2021 v0A030000_10979_10954_x3540.hdr
195056 Wed Jan 13 07:58:12 2021 x3310fw_0_2_8_0_8850.hdr
<DIR> 160 Tue Feb 02 02:37:10 2021 ramfs
1 Wed Jan 13 08:02:52 2021 config.txt
uBoot> ubifsls etc/
341 Tue Feb 02 02:54:24 2021 motd
347 Wed Jul 08 03:45:37 2020 welcome
78 Wed Jul 08 03:45:37 2020 passwd
463 Wed Jul 08 03:45:37 2020 README.txt
304 Tue Feb 02 08:51:25 2021 fstab
27 Wed Jul 08 03:45:37 2020 group
2608 Thu Feb 25 06:05:37 2021 init.sh
103 Tue Feb 02 02:54:16 2021 inittab
查看某个文件
uBoot> ubifsload
uBoot> ubifsload --help
ubifsload - load file from an UBIFS filesystem
Usage:
ubifsload <addr> <filename> [bytes]
- load file 'filename' to address 'addr'
Note: addr 表示RAM的起始地址,根据自己的平台进行指定
具体使用如下, 以查看/etc/init.sh为例:uBoot> ubifsload 0x2000000 etc/init.sh
uBoot> ubifsload 0x2000000 etc/init.sh
Loading file 'etc/init.sh' to addr 0x02000000 with size 2608 (0x00000a30)...
Done
md 0x2000000
uBoot> md 0x2000000
02000000: 622f2123 732f6e69 66690a68 73657420 #!/bin/sh.if tes
02000010: 652d2074 72702f20 762f636f 69737265 t -e /proc/versi
02000020: 740a6e6f 0a6e6568 68636520 6c650a6f on.then. echo.el
02000030: 0a0a6573 736f6820 6d616e74 414d2065 se.. hostname MA
02000040: 4c455652 494c5f4c 0a58554e 4d4f4820 RVELL_LINUX. HOM
......
uboot常用命令汇总
我们经常使用uboot命令,虽然资料光盘->常见问题目录有U-boot常用命令汇总文档,但从大家的反馈来看,并没有很多人注意到这个文档,所以把它挪到这里。如此全的uboot命令汇总,建议收藏。
注意:不同版本的uboot,它的命令有所不同,这里使用u-boot 1.1.6。
一、nandflash分区信息
OpenJTAG>mtdpart
device nand0 <nandflash0>, # parts = 4
#:name size offset
0: bootloader 0x00040000 0x00000000
1: params 0x00020000 0x00040000
2: kernel 0x00200000 0x00060000
3: root 0x0fba0000 0x00460000
二、设置机器ID
set machid 16a // JZ2440,也可以用setenv machid 16a
set machid 7CF // mini2440
三、设置环境变量
print // 打印环境变量
save // 保存环境变量
setenv bootdelay 5 // 设置bootdelay 为5setenv ipaddr 192.168.1.226 // 设置开发板ip为192.168.1.226setenv serverip 192.168.1.200 // 设置服务器ip为192.168.1.200
setenv gatewayip 192.168.1.1 // 设置网关为 192.168.1.1setenv netmask 255.255.255.0 // 设置子网掩码
// 由于是两条指令,因此需要用单引号引起来
// 读取内核 并启动
setenv bootcmd 'nand read.jffs2 0x30007FC0 kernel ; bootm 0x30007FC0'
// 使用flash中的文件系统启动,默认为yaffs2文件系统,如果是jffs2文件系统,添加 rootfstype=jffs2
// yaffs2
setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
// jffs2setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2
// 使用nfs网络文件系统启动,默认为yaffs2文件系统,如果是jffs2文件系统,添加rootfstype=jffs2
举例:
虚拟机ip :192.168.1.2
网关 :192.168.1.1
开发板ip : 192.168.1.3
子网掩码 :255.255.255.0
文件系统目录:/work/nfs_root/xxxx
// yaffs2 ,注意是一行
setenv bootargs noinitrd root=/dev/nfs console=ttySAC0
nfsroot=192.168.1.2:/work/nfs_root/xxxxip=192.168.1.3:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc
// jffs2 ,注意是一行
setenv bootargs noinitrd root=/dev/nfs console=ttySAC0
nfsroot=192.168.1.2:/work/nfs_root/xxxxip=192.168.1.3:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc rootfstype=jffs2
// 清除某个环境变量
setenv bootargs //以bootargs为例
save
// 清除全部的环境变量
nand erase params
四、tftp烧写
// 通过tftp烧写u-boot.bin到nand Flash步骤:
打开 tftpd32.exe 软件, 将u-boot.bin 拷贝至工作目录
在SecureCRT中依次输入:
tftp 0x30008000 u-boot.bin //将uboot.bin 下载到sdram 0x30008000地址处
nand erase bootloader // 擦除bootloader区域
nand write 0x30008000 bootloader // 烧写到bootloader
// 通过tftp烧写uImage到nand Flash步骤:
打开 tftpd32.exe 软件, 将 uImage 拷贝至工作目录
在SecureCRT中依次输入:
tftp 0x30008000 uImage
nand erase kernel
nand write 0x30008000 kernel
// 烧写YAFFS文件系统至Nand Flash
打开 tftpd32.exe 软件, 将 fs_mini.yaffs2 拷贝至工作目录
在SecureCRT中依次输入:
tftp 0x30008000 fs_mini.yaffs2
nand erase root
nand write.yaffs 0x30008000 root $(filesize) // $(filesieze) 是fs_mini.yaffs2 的大小
// 烧写JFFS文件系统至Nand Flash
//使用 jffs2 文件系统启动时记得修改 bootargs 添加 rootfstype=jffs2
打开 tftpd32.exe 软件,将 fs_mini.jffs2 拷贝至工作目录
在SecureCRT中依次输入:
tftp 0x30008000 fs_mini.jffs2
nand erase root
nand write.jffs2 0x30008000 root $(filesize) // $(filesieze) 是fs_mini.yaffs2 大小
当然,之前的所有下载也可以换成 nfs ,
假设虚拟机 ip 为 192.168.1.123
nfs共享目录(在ubuntu 的 /etc/exports设置)为: /work/nfs_root
那么nfs下载命令如下:
nfs 0x30008000 192.168.1.123:/work/nfs_root/u-boot.bin // nfs下载u-boot.bin
nfs 0x30008000 192.168.1.123:/work/nfs_root/uImage // nfs下载uImage
nfs 0x30008000 192.168.1.123:/work/nfs_root/fs_mini.yaffs2 // nfs下载fs_mini.yaffs2
nfs 0x30008000 192.168.1.123:/work/nfs_root/fs_mini.jffs2 // nfs下载fs_mini.jffs2
- end -
相关问答
怎么进入不死 uboot 刷机界面?如果有root权限的话,用adbshell执行dd命令,把recovery镜像直接dd到对应的闪存分区的设备文件即可。比如:adbshellpushrecovery.bin/adbshel...