U-Boot和Linux中文参考指南

来自百问网嵌入式Linux wiki
跳转至: 导航搜索


目录

简述

这是《嵌入式系统 PowerPC,ARM和MIPS系统的DENX Uboot引导和Linux指南手册》。
该文档介绍了如何配置,构建和使用固件Das U-Boot(通常缩写为 "U-Boot")以及用于嵌入式PowerPC,ARM和MIPS系统的操作系统 Linux。
本文档版本的重点是在Das U-Boot上。
本文件产生于2020年5月7日-02:52

Introduction

Copyright

Disclaimer

Availability

Credits

Translations

Feedback

Conventions

Embedded Linux Development Kit

ELDK Availability

ELDK Getting Help

Supported Host Systems

Supported Target Architectures

Installation

Product Packaging

Downloading the ELDK

Initial Installation

Installation and Removal of Individual Packages

Removal of the Entire Installation

Working with ELDK

Switching Between Multiple Installations

Mounting Target Components via NFS

Rebuilding ELDK Components

ELDK Source Distribution

Rebuilding Target Packages

Rebuilding ELDT Packages

ELDK Packages

List of ELDT Packages

List of Target Packages

Rebuilding the ELDK from Scratch

ELDK Build Process Overview

Setting Up ELDK Build Environment

build.sh Usage

Format of the cpkgs.lst and tpkgs.lst Files

Notes for Solaris 2.x Host Environment

System Setup

Serial Console Access

Configuring the "cu" command

Configuring the "kermit" command

Using the "minicom" program

Permission Denied Problems

Configuration of a TFTP Server

Configuration of a BOOTP / DHCP Server

Configuring a NFS Server

Das U-Boot

当前版本

Das U-Boot (或只是“U-Boot的”的简称)是开源固件的嵌入式Power架构 ®,ARM,MIPS,x86和其他处理器。U-Boot项目由DENX托管,您还可以在其中找到项目主页: http://www.denx.de/wiki/U-Boot/
可以从DENX "git "存储库中检索当前版本的U-Boot源代码。
您可以在 http://git.denx.de/ 浏览 "git"存储库。
可以通过git,HTTP和rsync协议访问这些树。例如,您可以使用以下命令之一来创建其中一个源树的本地克隆:

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

也可以通过FTP获得U-Boot的正式版本 。压缩tar档案可以从目录 ftp://ftp.denx.de/pub/u-boot/ 下载。

解压源代码

如果您使用GIT来获取U-Boot源的副本,则可以跳过此下一步,因为您已经具有解压缩的目录树。如果从DENX FTP服务器下载了压缩的tarball,则可以使用如下命令解压缩它:

$ cd /opt/eldk/usr/src
$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.2.tar.bz2
$ rm -f u-boot
$ bunzip2 < u-boot-1.3.2.tar.bz2 | tar xf -
$ ln -s u-boot-1.3.2 u-boot
$ cd u-boot

配置

使用U-Boot源代码切换到目录后,应确保没有任何先前配置留下的构建结果:

$ make distclean

以下命令为canyonlands板配置U-Boot:

$ make canyonlands_config

最后,我们可以编译工具和U-Boot本身:

$ make all

默认情况下,构建是在本地执行的,并且对象保存在源目录中。可以使用以下两种方法之一来更改此行为并将U-Boot构建到某个外部目录:

  • 1.在make命令行调用中添加 O=
make O=/tmp/build distclean
make O=/tmp/build canyonlands_config
make O=/tmp/build all
请注意,如果使用 O=output/dir 选项,则必须将其用于所有的make调用。
  • 2.将环境变量设置BUILD_DIR为指向所需位置:
export BUILD_DIR=/tmp/build
make distclean
make canyonlands_config
make all

Installation

Before You Begin

Installation Requirements

Board Identification Data

Installation Using a BDM/JTAG Debugger

Installation using U-Boot

Tool Installation

