首页 > 编程知识 正文

嵌入式linux项目实例(uboot移植步骤)

时间:2023-05-04 22:05:41 阅读:74381 作者:3873

嵌入式linux开发uboot移植(1) ——uboot项目简介

一. uboot介绍

U-Boot、全称通用引导加载器是从遵循GPL条款的FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开源项目。

在操作系统方面,U-Boot不仅支持嵌入式Linux系统引导,还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS和android嵌入式操作系统。 当前支持的操作系统包括OpenBSD、NetBSD、FreeBSD、4.4BSD、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks

在CPU体系结构中,U-Boot除了支持PowerPC系列处理器外,还支持许多常见系列处理器,包括MIPS、x86、ARM、NIOS和XScale。

U-Boot项目的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。

二. uboot的特性

Uboot特性:

1、开源

2、支持多个嵌入式操作系统内核,包括Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS和android

3、支持多个处理器系列,如PowerPC、ARM、x86、MIPS;

4、高可靠性和稳定性

5、灵活的功能设置,适用于U-Boot调试、操作系统不同的引导请求、产品发布等;

6、丰富的设备驱动源代码,包括串行端口、以太网、SDRAM、闪存、液晶屏、NVRAM、EEPROM、RTC、键盘等;

7、更丰富的开发调试文档和强大的网络技术支持;

三.主要功能

U-Boot支持的主要功能:

1、系统启动支持NFS挂载、RAMDISK (压缩或非压缩)格式的根文件系统; NFS装载,支持从FLASH引导压缩或非压缩系统内核;

2、基本辅助功能强大的操作系统接口功能; 可以灵活地将多个关键参数设置和分发到操作系统,适用于系统在不同开发阶段的调试请求和产品发布,尤其是Linux支持功能最强。 它支持目标板环境参数的多种存储方式,包括FLASH、NVRAM和EEPROM。

3、CRC32检查可检查FLASH内内核、RAMDISK镜像文件是否正常;

4、设备驱动串行、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;

5、开机自检功能SDRAM,自动检测闪存大小; SDRAM故障检测; CPU型号;

6、特殊功能XIP内核引导;

四.工作模式

U-Boot的动作模式有启动加载模式和下载模式。

1、启动加载模式

启动模式是引导加载器的正常工作模式,嵌入式产品发布时,引导加载器必须在此模式下工作。 Bootloader将嵌入式操作系统从FLASH加载到SDRAM中并运行,整个过程是自动的。

2、下载模式

下载模式是指引导加载器通过某种通信方式将内核映像、根文件系统映像等从PC下载到目标板上的FLASH。 用户可以通过Bootloader提供的几个命令界面执行自己想要的操作。 开发人员可以使用各种命令,通过串行连接或网络连接等通信手段从主机(主机)下载文件(例如内核映像、文件系统映像),并将它们直接放入存储器中执行,或者FFI

在板和主机之间传输文件时,可以使用串行端口的xmodem/ymodem/zmodem协议,使用网络通过tftp、nfs协议传输,以及USB下载等方法。

通常,嵌入式开发者会在下载模式下开发嵌入式系统。 通常,用交叉电缆连接PC和目标开发板,从TFTP服务器下载内核,然后在NFS服务器上装载文件系统。

五. uboot常用命令

1、获取指令

命令: help或?

功能:显示当前U-boot版本支持的所有命令。

2、环境变量命令bootdelay执行自动启动(bootcmd中的命令)之前的等待时间秒数

baudrate串行控制台波特率

netmask以太网网络掩码

ethaddr以太网的MAC地址

引导文件的默认下载文件名

bootargs传递给Linux内核的启动参数

在bootcmd自动启动时运行命令

服务器IP TFTP服务器端的IP地址

ipaddr本地IP地址

stdin标准输入设备,一般为串行端口

stdout标准输出通常是串行端口,但也是液晶屏(VGA )

stderr标准错误通常是串行端口,但也是液晶屏(VGA )

使用printenv命令可以打印当前开发板的环境变量。

设置

nvname value设置环境变量的值,如果没有value,则表示删除env环境变量

saveenv将修改的环境变量保存到固态存储器中。

bootcmd 自动启动执行命令,uboot开机后会自动倒计时,在倒计时结束前如果没有外部按键打断自动计时,uboot将自动执行bootcmd变量保存的命令。

3、串口传输命令

loadb   - load binary file over serial line (kermit mode)

loadx   - load binary file over serial line (xmodem mode)

loady   - load binary file over serial line (ymodem mode)

4、网络命令

uboot可以通过网络来传输文件到开发板,直接用交叉网线连接开发板和电脑,也可以用普通直连网线连接路由器。

ping hostname

网络不通的原因:

A、U-boot网卡驱动有问题B、U-boot网络协议延时配置有问题C、网络参数配置问题,比如IP等,Host和Target都有可能有问题。

如果网络连通,就可以通过tftp、NFS挂载开发板

nfs     - boot p_w_picpath via network using NFS protocol

tftpboot- boot p_w_picpath via network using TFTP protocol

bootp   - boot p_w_picpath via network using BOOTP/TFTP protocol

5、NandFlash操作命令nand info显示可使用的Nand Flash

nand device [dev]显示或设定当前使用的Nand Flash

nand read  addr off  sizeNand Flash读取命令,从Nand的off偏移地址处读取size字节的数据到SDRAM的addr地址。

nand write   addr off  sizeNand Flash烧写命令,将SDRAM的addr地址处的size字节的数据烧写到Nand的off偏移地址。

nand write[.yaffs[1]]addr off size烧写yaffs 映像专用的命令,.yaffs1 for 512+16 NAND

nand erase [clean] [off size]Nand Flash檫除命令,擦除Nand Flash的 off 偏移地址处的size 字节的数据

nand bad显示Nand Flash的坏块

nand dump[.oob] off显示Nand Flash中的数据(16进制)

nand scrub彻底擦除整块Nand Flash中的数据,包括OOB。可以擦除软件坏块标志。

nand markbad off标示 Nand的 off 偏移地址处的块为坏块

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

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

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

mm     修改内存值(地址自动加一)

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

md       显示内存值

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

mw     用指定的数据填充内存

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

cp      内存的拷贝(包括内存与Nor Flash间的数据拷贝)

格式:cp [.b, .w, .l] source target count

7、USB操作命令usb reset初始化USB控制器

usb stop [f]关闭USB控制器

usb tree已连接的USB设备树

usb info [dev]显示USB设备[dev]的信息

usb storage显示已连接的USB存储设备

usb dev [dev]显示和设置当前USB存储设备

usb part [dev]显示USB存储设备[dev]的分区信息

usb read addr blk# cnt读取USB存储设备数据

使用USB操作命令前必须确保USB设备连接好,usb reset,以初始化USB控制器,获取设备信息。

8、SD/MMC操作命令

mmc init [dev] - 初始化MMC子系统

mmc device [dev] - 查看和设置当前设备

使用SD/MMC操作命令前必须确保SD/MMC设备连接好,mmc init,以初始化MMC控制器,获取设备信息。

六、uboot在Flash中的分区

嵌入式系统中一般用Flash作为启动设备,Flash上存储着uboot、环境变量、内核映像和文件系统。uboot一般存放在Flash的起始地址,其所在的扇区位置一般由SoC规定,一般为扇区0或扇区1。uboot后存放环境变量,内核和文件系统的存放位置则可以有规划的自由分配。

Uboot官方下载地址:

git://git.denx.de/u-boot.git

http://git.denx.de/u-boot.git

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。