报价
HOME
报价
正文内容
uboot nand mtd u-boot下ubi 命令使用总结
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

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...

 热爱生命杰克伦敦  成都团购导航 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部