嵌入式Linux开发-uboot常用命令介绍(下篇)

举报
DS小龙哥 发表于 2022/01/24 14:16:05 2022/01/24
【摘要】 这篇文章是UBOOT命令介绍的下篇,接着上篇文章介绍剩下的几个命令用法。 主要是涉及的命令是:磁盘分区、磁盘文件加载、内核引导、二进制文件加载、跳转命令、磁盘文件系统格式等等。

1. 前言

这篇文章是UBOOT命令介绍的下篇,接着上篇文章介绍剩下的几个命令用法。

主要是涉及的命令是:磁盘分区、磁盘文件加载、内核引导、二进制文件加载、跳转命令、磁盘文件系统格式等等。

image-20220124134555164

2. UBOOT命令

2.1 fatls –列出指定目录下的文件

查看帮助:

TINY4412 # ? fatls
fatls - list files in a directory (default /)
         列出一个目录文件

Usage:
fatls <interface> <dev[:part]> [directory]

   - list files from 'dev' on 'interface' in a 'directory'

参数说明:

<interface>: mmc 或 usb;
dev: 设备编号;
part: 设备分区号;
[directory]: 目录, 是可选, 可以不写,不写默认 / 目录

查看SD卡中的文件列表(查看之前SD需要有完好的分区才行,可以通过fdisk进行分区,从U-BOOT和内核地址之后开始分区,防止将U-BOOT和内核清除)

TINY4412 # fatls mmc 0 /
Partition1: Start Address(0x71c53a), Size(0x2025c6)
            system volume information/
            12345/

0 file(s), 2 dir(s)    共用两个目录,0个文件----进过确认正确的

查看子目录下的文件:

TINY4412 # fatls mmc 0 /12345 
Partition1: Start Address(0x71c53a), Size(0x2025c6)
            ./
            ../
            5567/

0 file(s), 3 dir(s)

image-20220124134543267

2.2 从一个MMC文件系统(fat)中加载一个二进制文件到DDR

查看帮助:

TINY4412 # help fatload
fatload - fatload - load binary file from a dos filesystem


Usage:
fatload <interface> <dev[:part]>  <addr> <filename> [bytes]
    - load binary file 'filename' from 'dev' on 'interface'
      to address 'addr' from dos filesystem

参数说明:

<interface>: mmc 或 usb;
dev:       设备编号(可以通过启动时查看或者列出存储器);
part:       设备分区号;
<addr>:     DDR 内存地址
<filename>: 要加载二进制文件( 包含完整路径)
[bytes]:要加载数据大小,字节为单位。可选的,可以不写, 不写时候默认等于文件大小。
加载文件需要SD或者EMMC有完好的文件系统。

image-20220124134658482

先将SD卡从开发板取出(开发板不要断电),通过读卡器插入 PC,复制一些文件到卡里,然后再重新插入开发板中
(SD卡拔出来时开发板不要断电,目的想测试一下 mmc rescan 命令作用)。SD卡拔掉之后,UBOOT一样可以运行,因为程序已经拷贝到DDR中运行了,只要不断电U-BOOT就可以正常运行。

image-20220124134724136

文件拷贝完将SD卡再放回开发板,先不要重新扫描 mmc 设备,直接输入 fatls 就会出错:

TINY4412 # fatls mmc 0
 /* 打印错误信息,因为开发板没有断电,设备0是SD卡*/
count: 1
# Tx: Inverter delay / Rx: Inverter delay

count: 2
## Tx: Basic delay / Rx: Inverter delay

count: 3
## Tx: Inverter delay / Rx: Basic delay

count: 4
### Tx: Basic delay / Rx: Basic delay

count: 5
# Tx: Disable / Rx: Basic delay

count: 6
## Tx: Disable / Rx: Inverter delay

count: 7
### Tx: Basic delay / Rx: Disable

count: 8
### Tx: Inverter delay / Rx: Disable
mmc read failed ERROR: -19
data.dest: 0xc3cfbbdc
data.blocks: 1
data.blocksize: 512
MMC_DATA_READ
** Can't read from device 0 **

