u-boot 根目录README文件 翻译

  • Summary
  • Status
  • Where to get help
  • Where to get source code
  • Where we come from
  • Names and Spelling
  • Versioning
  • Directory Hierarchy
  • Software Configuration
    • Selection of Processor Architecture and Board Type
    • Sandbox Environment
    • Board Initialisation Flow
    • Configuration
    • Board initialization settings
    • Configuration Settings
    • Low Level (hardware related) configuration options
    • Freescale QE/FMAN Firmware Support
    • Freescale Layerscape Management Complex Firmware Support
    • Freescale Layerscape Debug Server Support
    • Reproducible builds
  • Building the Software
  • Testing of U-Boot Modifications, Ports to New Hardware, etc.
  • Monitor Commands - Overview
  • Monitor Commands - Detailed Description
  • Environment Variables
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2000 - 2013
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.

Summary

This directory contains the source code for U-Boot, a boot loader for
Embedded boards based on PowerPC, ARM, MIPS and several other
processors, which can be installed in a boot ROM and used to
initialize and test the hardware or to download and run application
code.
  • 这个目录包含了U-Boot的源代码,一个为基于PowerPC,ARM,MIPS和几种其他处理器的嵌入式开发板的Boot引导程序,这个程序可以被安装在Boot ROM中,用来初始化或测试硬件或者用来下载和运行应用程序。
The development of U-Boot is closely related to Linux: some parts of
the source code originate in the Linux source tree, we have some
header files in common, and special provision has been made to
support booting of Linux images.
  • U-Boot的发展是跟Linux息息相关的:源代码的一些内容来源于Linux源码树,我们有一些通用的头文件,已经为支持引导Linux镜像做了一些准备。
Some attention has been paid to make this software easily
configurable and extendable. For instance, all monitor commands are
implemented with the same call interface, so that it's very easy to
add new commands. Also, instead of permanently adding rarely used
code (for instance hardware test utilities) to the monitor, you can
load and run it dynamically.
  • 我们已经花费了好多精力,使这个程序更容易被配置和扩展。例如,所有的monitor 命令可以使用相同的接口来执行,因此添加新的命令是很容易的事。同时,这个程序没有一直都包含很少使用的一些代码,你可以动态地加载和运行那些很少使用的代码;

Status

In general, all boards for which a configuration option exists in the
Makefile have been tested to some extent and can be considered
"working". In fact, many of them are used in production systems.
  • 总的说来,那些在Makefile中存在的配置项在某种程度上已经被测试过,可以认为它们都是有效的。事实上,这些配置好多都在生产系统上使用。
In case of problems see the CHANGELOG file to find out who contributed
the specific port. In addition, there are various MAINTAINERS files
scattered throughout the U-Boot source identifying the people or
companies responsible for various boards and subsystems.
  • 如果有什么问题,可以查看CHANGELOG文件,可以找出谁为某个特定的接口做出过贡献。此外,。。。。。省略了,哈哈哈哈。

Where to get help

从哪里获得帮助

Where to get source code

从哪里获得源代码

Where we come from

我们来自哪里

Names and Spelling

名字和拼写

Versioning

版本说明

Directory Hierarchy

目录等级

Software Configuration

Configuration is usually done using C preprocessor defines; the
rationale behind that is to avoid dead code whenever possible.
  • 配置通常通过C预处理器定义来完成;使用这种方法的根本原因就是为了尽可能的减少dead代码;
There are two classes of configuration variables:* Configuration _OPTIONS_:These are selectable by the user and have names beginning with"CONFIG_".* Configuration _SETTINGS_:These depend on the hardware etc. and should not be meddled with ifyou don't know what you're doing; they have names beginning with"CONFIG_SYS_".
  • 有两类配置变量:

    *配置 OPTIONS
    这些是由用户自行选择的,有好多名称都是由"CONFIG_"打头;

    *配置 SETTINGS
    这些取决于硬件。如果你不知道你在做什么的话,最好别乱动这些配置;他们的名称由"CONFIG_SYS_"打头;

Previously, all configuration was done by hand, which involved creating
symbolic links and editing configuration files manually. More recently,
U-Boot has added the Kbuild infrastructure used by the Linux kernel,
allowing you to use the "make menuconfig" command to configure your
build.
  • 以前,所有的配置都是手动完成的,需要手动去创建符号链接,编辑配置文件。最近以来,U-boot已经把Linux内核中使用的Kbuild 结构加入进来,允许你使用“make menuconfig”命令来配置你的build;

