0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式Linux開(kāi)發(fā)-uboot常用命令介紹(上篇)

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-08-14 08:54 ? 次閱讀

1. 前言

U-boot是一種開(kāi)源bootloader, 作用是用來(lái)引導(dǎo)操作,以及給開(kāi)發(fā)人員提供測(cè)試調(diào)試工具。本身算是個(gè)精簡(jiǎn)的Linux系統(tǒng),主要是負(fù)責(zé)硬件的初始化和引導(dǎo),本身帶有一些工具,作為引導(dǎo)程序,常作為嵌入式設(shè)備的引導(dǎo)。當(dāng)真正的系統(tǒng)開(kāi)始運(yùn)行的時(shí)候U-boot就把管理權(quán)限交了出去。

選擇U-Boot的理由: ① 開(kāi)放源碼; ② 支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android; ③ 支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS; ④ 較高的可靠性和穩(wěn)定性; ⑤ 高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等; ⑥ 豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤(pán)等; ⑦ 較為豐富的開(kāi)發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)絡(luò)技術(shù)支持;

U-BOOT工作模式

U-Boot的工作模式有啟動(dòng)加載模式和下載模式。啟動(dòng)加載模式是Bootloader的正常工作模式,嵌入式產(chǎn)品發(fā)布時(shí),Bootloader必須工作在這種模式下,Bootloader將嵌入式操作系統(tǒng)從FLASH中加載到SDRAM中運(yùn)行,整個(gè)過(guò)程是自動(dòng)的。下載模式就是Bootloader通過(guò)某些通信手段將內(nèi)核映像或根文件系統(tǒng)映像等從PC機(jī)中下載到目標(biāo)板的FLASH中。用戶可以利用Bootloader提供的一些命令接口來(lái)完成自己想要的操作。

當(dāng)前測(cè)試uboot命令的開(kāi)發(fā)板是友善之臂tin441,使用三星的EXYNOS4412,本篇文章重點(diǎn)是介紹uboot命令行的命令功能,用法,使用的uboot版本是2010.12,是友善之臂官方提供的uboot。

image-20220124133952572

2. UBOOT命令介紹

2.1 幫助命令--help

查看當(dāng)前的UBOOT支持那些命令。

TINY4412 # help
?    - alias for 'help'
base  - 打印一組地址偏移量
bdinfo - 開(kāi)發(fā)板的信息結(jié)構(gòu)
boot  - boot default, i.e., run 'bootcmd'
bootd  - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm  - 從內(nèi)存啟動(dòng)應(yīng)用程序
bootp  - 通過(guò)使用BOOTP / TFTP協(xié)議的網(wǎng)絡(luò)引導(dǎo)映像
bootvx - Boot vxWorks from an ELF image
chpart - 更改活動(dòng)分區(qū) 
cmp   - memory compare
coninfo - print console devices and information
cp   - 內(nèi)存拷貝
crc32  - 檢驗(yàn)和的計(jì)算 
dcache - 啟用或禁用數(shù)據(jù)緩存
dnw   - dnw   - USB設(shè)備進(jìn)行初始化并準(zhǔn)備好接受Windows server(特定的)
?
echo  - echo args to console
editenv - 修改環(huán)境變量
emmc  - 打開(kāi)/關(guān)閉eMMC引導(dǎo)分區(qū)
env   - 環(huán)境處理命令
exit  - 退出腳本
ext2format- ext2 ext2format——磁盤(pán)格式
?
ext2load- 從Ext2文件系統(tǒng)加載二進(jìn)制文件
ext2ls - 在一個(gè)目錄列表文件(默認(rèn)/)
ext3format- ext3 ext3format——磁盤(pán)格式
?
false  - 什么也不做,但沒(méi)有成功
fastboot- fastboot——使用USB fastboot協(xié)議
?
fatformat- FAT32 fatformat——磁盤(pán)格式
?
fatinfo - fatinfo——打印文件系統(tǒng)的信息
fatload - fatload——從dos加載二進(jìn)制文件的文件系統(tǒng)
?
fatls  - 一個(gè)目錄列表文件(默認(rèn)/)
fdisk  - fdisk for sd/mmc.
?
go   - 在“addr”啟動(dòng)應(yīng)用程序
help  - 打印命令描述/使用幫助
icache - enable or disable instruction cache
iminfo - print header information for application image
imxtract- extract a part of a multi-image
itest  - return true/false on integer compare
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)
loop  - infinite loop on address range
md   - memory display
mm   - memory modify (auto-incrementing address)
mmc   - MMC子系統(tǒng)
mmcinfo - mmcinfo -- display MMC info
movi  - movi - sd/mmc r/w sub system for SMDK board
mtdparts- define flash/nand partitions
mtest  - simple RAM read/write test
mw   - memory write (fill)
nfs   - boot image via network using NFS protocol
nm   - memory modify (constant address)
ping  - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
reginfo - print register information
reset  - Perform RESET of the CPU
run   - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
showvar - print local hushshell variables
sleep  - delay execution for some time
source - run script from memory
test  - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
true  - do nothing, successfully
usb   - USB sub-system
version - print monitor version
復(fù)制代碼