** Unable to use mmc 0:1 for fatls **
TINY4412 # 

扫描设备0,再读出信息:

TINY4412 # mmc rescan 0  扫描设备
TINY4412 # fatls mmc 0    列出设备的文件目录

/* 成功列出了SD卡文件目录信息*/
Partition1: Start Address(0xa203d2), Size(0x2037b2)
            system volume information/
  4783928   zimage 
   277108   u-boot.bin 
   127245   纇/u-boot.pdf 
     5268   2015-12-30txt 
   731729   shell,
                   - a.pdf 

5 file(s), 1 dir(s)

image-20220124134820305

开始测试 fatload 命令:

TINY4412 #  fatload mmc 0 48000000 zimage      将 zimage文件加载到DDR的48000000地址处   
Partition1: Start Address(0xa203d2), Size(0x2037b2)
reading zimage

4783928 bytes read  成功加载文件的大小(字节单位)
TINY4412 # md.b 48000000      打印出DDR 48000000地址处的数据
48000000: 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1    ................
48000010: 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1    ................
48000020: 02 00 00 ea 18 28 6f 01 00 00 00 00 38 ff 48 00    .....(o.....8.H.
48000030: 01 70 a0 e1 02 80 a0 e1 00 20 0f e1 03 00 12 e3    .p....... ......

image-20220124134903661

2.3 cmp --比较内存数据是否相同

查看帮助
TINY4412 # ? cmp                     
cmp - memory compare   内存比较

Usage:
cmp [.b, .w, .l] addr1 addr2 count  格式         注意:count 是用十六进制表示
cmp .b :以1个字节方式
cmp .w :以2 个字节方式
cmp .l :以4 个字节方式

格式:
Cmp.b 地址1 地址2 比较数据的数量

① 比较DRR两个地址数据是否相等
TINY4412 # cmp.b 48000000 49000000 10     比较两个地址数据---数量是10个
byte at 0x48000000 (0x00) != byte at 0x49000000 (0xff)
Total of 0 bytes were the same  共有0字节是相同的
TINY4412 # 


② 从MMC读取1个扇区的数据到DDR的两个地址
TINY4412 #  mmc read 0 48000000 1 1

MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
TINY4412 #  mmc read 0 49000000 1 1

MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
 
③ 再次比较两个地址的数据
TINY4412 # cmp.b 48000000 49000000 10   ( 注意:这里的10是十六进制的10 ,转成十进制就是16)
Total of 16 bytes were the same  共有16个字节都是一样的。

2.4 mm --地址以自动增加的方式修改内存数据

查看帮助:
TINY4412 # ? mm
mm - memory modify (auto-incrementing address)  修改内存(增加的地址)

Usage:
mm [.b, .w, .l] address   格式: address要修改的地址

① 先将DDR某处数据打印出来,方便修改完比较
TINY4412 # md.b 48000000 10
48000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79    .i...}.f.k.n.y.y

② 修改数据
TINY4412 # mm.b 48000000             
48000000: a3 ? 5   //把a3 修改为5
48000001: 69 ? 6   //把69 修改为6
48000002: d3 ? 7
48000003: 18 ? 8
48000004: e9 ?       不想修改直接按下<回车键>跳过
48000005: 7d ? 9
48000006: b9 ? TINY4412 # <INTERRUPT>   修改完直接按ctrl+c 结束

③ 再次查看数据
TINY4412 # md.b 48000000 10
48000000: 05 06 07 08 e9 09 b9 66 d1 6b d5 6e d4 79 a6 79    .......f.k.n.y.y  修改之后的数据

将修改之前的数据与修改之后的比较,发现已经修改成功!
其他类似命令:
mm.w:一次修改 2 字节
mm.l:一次修改 4 字节

2.5 cp –内存拷贝

查看帮助:
TINY4412 # ? cp
cp - memory copy   内存复制