Selection of Processor Architecture and Board Type

For all supported boards there are ready-to-use default
configurations available; just type "make <board_name>_defconfig".Example: For a TQM823L module type:cd u-bootmake TQM823L_defconfigNote: If you're looking for the default configuration file for a board
you're sure used to be there but is now missing, check the file
doc/README.scrapyard for a list of no longer supported boards.
  • 对于所有已经支持的板子,U-boot已经有可以使用的默认配置;只需要键入"make <board_name>_defconfig"就可以进行配置;

例如:对于使用TQM823L模块:
cd u-boot
make TQM823L_defconfig

注意:如果你正在寻找一款板子的默认配置文件,并且你确定过去是存在的,但现在消失了,你需要阅读doc/README文件,那里有当前U-boot不再支持板子的清单;

Sandbox Environment

U-Boot can be built natively to run on a Linux host using the 'sandbox'
board. This allows feature development which is not board- or architecture-
specific to be undertaken on a native platform. The sandbox is also used to
run some of U-Boot's tests.See doc/arch/index.rst for more details.
  • U-boot能够被创建并在使用了sandbox的Linux主机上运行。这允许可以不满足U-boot运行的板子或架构,而使用sandbox运行U-boot。Sandbox也被用来做一些U-boot的测试。

  • 查看doc/arch/index.rst来获得更多细节。

Board Initialisation Flow

This is the intended start-up flow for boards. This should apply for both
SPL and U-Boot proper (i.e. they both follow the same rules).
  • 这是一个为板子设计好的启动流程。这个流程应当在SPL和U-boot中被正确的使用;
Note: "SPL" stands for "Secondary Program Loader," which is explained in
more detail later in this file.
  • 注意:“SPL”表示“Secondary Program Loader”,这个将在本文中稍后进行详细解释;
At present, SPL mostly uses a separate code path, but the function names
and roles of each function are the same. Some boards or architectures
may not conform to this.  At least most ARM boards which use
CONFIG_SPL_FRAMEWORK conform to this.
  • 目前,SPL大多使用一个分离的代码路径,但是函数名称和每个函数的作用都是一样的。有些板子或架构也许不遵守这个规则。但是,至少在大多数使用CONFIG_SPL_FRAMEWORK的ARM开发板上,是遵从这个规则的。
Execution typically starts with an architecture-specific (and possibly
CPU-specific) start.S file, such as:- arch/arm/cpu/armv7/start.S- arch/powerpc/cpu/mpc83xx/start.S- arch/mips/cpu/start.S
  • 程序运行通常从某个架构(某个处理器)的start.S文件开始,例如:

    • arch/arm/cpu/armv7/start.S
    • arch/powerpc/cpu/mpc83xx/start.S
    • arch/mips/cpu/start.S
and so on. From there, three functions are called; the purpose and
limitations of each of these functions are described below.

等等。从这里,三个函数被调用。这些函数中每个的目的和限制将在下面进行说明。

lowlevel_init():- purpose: essential init to permit execution to reach board_init_f()- no global_data or BSS- there is no stack (ARMv7 may have one but it will soon be removed)- must not set up SDRAM or use console- must only do the bare minimum to allow execution to continue toboard_init_f()- this is almost never needed- return normally from this function
  • lowlevel_init():
    • 目的:必要的初始化来允许执行到board_init_f()
    • 没有全局数据或者BSS
    • 没有堆栈
    • 禁止设置堆栈或者使用控制台
    • 只做一些最小的来执行到board_init_f()
    • 这个总是不是必须的
    • 从这个函数正常返回
board_init_f():- purpose: set up the machine ready for running board_init_r():i.e. SDRAM and serial UART- global_data is available- stack is in SRAM- BSS is not available, so you cannot use global/static variables,only stack variables and global_data
  • board_init_f():
  • 目的:设施机器准备好运行board_init_r(),例如SDRAM和串口;
  • 可以使用全局数据
  • 堆栈在SRAM里
  • BSS还不可用,因此你不能使用全局或静态变量,只允许使用堆栈变量和全局数据
Non-SPL-specific notes:- dram_init() is called to set up DRAM. If already done in SPL thiscan do nothing
  • Non-SPL-specific notes:
  • 调用dram_init()来设置DRAM。如果在SPL中已经完成,就什么也不要做;