2.2 查看具體命令的使用方法--help

格式: help <你想要查的指令> 或者 ? <你想要查的指令> , 甚至 h <你想要查的指令縮寫(xiě)>。

TINY4412 # help sleep
sleep - 延遲執(zhí)行一段時(shí)間
?
Usage:
sleep N
  - 延遲執(zhí)行N秒(N是_decimal_ ! ! !)
復(fù)制代碼

image-20220124130542141

2.3 打印環(huán)境變量--printenv

TINY4412 # printenv
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 400000;bootm 40008000 41000000
bootdelay=3
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.0.1
ipaddr=192.168.0.20
netmask=255.255.255.0
serverip=192.168.0.10
?
Environment size: 416/16380 bytes
復(fù)制代碼

baudrate: 當(dāng)前的波特率。 一般不修改。 bootcmd: 啟動(dòng)命令。 bootdelay:?jiǎn)?dòng)命令 bootcmd 延時(shí)執(zhí)行的時(shí)間。 ethaddr: 網(wǎng)卡 MAC 地址。 gatewayip:網(wǎng)關(guān) IP 地址。 ipaddr: 開(kāi)發(fā)板 IP 地址。 netmask: 子網(wǎng)掩碼。 serverip: 服務(wù)器 IP(一般是 PC 的 IP,給開(kāi)發(fā)板提供各種網(wǎng)絡(luò)服務(wù)的主機(jī)的 IP) bootargs: u-boot 傳遞給操作系統(tǒng)內(nèi)核的啟動(dòng)參數(shù)。(很重要)

使用示例 打印指定的環(huán)境變量

格式: printenv 打印的環(huán)境變量名稱

TINY4412 # printenv bootargs
bootargs=root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
復(fù)制代碼

2.4 設(shè)置環(huán)境變量--setenv

查看幫助:
TINY4412 # help setenv
setenv - set environment variables -->作用是設(shè)置環(huán)境變量
?
Usage:  //命令使用方法
setenv name value ...  //使用格式
  - set environment variable 'name' to 'value ...'
   //設(shè)置環(huán)境變量“名稱”“數(shù)值……格式
setenv name
  - delete environment variable 'name'
//刪除環(huán)境變量
復(fù)制代碼

使用示例

設(shè)置上電的延時(shí)時(shí)間:
TINY4412 # setenv bootdelay 10   //設(shè)置上電延時(shí)時(shí)間為10秒
TINY4412 # saveenv        //保存設(shè)置
Saving Environment to SMDK bootable device...
done
?
設(shè)置波特率示例:
TINY4412 # setenv baudrate 115200   //設(shè)置波特率為115200
## Switch baudrate to 115200 bps and press ENTER ...  //設(shè)置完需要重啟開(kāi)發(fā)板,自動(dòng)生效
?
刪除環(huán)境變量示例:
setenv baudrate  //刪除baudrate環(huán)境變量
復(fù)制代碼

引用環(huán)境變量示例:

TINY4412 # setenv timer 10   //隨便設(shè)置一個(gè)環(huán)境變量
TINY4412 # setenv bootdelay ${timer}  //引用環(huán)境變量
TINY4412 # save           //保存環(huán)境變量
Saving Environment to SMDK bootable device...
done
TINY4412 # print
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
bootcmd=movi read kernel 0 40007fc0;bootm 40007fc0
bootdelay=10   //設(shè)置成功
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.18.1
ipaddr=192.168.18.123
netmask=255.255.255.0
serverip=192.168.18.124
timer=10  //設(shè)置的新環(huán)境變量
?
Environment size: 389/16380 bytes
TINY4412 # 
復(fù)制代碼