Usage:  用法格式
cp [.b, .w, .l] source target count   注意这里的数量是用16进制表示的
格式:cp.b 源地址 目标地址 数量
① 读出DDR两个地址的数据,方便后面比较
TINY4412 # md.b 45000000 10   显示数据
45000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff     ................
TINY4412 # md.b 49000000 10   显示数据
49000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79    .i...}.f.k.n.y.y


② 将DDR的4900000地址前10个字节拷贝到45000000地址处
TINY4412 # cp 49000000 45000000 10

③ 将两处地址的数据再显示出来
TINY4412 # md.b 45000000 10         
45000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79    .i...}.f.k.n.y.y
TINY4412 # md.b 49000000 10
49000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79    .i...}.f.k.n.y.y
拷贝之后,将两处地址数据再次比较,两边数据是一样的。

2.6 loady - 使用串口下载二进制数据到内存中

U-BOOT支持的串口传输模式:

loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loady   - load binary file over serial line (ymodem mode)

串口下载文件到DDR,上面是U-BOOT支持串口的3种传输模式。

CRT串口终端支持的协议:

image-20220124135202201

查看帮助:
TINY4412 # ? loady
Unknown command '' - try 'help' without arguments for list of all known commands

loady - load binary file over serial line (ymodem mode)
用在串行线加载二进制文件(ymodem模式)

Usage:
loady [ off ] [ baud ]
    - load binary file over serial line with offset 'off' and baudrate 'baud'
参数说明:
[ off ]: DDR 内存地址, 可选。
[ baud ]:使用多快的波特率下载, 可选,不填就表示默认的115200波特率。
示例:
loady 0x40000000 115200

测试loady命令:

(1)下载文件到内存

TINY4412 # loady 40000000	下载文件到DDR 40000000地址
## Ready for binary (ymodem) download to 0x40000000 at 0 bps...

image-20220124135312187

image-20220124135330283

(2)对比数据内容

image-20220124135349614

(3)执行代码

上面下载的bin文件是一个按键的裸机程序,可以用go命令跳转到指定地址去执行下载的代码。

TINY4412 # go 40000000
## Starting application at 0x40000000 ...
跳转过去之后,按下按键测试! 测试结果正常,按键程序可以正常执行。

2.7 go–CPU 跳转到指定的地址执行代码

一旦 go 指令执行后, CPU 就会去执行指定地址处的代码。

查看帮助:

TINY4412 # ? go
go - start application at address 'addr'
     在addr处启动应用程序

Usage:
go addr [arg ...]
    - start application at address 'addr'
      passing 'arg' as arguments 作为参数传递的参数

测试go命令

将SD卡第一个扇区数据读到DDR内存中等待执行。读8个扇区
TINY4412 # mmc read 0 45000000 1 8   

MMC read: dev # 0, block # 1, count 8 ... 8 blocks read: OK

跳转到45000000地址去执行程序
TINY4412 # go 45000000 
## Starting application at 0x45000000 ...   开始执行地址处的代码,因为扇区1开始存放的是BL1代码,重新执行启动了UBOOT
OK

U-Boot 2010.12 (Jan 01 2016 - 02:37:55) for TINY4412

CPU:    S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
        APLL = 1400MHz, MPLL = 800MHz

Board:  TINY4412
DRAM:   1023 MiB
...........................................................................................................

image-20220124135654581

2.8 打开关闭emmc设备引导分区

查看帮助:
TINY4412 # ? emmc
emmc - Open/Close eMMC boot Partition  打开/关闭emmc引导分区

Usage:
emmc open <device num> 
emmc close <device num> 

对设备读写操作,需要先打开,读写完毕,再关闭。
示例: 
emmc close 1    打开设备1
emmc open 1    关闭设备1

emmc close 0    打开设备0
emmc open 0    关闭设备0

2.9 movi 子系统----从MMC向DDR读写数据

该指令在产品发布时需要用到,用来固化内核和UBOOT。

查看帮助:

TINY4412 # ? movi
movi - movi     - sd/mmc r/w sub system for SMDK board