SPL-specific notes:- you can override the entire board_init_f() function with your ownversion as needed.- preloader_console_init() can be called here in extremis- should set up SDRAM, and anything needed to make the UART work- these is no need to clear BSS, it will be done by crt0.S- for specific scenarios on certain architectures an early BSS *can*be made available (via CONFIG_SPL_EARLY_BSS by moving the clearingof BSS prior to entering board_init_f()) but doing so is discouraged.Instead it is strongly recommended to architect any code changesor additions such to not depend on the availability of BSS duringboard_init_f() as indicated in other sections of this README tomaintain compatibility and consistency across the entire code base.- must return normally from this function (don't call board_init_r()directly)
  • SPL-specific notes:
  • 你可以忽略掉整个的board_init_f()函数,可以使用你自己的版本,如果有需要;
  • 在万不得已的情况下,可以调用preloader_console_init()
  • 应当设置 SDRAM,做一些设置让串口工作
  • 没有必要清除,清除操作会由crt0.S完成
  • 从这个函数必须正常的返回(不要直接调用call board_init_r())
Here the BSS is cleared. For SPL, if CONFIG_SPL_STACK_R is defined, then at
this point the stack and global_data are relocated to below
CONFIG_SPL_STACK_R_ADDR. For non-SPL, U-Boot is relocated to run at the top of
memory.

这里,BSS被清除。对于SPL,如果CONFIG_SPL_STACK_R被定义,那么在这个点上,堆栈和全局数据被重定位到CONFIG_SPL_STACK_R_ADDR下。对于non-SPL,U-boot被重定位到内存的顶端运行。

board_init_r():- purpose: main execution, common code- global_data is available- SDRAM is available- BSS is available, all static/global variables can be used- execution eventually continues to main_loop()
  • 目的:主要的执行程序,通用的代码
  • 全局数据可以使用
  • SDRAM可以使用
  • BSS可以使用,所有的静态或全局变量都可以使用
  • 执行最终会进入到main_loop()
Non-SPL-specific notes:- U-Boot is relocated to the top of memory and is now running fromthere.
  • Non-SPL-specific notes:
  • U-Boot被重定位到内存顶端,并从这里开始运行
   SPL-specific notes:- stack is optionally in SDRAM, if CONFIG_SPL_STACK_R is defined andCONFIG_SPL_STACK_R_ADDR points into SDRAM- preloader_console_init() can be called here - typically this isdone by selecting CONFIG_SPL_BOARD_INIT and then supplying aspl_board_init() function containing this call- loads U-Boot or (in falcon mode) Linux
  • SPL-specific notes:
  • 可以在SDRAM中操作堆栈,如果定义了CONFIG_SPL_STACK_R,CONFIG_SPL_STACK_R_ADDR指向SDRAM。
  • 在这里可以调用preloader_console_init()——通常这都是由选择CONFIG_SPL_BOARD_INIT,并且提供一个函数spl_board_init()来完成的
  • 装在U-Boot或者Linux

Configuration

Configuration depends on the combination of board and CPU type; all
such information is kept in a configuration file
"include/configs/<board_name>.h".
  • 配置取决于板子和CPU类型;所有的这些信息都被保存在一个配置文件里——“include/configs/<board_name>.h”
Example: For a TQM823L module, all configuration settings are in
"include/configs/TQM823L.h".
  • 例如:对一块TQM823L板子来说,所有的配置设置都在"include/configs/TQM823L.h"文件里;
Many of the options are named exactly as the corresponding Linux
kernel configuration options. The intention is to make it easier to
build a config tool - later.
  • 许多操作的命名完全和Linux内核配置操作一致。其目的是为了更容易的创建配置工具。

Board initialization settings

During Initialization u-boot calls a number of board specific functions
to allow the preparation of board specific prerequisites, e.g. pin setup
before drivers are initialized. To enable these callbacks the
following configuration macros have to be defined. Currently this is
architecture specific, so please check arch/your_architecture/lib/board.c
typically in board_init_f() and board_init_r().

Configuration Settings

Low Level (hardware related) configuration options

Freescale QE/FMAN Firmware Support

Freescale Layerscape Management Complex Firmware Support

Freescale Layerscape Debug Server Support

Reproducible builds

Building the Software

Testing of U-Boot Modifications, Ports to New Hardware, etc.

Monitor Commands - Overview

Monitor Commands - Detailed Description

Environment Variables

u-boot README翻译相关推荐

  1. DTN设置、运行和参数介绍——ONE Readme 翻译

    ONE模拟器 The ONE v1.6.0 - Readme原文 Quick start Configuring DTN2 Reference Implementation Connectivity ...

  2. spring boot guide 翻译

    Spring官方Guides 随着微服务的流行,Spring Boot/Cloud的崛起,Spring Source几乎再一次要成为Java的代名词.那么我们如何才能快速的学习和入门Spring呢?除 ...

  3. 计算机boot camp翻译,boot camp

    More than one hundred GE employees will spend a week at GA over the next year in a sort of digital b ...

  4. Spring Boot官方翻译

    How-to指南 本章节将回答一些常见的"我该怎么做"类型的问题,这些问题在我们使用spring Boot时经常遇到.这绝不是一个详尽的列表,但它覆盖了很多方面. 如果遇到一个特殊 ...

  5. YunYang1994/tensorflow-yolov3 Readme 翻译

    TensorFlow2.0-Examples/4-Object_Detection/YOLOV3 文章目录 TensorFlow2.0-Examples/4-Object_Detection/YOLO ...

  6. Start booting from USB device boot failed 解决办法(老机器问题)

    Start booting from USB device boot failed 解决办法 问题: 一般情况下,我们设置电脑BIOS USB 第一启动方式最重要的两步: 1.Removable De ...

  7. 专题目录20211013-ongoing

    密码学基础系列 密码学基础(1)-前言 密码学基础(2)-基础知识介绍 密码学基础(3)-数字摘要hash的介绍 密码学基础(4)-aes和分组密码的介绍 密码学基础(5)-RSA的介绍 密码学基础( ...

  8. YunYang1994/tensorflow-yolov3 训练自己的数据集

    文章目录 前言 训练流程 1.准备好`图片`和`train.txt`.`test.txt` 2.修改相关路径 i) 修改`class.names`文件以及`__C.YOLO.CLASSES`参数路径 ...

  9. Intel Realsense D435 通过识别目标的像素坐标和深度值(使用内参intrinsics)获取目标点的真实坐标

    Intel Realsense D435 通过识别目标的像素坐标和深度值(使用内参intrinsics)获取目标点的真实坐标 图原理 基本获取内参`intrinsics`代码 实操代码1(在`tens ...

最新文章

  1. 北京尚学堂|程序员励志名言
  2. linux——系统排错之引导恢复shell
  3. 选择安防交换机时需要避免哪些误区呢?
  4. libuv 网络库设计概览译
  5. 2017.10.30 覆盖问题 思考记录
  6. 创立三年,广受好评:如何评价 ApacheCN ?
  7. postgreSQL源码分析——索引的建立与使用——GIN索引(1)
  8. Hive Hooks介绍
  9. 为什么读大学时做学术比搞项目重要?
  10. 练手python_在图像上增加数字
  11. 潇洒老师教你注塑模具使用顶针油需要注意的问题
  12. 震惊!某徐姓诗人竟,,
  13. CentOS 7查看源代码
  14. 笔记本外接显示屏,FPS下降严重的解决办法
  15. [react] addons
  16. UART,SPI,IIC,RS232通信时序和规则
  17. 系统上线前的“培训”工作
  18. 你的软路由还只是软路由么(当软路由遇上点心云~)
  19. 在校学生申请英国旅游签证材料清单及说明【2017年3月】
  20. 安卓dtmf识别_安卓dtmf识别_基于Python的DTMF信号识别

热门文章

  1. 第3单元 mvp架构,dagger2,butterknife的使用
  2. 机器学习:评价指标:分类问题、回归问题、排序问题
  3. was not registered for sy
  4. 报错SqlSession was not registered for synchronization because synchronization is not active
  5. 记springboot项目POM文件第一行报错 Unknown Error
  6. [Unity3D]Unity3D游戏开发之刀光剑影特效的实现
  7. 如何快速高效的训练ResNet,各种奇技淫巧(二):Mini-batch
  8. 欧舒丹 L'Occitane 活力清泉保湿面霜 - 男士护肤 - 香港草莓网StrawberryNET.com
  9. 优酷 youku 土豆 等视频网 视频下载
  10. 广州服装摄影画册设计公司--广州市有形广告公司