Initialization

Initial Steps

The First Power-On

U-Boot Command Line Interface

Information Commands

bdinfo - print Board Info structure

coninfo - print console devices and informations

flinfo - print FLASH memory information

iminfo - print header information for application image

help - print online help

Memory Commands

base - print or set address offset

crc32 - checksum calculation

cmp - memory compare

cp - memory copy

md - memory display

mm - memory modify (auto-incrementing)

mtest - simple RAM test

mw - memory write (fill)

nm - memory modify (constant address)

loop - infinite loop on address range

Flash Memory Commands

cp - memory copy

flinfo - print FLASH memory information

erase - erase FLASH memory

protect - enable or disable FLASH write protection

mtdparts - define a Linux compatible MTD partition scheme=

Execution Control Commands

source - run script from memory

bootm - boot application image from memory

go - start application at address 'addr'

Download Commands

bootp - boot image via network using BOOTP/TFTP protocol

dhcp - invoke DHCP client to obtain IP/boot params

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

loads - load S-Record file over serial line

rarpboot- boot image via network using RARP/TFTP protocol

tftpboot- boot image via network using TFTP protocol

Environment Variables Commands

printenv- print environment variables

saveenv - save environment variables to persistent storage

setenv - set environment variables

run - run commands in an environment variable

bootd - boot default, i.e., run 'bootcmd'

Flattened Device Tree support

fdt addr - select FDT to work on

fdt list - print one level

fdt print - recursive print

fdt mknode - create new nodes

fdt set - set node properties

fdt rm - remove nodes or properties

fdt move - move FDT blob to new address

fdt chosen - fixup dynamic info

Special Commands

i2c - I2C sub-system

Storage devices

Miscellaneous Commands

echo - echo args to console

reset - Perform RESET of the CPU

sleep - delay execution for some time

version - print monitor version

? - alias for 'help'

U-Boot Environment Variables

U-Boot Scripting Capabilities

U-Boot Standalone Applications

"Hello World" Demo

Timer Demo

Processor cache considerations

Running on core other than core 0

U-Boot Image Formats

U-Boot Advanced Features

Boot Count Limit

Embedded Linux Configuration

Download and Unpack the Linux Kernel Sources

Kernel Configuration and Compilation

Installation

Booting Embedded Linux

Introduction

Flattened Device Tree Blob

Passing Kernel Arguments

Boot Arguments Unleashed

Networked Operation with Root Filesystem over NFS

Bootlog of tftp'd Linux kernel with Root Filesystem over NFS

Boot from Flash Memory

Standalone Operation with Ramdisk Image

Building and Using Modules

Advanced Topics

Flash Filesystems

Memory Technology Devices

Journalling Flash File System

Second Version of JFFS

Compressed ROM Filesystem

The TMPFS Virtual Memory Filesystem

Mount Parameters

Kernel Support for tmpfs

Usage of tmpfs in Embedded Systems

Adding Swap Space

Splash Screen Support in Linux

Root File System: Design and Building=

Root File System on a Ramdisk

Root File System on a JFFS2 File System

Root File System on a cramfs File System

Root File System on a Read-Only ext2 File System

Root File System on a Flash Card

Root File System in a Read-Only File in a FAT File System

Root File System Selection

Overlay File Systems

The Persistent RAM File system (PRAMFS)

Mount Parameters

Example

Debugging

Debugging of U-Boot

Debugging of U-Boot Before Relocation

Debugging of U-Boot After Relocation

Linux Kernel Debugging

Linux Kernel and Statically Linked Device Drivers

Dynamically Loaded Device Drivers (Modules)

GDB Macros to Simplify Module Loading

GDB Startup File and Utility Scripts

Tips and Tricks

Application Debugging

Local Debugging

Remote Debugging

Debugging with Graphical User Interfaces

Simple Embedded Linux Framework

Books, Mailing Lists, Links, etc.

Application Notes