Usage:
movi init - Initialize moviNAND and show card info
movi read zero {fwbl1 | u-boot} {device_number} {addr} - Read data from sd/mmc  读取数据从sd / mmc
movi write zero {fwbl1 | u-boot} {device_number} {addr} - Read data from sd/mmc  读取数据从sd / mmc
movi read {u-boot | kernel} {device_number} {addr} - Read data from sd/mmc      读取数据从sd / mmc
movi write {fwbl1 | u-boot | kernel} {device_number} {addr} - Write data to sd/mmc 写入数据到sd / mmc
movi read rootfs {device_number} {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size       从sd/mmc读取rootfs数据大小
movi write rootfs {device_number} {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size        写rootfs sd/mmc的数据大小
movi read {sector#} {device_number} {bytes(hex)} {addr} - instead of this, you can use "mmc read"
movi write {sector#} {device_number} {bytes(hex)} {addr} - instead of this, you can use "mmc write"

(1)把 sd 卡中 u-boot 的第一阶段的 bl1 数据复制到内存,然后再写入 emmc 对应位置

movi read fwbl1 0 40000000;       //从SD(设备编号为)拷贝bl1到DDR内存地址
emmc open 1;                   //打开EMMC设备
movi write zero fwbl1 1 40000000;   //将DDR地址处数据写入到EMMC对应位置
emmc close 1;                    //关闭EMMC设备

用法示例:

TINY4412 # movi read fwbl1 0 40000000;
reading FWBL1 ..device 0 Start 1, Count 16 
MMC read: dev # 0, block # 1, count 16 ... 16 blocks read: OK  从SD卡第1个扇区开始读,连续读16个扇区
completed
TINY4412 # emmc open 1;
eMMC OPEN Success.!!
                        !!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
TINY4412 # movi write zero fwbl1 1 40000000; 
writing FWBL1 ..device 1 Start 0, Count 16 
MMC write: dev # 1, block # 0, count 16 ... 16 blocks written: OK 从EMMC第0个扇区写,连续写16个扇区
completed
TINY4412 # emmc close 1; 
eMMC CLOSE Success.!!

因为SD卡的特性,第0个扇区不能使用,数据只能从第1个扇区开始存放。
EMMC可以直接从第0个扇区存放数据。
所以-----EMMC的第0个扇区相当于SD卡的第1个扇区

image-20220124140004454

(2)把sd卡中u-boot的BL2 数据复制到内存,然后再写入 emmc 对应位置

movi read bl2 0 40000000;     //从SD(设备编号为0)拷贝bl2到DDR内存地址
emmc open 1;                 //打开EMMC设备
movi write zero bl2 1 40000000; //将DDR地址处数据写入到EMMC对应位置
emmc close 1;                 //关闭EMMC设备

示例:

TINY4412 # movi read bl2 0 40000000
reading BL2 ..device 0 Start 17, Count 32 
MMC read: dev # 0, block # 17, count 32 ... 32 blocks read: OK  //从SD卡的第17个扇区开始读,连续读32个扇区。
                                                    //查看UBOOT烧写脚本可知,BL2是从SD卡第17扇区开始烧写的
completed
TINY4412 # emmc open 1          
eMMC OPEN Success.!!
                        !!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
TINY4412 # movi write zero bl2 1 40000000    
writing BL2 ..device 1 Start 16, Count 32 
MMC write: dev # 1, block # 16, count 32 ... 32 blocks written: OK   //向EMMC的第17个扇区开始写,连续写32个扇区。
completed
TINY4412 # emmc close 1
eMMC CLOSE Success.!!

image-20220124140109626

(3)把 sd 卡中 u-boot 复制到内存,然后再写入 emmc 对应位置

movi read u-boot 0 40000000;      将SD卡的U-BOOT.Bin读到DDR内存空间
emmc open 1;                   打开EMMC设备
movi write zero u-boot 1 40000000;  将DDR的数据写入EMMC设备
emmc close 1;                    关闭EMMC

示例:

TINY4412 # movi read u-boot 0 40000000
reading bootloader..device 0 Start 49, Count 656 
MMC read: dev # 0, block # 49, count 656 ... 656 blocks read: OK  从SD卡第49个扇区开始,读取656个扇区到DDR内存
completed
TINY4412 # emmc open 1
eMMC OPEN Success.!!
                        !!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
TINY4412 # movi write zero u-boot 1 40000000
writing bootloader..device 1 Start 48, Count 656       
MMC write: dev # 1, block # 48, count 656 ... 656 blocks written: OK 向EMMC的第49个扇区,连续写入656个扇区到DDR内存
completed
TINY4412 # emmc close 1
eMMC CLOSE Success.!!

image-20220124140204306

(4)把 sd 卡中 u-boot 安全加密数据复制到内存,然后再写入 emmc 对应位置

movi read tzsw 0 40000000;      将安全加密数据拷贝到DDR
emmc open  1;                打开EMMC设备
movi write zero tzsw 1 40000000;  将DDR数据写入EMMC
emmc close 1;                  关闭EMMC设备

示例:

TINY4412 # movi read tzsw 0 40000000
reading 0 TrustZone S/W.. Start 705, Count 320 
MMC read: dev # 0, block # 705, count 320 ... 320 blocks read: OK  从SD卡的第705个扇区开始,连续读取320个扇区到DDR
Completed                                              安全加密数据是从SD的705个扇区存放的
TINY4412 # emmc open  1
eMMC OPEN Success.!!
                        !!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
TINY4412 # movi write zero tzsw 1 40000000;
writing 1 TrustZone S/W.. Start 704, Count 320 
MMC write: dev # 1, block # 704, count 320 ... 320 blocks written: OK  写入EMMC
completed
TINY4412 # emmc close 1
eMMC CLOSE Success.!!

image-20220124140305180

image-20220124140317064

(5)把 sd 卡中内核数据复制到内存,然后再写入 emmc 对应位置

movi read kernel 0 40000000;     将SD卡的内核数据读到DDR内存中
movi write kernel 1 40000000;     将DDR的数据写入EMMC中

示例:

TINY4412 # movi read kernel 0 40000000
reading kernel..device 0 Start 1057, Count 12288 
MMC read: dev # 0, block # 1057, count 12288 ... 12288 blocks read: OK  从SD卡1057扇区开始,连续读12288个扇区到DDR
completed
TINY4412 # movi write kernel 1 40000000
writing kernel..device 1 Start 1057, Count 12288 
MMC write: dev # 1, block # 1057, count 12288 ... 12288 blocks written: OK将DDR的数据写入EMMC,从1057开始写,连续写12288个扇区
completed

image-20220124140413623

2.10 movi 精简命令-一键拷贝

将UBOOT和内核数据固化到EMMC精简命令:

movi r f 0 40008000;emmc open 1;movi w z f 1 40008000;emmc close 1;
movi r b 0 40008000;emmc open 1;movi w z b 1 40008000;emmc close 1;
movi r u 0 40008000;emmc open 1;movi w z u 1 40008000;emmc close 1;
movi r t 0 40008000;emmc open 1;movi w z t 1 40008000;emmc close 1;
movi r k 0 40008000;movi w k 1 40008000;

2.11 bootcmd命令的使用

bootcmd命令是设置U-BOOT启动成功后执行的命令代码。

示例:

set bootcmd 'mmc read 0 40000000 421 1;md.b 40000000'

格式:setenv  ‘ 需要执行的命令’
      Save  //保存设置

2.12 执行二进制文件–>bootm命令

bootm命令是用来引导经过U-Boot的工具mkimage打包后的kernel image的。

查看帮助:

TINY4412 # ? bootm
bootm - boot application image from memory  //bootm从内存中启动应用程序

Usage:
bootm [addr [arg ...]]
    - boot application image stored in memory
        passing arguments 'arg ...'; when booting a Linux kernel,
        'arg' can be the address of an initrd image
//传递参数的参数…”;当引导Linux内核,“参数”可以是映像文件的地址

Sub-commands to do part of the bootm sequence.  The sub-commands must be
issued in the order below (it's ok to not issue all sub-commands):
        start [addr [arg ...]]
        loados  - load OS image  加载操作系统映像
        cmdline - OS specific command line processing/setup 操作系统特定的命令行处理/设置
        bdt     - OS specific bd_t processing 操作系统特定bd_t处理
        prep    - OS specific prep before relocation or go 
        go      - start OS 启动操作系统

示例:

(1)直接引导内核

TINY4412 # mmc read 0 40007fc0 421 3000  
将SD卡内核读到DDR内存空间----内核映像是从SD卡1057扇区开始存放的,连续占用了12288个扇区 
(注意: 421是0x421  3000是0x3000)
MMC read: dev # 0, block # 1057, count 12288 ... 12288 blocks read: OK

TINY4412 # bootm 40007fc0   执行DDR--40007fc0地址处的二进制文件
Boot with zImage

Starting kernel ...

Uncompressing Linux... done, booting the kernel.    

image-20220124140814996

(2)设置UBOOT启动成功自动引导内核

TINY4412 # setenv bootcmd 'mmc read 0 40007fc0 421 3000;bootm 40007fc0' U-BOOT启动成功之后自动执行
TINY4412 # save 保存设置
或者使用bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000

image-20220124140849754

2.13 分区命令-fdisk

查看帮助:

TINY4412 # ? fdisk
fdisk - fdisk for sd/mmc. //硬盘分区工具
Usage:
fdisk -p <device_num>   - print partition information    //打印分区信息
fdisk -c <device_num> [<sys. part size(MB)> <user data part size> <cache part size>]
        - create partition  //创建分区(分区单位是M)

(1)查看分区信息示例

TINY4412 # fdisk -p 0   //查看SD卡分区信息

分区          大小        扇区开始地址        扇区数量(512字节一个扇区)         分区ID名称
partion #    size(MB)        block start #             block count                        partition_Id 
   1          1028          7456058              2106822                           0x06 
   4             0         28049408               441                              0x00 

image-20220124141021889

(2)给SD卡分区示例

(分区时–会自行在SD卡开头大约66M后的空间开始分区,因为开头部分需要用来存放内核与U-BOOT)

TINY4412 # fdisk -c 0 320 2057 520    //给SD卡分区, -c 表示分区
fdisk is completed     //提示分区完成

分区          大小        扇区开始地址        扇区数量(512字节一个扇区)         分区ID名称
partion #    size(MB)     block start #               block count                     partition_Id 
   1          4416          6090216              9045762                        0x0C 
   2           320           134343              656788                         0x83 
   3          2062           791131              4224341                        0x83 
   4           524          5015472              1074744                        0x83 

image-20220124141108289

2.14 指定EMMC的分区文件系统格式

U-BOOT支持格式化的文件系统格式:

fatformat- fatformat - disk format by FAT32
ext3format- ext3format - disk format by ext3
ext2format- ext2format - disk format by ext2

查看 fatformat命令使用帮助:

TINY4412 # ? fatformat
fatformat - fatformat - disk format by FAT32
            指定磁盘的格式位FAT32

Usage:
fatformat <interface(only support mmc)> <dev:partition num>  用法格式
        - format by FAT32 on 'interface'      

其他两个命令,用法一样!

(1)指定分区命令-用法示例

fatformat  mmc 0:1 	    //表示将第0个盘的第一个分区初始化为 fat
ext3format mmc 0:2 	    //表示将第0个盘的第二个分区初始化为 ext3
ext2format mmc 0:3       //表示将第0个盘的第三个分区初始化为  ext2
ext3format mmc 0:4	    //表示将第0个盘的第四个分区初始化为  ext3

image-20220124141306110

(2)SD卡分区文件系统格式化完毕,将SD卡插入电脑,查看SD卡的分区信息

image-20220124141338477

(3)将SD卡挂载进虚拟机,查看设备节点。

image-20220124141411181

image-20220124141436392

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。