精华内容
参与话题
问答
  • uboot的常用命令

    千次阅读 2018-11-22 18:02:01
    help //列出当前uboot所有支持的命令 ... reset //重启uboot  bootm //用于启动内核  用法: bootm 0x42000000 //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址    bootz /...

        help   //列出当前uboot所有支持的命令

        help  命令   //查看指定命令的帮助

        reset   //重启uboot

        bootm   //用于启动内核

        用法: bootm 0x42000000   //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址

        

        bootz   //用于启动内核

        用法: bootz 0x42000000   //从内存地址0x42000000启动内核, 启动前需把内核镜像zImage存放到指定的内存地址

       

        printenv    //打印所有环境变量的值

        printenv  环境变量名   //查看指定的环境变量值

        bootdelay   // uboot启动后, 倒计时多少秒后自动执行环境变量bootcmd的语句

        bootcmd     // 倒计时到0后,自动执行里面的语句

        bootargs    // 是用于提供给内核的启动参数语句  

        setenv      //设置/修改/删除环境变量的值

          用法:

        setenv   环境变量名     //删除指定的环境变量

        setenv   myargs   "hello"  //设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值

        saveenv     //保存环境变量,环境变量修改过后必须执行此命令才可以保存起来,否则重启后环境变量就恢复了.

        loady    //用于从uart线下载文件到板上内存里(loadb, loads, loadx基本一样)

           用法:

            loady  0x40008000   //把下载的文件从内存地址0x40008000开始存放

            执行"loady 0x40008000"后, uboot就会进入等待状态,等着接收数据

            minicom具有通过uart传输文件的功能.

            按"ctrl+a", 松手后再按"s", 选择"ymodem", 在弹出的界面里按空格键选中要传的文件.

     

        md   内存地址   //用于查看内存地址上的值

            用法:

            md.b 0x40008000   100    //从内存地址0x40008000开始,查看0x100个字节并输出值

            md.w    0x40008000   100    //从内存地址0x40008000开始,查看0x100个16位值并输出值

            md.l    0x40008000   100    //从内存地址0x40008000开始,查看0x100个32位值并输出值     

     

        mw    //用于修改内存地址上的值

            用法:

            mw.b 0x40008000  0xab   100  //从内存地址0x40008000开始的0x100字节空间,设值为0xab

            mw.w    0x40008000  0xabcd 100  //从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcd

            mw.l    0x40008000  0xabcdef88 100    //从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88      

     

        go   //执行指定内存地址上的指令

           用法:

            go  0x40008000   

     

        mmc   // sd/mmc接口设备(sd卡, emmc)操作命令, 按扇区操作(每扇区512字节)

           用法:

            mmc   read  addr  blk  cnt  //从mmc设备上的第blk个扇区开始,共读出cnt个扇区到内存地址addr上

            mmc  write  addr  blk  cnt  //把内存地址addr上的数据写入mmc设备的第blk个扇区,共cnt个扇区大小

            mmc  dev     //用于当看当前的mmc设备是第几个

            mmc  erase  blk  cnt    //把mmc设备的第blk个扇区开始清零,共清除cnt个扇区大小 

            mmc  part   //列出当前mmc设备的分区信息

            mmc  list   //列出所有的mmc设备信息

     

        ext4ls  //查看存储设备的ext2/3/4分区里的内容

           用法:

            ext4ls  mmc  0:2   //查看第0个存储设备的第二个分区

     

        ext4load //从ext2/3/4分区里读出文件到指定的内存地址

           用法:

            ext4load mmc 0:2 0x40008000 /uImage  //从第0个存储设备的第2个分区的根目录读出uImage文件到内存地址0x40008000

     

        fatls  //查看存储设备的fat分区里的内容

           用法:

            fatls  mmc  0:1   //查看第0个存储设备的第1个分区(fat分区)

     

        fatload //从fat分区里读出文件到指定的内存地址

           用法:

            fatload mmc 0:1 0x40008000 /uImage  //从第0个存储设备的第1个分区的根目录读出uImage文件到内存地址0x40008000   

     

        fatwrite  //把内存上的数据存储到fat分区的一个文件里

           用法:

            fatwrite mmc 0:1 0x40008000 /my.txt 0x35  //把内存地址0x40008000开始的0x35个字节数据写入到第0个设备的第1个分区里,文件名为my.txt

     

        run   //执行指定的环境变量里的语句

        用法:

          run  bootcmd  //执行环境变量bootcmd里的语句

     

        //如uboot上已驱动好网络设备并环境变设好IP及PC端IP,还可以使用以下命令:

        tftpboot  0x40008000  文件名   // 通过网络下载文件到内存地址0x40008000, PC端需配置好tftp服务器  

        nfs   0x40008000  pc端IP:/带路径的文件名   //pc端需配置好nfs服务器

        ping     ip  //检测网络是否通

     

     

    展开全文
  • 02 uboot的常用命令及用法

    千次阅读 2017-05-23 13:19:00
    uboot是bootloader的一种,主要是用于引导内核启动. uboot除此功能外, 还带有很多其它功能.... help 命令 //查看指定命令的帮助 reset //重启uboot printenv //打印所有环境变量的值 printenv 环境变量

    uboot是bootloader的一种,主要是用于引导内核启动.
    uboot除此功能外, 还带有很多其它功能. 功能是通过命令来调用.

    uboot的命令:
    
        help   //列出当前uboot所有支持的命令
        help  命令   //查看指定命令的帮助
    
        reset   //重启uboot
    
        bootm   //用于启动内核 
          用法: bootm 0x42000000   //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址
    
        printenv    //打印所有环境变量的值
        printenv  环境变量名   //查看指定的环境变量值
          常用环境变量:
            bootdelay   // uboot启动后, 倒计时多少秒后自动执行环境变量bootcmd的语句
            bootcmd     // 倒计时到0后,自动执行里面的语句
            bootargs    // 是用于提供给内核的启动参数语句   
    
        setenv      //设置/修改/删除环境变量的值
          用法:
                setenv   环境变量名     //删除指定的环境变量
            setenv   myargs   "hello"  //设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值
    
        saveenv     //保存环境变量,环境变量修改过后必须执行此命令才可以保存起来,否则重启后环境变量就恢复了.
    
        loady    //用于从uart线下载文件到板上内存里(loadb, loads, loadx基本一样)
           用法:
            loady  0x40008000   //把下载的文件从内存地址0x40008000开始存放
            执行"loady 0x40008000"后, uboot就会进入等待状态,等着接收数据
            minicom具有通过uart传输文件的功能.
            按"ctrl+a", 松手后再按"s", 选择"ymodem", 在弹出的界面里按空格键选中要传的文件.
    
        md   内存地址   //用于查看内存地址上的值
            用法:
            md.b    0x40008000   100    //从内存地址0x40008000开始,查看0x100个字节并输出值
            md.w    0x40008000   100    //从内存地址0x40008000开始,查看0x100个16位值并输出值
            md.l    0x40008000   100    //从内存地址0x40008000开始,查看0x100个32位值并输出值     
    
        mw    //用于修改内存地址上的值
            用法:
            mw.b    0x40008000  0xab   100  //从内存地址0x40008000开始的0x100字节空间,设值为0xab
            mw.w    0x40008000  0xabcd 100  //从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcd
            mw.l    0x40008000  0xabcdef88 100    //从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88       
    
    
        go   //执行指定内存地址上的指令
           用法:
            go  0x40008000    
    
    
        mmc   // sd/mmc接口设备(sd卡, emmc)操作命令, 按扇区操作(每扇区512字节)
           用法:
            mmc   read  addr  blk  cnt  //从mmc设备上的第blk个扇区开始,共读出cnt个扇区到内存地址addr上
            mmc  write  addr  blk  cnt  //把内存地址addr上的数据写入mmc设备的第blk个扇区,共cnt个扇区大小
            mmc  dev     //用于当看当前的mmc设备是第几个
            mmc  erase  blk  cnt    //把mmc设备的第blk个扇区开始清零,共清除cnt个扇区大小 
            mmc  part   //列出当前mmc设备的分区信息
            mmc  list   //列出所有的mmc设备信息
    
    
        ext4ls  //查看存储设备的ext2/3/4分区里的内容
           用法:
            ext4ls  mmc  0:2   //查看第0个存储设备的第二个分区
    
        ext4load //从ext2/3/4分区里读出文件到指定的内存地址
           用法:
            ext4load mmc 0:2 0x40008000 /uImage  //从第0个存储设备的第2个分区的根目录读出uImage文件到内存地址0x40008000
    
        fatls  //查看存储设备的fat分区里的内容
           用法:
            fatls  mmc  0:1   //查看第0个存储设备的第1个分区(fat分区)
    
        fatload //从fat分区里读出文件到指定的内存地址
           用法:
            fatload mmc 0:1 0x40008000 /uImage  //从第0个存储设备的第1个分区的根目录读出uImage文件到内存地址0x40008000   
    
        fatwrite  //把内存上的数据存储到fat分区的一个文件里
           用法:
            fatwrite mmc 0:1 0x40008000 /my.txt 0x35  //把内存地址0x40008000开始的0x35个字节数据写入到第0个设备的第1个分区里,文件名为my.txt
    
    
        run   //执行指定的环境变量里的语句
           用法:
            run  bootcmd  //执行环境变量bootcmd里的语句
    
    
        //如uboot上已驱动好网络设备并环境变设好IP及PC端IP,还可以使用以下命令:
        tftpboot  0x40008000  文件名   // 通过网络下载文件到内存地址0x40008000, PC端需配置好tftp服务器  
        nfs   0x40008000  pc端IP:/带路径的文件名   //pc端需配置好nfs服务器
        ping     ip  //检测网络是否通
    
    
    展开全文
  • Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,...

           Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样, bootloader 就相当于 BIOS。
           uboot 的全称是 Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、 USB 等高级功能。

    Uboot 常用命令

           进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,如下图所示:
    Alt
           我们输入“help(或?) 命令名”既可以查看命令的详细用法,以“setenv”这个命令为例,我们输入如下命令即可查看“setenv”这个命令的用法:
    在这里插入图片描述

    信息查询命令

    常用的和信息查询有关的命令有 3 个: bdinfoprintenvversion

    • bdinfo 命令用于查看开发板信息

    在这里插入图片描述

    • printenv用于输出环境变量信息

           uboot 也支持 TAB 键自动补全功能,输入print然后按下 TAB 键就会自动补全命令,直接输入print也可以。
    在这里插入图片描述
           uboot 中的环境变量都是字符串,既然叫做环境变量,那么它的作用就和“变量”一样。比如 bootdelay 这个环境变量就表示 uboot 启动延时时间,默认 bootdelay=3,也就默认延时 3秒。前面说的 3 秒倒计时就是由 bootdelay 定义的,如果将 bootdelay 改为 5 的话就会倒计时 5s了。 uboot 中的环境变量是可以修改的,有专门的命令来修改环境变量的值.

    • version 用于查看 uboot 的版本号

    在这里插入图片描述
           从图 可以看出,当前 uboot 版本号为 2016.03, 2020 年 8 月 24 日编译的,编译器为 arm-linux-gnueabihf-gcc 等信息。

    环境变量命令

    • 修改环境变量

           环境变量的操作涉及到两个命令: setenvsaveenv,命令 setenv 用于设置或者修改环境变量的值。命令 saveenv 用于保存修改后的环境变量,一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。

           setenv的格式:

    setenv "命令" "值1 值2 值3"  或者
    setenv "命令"

           比如我们要将环境变量 bootdelay 该为 5,就可以使用如下所示命令:

    setenv bootdelay 5
    saveenv
    

    在这里插入图片描述
           当我们使用命令 saveenv 保存修改后的环境变量的话会有保存过程提示信息,根据提示可以看出环境变量保存到了 MMC(1)中,也就是 EMMC 中。因为我用的 EMMC版本的核心板, 所以会保存到MMC(1)中。

           修改 bootdelay 以后,重启开发板, uboot 就是变为 5 秒倒计时。

           有时候我们修改的环境变量值可能会有空格, 比如 bootcmd、 bootargs 等, 这个时候环境变量值就得用单引号括起来,比如下面修改环境变量 bootcmd 的值:

    setenv bootcmd 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
    saveenv
    

           上面命令设置 bootcmd 的值为“console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw”,其中“console=ttymxc0,115200”、“root=/dev/mmcblk1p2”、“rootwait”和“rw”相当于四组“值”,这四组“值”之间用空格隔开,所以需要使用单引号' '将其括起来,表示这四组“值”都属于环境变量 bootcmd。

    • 新建环境变量

           命令 setenv 也可以用于新建命令,用法就是修改环境变量一样,比如我们新建一个环境变量 author, author 的值为我的名字拼音: wanliyang,那么就可以使用如下命令:

    setenv author wanliyang
    saveenv
    

           新建命令 author 完成以后重启 uboot,然后使用命令 printenv 查看当前环境变量,如图:
    在这里插入图片描述

    • 删除环境变量

           setenv既然可以新建环境变量,那么就可以删除环境变量,删除环境变量也是使用命令 setenv,要删除一个环境变量只要给这个环境变量赋空值即可,比如我们删除掉上面新建的 author 这个环境变量,命令如下:

    setenv author
    saveenv
    

           上面命令中通过 setenv 给 author 赋空值,也就是什么都不写来删除环境变量 author。重启uboot 就会发现环境变量 author 没有了。

    内存操作命令

           内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、 nm、mm、 mw、 cp 和 cmp。我们依次来看一下这些命令都是做什么的。

    • md 命令

    md 命令用于显示内存值,格式如下:

    md[.b, .w, .l] address [# of objects]
    

           命令中的[.b .w .l]对应 byte、 word 和 long,也就是分别以 1 个字节、 2 个字节、 4 个字节来显示内存值。 address 就是要查看的内存起始地址, [# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度问为 20(十六进制为 0x14),如果显示格式为.b 的话那就表示 20 个字节;如果显示格式为.w 的话就表示 20 个 word,也就是 202=40 个字节;如果显示格式为.l 的话就表示 20 个 long,也就是 204=80 个字节。另外要注意:
           uboot 命令中的数字都是十六进制的!不是十进制的!
           uboot 命令中的数字都是十六进制的!不是十进制的!
           uboot 命令中的数字都是十六进制的!不是十进制的!

    md.b 80000000 10
    md.w 80000000 10
    md.l 80000000 10
    

           上面这三个命令都是查看以 0X80000000 为起始地址的内存数据,第一个命令以.b 格式显示,长度为 0x10,也就是 16 个字节;第二个命令以.w 格式显示,长度为 0x10,也就是 162=32个字节;最后一个命令以.l 格式显示,长度也是 0x10,也就是 164=64 个字节。这三个命令的执行结果如图 :
    在这里插入图片描述

    • nm命令

           nm 命令用于修改指定地址的内存值,命令格式如下:

    nm [.b, .w, .l] address
    

           nm 命令同样可以以.b、 .w 和.l 来指定操作格式,比如现在以.l 格式修改 0x80000000 地址的数据为 0x12345678。输入命令:
    Alt

    • mm命令

           mm 命令也是修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命令 nm 的话地址不会自增。比如以.l 格式修改从地址 0x80000000 开始的连续 4个内存块(4*4=12个字节)的数据为 0X05050505,操作如图 所示:
    在这里插入图片描述

    • mw 命令

           命令 mw 用于使用一个指定的数据填充一段内存,命令格式如下:

    mw [.b, .w, .l] address value [count]
    

           mw 命令同样可以以.b、 .w 和.l 来指定操作格式, address 表示要填充的内存起始地址, value为要填充的数据, count 是填充的长度。比如使用.l 格式将以 0X80000000 为起始地址的 0x10 个内存块(0x10 * 4=64 字节)填充为 0X0A0A0A0A,命令如下:

    mw.l 80000000 0A0A0A0A 10
    

           然后使用命令 md 来查看,如图所示:
    在这里插入图片描述

    • cp 命令

           cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,命令格式如下:

    cp [.b, .w, .l] source target count
    

           cp 命令同样可以以.b、 .w 和.l 来指定操作格式, source 为源地址, target 为目的地址, count为拷贝的长度。我们使用.l 格式将 0x80000000 处的地址拷贝到 0X80000100 处,长度为 0x10 个内存块(0x10 * 4=64 个字节),命令如下所示:

    cp.l 80000000 80000100 10
    

           结果如图所示:
    在这里插入图片描述

    • cmp 命令

           cmp 是比较命令,用于比较两段内存的数据是否相等,命令格式如下:

    cmp [.b, .w, .l] addr1 addr2 count
    

           cmp 命令同样可以以.b、 .w 和.l 来指定操作格式, addr1 为第一段内存首地址, addr2 为第二段内存首地址, count 为要比较的长度。我们使用.l 格式来比较 0x80000100 和 0X80000200 这两个地址数据是否相等,比较长度为 0x10 个内存块(16 * 4=64 个字节),命令如下所示:

    cmp.l 80000100 80000200 10
    

    在这里插入图片描述
           从图中我们可以看出,80000000和80000100的地址相同。但是 0x80002000 处的数据和 0x80003000 处的数据就不一样啦。

    网络操作命令

    uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linux kernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、 nfs 和 tftpboot等。
    在这里插入图片描述

    • ping 命令

           开发板的网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可以验证,直接 ping 服务器的 IP 地址即可,比如我的服务器 IP 地址为 192.168.1.117,命令如下:

    ping 192.168.1.117
    

    在这里插入图片描述

    • dhcp命令

           dhcp 用于从路由器获取 IP 地址,前提得开发板连接到路由器上的,如果开发板是和电脑直连的,那么 dhcp 命令就会失效。直接输入 dhcp 命令即可通过路由器获取到 IP 地址。
    在这里插入图片描述

    • nfs命令

           nfs 也就是网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,比如我们将linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中的 linux 镜像和设备树下载到开发板的 DRAM 中。

           我们一般使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过NFS 访问的文件都需要放到这个 NFS 目录中。准备好以后就可以使用 nfs 命令来将 zImage 下载到开发板 DRAM 的 0X80800000 地址处,命令如下:

    nfs 80800000 192.168.1.105:/home/wanli/linux/nfs/zImage
    

           命 令 中 的 “ 80800000 ” 表 示 zImage 保 存 地 址 ,“192.168.1.105:/home/zuozhongkai/linux/nfs/zImage”表示 zImage 在 192.168.1.250 这个主机中,路径为/home/wanli/linux/nfs/zImage
    在这里插入图片描述

    • ftp命令

           tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议, Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa,命令如下:

    sudo apt-get install tftp-hpa tftpd-hpa 
    

           和 NFS 一样, TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录,命令如下:

    mkdir /home/wanli/linux/tftpboot
    chmod 777 /home/wanli/linux/tftpboot
    

           最后配置 tftp,打开文件安装完成以后新建文件/etc/xinetd.d/tftp,然后在里面输入如下内容:

     server tftp
    {
    	 socket_type = dgram
    	 protocol = udp
    	 wait = yes
    	 user = root
    	 server = /usr/sbin/in.tftpd
    	 server_args = -s /home/wanli/linux/tftpboot/
    	 disable = no
    	 per_source = 11
    	 cps = 100 2
    	 flags = IPv4
    }
    

           完了以后启动 tftp 服务,命令如下:

    sudo service tftpd-hpa start
    

           打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:

    # /etc/default/tftpd-hpa
    
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/home/wanli/linux/tftpboot"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="-l -c -s"
    

           TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。最后输入如下命令, 重启 tftp 服务器:

    sudo service tftpd-hpa restart
    

           万事俱备,只剩验证了, uboot 中的 tftp 命令格式如下:

    tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
    

           看 起 来 和 nfs 命 令 格式 一 样 的 , loadAddress 是 文 件 在 DRAM 中 的存 放 地 址 ,[[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件。但是和 nfs 命令的区别在于, tftp 命令不需要输入文件在 Ubuntu 中的完整路径,只需要输入文件名即可。比如我们现在将 tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处,命令如下:

    tftp 80800000 zImage
    

    在这里插入图片描述

    EMMC 和 SD 卡操作命令

           uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,mmc 是一系列的命令,其后可以跟不同的参数。
    在这里插入图片描述
           注意: 加上 SD 卡一共有两个 MMC 设备, FSL_SDHC:0 是 SD卡, FSL_SDHC:1(eMMC)是 EMMC,。默认会将 EMMC 设置为当前 MMC 设备,这就是为什么输入“mmc info”查询到的是 EMMC 设备信息,而不是 SD 卡。要想查看 SD 卡信息,就要使用命令“mmc dev”来将 SD 卡设置为当前的 MMC 设备。mmc dev 命令用于切换当前 MMC 设备,命令格式如下:

    mmc dev [dev] [part]
    

           [dev]用来设置要切换的 MMC 设备号, [part]是分区号。如果不写分区号的话默认为分区 0。使用如下命令切换到 SD 卡:

    mmc dev 0 //切换到 SD 卡, 0 为 SD 卡, 1 为 eMMC
    

           有时候 SD 卡或者 EMMC 会有多个分区,第 0 个分区存放 uboot,第 1 个分区存放 Linux 镜像文件和设备树,第 2 个分区存放根文件系统。要将数据写到 MMC 设备里面,可以使用命令“mmc write”,格式如下:

    mmc write addr blk# cnt
    

           addr 是要写入 MMC 中的数据在 DRAM 中的起始地址, blk 是要写入 MMC 的块起始地址(十六进制), cnt 是要写入的块大小,一个块为 512 字节。我们可以使用命令mmc write来升级 uboot,也就是在 uboot 中更新 uboot。

           通过 nfs 或者 tftp 命令将新的 u-boot.bin 下载到开发板的 DRAM 中,然后再使用命令“mmc write”将其写入到 MMC设备中。我们就来更新一下 SD 中的 uboot,先查看一下 SD 卡中的 uboot 版本号,注意编译时间,输入命令:

    mmc dev 0 //切换到 SD 卡
    version //查看版本号
    

    在这里插入图片描述
           然后将编译出来的 u-boot.imx(u-boot.bin 前面加了一些头文件)拷贝到 Ubuntu 中的nfs对应目录下。最后使用 nfs命令将其下载到 0x80800000 地址处,命令如下:
    在这里插入图片描述
           可以看出, u-boot.imx 大小为 424960 字节, 424960/512=830,所以我们要向 SD 卡中写入830个块,如果有小数的话就要加 1 个块。使用命令“mmc write”从 SD 卡分区 0 第 2 个块(扇区)开始烧写,一共烧写 830(0x33E)个块,命令如下:

    mmc dev 0
    mmc write 80800000 2 33E
    

    在这里插入图片描述
           烧写成功,重启开发板(从 SD 卡启动),重启以后再输入 version 来查看版本号,结果如图:
    在这里插入图片描述
           千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!
           千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!
           千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!

    FAT格式文件操作命令

    • fatinfo 命令

           fatinfo 命令用于查询指定 MMC 设置指定分区的文件系统信息,格式如下:

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

           interface 表示接口,比如 mmc, dev 是查询的设备号, part 是要查询的分区。比如我们要查询 EMMC 分区 1 的文件系统信息,命令如下:

    fatinfo mmc 1:1
    

    在这里插入图片描述

    • fatls 命令

           fatls 命令用于查询 FAT 格式设备的目录和文件信息,命令格式如下:

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

           interface 是要查询的接口,比如 mmc, dev 是要查询的设备号, part 是要查询的分区, directory是要查询的目录。比如查询 EMMC 分区 1 中的所有的目录和文件,输入命令:

    fatls mmc 1:1
    

           结果如图:
    在这里插入图片描述
           从上图可以看出, emmc 的分区 1 中存放着两个文件,文件分别是 linux 镜像(zimage)文件和设备树。并且在 emmc 的分区 1 中有6个文件,没有目录。

    • fstype 命令

           fstype 用于查看 MMC 设备某个分区的文件系统格式,命令格式如下:

    fstype <interface> <dev>:<part>
    

           正点原子 EMMC 核心板上的 EMMC 默认有 3 个分区,我们来查看一下这三个分区的文件系统格式,输入命令:

    fstype mmc 1:0
    fstype mmc 1:1
    fstype mmc 1:2
    

    在这里插入图片描述

           从上图可以看出,分区 0 格式未知,因为分区 0 存放的 uboot,并且分区 0 没有格式化,所以文件系统格式未知分区 1 的格式为 fat,分区 1 用于存放 linux 镜像和设备树。分区 2 的格式为 ext4,用于存放 Linux 的跟文件系统。

    • fatload 命令

           fatload 命令用于将指定的文件读取到 DRAM 中,命令格式如下:

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

           interface 为接口,比如 mmc, dev 是设备号, part 是分区, addr 是保存在 DRAM 中的起始地址, filename 是要读取的文件名字。 bytes 表示读取多少字节的数据,如果 bytes 为 0 或者省略的话表示读取整个文件。 pos 是要读的文件相对于文件首地址的偏移,如果为 0 或者省略的话表示从文件首地址开始读取。我们将 EMMC 分区 1 中的zImage 文件读取到 DRAM 中的0X80800000 地址处,命令如下:

    fatload mmc 1:1 80800000 zImage
    

    在这里插入图片描述

           从上图可以看出在 153ms 内读取了 6071136 个字节的数据,速度为 29.2MiB/s,速度是非常快的,因为这是从EMMC 里面读取的,而 EMMC 是 8 位的,速度肯定会很快的。

           zImage 大小为 6777096(0X67 6908)个字节,接下来使用命令 fatwrite 将其写入到 EMMC 的分区 1 中,文件名字为 zImage,命令如下:

    fatwrite mmc 1:1 80800000 zImage 0x676908
    

           完成以后使用“fatls”命令查看一下 EMMC 分区 1 里面的文件,结果如图
    在这里插入图片描述

    EXT 格式文件操作命令

           uboot 有 ext2 和 ext4 这两种格式的文件系统的操作命令,常用的就四个命令,分别为:ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit一样,只是 ext2 和 ext4 都是针对 ext 文件系统的。比如 ext4ls 命令, EMMC 的分区 2 就是 ext4格式的,使用 ext4ls 就可以查询 EMMC 的分区 2 中的文件和目录,输入命令:

    ext4ls mmc 1:2
    

    在这里插入图片描述

    BOOT操作命令

           uboot 的本质工作是引导 Linux,所以 uboot 肯定有相关的 boot(引导)命令来启动 Linux。常用的跟 boot 有关的命令有: bootz、 bootm 和 boot。

    • bootz 命令

           要启动 Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要将设备树拷贝到 DRAM 中。可以从 EMMC 或者 NAND 等存储设备中将 Linux 镜像和设备树文件拷贝到 DRAM,也可以通过 nfs 或者 tftp 将 Linux 镜像文件和设备树文件下载到 DRAM 中。
           不管用那种方法,只要能将 Linux 镜像和设备树文件存到 DRAM 中就行,然后使用 bootz 命令来启动, bootz 命令用于自动 zImage 镜像文件, bootz 命令格式如下:

    bootz [addr [initrd[:size]] [fdt]]
    

           命令 bootz 有三个参数, addr 是 Linux 镜像文件在 DRAM 中的位置, initrd 是 initrd 文件在DRAM 中的地址,如果不使用 initrd 的话使用‘-’代替即可, fdt 就是设备树文件在 DRAM 中的地址。使用命令 fatload 将 zImage 和 imx6ull-alientek-emmc.dtb 文件拷贝到 DRAM 中,地址分别为0X80800000 和 0X83000000,最后使用 bootz 启动,命令如下:

    fatload mmc 1:1 80800000 zImage
    fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
    bootz 80800000 - 83000000
    

    在这里插入图片描述

    • bootm 命令

           bootm 和 bootz 功能类似,但是 bootm 用于启动 uImage 镜像文件。如果不使用设备树的话启动 Linux 内核的命令如下:

    bootm addr
    

           addr 是 uImage 镜像在 DRAM 中的首地址。如果要使用设备树,那么 bootm 命令和 bootz 一样,命令格式如下:

    bootm [addr [initrd[:size]] [fdt]]
    

           其中 addr 是 uImage 在 DRAM 中的首地址, initrd 是 initrd 的地址, fdt 是设备树(.dtb)文件在 DRAM 中的首地址,如果 initrd 为空的话,同样是用“-”来替代。

    • boot命令

           boot 命令也是用来启动 Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系统, bootcmd 是一个很重要的环境变量!其名字分为“boot”和“cmd”,也就是“引导”和“命令”,说明这个环境变量保存着引导命令,其实就是启动的命令集合,具体的引导命令内容是可以修改的。
           比如想从 EMMC 启动那就设置 bootcmd 为“fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-alientek_emmc.dtb; bootz 80800000 - 83000000”,然后使用 boot 命令启动即可,命令如下:

    setenv bootcmd 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83000000'
    savenev
    boot
    

    在这里插入图片描述

    其他常用命令

    uboot 中还有其他一些常用的命令,比如 reset、 go、 run 和 mtest 等。

    • reset

           命令顾名思义就是复位的,输入“reset”即可复位重启。

    • go 命令

           go 命令用于跳到指定的地址处执行应用,命令格式如下:

    go addr [arg ...]
    

           addr 是应用在 DRAM 中的首地址,通过 go 命令我们就可以在 uboot 中运行裸机实验。

    • run 命令

           run 命令用于运行环境变量中定义的命令,比如可以通过“run bootcmd”来运行 bootcmd 中的启动命令,但是 run 命令最大的作用在于运行我们自定义的环境变量。在后面调试Linux 系统的时候常常要在网络启动和 EMMC/NAND 启动之间来回切换,而 bootcmd 只能保存一种启动方式,如果要换另外一种启动方式的话就得重写 bootcmd,会很麻烦。这里我们就可以通过自定义环境变量来实现不同的启动方式,比如定义环境变量 mybootemmc 表示从 emmc 启动,定义 mybootnet 表示从网络启动,定义 mybootnand 表示从 NAND 启动。如果要切换启动方式的话只需要运行“run mybootxxx(xxx 为 emmc、 net 或 nand)”即可。
           说干就干,创建环境变量 mybootemmc、 mybootnet 和 mybootnand,命令如下:

    setenv mybootemmc 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000'
    
    setenv mybootnand 'nand read 80800000 4000000 800000;nand read 83000000 6000000100000;bootz 80800000 - 83000000'
    
    setenv mybootnet 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83000000'
    
    saveenv
    

           创建环境变量成功以后就可以使用 run 命令来运行 mybootemmc、 mybootnet 或 mybootnand来实现不同的启动:

    run mybootemmc
    

    run mytoobnand
    

    run mybootnet
    
    • mtest 命令

           metest 命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR,命令格式如下:

    mtest [start [end [pattern [iterations]]]]
    

           start是要测试的DRAM 开始地址, end 是结束地址,比如我们测试 0X80000000~0X80001000这段内存,输入mtest 80000000 80001000,结果如图所示:
    在这里插入图片描述

           测试范围为 0X80000000~0X80001000,已经测试了 273 次,如果要结束测试就按下键盘上的“Ctrl+C”键。

           不积小流无以成江河,不积跬步无以至千里。而我想要成为万里羊,就必须坚持学习来获取更多知识,用知识来改变命运,用博客见证成长,用行动证明我在努力。
           如果我的博客对你有帮助、如果你喜欢我的博客内容,记得“点赞” “评论” “收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
    在这里插入图片描述

    展开全文
  • uboot命令简介

    2020-08-28 10:12:13
    uboot命令简介 1、printenv/print 打印环境变量 输入 print x210 # print mtdpart=80000 400000 3000000 baudrate=115200 // 波特率 ethaddr=00:40:5c:26:0a:5b // 开发板的本地网卡的MAC地址 ...

    uboot命令简介

    1、printenv/print 打印环境变量

    输入 print

    x210 # print
    mtdpart=80000 400000 3000000
    baudrate=115200 // 波特率
    ethaddr=00:40:5c:26:0a:5b // 开发板的本地网卡的MAC地址
    bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
    bootcmd=movi read kernel 30008000; bootm 30008000 // 内核启动地址
    netmask=255.255.255.0 // 子网掩码
    serverip=192.168.1.40 // tftp服务器的ip地址,这里是我虚拟机的ip
    bootdelay=5 // 进入uboot命令行的倒计时
    ipaddr=192.168.1.10 // 开发板的ip地址
    gatewayip=192.168.1.1 // 开发板的本地网关地址,用来上外网时使用的

    Environment size: 304/16380 bytes

    2、setenv/set 修改环境变量

    新建:set var value 更改:set var value

    删除:set var

    输入 set ipaddr 192.168.1.10

    这样的修改只是临时的保存,下次开机仍然是修改之前的IP地址。

    3、save 保存修改的环境变量

    永久保存修改后的环境变量,save之后,下次开机才会是修改后的环境变量。环境变量是批量整体向nand保存的,修改一个环境变量,save的时候会将所有的环境变量都重新保存一遍。

    4、fastboot下载uboot、zImage、根文件系统的相关命令

    win主机:cmd界面打开D盘,输入dir查看应用。然后使用fastboot device查看连接状态。

    开发板:uboot命令行输入fdisk -c 0 重新分区。然后输入fastboot查看到分区,并且等待下载

    win主机:fastboot flash bootloader xxxxx
    fastboot flash kernel xxxxx
    fastboot flash system xxxxx

    ​ 下载完之后,在win的cmd使用 fastboot reboot 重新启动开发板

    5、ping 测试网络连接

    输入 ping 192.168.1.30 // ping通window主机

    x210 # ping 192.168.1.30
    dm9000 i/o: 0x88000300, id: 0x90000a46
    DM9000: running in 16 bit mode
    MAC: 00:40:5c:26:0a:5b
    operating at 100M full duplex mode
    host 192.168.1.30 is alive // ping通的标志

    6、tftp下载内核镜像

    输入 tftp 0x30008000 zImage // 将内核镜像下载到0x30008000

    x210 # tftp 0x30008000 zImage
    dm9000 i/o: 0x88000300, id: 0x90000a46
    DM9000: running in 16 bit mode
    MAC: 00:40:5c:26:0a:5b
    operating at 100M full duplex mode
    TFTP from server 192.168.1.40; our IP address is 192.168.1.10
    Filename ‘zImage’.
    Load address: 0x30008000
    Loading: #################################################################
    #################################################################
    ##########################################################transmission timeout
    ##############################################################
    done
    Bytes transferred = 3665268 (0x37ed74)

    // transmission timeout表示下载过程中有异常中断,但是它可以自己恢复,接续着中断前的下载。

    7、bootm、go 启动内核

    输入 bootm 0x30008000 // 从0x30008000启动内核

    输入 go 0x30008000 // 不给内核传参

    注:go命令还能用来启动裸机程序,向内存DDR中下载uboot,然后烧录进裸机程序到某一地址,然后使用go命令来启动它。

    8、nfs 加载根文件系统

    uboot也支持nfs命令,需要再虚拟机中搭建nfs服务器

    9、reset 重启uboot

    输入 reset // 重启uboot

    10、 movi操作SD卡/EMMC/iNand

    movi是一个命令集,有很多子命令

    x210 # help movi
    movi init - Initialize moviNAND and show card info
    movi read {u-boot | kernel} {addr} - Read data from sd/mmc
    movi write {fwbl1 | u-boot | kernel} {addr} - Write data to sd/mmc // fwbl0固件的iROM fwbl1前16k
    movi read rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size
    movi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size
    movi read {sector#} {bytes(hex)} {addr} - instead of this, you can use “mmc read” // {sector#},iNand的扇区
    movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use “mmc write”

    举例 movi read {u-boot | kernel} {addr} - Read data from sd/mmc

    ​ movi read 必须命令

    ​ {u-boot | kernel} 二选一参数

    ​ {addr} 必须参数 addr是DDR中地址

    ​ [bytes(hex)] 可选参数

    输入 movi read u-boot 0x30000000

    ​ // 从iNand中读,把iNand中的u-boot分区读出到DDR的0x30000000其实的位置处。 这里的0x30000000可以直接写成30000000,意思是一样的。uboot的命令行中所有数字都是被默认当作十六进制处理,不管你加不加0x都是一样的。

    11、mm、mw、md内存操作命令

    (1)md // memory display,显示内存中的内容

    (2)mw // memory write,将内容写到内存中

    (3)mm // memory modify,

    输入 help md 查看用法

    md [.b, .w, .l] address [# of objects] .b以字节为单位显示 .w以2字节为单位显示 .l以4字节为单位显示 # of objects显示多少字节,输入的数字是16进制数,比如10就是显示16字节

    md.w 0x30000000 10 // 显示16个字节

    12、bdinfo查看开发板情况

    bdinfo

    SMDKV210 # bdinfo
    arch_number = 0x00000000
    env_t = 0x00000000
    boot_params = 0x00000000
    DRAM bank = 0x00000000
    -> start = 0x00000000
    -> size = 0x00000000
    DRAM bank = 0x00000001
    -> start = 0x00000000
    -> size = 0x00000000
    ethaddr = 00:40:5C:26:0A:5B
    ip_addr = 192.168.0.20
    baudrate = 115200 bps

    展开全文
  • openwrt的uboot

    千次阅读 2014-05-08 17:20:46
    http://wiki.openwrt.org/doc/techref/bootloader/uboot
  • uboot基础与常用命令

    千次阅读 2018-01-25 10:48:38
    1. bootloader 与 uboot的区别 BootLoader是嵌入式设备中用来启动操作系统内核的一段程序。 uboot(universal bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。 ...
  • 在Ubuntu系统下,可以使用reboot重新启动我们的开发板 在u-boot下,使用reset重启u-boot,可以再次进入uboot。 在u-boot下,使用boot其实是用来引导kernel,进入系统。
  • 开发板提供的bootloader为uboot,每次都是按照文档进行操作,对uboot 的操作命令也是一知半解,现决定去理清清绪,写一篇有关uboot烧录linux内核文件系统的详细说明。 1 设置开发板IPtftp服务器IP ...
  • 关于Uboot自启动的问题方案解决

    千次阅读 2017-01-12 15:29:29
    本文主要针对于在Uboot下如何设置自启动的问题 一:Uboot原先的环境变量贴出: => print bootcmd=mmc dev2;mmc dev 2 ;if mmc rescan; then if run loadbootscript; then runbootscript; else if run loadimage...
  • <p style="text-align:center"><img alt="" height="467" src="https://img-ask.csdnimg.cn/upload/1604530333485.jpg" width="1024" /></p> <p>flash、RAM、cpld更换过,现象没变</p>
  • 在打断uboot正常启动之后直接:=> mw.w 0x20bc000 0x34,可以正常复位启动,并且打印说Reset cause: WDOG。 在启动系统之后执行:root@imx6qsabresd:~# /unit_tests/memtool -16 0x20bc000=0x34 root@imx6qsabresd:...
  • Realtek对双系统的说明只有下面三行,其他主要看代码。 ...通过上面的ub0ub1就可以知道,在切换升级的时候,加载不同分区中的数据。 2:Realtek自有的机制 我这边是在开发板上面进行测试...
  • securecrt中进入uboot命令行时,出现无法键入任何指令的问题解决方法 可能出现以下几种情况 1.securecrt在创建连接时,忘记取消勾选流控; 2、usb转串口线坏了3、uboot有问题,命令行没交互 转载于:...
  • 今天在控制台输入 reboot 后不会进行重启,以为把系统内核更新导致的,于是换回原来的uImage,结果 reboot命令还是不起作用。仔细回想下,昨天在 /etc/init.d/中添加了一个测试脚本,/etc/init.d/目录是开机自动启动...
  • reboot详解

    2016-09-15 17:06:00
    linux下reboot命令详解 linux reboot 命令详解  功能说明:重新开机。  语 法:dreboot [-dfinw]  补充说明:执行reboot指令可让系统停止运作,并重新开机。  参 数:  -d 重新开机时不把数据写入记录文件/...
  • 全志A33-ARM linux开机进入uboot命令行

    千次阅读 2018-07-06 15:31:48
    开发板:A33,运行linux-...复位或启动开发板后,等串口输出秒读提示,如果是标准uboot,按任意键可中断启动过程,进入uboot命令行界面。 A33 uboot默认bootdelay为0,所以正常开机情况下不能进入uboot命令行。如果...
  • uboot启动过程详解

    千次阅读 2017-04-15 17:50:05
    现在在很多android的uboot的启动过程中,都需要对内核镜像ramdisk进行验证,来保证android系统的安全性,如果在uboot引导过程中,如果内核镜像或ramdisk刷入的是第三方的未经过签名认证的相关镜像,则系统无法启动...
  • reboot指令无法重启: log: root@imx6dlsabresd:~#reboot   Thesystem is going down for reboot NOW!d (ttymxc0) (Tue Oct 11 06:41:03 2016 INIT:Switching to runlevel: 6 INIT:Sending processes the TERM ...
  • 最近在搞海思Hi3518ev300开发,U-boot启动后,使用setenvsaveenv保存环境变量,但每次重启后,环境变量都丢失,检查之后,是环境变量的地址Size设置错误,整理一下,大概以下3个位置的参数需设置对应: ...
  • 背景: 开发板是s5pv210开发板,烧录的bootloader是随机资料里面的qt4.8里面的u-boot.bin ...1.打开scureCRT,开发板通电后在倒数秒数过之前回车进入uboot 2.(命令1)输入fastboot进入fastboot 3.在window...
  • uboot和Linux内核移植

    千次阅读 2020-01-02 19:11:29
    这篇文章是一个读者昨晚发给我的,文章很长,里面的细节也比较多,但是微信公众号只能发 50000 字的文章,如果想阅读全文。请发送「uboot和Linux内核移植」到公众号后台获取下载...
  • linux reboot,卡在“restarting system”

    千次阅读 2017-10-10 11:36:59
    原因:产生这个bug的原因比较多,百度一般不好找寻答案,建议个位去谷歌。待研究解决办法:在谷歌上提交问题,运气好有老外回答。本人就走了一次运。待研究遇到同样问题的小伙伴可以私信我,我们一起交流...
  • 在线升级uboot,内核文件系统

    千次阅读 2013-06-05 18:12:42
    在线升级uboot,内核文件系统 fulinux 下面我在fl2440开发板上运行正常的情况下实现更新或升级uboot,内核文件系统的任务。 如下是一个在线升级的脚本: #!/bin/sh #This shell scripts used to ...
  • uboot详解

    千次阅读 2014-01-23 10:10:39
    个人觉得这篇关于Uboot的分析虽然内容很多,但讲解的很详细,在此学习并转载一下。http://blog.chinaunix.net/uid-26813001-id-3279194.html   我们知道,bootloader是系统上电后最初加载运行的代码。它提供了...
  • 什么是ubootuboot有什么用?

    千次阅读 2019-10-17 09:02:28
    一、为什么要有uboot 1.1、计算机系统的主要部件        (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑...
  • Tiny210下uboot不断重启问题修复

    千次阅读 2013-03-27 13:08:35
    NAND: NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3) NAND bus width 8 instead 16 bit  8位宽度替代了16位,查找源码,将宏NAND_BUSWIDTH_16 改为1,重新编译,下载,OK,显示了...
  • 一.linux开发之uboot移植(一)——初识uboot

    万次阅读 多人点赞 2018-01-22 13:01:43
    一、uboot简介 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的 开放源码项目。 - 在操作系统方面 ,U-Boot不仅支持 - 嵌入式Linux系统的引导,它还支持...
  • uboot的作用功能

    万次阅读 多人点赞 2019-02-27 10:57:35
    uboot是用来干什么的,有什么作用? uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核 所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力...
  • uboot引导内核全过程

    千次阅读 2018-04-16 11:08:20
    本文讲述uboot引导内核启动的全部过程,uboot版本为2010.061、arch/arm/cpu/hi3536/u-boot.lds 连接文件,不同平台不一样。OUTPUT_FORMAT("elf32-littlearm","elf32-littlearm", "elf32-...
  • uboot下出现data abort错误导致重启解决办法问题描述解决方法 问题描述 imx6ull开发板移植u-boot时,使用ping命令出现data abort错误! 解决方法 使用低版本编译器,论坛上有人试过可以解决,笔者未使用该方法。 ...

空空如也

1 2 3 4 5 ... 20
收藏数 7,044
精华内容 2,817
关键字:

uboot重启