2.5 設(shè)置bootargs參數(shù)

bootargs是環(huán)境變量中的重中之重,甚至可以說(shuō)整個(gè)環(huán)境變量都是圍繞著bootargs來(lái)設(shè)置的。

coherent_pool參數(shù):

設(shè)置DMA的大小
示例: coherent_pool=2M
復(fù)制代碼

本地掛載示例

set bootargs root=/dev/mmcblk0p2 rootfstype=ext3 init=/linuxrc console=ttySAC0,115200
?
set bootargs root=/dev/mmcblk0p2 rw rootfstype=ext3 init=/linuxrc console=ttySAC0,115200
復(fù)制代碼

NFS網(wǎng)絡(luò)掛載示例:

set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/nfs_root ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
復(fù)制代碼

root參數(shù)用來(lái)指定根文件系統(tǒng)掛載的位置。

nfsroot參數(shù)是NFS網(wǎng)絡(luò)文件系統(tǒng)掛載才需要設(shè)置,后面跟著服務(wù)器的NFS地址,掛載目錄

ip參數(shù)是設(shè)置開(kāi)發(fā)板的網(wǎng)卡IP地址,NFS網(wǎng)絡(luò)掛載時(shí)必須設(shè)置。

init 是指定掛載文件系統(tǒng)之后運(yùn)行的腳本,用來(lái)做一些系統(tǒng)初始化。

2.6 查看開(kāi)發(fā)板的配置信息--bdinfo

TINY4412 # bdinfo
arch_number = 0x00001200 ->開(kāi)發(fā)板的機(jī)器碼, 用來(lái)引導(dǎo)操作系統(tǒng)的內(nèi)核
boot_params = 0x40000100 ->啟動(dòng)參數(shù)存儲(chǔ)的內(nèi)存位置
DRAM bank = 0x00000000 -> DRAM 編號(hào),這里表示是第 0 個(gè) DDR
-> start = 0x40000000  -->DRAM 的起始地址
-> size = 0x10000000   -->DRAM 的大小 ( 0x10000000 /1024 /1024 = 256M)
DRAM bank = 0x00000001 -> DRAM 編號(hào),這里表示是第 1 個(gè) DDR
-> start = 0x50000000  -->DRAM 的起始地址
-> size = 0x10000000   -->DRAM 的大小( 0x10000000 /1024 /1024 = 256M)
DRAM bank = 0x00000002-> DRAM 編號(hào),這里表示是第 2 個(gè) DDR
-> start = 0x60000000  -->DRAM 的起始地址
-> size = 0x10000000   ->DRAM 的大小( 0x10000000 /1024 /1024 = 256M)
DRAM bank = 0x00000003-> DRAM 編號(hào),這里表示是第 3 個(gè) DDR
-> start = 0x70000000  ->DRAM 的起始地址
-> size = 0x0FF00000   ->DRAM 的大小( 0x10000000 /1024 /1024 = 256M)
ethaddr = 00:40:5c:26:0a:5b ->網(wǎng)卡 MAC 地址(DM9600)
ip_addr = 192.168.0.20   ->開(kāi)發(fā)板的 IP
baudrate = 0      bps ->波特率,這里是代碼有問(wèn)題,應(yīng)該 115200
TLB addr = 0x3FFF0000   ->MMU(CPU) 映射表存儲(chǔ)位置
relocaddr = 0xC3E00000   ->代碼重新定位的地址
reloc off = 0x00000000   ->重定位地址
irq_sp = 0xC3CFBF58    ->irq堆棧指針
sp start = 0xC3CFBF50   ->開(kāi)始地址堆棧指針 
FB base = 0x00000000   ->framebuffer基地址
復(fù)制代碼

2.7 內(nèi)存數(shù)據(jù)顯示->md

查看幫助:

