### U-Boot命令详解
U-Boot是一款广泛应用于嵌入式系统的Bootloader,它提供了丰富的命令集用于设备初始化、内存管理、文件系统操作等。本文将根据提供的文档内容,详细介绍U-Boot中的一些常用命令。
#### 1. 获取帮助
**命令**: `help` 或 `?`
**功能**: 查看当前U-Boot版本中支持的所有命令列表。
**示例**:
```bash
[u-boot@MINI2440]# help
?-alias for 'help'
ask - get environment variables from stdin
base - print or set address offset
bdinfo - print Board Info structure
bmp - manipulate BMP image data
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
cmp - memory compare
coninfo - print console devices and information
```
#### 2. 环境变量与相关指令
环境变量在U-Boot中扮演着重要的角色,它们可以用来存储各种配置信息,如启动参数、设备路径等。
**命令**:
- `printenv`: 显示所有环境变量及其值。
- `setenv`: 设置环境变量。
- `saveenv`: 保存当前环境变量至非易失性存储器。
**示例**:
```bash
[u-boot@MINI2440]# printenv
bootcmd=run bootd
bootdelay=1
console=ttymxc0,115200n8
fdt_high=
fdtcontroladdr=0x40000000
initrdhigh=
ip=dhcp
loadaddr=0x10000000
splashpos=m,c
splashimage=0x30000000
console=ttymxc0,115200n8
```
#### 3. 串口传输命令
U-Boot支持通过串口进行数据传输,这对于调试特别有用。
**命令**:
- `tftp`: 从TFTP服务器下载文件。
- `sf`: 对SPI Flash进行操作。
- `sf probe`: 探测SPI Flash设备。
**示例**:
```bash
[u-boot@MINI2440]# tftp 0x1000000 /path/to/file.bin
TFTP from server 192.168.1.100; our IP address is 192.168.1.101
Filename ‘/path/to/file.bin’.
Load address: 0x1000000
Loading: ################################################################
done, 102400 bytes transferred in 2.5 seconds (38.5 KiB/s)
```
#### 4. 网络命令
U-Boot支持通过网络进行文件传输和其他操作。
**命令**:
- `dhcp`: 获取DHCP分配的IP地址。
- `ping`: 测试网络连接。
- `bootp`: 通过BOOTP/TFTP协议启动镜像。
- `loadb`: 从网络加载内核和启动参数。
- `loadkernel`: 仅加载内核。
**示例**:
```bash
[u-boot@MINI2440]# dhcp
Starting DHCP client on eth0...
DHCP offer from 192.168.1.1 (timeout=10s)
DHCP lease obtained, IP address: 192.168.1.101
Subnet mask: 255.255.255.0, Gateway: 192.168.1.1
DNS servers: 8.8.8.8, 8.8.4.4
```
#### 5. NAND Flash操作指令
NAND Flash通常用于存储操作系统镜像和用户数据。
**命令**:
- `nand read`: 从NAND Flash读取数据。
- `nand write`: 向NAND Flash写入数据。
- `nand erase`: 清除NAND Flash区块。
- `nand info`: 显示NAND Flash信息。
**示例**:
```bash
[u-boot@MINI2440]# nand info
NAND device(s) found:
Device #0: DeviceSize = 128 MiB (0x00000000 - 0x08000000)
EraseBlockSize = 128 KiB (0x20000)
Page size = 2 KiB (0x800)
Pages per block = 64
O.E.C. bits = 1
Bad Block Marking Method = 0
```
#### 6. 内存/寄存器操作指令
这些指令用于直接访问和操作内存及寄存器。
**命令**:
- `md`: 显示内存内容。
- `mw`: 写入内存。
- `mr`: 读取寄存器。
- `ms`: 设置寄存器。
**示例**:
```bash
[u-boot@MINI2440]# md 0x10000000 10
0x10000000: 0x00000000 0x00000000 0x00000000 0x00000000
0x10000010: 0x00000000 0x00000000 0x00000000 0x00000000
```
#### 7. Nor Flash指令
Nor Flash常被用于存储较小的程序代码。
**命令**:
- `nor read`: 从Nor Flash读取数据。
- `nor write`: 向Nor Flash写入数据。
- `nor erase`: 清除Nor Flash区块。
- `nor info`: 显示Nor Flash信息。
**示例**:
```bash
[u-boot@MINI2440]# nor info
NOR device(s) found:
Device #0: DeviceSize = 16 MiB (0x00000000 - 0x01000000)
EraseBlockSize = 64 KiB (0x10000)
Page size = 512 B (0x200)
```
#### 8. USB操作指令
U-Boot支持USB设备的操作。
**命令**:
- `usb start`: 启动USB控制器。
- `usb devices`: 显示USB设备列表。
- `usb mass_storage`: 挂载USB存储设备。
**示例**:
```bash
[u-boot@MINI2440]# usb start
USB started, USB configuration done
```
#### 9. SD卡(MMC)指令
SD卡或MMC卡常被用于扩展存储空间。
**命令**:
- `mmc info`: 显示SD/MMC卡信息。
- `mmc read`: 从SD/MMC卡读取数据。
- `mmc write`: 向SD/MMC卡写入数据。
**示例**:
```bash
[u-boot@MINI2440]# mmc info
card: 1 partitions, 8GiB, SDHC, SDR12, c0, ocr=0x40000000
```
#### 10. FAT文件系统指令
U-Boot支持对FAT文件系统的操作。
**命令**:
- `fatls`: 列出FAT文件系统上的文件。
- `fath`: 在FAT文件系统中查找文件。
- `fatrm`: 删除FAT文件系统上的文件。
- `fathcp`: 将文件从主机复制到FAT文件系统。
**示例**:
```bash
[u-boot@MINI2440]# fatls /dev/mmcblk0p1
mmcblk0p1:
0x00000000 0x00000000 file.bin
0x00000000 0x00000000 boot.scr
```
#### 11. 系统引导指令
用于控制系统的启动过程。
**命令**:
- `bootm`: 从内存启动应用镜像。
- `bootz`: 启动压缩的内核镜像。
- `bootp`: 通过网络启动镜像。
- `bootefi`: 启动EFI格式的镜像。
**示例**:
```bash
[u-boot@MINI2440]# bootm 0x10000000
## Booting from memory at 0x10000000 ...
## Loading: ################################################################
## OK: loaded 102400 bytes in 2.500 seconds
```
#### 12. EEPROM 读写指令
EEPROM可用于存储小量数据。
**命令**:
- `eeprom read`: 从EEPROM读取数据。
- `eeprom write`: 向EEPROM写入数据。
**示例**:
```bash
[u-boot@MINI2440]# eeprom read 0x0 0x10
0x00000000: 0x00000000 0x00000000 0x00000000 0x00000000
0x00000010: 0x00000000 0x00000000 0x00000000 0x00000000
```
#### 13. 设置和读取RTC指令
RTC(实时时钟)用于维持时间信息。
**命令**:
- `rtc`: 读取RTC时间。
- `rtcs`: 设置RTC时间。
**示例**:
```bash
[u-boot@MINI2440]# rtc
Current time is: Sat Apr 04 12:09:25 2010
```
#### 14. 脚本运行指令
U-Boot支持执行脚本文件。
**命令**:
- `source`: 执行脚本文件。
**示例**:
```bash
[u-boot@MINI2440]# source boot.scr
```
#### 15. 系统重启指令
用于重启系统。
**命令**:
- `reset`: 重启系统。
**示例**:
```bash
[u-boot@MINI2440]# reset
Resetting system...
```
#### 结论
U-Boot提供了一套强大的命令集合,覆盖了从基本的设备初始化到复杂的系统管理任务。通过对这些命令的学习和实践,开发者能够更好地利用U-Boot的功能,从而实现更高效的嵌入式系统开发。
1