Further Reading

Upstreaming

License Issues

Linux kernel

General Linux / Unix programming

Network Programming

C++ programming

Java programming

Internationalization And Character Sets

ARM Architecture Programming

Power Architecture® Programming

Embedded Topics

Mailing Lists

Links

Tools

Appendix

Flat Device Tree

Flat Device Tree

BDI2000 Configuration file

FAQ - Frequently Asked Questions

ELDK

ELDK Installation under FreeBSD

ELDK Installation Hangs

.gvfs: Permission Denied

Installation on Local Harddisk

System Include Files Missing

patch: command not found

ELDK Include Files Missing

Using the ELDK on a 64 bit platform

GDB Problems with BDI2000/BDI3000 on e500 Cores

How can I check if Floating Point support is working?

ELDK 2.x Installation Aborts

Enable SSH Access

U-Boot

Can U-Boot be configured such that it can be started in RAM?

Relocation cannot be done when using -mrelocatable

Source object has EABI version 4, but target has EABI version 0

U-Boot crashes after relocation to RAM

Warning - bad CRC, using default environment

Net: No ethernet found

Wrong debug symbols after relocation

Decoding U-Boot Crash Dumps

Porting Problem: cannot move location counter backwards

U-Boot Doesn't Run after Upgrading my Compiler

How Can I Reduce The Image Size?

Erasing Flash Fails

Ethernet Does Not Work

Where Can I Get a Valid MAC Address from?

Why do I get TFTP timeouts?

Why is my Ethernet operation not reliable?

How the Command Line Parsing Works

Old, simple command line parser

Hush shell

Hush shell scripts

General rules

How can I load and uncompress a compressed image

How can I create an uImage from a ELF file

My standalone program does not work

Linux hangs after uncompressing the kernel

How can I implement automatic software updates?

Linux

Linux crashes randomly

Linux crashes when uncompressing the kernel

Linux Post Mortem Analysis

Linux kernel register usage

Linux Kernel Ignores my bootargs

Cannot configure Root Filesystem over NFS

Linux Kernel Panics because "init" process dies

Unable to open an initial console

System hangs when entering User Space (ARM)

Mounting a Filesystem over NFS hangs forever

Ethernet does not work in Linux

Loopback interface does not work

Linux kernel messages are not printed on the console

Linux ignores input when using the framebuffer driver

How to switch off the screen saver and the blinking cursor?

BogoMIPS Value too low

Linux Kernel crashes when using a ramdisk image

Ramdisk Greater than 4 MB Causes Problems

Combining a Kernel and a Ramdisk into a Multi-File Image

Adding Files to Ramdisk is Non Persistent

Kernel Configuration for PCMCIA

Configure Linux for PCMCIA Cards using the Card Services package

Configure Linux for PCMCIA Cards without the Card Services package

Using a MacOS Partition Table

Using a MS-DOS Partition Table

Boot-Time Configuration of MTD Partitions

Use NTP to synchronize system time against RTC

Configure Linux for XIP (Execution In Place)

XIP Kernel

Cramfs Filesystem

Hints and Notes

=Space requirements and RAM saving, an example

Use SCC UART with Hardware Handshake

How can I access U-Boot environment variables in Linux?

The =appWeb= server hangs *OR* /dev/random hangs

Swapping over NFS

Using NFSv3 for NFS Root Filesystem

Using and Configuring the SocketCAN Driver

Telnet / SSH (dropbear) server not working

Self

How to Add Files to a SELF Ramdisk

How to Increase the Size of the Ramdisk

RTAI

Conflicts with asm clobber list

BDI2000

Where can I find BDI2000 Configuration Files?

How to Debug Linux Exceptions

How to single step through "RFI" instruction

Setting a breakpoint doesn't work

Remote 'g' packet reply is too long

Motorola LITE5200 Board

LITE5200 Installation Howto

USB does not work on Lite5200 board

Glossary