TINY4412 # ? md
md - memory display 內(nèi)存數(shù)據(jù)顯示---只能顯示內(nèi)存中的數(shù)據(jù),就是說(shuō)只能在DDR地址中操作
?
Usage:
md [.b, .w, .l] address [# of objects] 
復(fù)制代碼

Md.b : 以字節(jié)方式顯示數(shù)據(jù) Md.w : 以字(2 個(gè)字節(jié)) Md.l : 以雙字(4 個(gè)字節(jié)) 以上表示以字節(jié)、字(2 個(gè)字節(jié))、雙字(4 個(gè)字節(jié))為單位進(jìn)行顯示

格式: Md.b <要顯示的地址> [顯示的數(shù)據(jù)個(gè)數(shù)]

TINY4412 # md.b 1000000 10   //將起始地址1000000處的10個(gè)數(shù)據(jù)顯示到終端
01000000: 06 00 00 ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
復(fù)制代碼

示例:

TINY4412 # md.b 1000000 10         一個(gè)字節(jié)顯示:
01000000: 06 00 00 ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
TINY4412 # md.w 1000000 10        兩個(gè)字節(jié)顯示
01000000: 0006 ea00 fffe eaff fffe eaff fffe eaff   ................
01000010: fffe eaff fffe eaff 301a ea00 301b ea00   .........0...0..
TINY4412 # md.l 1000000 10         四個(gè)字節(jié)顯示
01000000: ea000006 eafffffe eafffffe eafffffe   ................
01000010: eafffffe eafffffe ea00301a ea00301b   .........0...0..
01000020: e59f01a4 e3a01000 e5801000 e59f019c   ................
01000030: e5900000 e200003e e330003e 1a00000d   ....>...>.0.....
復(fù)制代碼

2.8 復(fù)制內(nèi)存命令 cp

查看幫助:

TINY4412 # help cp
cp - memory copy  內(nèi)存拷貝 --只能在內(nèi)存中拷貝,就是說(shuō)只能在DDR地址中操作
?
Usage:
cp [.b, .w, .l] source target count 源地址 目標(biāo)地址 數(shù)量個(gè)數(shù)
復(fù)制代碼

示例1:

TINY4412 # cp 100000 4000000 10
從起始地址100000開(kāi)始拷貝10個(gè)數(shù)據(jù)到4000000的地址處
復(fù)制代碼

示例2:

TINY4412 # md.b 46000000
46000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
TINY4412 # md.b 10000000     
10000000: 11 20 41 e4 08 00 05 08 05 00 00 00 10 00 00 00   . A.............
TINY4412 # cp 10000000 46000000 10   從起始地址10000000開(kāi)始拷貝10個(gè)數(shù)據(jù)到46000000的地址處
TINY4412 # md.b 46000000     
46000000: 11 20 41 e4 08 00 05 08 05 00 00 00 10 00 00 00   . A.............
復(fù)制代碼

image-20220124132620277

2.9 查看EMMC的信息->mmcinfo

查看幫助:

TINY4412 # help mmcinfo
mmcinfo - mmcinfo -- display MMC info  >輸出指定編號(hào) mmc 的信息, 是要指定的編號(hào)
?
Usage:
mmcinfo 
復(fù)制代碼

編號(hào)說(shuō)明: mmc 的編號(hào)是會(huì)變化的, Tiny4412 板上有 EMMC,有SD卡。這兩個(gè)都?xì)w類為 MMC。 編號(hào)是0,1。 但是誰(shuí)是0,誰(shuí)是 1,是不確定的, 和啟動(dòng)方式有關(guān)。 在哪個(gè)存儲(chǔ)器啟動(dòng),哪個(gè)就是編號(hào)就是0。

image-20220124132744606

查看SD卡信息:

TINY4412 # mmcinfo 0
Device: S3C_HSMMC2      設(shè)備名稱
Manufacturer ID: 2       制造商標(biāo)識(shí) ID
OEM: 544d          設(shè)備制造商
Name: SE08G          名稱
Tran Speed: 0   
Rd Block Len: 512        每一塊的大小,字節(jié)為單位
SD version 2.0         SD卡的版本
High Capacity: Yes        是否是大容量卡
Size: 7460MB (block: 15278080)  容量大小,(總共有多少個(gè)塊)
Bus Width: 4-bit         總線寬度,SD卡接口是4條線
Boot Partition Size: 0 KB      引導(dǎo)分區(qū)大小
復(fù)制代碼

查看EMMC的信息:

TINY4412 # mmcinfo 1
Device: S5P_MSHC4      設(shè)備
Manufacturer ID: 15     制造商ID
OEM: 100           原始設(shè)備制造商
Name: 4YMD3         名稱
Tran Speed: 0        Tran速度
Rd Block Len: 512      每一塊的大小,字節(jié)為單位
MMC version 4.0       MMC版本
High Capacity: Yes      是否是大容量卡
Size: 3728MB (block: 7634944) 卡的容量和總共的塊大小
Bus Width: 8-bit       總線寬度 
Boot Partition Size: 4096 KB 引導(dǎo)分區(qū)大小
復(fù)制代碼

2.10 mmc命令子系統(tǒng)

mmc不是單獨(dú)的命令,他是一個(gè)子系統(tǒng),支持多個(gè)命令。

查看mmc子系統(tǒng)的幫助信息

TINY4412 # help mmc
mmc - MMC sub system      MMC子系統(tǒng)
?
Usage:
mmc read  addr blk# cnt     --從 mmc 指定扇區(qū)讀取數(shù)據(jù)到 ddr 中
mmc write  addr blk# cnt     --寫(xiě) ddr 中的數(shù)據(jù)到指定 mmc 扇區(qū)中
mmc rescan            --重新掃描指定設(shè)備, 相當(dāng)于重新初始化
mmc erase  --擦除指定扇區(qū)
mmc list - lists available devices     --列出有效的 mmc 設(shè)備
復(fù)制代碼

參數(shù)說(shuō)明:

: mmc 編號(hào),編號(hào)原則同前面說(shuō)的,就是對(duì)哪一個(gè)設(shè)備操作。
addr: DDR3 內(nèi)存地址;
blk#: 要讀/寫(xiě)的 mmc 扇區(qū)地址起始地址;
cnt:  要讀/寫(xiě)的 mmc 扇區(qū)數(shù)量;
boot: 引用分區(qū),一般是操作 bl1,bl2,u-boot 的 mmc 扇區(qū)范圍。
user:  用戶分區(qū), 一般是操作內(nèi)核,文件系統(tǒng)的 mmc 扇區(qū)范圍。
:要擦除的 mmc 扇區(qū)起始地址;
:要擦除的 mmc 扇區(qū)數(shù)量;
復(fù)制代碼

mmc 命令中的參數(shù)都是 16 進(jìn)制表示,不是 10 進(jìn)制表示

(1)從MMC扇區(qū)讀數(shù)據(jù)到DDR內(nèi)存中->mmc read

格式:mmc read  addr blk# cnt
blk#:要讀/寫(xiě)的 mmc 扇區(qū)的起始地址 (十六進(jìn)制表示)
Cnt :要讀/寫(xiě)的 mmc 扇區(qū)數(shù)量(十六進(jìn)制表示)
addr: DDR3 內(nèi)存地址;
TINY4412 # mmc read 0 45000000 1 1
?
MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
?
這里是從SD卡的第1個(gè)扇區(qū)開(kāi)始,讀取一個(gè)扇區(qū)的數(shù)據(jù)到DDR的45000000地址處!
?
示例:
TINY4412 # md.b 48000000 10
48000000: ff ff ff ff ff ff ff ff ff ff ff ff bf ff ff ff   ................
?
//從SD卡第一個(gè)扇區(qū)開(kāi)始,讀取一個(gè)扇區(qū)的數(shù)據(jù)到DDR的48000000地址處
TINY4412 # mmc read 0 48000000 1 1
?
MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
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
復(fù)制代碼

image-20220124133040383

(2)mmc write --寫(xiě) ddr 中的數(shù)據(jù)到指定 mmc 扇區(qū)中

格式:mmc write  addr blk# cnt  --將 ddr 中的數(shù)據(jù)到寫(xiě)到指定mmc 扇區(qū)中
blk#:要讀/寫(xiě)的 mmc 扇區(qū)的起始地址(十六進(jìn)制表示)
Cnt :要讀/寫(xiě)的 mmc 扇區(qū)數(shù)量(十六進(jìn)制表示)
addr:DDR3 內(nèi)存地址;
示例:
TINY4412 # mmc write 0 48000000 1 1  從DDR 48000000地址處,寫(xiě)1個(gè)扇區(qū)的數(shù)據(jù)到SD的第1個(gè)扇區(qū)
?
MMC write: dev # 0, block # 1, count 1 ... 1 blocks written: OK
復(fù)制代碼

(3)擦除指定扇區(qū)

格式:
mmc erase  --擦除指定扇區(qū)
參數(shù)說(shuō)明:
:要擦除的 mmc 扇區(qū)起始地址
:要擦除的 mmc 扇區(qū)數(shù)量
boot: 引用分區(qū)
User: 用戶分區(qū)
為了方便比較,先將SD卡的第1個(gè)扇區(qū)內(nèi)容讀到DDR中。
?
讀出第10個(gè)扇區(qū)的數(shù)據(jù)
TINY4412 # mmc read 0 48000000 1 1
?
MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
?
顯示第1個(gè)扇區(qū)的數(shù)據(jù)
TINY4412 # md.b 48000000 30    
48000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79   .i...}.f.k.n.y.y
48000010: 07 00 00 ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
48000020: fe ff ff ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
 
?
擦除SD卡的第一個(gè)扇區(qū)
TINY4412 # mmc erase user 0 1 1  
START: 1 BLOCK: 1     開(kāi)始1扇區(qū),擦除1扇區(qū)
high_capacity: 1     高容量
Capacity: 15278080    容量
?
Erase           擦除
?
 512 B erase Done    512字節(jié)
MMC erase Success.!! MMC擦除成功。! !
 
?
再讀再顯示
TINY4412 # mmc read 0 40000000 1 1
?
MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
TINY4412 # md.b 40000000 30    
40000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
40000010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
40000020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
 
?
恢復(fù)數(shù)據(jù),再讀再顯示
TINY4412 # mmc write 0 48000000 1 1  將DDR里的數(shù)據(jù)寫(xiě)入SD卡中
?
MMC write: dev # 0, block # 1, count 1 ... 1 blocks written: OK
TINY4412 # mmc read 0 40000000 1 1  再次讀出數(shù)據(jù)
?
MMC read: dev # 0, block # 1, count 1 ... 1 blocks read: OK
TINY4412 # md.b 40000000 30     顯示---數(shù)據(jù)已經(jīng)恢復(fù)
40000000: a3 69 d3 18 e9 7d b9 66 d1 6b d5 6e d4 79 a6 79   .i...}.f.k.n.y.y
40000010: 07 00 00 ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
40000020: fe ff ff ea fe ff ff ea fe ff ff ea fe ff ff ea   ................
復(fù)制代碼

(4)列出MMC設(shè)備--mmc list

TINY4412 # mmc list
S3C_HSMMC2: 0 --- 0 編號(hào)的 mmc 設(shè)備,這里接 SD 卡
S5P_MSHC4: 1 --- 1 編號(hào)的 mmc 設(shè)備,這里接 開(kāi)發(fā)板板載的EMMC
復(fù)制代碼

2.11 查看MMC分區(qū)信息--fatinfo

TINY4412 # help fatinfo
fatinfo - fatinfo - print information about filesystem 
           打印文件系統(tǒng)信息
?
Usage:
fatinfo   格式說(shuō)明
  - print information about filesystem from 'dev' on 'interface'
?
參數(shù)說(shuō)明:
: mmc 或 usb;
dev: 設(shè)備編號(hào);
part: 設(shè)備分區(qū)號(hào)
?
?
查看第0個(gè)設(shè)備信息---這里是SD卡:
TINY4412 # fatinfo mmc 0  
-----Partition 1-----
Partition1: Start Address(0x2e2e2e2e), Size(0x2e2e2e2e)
分區(qū)1      起始地址         大小
------------------------
-----Partition 2-----
Partition1: Start Address(0x2e2e2e2e), Size(0x2e2e2e2e)
------------------------
-----Partition 3-----
Partition1: Start Address(0x2e2e2e2e), Size(0x2e2e2e2e)
------------------------
-----Partition 4-----
Partition1: Start Address(0x2e2e2e2e), Size(0x2e2e2e2e)
------------------------
Interface:  SD/MMC
接口
    
  Device 0: Vendor: Man 02544d Snr c9226e33 Rev: 2.1 Prod: SE08G
       Type: Removable Hard Disk 
       類型:可移動(dòng)硬盤(pán)
      
       Capacity: 14.5 MB = 0.0 GB (29840 x 512)
