zoukankan      html  css  js  c++  java
  • 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    ................

  • 相关阅读:
    将博客搬至CSDN
    机器学习中的超参数(Hyperparameters in machine learning)
    《机器学习笔记》-环境配置
    采用KNN算法实现一个简单的推荐系统
    推荐系统介绍:(协同过滤)—Intro to Recommender Systems: Collaborative Filtering
    推荐系统中TopN与kNN的区别
    采用KNN算法实现一个简单的推荐系统
    k-medoids与k-Means聚类算法的异同
    使用Spring Initializer快速创建Spring Boot项目
    Spring 自动注入
  • 原文地址:https://www.cnblogs.com/zym0805/p/6322105.html
Copyright © 2011-2022 走看看