UBoot操作和常用命令
Uboot命令使用
Uboot命令使⽤⼀、uboot启动log简析1、以后带有调试性质的开发,uboot都是烧写到SD卡中的,因为⽅便烧写。
⼆、uboot命令使⽤2.1、help命令查看某⼀个命令帮助信息,?命令名2.2、信息查询1、bdinfo2、printenv命令重要查看当前板⼦的环境变量。
2.3、setenv命令重点设置环境变量,也可以⾃定义环境变量,也可以删除环境变量2.4、saveenv命令重点保存环境变量。
2.5、新建环境变量2.6、删除环境变量2.7、内存操作命令1、md命令2、nm命令3、mm命令4、mw命令5、cp命令6、cmp命令2.8、⽹络操作命令⽹线插如到ENET2上,保证开发板和电脑处于同⼀个⽹段内。
1、ping命令重点2、dhcp命令3、nfs命令重点⽬的就是为了调试程序。
4、tftp命令重点2.9 EMMC/SD卡操作命令1、mmc命令2、mmc info命令3、mmc rescan命令4、mmc list命令5、mmc dev命令6、mmc part命令7、mmc read命令8、mmc write命令9、mmc erase命令最好不要使⽤!!2.10 FAT格式⽂件系统操作命令对于I.MX6U来说,SD/EMMC分为三个分区:第⼀个:存放uboot第⼆个:存放Linux zImage,.dtb。
FAT第三个:系统的根⽂件系统,EXT41、fatinfo命令2、fatls命令3、fstype命令4、fatload命令5、fatwrite命令2.11 EXT格式⽂件系统操作命令1、ext4ls命令2.12 NAND操作命令1、nand info命令2、nand write命令3、nand erase命令4、nand write命令5、nand read命令2.13 BOOT操作命令1、booz命令要启动Linux必须将zImage,dtb放到DRAM。
2、bootm命令3、boot命令2.14 其他命令1、reset命令2、go命令3、run命令4、mtest命令。
uboot 汇编指令
U-Boot(Universal Boot Loader)是一个开源的、通用的引导加载程序,支持多种处理器架构和嵌入式系统。
在U-Boot中,汇编指令的使用主要涉及对硬件的低级操作和优化。
以下是一些常见的U-Boot汇编指令及其作用:
1.ldr:这是一个加载指令,用于从内存中读取数据并将其加载到寄存器中。
例如,ldr r0,=0x12345678将把地址0x12345678处的值加载到寄存
器r0中。
2.str:这是一个存储指令,用于将数据从寄存器存储到内存中。
例如,str r0,[r1]将把寄存器r0中的值存储到r1指向的内存地址中。
3.mov:这是一个移动指令,用于将数据从一个位置移动到另一个位置,而不对数据进行任何操作。
例如,mov r0,r1将把寄存器r1的值复制到寄存
器r0中。
4.add和sub:这些是算术指令,用于对数据进行加法或减法操作。
例如,add r0,r1,r2将把寄存器r1和r2的值相加,结果存储在寄存器r0中。
5.cmp:这是一个比较指令,用于比较两个值的大小。
它不保存结果,但会设置条件标志,这可以用于控制程序流。
例如,cmp r0,r1将比较寄存器
r0和r1中的值。
6.and、orr、eor等:这些是逻辑指令,用于执行逻辑与、或、异或等操作。
这些只是U-Boot汇编语言中的一部分指令,还有许多其他指令和语法结构。
建议查阅U-Boot的官方文档或参考手册以获取更详细的信息和示例。
UBoot操作和常用命令
UBoot常用命令
• usb start: 起动usb 功能 • usb info: 列出设备 • usb scan: 扫描usb storage(u 盘)设备 • f的at文ls:件列出DOS FAT文件系统, 如:fatls usb 0列出第一块U盘中 • fatload: 读入FAT中的一个文件,如:fatload usb 0 0x30000000
• 通常,Boot Loader 是严重地依赖于硬件而实现的, 特别是在嵌入式世界。因此,在嵌入式世界里建 立一个通用的Boot Loader 几乎是不可能的。尽管 如此,我们仍然可以对Boot Loader 归纳出一些通 用的概念来,以指导用户特定的Boot Loader 设计 与实现。
UBoot来源
• nand write [内存地址] [NAND地址] [大小]
– 将SDRAM中地址0x31000000中大小为0x00200000的内容写入NAND Flash的0x100000地址。
– nand write 0x31000000 0x00100000 0x00200000 – NAND write: device 0 offset 1048576, size 2097152 ... 2097152 bytes
Creating 5 MTD partitions on "NAND 256MiB 3,3V 8-bit": 0x000000000000-0x000000040000 : "supervivi" ftl_cs: FTL header not found. 0x000000040000-0x000000060000 : "param" uncorrectable error : 0x000000060000-0x000000560000 : "Kernel" ftl_cs: FTL header not found. 0x000000560000-0x000040560000 : "root" mtd: partition "root" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0xfaa0000 ftl_cs: FTL header not found. 0x000000000000-0x000040000000 : "nand" mtd: partition "nand" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0x10000000
uboot常用的命令
Uboot常用的命令一、概述Uboot是一款开源的引导加载程序,广泛应用于嵌入式系统。
它负责在开机时初始化硬件、加载操作系统以及其他系统组件,并提供一系列命令供用户进行系统配置和维护。
本文将介绍Uboot常用的命令,帮助读者更好地了解和使用Uboot。
二、Uboot常用命令下面是Uboot常用的命令:1. help命令格式:help [command]该命令用于显示Uboot支持的命令列表。
如果指定了具体的命令名称,则会显示该命令的详细帮助信息。
2. printenv命令格式:printenv [variable]该命令用于打印当前环境变量的值。
如果指定了具体的变量名称,则只会打印该变量的值。
3. setenv命令格式:setenv variable value该命令用于设置环境变量的值。
variable是要设置的变量名称,value是要设置的值。
4. saveenv命令格式:saveenv该命令用于保存当前环境变量到非易失性存储器中,以便下次开机时可以加载。
5. boot命令格式:boot该命令用于启动系统。
在执行该命令之前,需要设置好bootargs和bootcmd等环境变量,以确保系统能够正确启动。
6. md命令格式:md address [#of objects]该命令用于从指定的内存地址读取数据并显示。
address是内存地址,#of objects是要读取的对象数目,默认为1。
7. mw命令格式:mw address value [# of objects]该命令用于向指定的内存地址写入数据。
address是内存地址,value是要写入的值,#of objects是要写入的对象数目,默认为1。
8. ping命令格式:ping [ipaddr]该命令用于向指定的IP地址发送ICMP Echo请求,以测试网络连接的可用性。
如果未指定IP地址,则会使用默认的目标地址。
9. tftpboot命令格式:tftpboot [loadAddress] [filename]该命令用于通过TFTP协议从指定的服务器下载文件并加载到指定的内存地址。
uboot命令使用教程(uboot参数设置)
uboot命令使⽤教程(uboot参数设置)1. Printenv 打印环境变量。
uboot> printenvbaudrate=115200ipaddr=192.168.0.111ethaddr=32:34:46:78:9A:DCserverip=192.168.0.100Environment size: 80/8188 bytes2. Setenv 设置新的变量如:uboot> setenv myboard AT91RM9200DKuboot> saveenvuboot> printenvbaudrate=115200ipaddr=192.168.0.111ethaddr=32:34:46:78:9A:DCserverip=192.168.0.100myboard=AT91RM9200DKEnvironment size: 102/8188 bytes⼜如想重置启动参数bootargs:uboot> setenv bootargs 'noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0'uboot> saveenv3. saveenv 保存变量命令将当前定义的所有的变量及其值存⼊ flash 中。
⽤来存储变量及其值的空间只有 8k 字节,应不要超过。
(如上例,每次与setenv配合使⽤)4. loadb 通过串⼝ Kermit 协议下载⼆进制数据。
5. tftp 通过⽹络下载程序,需要先设置好⽹络配置简单配置:uboot> setenv ethaddr 32:34:46:78:9A:DCuboot> setenv ipaddr 192.168.0.111uboot> setenv serverip 192.168.0.100//下载 bin ⽂件到地址 0x20000000 处。
U-BOOT介绍以及常用U-bot命令介绍
U-BOOT介绍以及常用U-bot命令介绍一. BootLoader简介在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。
一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1、引导加载程序。
包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。
2、 Linux内核。
特定于嵌入式板子的定制内核以及内核的启动参数。
3、文件系统。
包括根文件系统和建立于Flash内存设备之上文件系统。
通常用ramdisk来作为rootfs。
4、用户应用程序。
特定于用户的应用程序。
有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。
常用的嵌入式GUI有:MicroWindows和MiniGUI懂。
引导加载程序是系统加电后运行的第一段软件代码。
PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。
BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。
比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
uboot下的指令
uboot下的指令⼀、i2c 指令i2c --help: i2c指令帮助i2c bus:获取i2c总线信息i2c dev:查看当前i2c设备i2c dev 0:将i2c0作为当前设备i2c md 0x6A 0x06.1 0x01:0x6A-->设备地址,0x06.1-->寄存器地址为0x06,寄存器宽度为1个字节,0x01-->读取⼀个字节i2c mw 0x6A 0x06.1 0x02:将0x02写⼊0x6A设备的0x06寄存器中⼆、gpio 操作gpio --help:获取gpio帮助gpio status -a:查看所有gpio信息 可以看到xilinx上有两组gpio,⼀个是ps端的gpio,地址是0xff0a0000,另外⼀组是pl端的axi gpio ,地址是0xa0070000gpio set gpio@a00700000:将axi gpio的第⼀位置⾼电平gpio clean gpio@a00700000:将axi gpio的第⼀位置低电平gpio input gpio@a00700000:将axi gpio的第⼀位置设置为输⼊三、mii命令mii命令是操作mii接⼝的命令,mii接⼝⽤来连接soc中的MAC控制器和外部的PHY芯⽚。
mii命令主要是通过mii接⼝中的MDIO来读写phy芯⽚的寄存器针对DP83867芯⽚mii info //查看mii信息mii write 0x0c 0x00 0x2100 //设置phy芯⽚为百兆,0x0c为phy芯⽚地址,0x00为phy芯⽚寄存器地址,0x2100为向0x00寄存器写⼊的值mii read 0x0c 0x00 //读取phy芯⽚0x00寄存器的值寄存器地址>0x1F的配置⽅法,因为MDIO最多能范围的寄存器范围为0~0x1F,如果寄存器地址>0x1F那么需要通过0x0d和0x0e这两个寄存器间接访问读0x31寄存器mii write 0x0c 0x0d 0x1fmii write 0x0c 0x0e 0x31mii write 0x0c 0x0d 0x401fmii read 0x0c 0x0e写0x31寄存器mii write 0x0c 0x0d 0x1fmii write 0x0c 0x0e 0x31mii write 0x0c 0x0d 0x401fmii write 0x0c 0x0e 0x1031 //向0x31寄存器写⼊0x1031四、MMC命令mmc是uboot下查看磁盘的命令mmc list:查看所有磁盘可以看到有两个磁盘,0是emmc,1是sd卡mmc dev 0:进⼊磁盘0mmc info:查看磁盘0的信息这⾥显⽰了emmc的⼀些信息五、FAT⽂件系统操作命令 5.1 fatls 查看⽂件命令 fatls命令如下所⽰: fatls mmc 0:1:查看emmc第⼀分区的内容,0表⽰哪个mmc设备,这⾥是emmc,1表⽰第⼀分区 可以看到emmc的第⼀分区中有三个⽂件 5.2 fatrm 删除⽂件命令 fatrm mmc 0:1 image.ub:删除emmc第⼀分区中的image.ub 5.3 fatwite 写⽂件 fatwrite mmc 0:1 0x10000000 image.ub 0x7d1160,从内存拷贝Image.ub到emmc第⼀分区中,0x10000000 表⽰内存拷贝的起始地址,image.ub是⽂件名,0x7d1160是拷贝的长度。
uboot常用的命令
uboot常用的命令
U-Boot是一款开源的引导加载程序,它是嵌入式系统中常用的引导加载程序之一。
U-Boot提供了一系列的命令,可以用来进行系统的启动、调试、烧写等操作。
下面是U-Boot常用的命令:
1. help:显示所有可用的命令列表。
2. printenv:显示环境变量的值。
3. setenv:设置环境变量的值。
4. saveenv:保存环境变量的值。
5. bootm:启动内核。
6. tftpboot:从TFTP服务器下载文件。
7. ping:测试网络连接。
8. md:以16进制格式显示内存内容。
9. mw:以16进制格式写入内存内容。
10. cp:复制内存内容。
11. fatload:从FAT文件系统中加载文件。
12. fatls:列出FAT文件系统中的文件。
13. mmc:MMC卡操作命令。
14. usb:USB操作命令。
15. dhcp:获取IP地址。
16. run:执行脚本。
17. reset:重启系统。
以上是U-Boot常用的命令,这些命令可以满足大部分的需求。
在实
际使用中,我们可以根据具体的需求来选择合适的命令。
如果需要更
多的命令,可以通过添加自定义命令的方式来扩展U-Boot的功能。
总之,U-Boot是一款非常强大的引导加载程序,它提供了丰富的命令,
可以用来进行系统的启动、调试、烧写等操作。
熟练掌握U-Boot的命令,可以提高嵌入式系统的开发效率。
uboot的常用命令及用法
uboot的常⽤命令及⽤法uboot是bootloader的⼀种,主要是⽤于引导内核启动.uboot除此功能外, 还带有很多其它功能. 功能是通过命令来调⽤.uboot的命令:help //列出当前uboot所有⽀持的命令help 命令 //查看指定命令的帮助reset //重启ubootbootm //⽤于启动内核⽤法: 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字节空间,设值为0xabmw.w 0x40008000 0xabcd 100 //从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcdmw.l 0x40008000 0xabcdef88 100 //从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88 go //执⾏指定内存地址上的指令⽤法:go 0x40008000mmc // 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⽂件到内存地址0x40008000fatwrite //把内存上的数据存储到fat分区的⼀个⽂件⾥⽤法:fatwrite mmc 0:1 0x40008000 /my.txt 0x35 //把内存地址0x40008000开始的0x35个字节数据写⼊到第0个设备的第1个分区⾥,⽂件名为my.txtrun //执⾏指定的环境变量⾥的语句⽤法:run bootcmd //执⾏环境变量bootcmd⾥的语句//如uboot上已驱动好⽹络设备并环境变设好IP及PC端IP,还可以使⽤以下命令:tftpboot 0x40008000 ⽂件名 // 通过⽹络下载⽂件到内存地址0x40008000, PC端需配置好tftp服务器nfs 0x40008000 pc端IP:/带路径的⽂件名 //pc端需配置好nfs服务器ping ip //检测⽹络是否通指令: bootmbootm ⽤于将内核镜像加载到内存的指定地址处例:bootm 0x82000000查看和修改环境变量指令常⽤环境变量列表bootdelay 执⾏⾃动启动(bootcmd中的命令)的等候秒数baudrate 串⼝控制台的波特率bootfile 默认的下载⽂件名bootargs 传递给Linux内核的启动参数bootcmd ⾃动启动时执⾏命令stdin 标准输⼊设备,⼀般是串⼝stdout 标准输出,⼀般是串⼝,也可是LCD(VGA)stderr 标准出错,⼀般是串⼝,也可是LCD(VGA)serverip TFTP服务器端的IP地址ipaddr 本地的IP地址ethaddr 以太⽹的MAC地址netmask 以太⽹的⽹络掩码gatewayip 以太⽹的⽹关指令: setenvname value第1个参数是环境变量的名称。
uboot常用命令
U-Boot(Universal Bootloader)是一款常用的开源引导加载程序,用于嵌入式系统的启动 和管理。以下是一些常用的 U-Boot 命令示例:
1. printenv :打印环境变量列表。
2. setenv <variable> <value> :设置环境变量的值。
8. mw <addr> <value> [<length>] :将指定的十六进制数值写入到指定的内存地址。
9. mmc list :显示支持的 MMC 存储设备列表。
10. tftpboot <addr> <filename> :通过 TFTP 协议从网络下载一个文件到指定的内存 地址。
11. fatls <interface> <partition> :列出指定接口(如 mmc、usb 等)上指定分区 中的文件列表。
3. saveenv :保存环境源自量到存储设备中,以便下次启动时使用。
4. boot :启动操作系统,根据环境变量中的配置来加载内核镜像和根文件系统。
5. bootm :直接从指定的内存地址启动指定的内核镜像。
6. help :显示帮助信息,列出可用的 U-Boot 命令和它们的功能说明。
7. md <addr> <length> :在指定的内存地址处以十六进制格式显示指定长度的数据。
12. run <script> :运行一个预定义的 U-Boot 脚本。
13. reset :重启设备。
这些命令只是 U-Boot 中的一部分,U-Boot 还提供了很多其他的命令和功能来管理和配 置系统。请注意,具体可用的命令和支持的功能取决于 U-Boot 版本以及不同的硬件平台 和配置。在实际使用时,您可能需要参考特定版本的 U-Boot 的文档或提供的帮助信息来 获取更详细和准确的命令列表和说明。
uboot 命令详解
u-boot 技术文档1.U boot 命令详解1.1查看帮助命令使用help 或者?1.2环境变量打印环境变量:printenv设置环境变量:setenv(不会保存)保存环境变量:saveenv这个时候就有了1.3nandflash命令使用nand查看nandflash 所有指令擦除nand erase1.4norflash命令查看Flash信息命令: flinfo加/解写保护命令: protect擦除命令: erase1.5内存命令nm1.5USB指令使用help usb 查看usb具体指令使用usb 启动使用usb tree查看信息f atls usb 0 罗列u盘信息1.5.1实例演练usb指令烧写1.6实例演练ftp指令烧写环境变量中体现了开发板上的IP地址为192.168.0.2,网关为192.168.0.1,要求电上的tftp 服务器的IP为192.168.0.1;运行电脑上tftp服务器,指定好根目录,将内核和根文件系统放在根目录下。
注:线接上后,电脑上的本地连接可能是显示网络电缆没插好,这很正常!在使用过程中它们会自动去连接!<2>分别下载内核和根文件系统到内存0x30008000开始的空间先检查坏块nand bad再擦除坏块清理某个区域0x560000 0x3b22c00将根文件系统加载到0x30008000然后再将根文件系统写到0x560000 0x3b22c00这个位置然后重启:重复上面的步骤:nand erase 0x60000 0x267000将内核文件保存到0x60000 0x267000这块区域运行1.8系统重启指令2.U boot 内核移植在cpu/arm920t/start.S中添加以下代码在修改并添加为以下代码在include/configs/mini2440.h修改为如下:将以下代码修改为:将以下代码修改为:将以下代码修改为:在drivers/mtd/nand/s3c2410_nand.h 在最后下面代码上添加如下带码:。
u-boot常用命令详解
U-Boot提供了更加周详的命令帮助,通过help命令还能查看每个命令的参数说明。
由于研发过程的需要,有必要先把U-Boot命令的用法弄清晰。
接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
1、bootmdKNLinux联盟bootm [addr [arg ...]]- boot application image stored in memorypassing arguments ’arg ...’; when booting a Linux kerne l,’arg’ can be the address of an initrd imagebootm命令能引导启动存储在内存中的程式映像。
这些内存包括RAM和能永久保存的Flash。
第1个参数addr是程式映像的地址,这个程式映像必须转换成U-Boot的格式。
第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也能是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。
dKNLinux联盟2、bootpbootp [loadAddress] [bootfilename]bootp命令通过bootp请求,需求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。
第1个参数是下载文件存放的内存地址。
第2个参数是要下载的文件名称,这个文件应该在研发主机上准备好。
3、cmpcmp [.b, .w, .l] addr1 addr2 count- compare memorycmp命令能比较2块内存中的内容。
.b以字节为单位;.w以字为单位;.l以长字为单位。
注意:cmp.b中间不能保留空格,需要连续敲入命令。
第1个参数addr1是第一块内存的起始地址。
第2个参数addr2是第二块内存的起始地址。
第3个参数count是要比较的数目,单位按照字节、字或长字。
4、cpcp [.b, .w, .l] source target count- copy memorycp命令能在内存中复制数据块,包括对Flash的读写操作。
UBOOT移植操作
UBOOT移植操作1. 确定目标平台和硬件:首先需要了解目标平台的硬件架构、处理器类型、存储设备(如 Flash 或者 SD 卡)等重要信息。
同时需要获取目标平台的硬件参考手册或者相关文档。
2.设置交叉编译工具链:UBOOT是使用C和汇编语言编写的,因此需要使用交叉编译工具链来生成可在目标平台上运行的二进制可执行文件。
交叉编译工具链包括交叉编译器、链接器和调试器等工具,这些工具需要针对目标平台进行配置。
4. 配置 UBOOT 环境:进入 UBOOT 源代码目录,运行 `make menuconfig` 命令来配置 UBOOT 的环境。
这个命令会打开一个图形界面,可以在其中选择需要的功能、驱动程序和选项。
根据目标平台的硬件特性和需求,选择适当的选项。
5. 修改配置文件:UBOOT 需要一个配置文件(通常是`include/configs/<target.h>`),在这个文件中需要将目标平台的硬件配置信息填入。
这些信息包括芯片型号、Flash 存储器地址等。
还需要设置启动参数,如内核地址、根文件系统地址等。
6. 编译 UBOOT:运行 `make` 命令来编译 UBOOT。
根据配置和硬件平台的不同,可能需要选择不同的编译选项。
编译过程会生成一个 UBOOT 头文件(u-boot.bin)和其他必要的文件。
7.将UBOOT烧录到目标平台:使用烧录工具(如JTAG烧录器、USB烧录器或者SD卡等)将编译好的UBOOT烧录到目标平台的存储设备中。
具体的烧录方法和工具依赖于目标平台的配置。
8.测试和调试:将烧录好的UBOOT安装到目标平台后,通过串口或者网络连接到目标平台,使用终端工具进行测试和调试。
可以通过串口输出来查看启动过程中的日志和错误信息,或者使用调试工具来分析程序执行的问题。
9.优化和定制:根据需求对UBOOT进行优化和定制。
可以修改配置文件、增加功能模块或者修改代码,以达到更好的性能和适应特定需求的目的。
U-boot常用指令
U-BOOT常用命令介绍printenv 打印环境变量setenv 设置环境变量如:setenv ipaddr 172.22.60.44Setenv serverip 172.22.60.88saveenv 保存设定的环境变量我们经常要设置的环境变量有ipaddr,serverip,bootcmd,bootargs。
tftp 即将内核镜像文件从PC中下载到SDRAM的指定地址,然后通过bootm来引导内核,前提是所用PC要安装设置tftp服务。
如: tftp 30008000 zImagenand erase 擦除nand flash中数据块如:nand erase 0x40000 0x1c0000起始地址擦写大小nand write 把RAM中的数据写到Nand Flash中如:nand write 0x30008000 0x40000 0x1c0000nand read 从nand flash中读取数据到RAM如:nand read 0x30008000 0x40000 0x1c0000go 直接跳转到可执行文件的入口地址,执行可执行文件。
boot 启动uboot引导下载并烧写内核步骤:1 用网线连接开发板和PC机2 启动U-BOOT并设置环境变量setenv ipaddr 172.22.60.32 //设置开发板的IPsetenv serverip 172.22.60.99 //设置PC机的IPsetenv ethaddr 11.22.33.44.55.66 //设置开发板的物理地址saveenv //保存3 PC机端打开TFTP服务器,并且把要下载的文件拷贝到tftp服务器程序所在的目录下4 下载和烧写在u-boot下用以下命令tftp 30008000 zImagenand erase 40000 1c0000nand write 30008000 40000 1c0000……setenv bootargs noinitrd root=/dev/mtdblock2 init=/linuxrcconsole=ttySAC0,115200本参数必须与内核boot option 一致设置开机自启动内核挂载功能:setenv bootcmd nand read 30008000 40000 1c0000 \;go 30008000。
uboot相关命令及用法
uboot相关命令及⽤法进⼊uboot时,在命令⾏上敲“?” ,回车就会打印出在uboot⾥可⽤的命令:#?- alias for 'help'base - print or set address offsetboot - boot default, i.e., run 'bootcmd'bootd - boot default, i.e., run 'bootcmd'bootelf - Boot from an ELF image in memorybootm - boot application image from memorybootvx - Boot vxWorks from an ELF imagecheckcrash- check ATAGS from crash and dump to filechpart - change active partitioncmp - memory comparecp - memory copycrc32 - checksum calculationecho - echo args to consoleefuse - opt efuse dataenv - environment handling commandsexit - exit scriptext4load- load binary file from a Ext2 filesystemext4ls - list files in a directory (default /)false - do nothing, unsuccessfullyfastboot- fastbootfatinfo - print information about filesystemfatload - load binary file from a dos filesystemfatls - list files in a directory (default /)fatwrite- write file into a dos filesystemgo - start application at address 'addr'gpio - input/set/clear/toggle gpio pinshelp - print command description/usagei2c - I2C sub-systemjtag - jtag systemloop - infinite loop on address rangemd - memory displaymm - memory modify (auto-incrementing address)mmc - MMC sub systemmmcinfo - display MMC infomtdparts- define flash/nand partitionsmtest - simple RAM read/write testmw - memory write (fill)nand - NAND sub-systemnboot - boot from NAND devicenm - memory modify (constant address)nu7 - nu7 sub systempmic - pmic interfaceprintenv- print environment variablesreset - Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storagesetenv - set environment variablesshowvar - print local hushshell variablessource - run script from memorytest - minimal test like /bin/shtrue - do nothing, successfullyubi - ubi commandsubifsload- load file from an UBIFS filesystemubifsls - list files in a directoryubifsmount- mount UBIFS volumeubifsumount- unmount UBIFS volumeusb - USB sub-systemusbboot - boot from USB deviceversion - print monitor, compiler and linker version我们想要查看其中某个命令的⽤法时,在命令⾏上敲⼊“命令名?”即可,如“mmc ?”:#mmc ?mmc - MMC sub systemUsage:mmc read addr blk# cntmmc write addr blk# cntmmc erase blk# cntmmc rescanmmc part - lists available partition on current mmc devicemmc dev [dev] [part] - show or set current mmc device [partition]mmc list - lists available devicesmmc read⽤来读取mmc内容到内存,mmc write⽤来写⼊内存内容到mmc中具体⽤法,mmc read <device num> addr blk# cnt [partition]mmc write <device num> addr blk# cnt [partition]mmc listdevice num是mmc的设备号,可以通过mmc list查询addr是内存地址blk# 是mmc内的块号cnt 块数⽬使⽤范例:mmc write 2 0x90000000 0x600 0x10把内存0x90000000开始,长度为16x512⼤⼩的数据,写⼊到第2个mmc设备块偏移位置为0x600处mmc read 2 0x90000000 0x600 0x10把第⼆个mmc设备块偏移为0x600处开始,长度为16x512⼤⼩的数据,读出到内存0x90000000处从外置mmc卡load uImage⽂件:#mmc listSD/MMC: 0SD/MMC: 1#mmc dev 0mmc0 is current device#fatload mmc 0:10x82007fc0 uImage#pri#run default_bootargs只设pmic vdd:pmic vdd 1250000设置bootargs#setenv bootargs console=ttyS0,115200 root=/dev/mmcblk1p2 rw rootwait gpu=384M mem=792M video=nusmartfb:${resolution}-${dispformat} 706_hw_ver=2 init=/init quiet no_console_suspend设置default_bootargs#setenv default_bootargs console=ttyS0,115200 root=/dev/mmcblk1p2 rw rootwait gpu=384M mem=792M video=nusmartfb:${resolution}-${dispformat} 706_hw_ver=2 init=/init quiet no_console_suspend #ext4load mmc 1:20x82007fc0 uImage#bootm。
5 u-boot的使用
u-boot的命令
SD/EMMC操作命令
mmc write addr blk# cnt 将内存addr中的数据写入到起始块为blk#、大小为cnt
块中。
u-boot的命令
usb操作命令
usb start -usb reset -usb stop -usb info --
启动并扫描USB控制器 重置 停止 查看信息
从SD卡烧写u-boot到emmc的命令序列
resetenv
擦除环境变量保存的位置,让环境变量恢复 默认
u-boot的环境变量
设置环境变量
格式:setenv 变量名 变量值 注意,变量名与变量值之间没有“=”号;如果变量值是一个很长的字 符串,可以用双引号引起来。 例如:
▶setenv serverip 192.168.1.88 ▶setenv myval “help my val”
usbethaddr 开发板网口的mac地址
Байду номын сангаас
gatewayip 网关
netmask子网掩码
ipaddr
开发板网口的ip地址
serverip 服务器的ip地址(ubuntu虚拟机)
u-boot的环境变量
各个环境变量的含义:
nfsboot从网络共享挂载根文件系统的启动命令序列
wruboot2emmc
介。 u-boot通过环境变量来保存一些参数,有了环境
变量,用户可以进行更复杂的设置。
思考题
u-boot通过命令和环境变量来使用,如何设置环 境变量,修改环境变量的值,保存环境变量?
在u-boot中,传输文件的命令有什么?
u-boot的使用
u-boot的启动信息分析 u-boot的命令行
uboot常用命令详解
uboot常⽤命令详解dnw:在进⼊系统之前进⼊指令⾏,输⼊该指令可下载烧录⽂件。
re:重新启动嵌⼊式系统。
printenv:打印当前系统环境变量。
setenv:设置环境变量,格式:setenv name value ...,表⽰将name 变量设置成value 值;如果没有这个参数,表⽰删除该变量。
saveenv:保存环境变量到NAND中。
sleep:延迟执⾏,格式:sleep N,可以延迟N秒钟执⾏。
run:执⾏环境变量中的命令,格式:run var,可以跟⼏个环境变量名。
crc32:计算校验值,格式:crc32 address count [addr],第⼀个参数是需校验的起始地址,第⼆个参数是校验的数据字节数,第三个参数是保存校验值的地址。
cp:在内存中复制数据块,格式:cp source target count,第⼀个参数是源地址,第⼆个参数是⽬的地址,第三个参数是复制数⽬。
cmp:⽐较内存中的数据块,格式:cmp addr1 addr2 count,第⼀个参数是内存地址⼀,第⼆个参数是内存地址⼆,第三个是⽐较长度(单位是字节数除以4,以WORDS为单位)。
bootm:可以引导启动存储在内存中的程序映像。
格式:bootm addr1 addr2,第⼀个参数是程序映像的地址,第⼆个参数⼀般是RAMDISK 地址。
nand scrub:暴⼒擦除指令,擦除整个NAND,会擦除bad block标记。
nand erase:擦除NAND,格式:nand erase addr1 count,第⼀个参数是OFFSET,第⼆个参数是擦除字节数。
其中OFFSET是相对于Download地址。
nand write:下载的内存数据写⼊NAND,格式:nand write addr offset count,第⼀个参数是写⼊基地址,第⼆个参数是偏移地址,第三个参数是写⼊字节数。
nand read:讲NAND数据读取到内存,格式:nand read addr offset count,第⼀个参数是读取的NAND地址,第⼆个参数是内存位置偏移,第三个参数是读取字节数。
1UBoot操作和常用命令-文档资料
tftp的安装和配置
• redhat9下载tftp-server-0.32-4.i386.rpm软件包
– rpm -ivh tftp-server-0.32-4.i386.rpm安装
• Fedora9下可以使用yum在线安装tftp-server
– yum install tftp-server
• 新建tftftproot – chmod -R 777 /var/tftproot
• tftp server 配置
– tftp server配置文件,/etc/xinetd.d/tftp
修改tftp配置文件
# default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { disable = no //设置为no,开启服务 socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/tftproot -c //这里配置tftp服务器根目录,-c参数表示 可以写文件 per_source = 11 cps = 100 2 flags = IPv4 }
uboot常用命令及其使用
uboot常⽤命令及其使⽤1.帮助信息或者 help第⼀次使⽤uboot,通过?查看所有帮助信息cmd 或者 help cmdbootz #查看bootz命令的帮助信息通过该命令查看某个cmd的帮助信息2.版本信息查看versionuboot启动后,查看uboot版本信息bdinfouboot启动后,查看board信息3.环境变量相关setenv设置⼀个环境变量# 格式:setenv key vlauesetenv bootdelay 5 # 设置uboot启动延时5s删除⼀个环境变量uboot对于⼀个没有值的环境变量,默认不再维护,做删除处理# 格式:setenv keysetenv ipaddr # 删除ipaddr,让ipaddr不复存在修改⼀个环境变量# 格式:setenv key vlauesetenv bootdelay 5 # 原来的bootdleay值被覆盖,采⽤新值5saveenvuboot启动时,从⾮易失性存储器中读取环境变量的值,在内存中维护⼀份拷贝,当采⽤setenv命令创建、修改、或者删除后,内存中被相应地创建、修改或者删除,⾮易失存储器中的那⼀份并没有改变。
直到执⾏saveenv,写⼊⾮易失性存储器。
print打印所有环境变量及其值。
print # 打印所有打印某⼀个。
如果要查看某个你知道名字的环境变量,可以使⽤该命令。
例如,打印bootcmd命令:print bootcmd # 只打印bootcmd4.内存相关需要注意的是,所有参数需要⼗六进制数字输⼊。
例如12345678默认为0x12345678,当然也可直接显式指定为0x12345678。
mm修改ddr中内存单元的值,可以连续修改。
# mm [.b,.w,.l] addr=>mm.l 80800000 #回车进⼊修改视图,地址⾃动递增80800000:<xxxxxxxx> ? 12345678 # 回车80800004:<xxxxxxxx> ? q # 退出=>nm修改ddr中内存单元的值,地址不⾃增。
uboot常用命令总结分析
uboot常用命令总结分析
U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell 了,在我编译的U-boot-2009.11中的命令行模式模式下支持Tab键的命令补全和命令的历史记录功能。
而且如果你输入的命令的前几个字符和别的命令不重复,那幺你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是version,但是在所有的命令中没有其他任何一个的命令是由v 开头的,所以只需要输入v即可。
由于U-boot支持的命令实在太多,由于开发过程的需要,有必要先把U-Boot命令的用法弄清楚。
接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
进入uboot的命令行提示后,通过help指令,可以得知当前的uboot 支持的所有命令
help 指令名称,可以得知对应指令的相关帮助,如help setenv
u-boot的环境变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容
• u-boot概念解释 • u-boot基础指令使用介绍 • u-boot环境变量 • u-boot NAND Flash操作命令及烧录Linux
内核和文件系统
BootLoader概念
• Boot Loader 就是在操作系统内核运行之前运行 的一段小程序。通过这段小程序,我们可以初始 化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境
– mkimage -n 'linux-2.6.33.7' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage
烧录Linux内核
• 烧录Linux内核并实现自启动。
– 1)通过mkimage工具把Linux内核镜像文件转为UBoot格式通 过tftp协议烧写到开发板内存的的0x30008000位置
烧写UBoot
• UBoot编译完成后,会在源码目录下生成uboot.bin这个二进制文件。
• 利用JLink工具把u-boot.bin烧写到 NORFlash的0x00000000位置即可。
mkimage
• 在使用UBLeabharlann ot引导Linux内核时,必须对Linux内核 镜像文件做适当的修改让UBoot可以引导使用
# protocol. The tftp protocol is often used to boot diskless \
• 通常,Boot Loader 是严重地依赖于硬件而实现 的,特别是在嵌入式世界。因此,在嵌入式世界 里建立一个通用的Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对Boot Loader 归纳出 一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。
UBoot来源
• U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开 放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源码创建了 PPCBoot 工程项目,此后不断 添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移 植到 ARM 平台上,创建了 ARMBoot 工程项目。最终, 以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 UBoot 工程。
相应的修改后,把文件系统烧入相应位置
tftp的安装和配置
• redhat9下载tftp-server-0.32-4.i386.rpm软件包
– rpm -ivh tftp-server-0.32-4.i386.rpm安装
• Fedora9下可以使用yum在线安装tftp-server
– yum install tftp-server
• 而今,U-Boot 作为一个主流、通用的 BootLoader,成功 地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、 XScale 等主流体系结构上的百种开发板,成为功能最多、 灵活 性最强,并且开发最积极的开源 BootLoader。目前。 U-Boot 仍然由 DENX 的 Wolfgang Denk 维护
mkimage使用
• Usage: mkimage -l image • -l ==> list image header information • mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d
data_file[:data_file...] image • -A ==> set architecture to 'arch' • -O ==> set operating system to 'os' • -T ==> set image type to 'type' • -C ==> set compression type 'comp' • -a ==> set load address to 'addr' (hex) • -e ==> set entry point to 'ep' (hex) • -n ==> set image name to 'name' • -d ==> use image data from 'datafile' • -x ==> set XIP (execute in place) • 制作uImage 内核镜像文件
• 新建tftp根目录并授予权限
– mkdir /var/tftproot – chmod -R 777 /var/tftproot
• tftp server 配置
– tftp server配置文件,/etc/xinetd.d/tftp
修改tftp配置文件
# default: off
# description: The tftp server serves files using the trivial file transfer \
mkimage程序来对linux内核文件增加UBoot头。
• uboot源代码的tools/目录下有mkimage工具,这 个工具可以用来制作不压缩或者压缩的多种可启 动映象文件。mkimage在制作映象文件的时候, 是在原来的可执行映象文件的前面加上一个0x40 字节的头,记录参数所指定的信息,这样uboot才 能识别这个映象是针对哪个CPU体系结构的,哪 个OS的,哪种类型,加载内存中的哪个位置, 入口点在内存的那个位置以及映象名是什么
– 2)PC的虚拟机Linux安装ftfp服务器端并配置测试连接成功 – 3)重启开发板ping通虚拟机linux – 4)配置传给linux的命令行参数 – 5)开发板UBoot通过tftp协议和Linux进行连接,把Linux内核读
入SDRAM后通过nand 命令写入nandflash的指定位置; – 6)根据Linux启动信息获得Linux内核默认的MTD分区并做出