Partition 1: Filesystem: FAT32 "NO NAME   "
復(fù)制代碼[:part]>

下一篇繼續(xù)介紹。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207919
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    658

    瀏覽量

    21929
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    124

    瀏覽量

    28056
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux常用命令匯總

    本篇文章一個(gè)介紹了約40個(gè)Linux常用命令,這些命令也正是Linux入門(mén)的精髓之處,所以,對(duì)于這些命令
    發(fā)表于 10-25 15:08 ?621次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>常用命令</b>匯總

    Linux常用命令介紹

    大家好,我是嵌入式老林,從事嵌入式軟件開(kāi)發(fā)多年,今天分享的內(nèi)容是Linux基礎(chǔ)知識(shí),最常用命令
    發(fā)表于 07-14 15:58 ?330次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>常用命令</b><b class='flag-5'>介紹</b>

    請(qǐng)問(wèn)嵌入式Linux GCC常用命令有哪些?

    嵌入式Linux GCC常用命令有哪些?
    發(fā)表于 04-19 09:39

    了解嵌入式系統(tǒng)的應(yīng)用以及Linux系統(tǒng)的結(jié)構(gòu)和常用命令

    #嵌入式系統(tǒng)開(kāi)發(fā)概述及Linux基礎(chǔ)本人進(jìn)度計(jì)劃及任務(wù):了解嵌入式系統(tǒng)的應(yīng)用以及Linux系統(tǒng)的結(jié)構(gòu)和
    發(fā)表于 12-22 08:24

    嵌入式Linux常用命令

    嵌入式Linux常用命令,比較基礎(chǔ),非常實(shí)用,適合新手學(xué)習(xí)。
    發(fā)表于 11-24 15:22 ?3次下載

    Linux終端常用命令大全

    Linux終端常用命令大全,通俗易懂,容易上手。包含所有命令,方便查找各個(gè)指令功能。
    發(fā)表于 04-28 16:30 ?15次下載

    vim常用命令

    vim常用命令
    發(fā)表于 01-08 15:59 ?3次下載

    Linux教程之Linux常用命令大全

    Linux教程之Linux常用命令大全
    的頭像 發(fā)表于 03-30 10:34 ?5551次閱讀

    周立功嵌入式Linux開(kāi)發(fā)教程上冊(cè)PDF電子書(shū)免費(fèi)下載

    本篇主要講述進(jìn)行嵌入式Linux 開(kāi)發(fā)所必備的基礎(chǔ)知識(shí), 以實(shí)用和夠用為標(biāo)準(zhǔn)進(jìn)行介紹,與嵌入式Linux
    發(fā)表于 11-13 17:28 ?114次下載
    周立功<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>教程上冊(cè)PDF電子書(shū)免費(fèi)下載

    linux常用命令手冊(cè)

    linux常用命令手冊(cè)免費(fèi)下載。
    發(fā)表于 06-01 14:59 ?63次下載

    linux常用命令大全

    linux常用命令大全,一些常用命令都可以找到
    發(fā)表于 03-03 09:20 ?0次下載

    嵌入式Linux開(kāi)發(fā)-uboot常用命令介紹(下篇)

    這篇文章是UBOOT命令介紹的下篇,接著上篇文章介紹剩下的幾個(gè)命令用法。
    的頭像 發(fā)表于 08-14 08:55 ?1982次閱讀

    Linux常用命令

    Linux常用命令
    的頭像 發(fā)表于 01-12 11:19 ?1037次閱讀

    Linux常用命令手冊(cè)分享

    linux常用命令合集
    發(fā)表于 04-26 11:46 ?1次下載

    linux常用命令及用法

    Linux是一種開(kāi)源的操作系統(tǒng),它以穩(wěn)定、高效和安全的特點(diǎn)受到廣大用戶的喜愛(ài)。掌握Linux常用命令及其用法對(duì)于操作系統(tǒng)的管理和開(kāi)發(fā)都至關(guān)重要。本文將詳盡、詳實(shí)、細(xì)致地
    的頭像 發(fā)表于 11-17 09:47 ?545次閱讀