zoukankan      html  css  js  c++  java
  • UBoot常用命令及内核下载与引导

    一、常用命令

    1. 获取帮助

    ① help 或 ?

    2. 环境变量与相关命令

    (1)环境变量

    ① bootdely

    ② baudrate

    ③ netmask

    ④ ethaddr

    ⑤ bootfile

    ⑥ bootargs

    ⑦ bootcmd

    ⑧ serverip

    ⑨ ipaddr

    ⑩ stdin

    ⑪ stdout

    ⑫ stderr

    (2)相关命令

    ① printenv

    ② setenv:setenv name value

    ③ saveenv

    3. 串口传输命令

    ① loadb

    ② loadx

    ③ loady

    4. 网络命令

    ① ping

    ② dhcp

    ③ rarpboot

    ④ nfs

    ⑤ tftpboot:tftpboot MemAddr FileName(tftp 0x30008000 uImage)

    ⑥ bootp

    5. Nand Flash操作

    ① nand info

    ② nand device [dev]

    ③ nand read addr off size

    ④ nand write addr off size

    ⑤ nand write[.yaffs[1]] addr off size

    ⑥ nand erase [clean] [off size]

    ⑦ nand bad

    ⑧ nand dump[.oob] off

    ⑨ nand srub

    ⑩ nand markbad off

    ⑪ nboot addr dev offset

    6. 内存、寄存器操作命令

    ① nm: 修改内存值(指定地址)

      格式:nm[.b, .w, .l] addr

    ② mm:修改内存值(地址自动加1)

      格式:mm[.b, .w, .l] addr

    ③ md:显示内存值

      格式:md[.b, .w, .l] addr

    ④ mw:用指定的数据填充内存

      格式:mw[.b, .w, .l] addr value [count]

    ⑤ cp:内存的拷贝(包含内存与Nor Flash间的数据拷贝)

      格式:cp[.b, .w, .l] srcAddr dstAddr count

    7. Nor Flash操作命令

    ① flinfo:

    ② protect:

    ③ erase:

    8. USB操作命令

    ① usb reset

    ② usb stop [f]

    ③ usb tree

    ④ usb info [dev]

    ⑤ usb storage

    ⑥ usb dev [dev]

    ⑦ usb part [dev]

    9. SD卡(MMC)操作命令

    ① mmc init [dev]

    ② mmc device [dev]

    注:SD卡只有初始化和设备信息的显示,读写时通过文件系统名利实现的。

    10. FAT文件系统命令

    ① fatinfo: 显示文件系统相关信息

      格式: fatinfo <interface> <dev[:part]>

    ② fatload: 从FAT32系统中读取二进制文件到SDRAM

      格式: fatload <interface> <dev[:part]> <addr> <filename> [bytes]

    ③ fatls: 列出FAT32文件系统中目录中的文件

      格式: fatls <interface> <dev[:part]> <directory>

    11. 系统引导命令

    ① boot: 运行ENV"bootcmd"中指定的命令

    ② bootd: 同boot

    ③ bootm: 启动在SDRAM中用UBoot的mkimage工具处理过的内核映像

    12. 其它命令

    ① run:运行一个脚本

    MINI2440 :) setenv Test echo Hello;ver
    MINI2440 :) run Test
    Hello
    
    U-Boot 2013.10 (Aug 24 2018 - 14:33:27)
    arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2008q3-72) 4.3.2
    GNU ld (Sourcery G++ Lite 2008q3-72) 2.18.50.20080215
    MINI2440 :) 

    ② reset:重启CPU

    二、内核下载

    使用U-Boot将映像文件烧写到板子上的Flash,一般步骤是:

    ① 通过网络、串口、U盘、SD卡等方式将文件传输到SDRAM

    ② 使用Nand Flash 或 Nor Flash相关的读写命令将SDRAM中的数据烧入Flash

    (1)通过SD卡烧入Nand Flash

    mmc init
    fatload mmc 1 0x30008000 uImage
    nand erase 0 0x40000
    nand write 0x30008000 0 0x40000

    (2)通过U盘烧入Nor Flash

    usb start
    usb part 0
    fatload usb 0:4 0x30008000 u-boot.bin
    protect off all
    erase 0x00 0x3fff
    cp.b 0x30008000 0x00 0x3fff

    (3)通过TFTP服务烧入Nand Flash

    tftpboot 0x30008000 192.168.1.102:uImage
    nand erase 0 0x40000
    nand write 0x30008000 0x00 0x40000

    (4)通过NFS服务烧入Nand Flash

    nfs0x30008000 192.168.1.102:/nfsroot/uImage
    nand erase 0 0x40000
    nand write 0x30008000 0x00 0x40000

    三、内核引导

    内核的引导步骤如下:

    ① 用U-Boot的mkimage工具处理内核映像zImage,生成uImage

    ② 用过网络、串口、U盘、SD卡等方式将处理过的内核映像uImage传输到SDRAM的一定位置(一般使用0x30008000)

    ③ 使用bootm等内核引导命令来启动内核

    (1)通过SD卡引导内核

    mmc init
    fatload mmc 1 0x30008000 uImage
    bootm 0x30008000

    (2)通过TFTP服务引导内核

    tftpboot 0x30008000 192.168.1.102:uImage
    bootm 0x30008000

    (3)通过NFS服务引导内核

    nfs 0x30008000 192.168.1.102:/nfsroot/uImage
    bootm 0x30008000

    (4)通过Nand Flash引导内核

    nfs 0x30008000 192.168.1.102:/nfsroot/uImage
    nand erase 0x80000 0x200000
    nand write 0x30008000 0x80000 0x200000
    nand read 0x30008000 0x80000 0x200000
    bootm 0x30008000

    备注1:为什么要用U-Boot的mkimage工具处理内核映像zImage

      因为在用bootm命令引导内核的时候,bootm需要读取一个64字节的文件头,来获取这个内核映像所针对的COU体系结构、OS、加载到内存的位置、在内存中入口点的位置以及映像名等信息。这样bootm才能为OS设置好启动环境,并跳入内核映像的入口点。而mkimage就是添加这个文件头的专用工具。

    备注2:mkimage工具参数说明:

    ① -A:指定CPU体系结构

    ② -O:指定操作系统类型

    ③ -T:指定映像类型

    ④ -C:指定映像压缩方式

    ⑤ -a:指定映像在内存中的加载地址

    ⑥ -e:指定映像运行的入口点地址

    ⑦ -n:指定映像名

    ⑧ -d:指定制作映像的源文件

    示例:mkimage -n "Kevin" -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage

  • 相关阅读:
    Mongo库表占用空间统计
    修改elasticsearch默认索引返回数
    针对docker中的mongo容器增加鉴权
    自动化测试框架STAF介绍
    单点登陆思想
    Django请求流程
    python冒泡排序,可对list中的字典进行排序
    python合并list中各个字典中相同条件的累计数
    哎,linux nginx命令就是记不住啊
    python利用urllib2读取webservice接口数据
  • 原文地址:https://www.cnblogs.com/wulei0630/p/10635659.html
Copyright © 2011-2022 走看看