uboot下emmc內容燒寫(拷貝)步驟


一、目的:嵌入式開發板,通過emmc上的內核文件加載啟動linux操作系統,以及存放其他程序文件。需要將所需文件先寫入emmc中。

二、總體步驟是:uboot啟動后,進入linux下,將emmc分區並格式化,uboot下支持fat和ext2的格式,這里用fat格式,並掛載,然后放入所需要的文件。這樣重啟后,進入uboot下,將emmc中的文件load到內存中運行。

三、uboot下emmc內容燒寫(拷貝)步驟:

1、uboot啟動后,輸入mmc info有mmc的相關信息

2、通過tftp或其他方式啟動linux

3、linux啟動后,輸入fdisk -l能看到/dev/mmcblk0的信息

4、linux下用fdisk命令對mmc分區,格式化

#fdisk /dev/mmcblk0

fdisk命令都是非常簡單的。
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): m
Command action
a   toggle a bootable flag
b   edit bsd disklabel
c   toggle the dos compatibility flag
d   delete a partition
l   list known partition types
m   print this menu
n   add a new partition
o   create a new empty DOS partition table
p   print the partition table
q   quit without saving changes
s   create a new empty Sun disklabel
t   change a partition's system id
u   change display/entry units
v   verify the partition table
w   write table to disk and exit
x   extra functionality (experts only)
先P,看看sd卡的分區現狀。
然后d,刪除原分區
n,創建分區

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-62528, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-62528, default 62528):  +1500M

t,指定分區類型,
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

這樣就分好了第一個分區,並且指定了分區為fat16

 好了,看看成果。

Command (m for help): p

Disk /dev/mmcblk0: 2048 MB, 2048917504 bytes
4 heads, 16 sectors/track, 62528 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6f20736b

Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1       48001     1536024    6  FAT16
/
好了,把分區信息寫入磁盤。

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

下面開始格式化。
首先是fat16分區
#mkdosfs  /dev/mmcblk0p1 

看一下格式化后的

~ # fdisk -l   

Disk /dev/mmcblk0: 1920 MB, 1920991232 bytes
4 heads, 16 sectors/track, 58624 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1               1       58624     1875960   6 FAT16

 

把emmc掛載在一目錄下
~ # mount /dev/mmcblk0p1 /vm
1       58624     1875960   6 FAT16

這樣就可以將文件拷貝到/vm下,這里新建了一txt文件,並輸入內容,重啟后在uboot下查看emmc中是否有改文件。

~ # cd vm
/vm # ls
/vm # vi a.txt

11111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000  
11111111111111111111111111111111111111111111    
00000000000000000000000000000000000000000000
 
 #reboot

 

重啟后進入uboot下,查看mmc設備

Octeon# mmc list
Octeon MMC/SD0: 0

用fatls命令查看mmc下的文件信息,可以看到有linux下建的a.txt文件

Octeon #fatls mmc 0
      181   a.txt

1 file(s), 0 dir(s)

將mmc中a.txt拷貝到內存中查看內容

先看一下原來內存的信息

Octeon# md 30000000
30000000: 00000000 00000000 00000000 5f800000    ............_...
30000010: 00000000 00000000 00000000 00000000    ................
30000020: 00000000 00000000 00000000 00000000    ................
30000030: 00000000 00000000 00000000 00000000    ................
30000040: 00000000 00000000 00000000 00000000    ................
30000050: 00000000 00000000 00000000 00000000    ................
30000060: 00000000 00000000 00000000 00000000    ................
30000070: 00000000 00000000 00000000 00000000    ................
30000080: 00000000 00000000 00000000 00000000    ................
30000090: 00000000 00000000 00000000 00000000    ................
300000a0: 00000000 00000000 00000000 00000000    ................
300000b0: 00000000 00000000 00000000 00000000    ................
300000c0: 00000000 00000000 00000000 00000000    ................
300000d0: 00000000 00000000 00000000 00000000    ................
300000e0: 00000000 00000000 00000000 00000000    ................
300000f0: 00000000 00000000 00000000 00000000    ................

將mmc中a.txt load到內存中

Octeon# fatload mmc 0 30000000 a.txt
reading a.txt

181 bytes read

查看內存信息,可以看到就是a.txt的內容,說明emmc內容寫入成功 。

Octeon# md 30000000
30000000: 31313131 31313131 31313131 31313131 

   1111111111111111
30000010: 31313131 31313131 31313131 31313131    1111111111111111
30000020: 31313131 31313131 31313131 0a303030    111111111111.000
30000030: 30303030 30303030 30303030 30303030    0000000000000000
30000040: 30303030 30303030 30303030 30303030    0000000000000000
30000050: 30303030 30303030 0a313131 31313131    00000000.1111111
30000060: 31313131 31313131 31313131 31313131    1111111111111111
30000070: 31313131 31313131 31313131 31313131    1111111111111111
30000080: 31313131 310a3030 30303030 30303030    11111.0000000000
30000090: 30303030 30303030 30303030 30303030    0000000000000000
300000a0: 30303030 30303030 30303030 30303030    0000000000000000
300000b0: 30300a0a 0a000000 00000000 00000000    00..............
300000c0: 00000000 00000000 00000000 00000000    ................
300000d0: 00000000 00000000 00000000 00000000    ................
300000e0: 00000000 00000000 00000000 00000000    ................
300000f0: 00000000 00000000 00000000 00000000    ................


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM