📄 readme
字号:
## (C) Copyright 2000 - 2005# Wolfgang Denk, DENX Software Engineering, wd@denx.de.## See file CREDITS for list of people who contributed to this# project.## This program is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License as# published by the Free Software Foundation; either version 2 of# the License, or (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston,# MA 02111-1307 USA#Summary:========This directory contains the source code for U-Boot, a boot loader forEmbedded boards based on PowerPC, ARM, MIPS and several otherprocessors, which can be installed in a boot ROM and used toinitialize and test the hardware or to download and run applicationcode.The development of U-Boot is closely related to Linux: some parts ofthe source code originate in the Linux source tree, we have someheader files in common, and special provision has been made tosupport booting of Linux images.Some attention has been paid to make this software easilyconfigurable and extendable. For instance, all monitor commands areimplemented with the same call interface, so that it's very easy toadd new commands. Also, instead of permanently adding rarely usedcode (for instance hardware test utilities) to the monitor, you canload and run it dynamically.Status:=======In general, all boards for which a configuration option exists in theMakefile have been tested to some extent and can be considered"working". In fact, many of them are used in production systems.In case of problems see the CHANGELOG and CREDITS files to find outwho contributed the specific port.Where to get help:==================In case you have questions about, problems with or contributions forU-Boot you should send a message to the U-Boot mailing list at<u-boot-users@lists.sourceforge.net>. There is also an archive ofprevious traffic on the mailing list - please search the archivebefore asking FAQ's. Please seehttp://lists.sourceforge.net/lists/listinfo/u-boot-users/Where we come from:===================- start from 8xxrom sources- create PPCBoot project (http://sourceforge.net/projects/ppcboot)- clean up code- make it easier to add custom boards- make it possible to add other [PowerPC] CPUs- extend functions, especially: * Provide extended interface to Linux boot loader * S-Record download * network boot * PCMCIA / CompactFLash / ATA disk / SCSI ... boot- create ARMBoot project (http://sourceforge.net/projects/armboot)- add other CPU families (starting with ARM)- create U-Boot project (http://sourceforge.net/projects/u-boot)Names and Spelling:===================The "official" name of this project is "Das U-Boot". The spelling"U-Boot" shall be used in all written text (documentation, commentsin source files etc.). Example: This is the README file for the U-Boot project.File names etc. shall be based on the string "u-boot". Examples: include/asm-ppc/u-boot.h #include <asm/u-boot.h>Variable names, preprocessor constants etc. shall be either based onthe string "u_boot" or on "U_BOOT". Example: U_BOOT_VERSION u_boot_logo IH_OS_U_BOOT u_boot_hush_startVersioning:===========U-Boot uses a 3 level version number containing a version, asub-version, and a patchlevel: "U-Boot-2.34.5" means version "2",sub-version "34", and patchlevel "4".The patchlevel is used to indicate certain stages of developmentbetween released versions, i. e. officially released versions ofU-Boot will always have a patchlevel of "0".Directory Hierarchy:====================- board Board dependent files- common Misc architecture independent functions- cpu CPU specific files - 74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs - arm720t Files specific to ARM 720 CPUs - arm920t Files specific to ARM 920 CPUs - at91rm9200 Files specific to Atmel AT91RM9200 CPU - imx Files specific to Freescale MC9328 i.MX CPUs - s3c24x0 Files specific to Samsung S3C24X0 CPUs - arm925t Files specific to ARM 925 CPUs - arm926ejs Files specific to ARM 926 CPUs - arm1136 Files specific to ARM 1136 CPUs - at32ap Files specific to Atmel AVR32 AP CPUs - i386 Files specific to i386 CPUs - ixp Files specific to Intel XScale IXP CPUs - mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs - mcf532x Files specific to Freescale ColdFire MCF5329 CPUs - mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs - mips Files specific to MIPS CPUs - mpc5xx Files specific to Freescale MPC5xx CPUs - mpc5xxx Files specific to Freescale MPC5xxx CPUs - mpc8xx Files specific to Freescale MPC8xx CPUs - mpc8220 Files specific to Freescale MPC8220 CPUs - mpc824x Files specific to Freescale MPC824x CPUs - mpc8260 Files specific to Freescale MPC8260 CPUs - mpc85xx Files specific to Freescale MPC85xx CPUs - nios Files specific to Altera NIOS CPUs - nios2 Files specific to Altera Nios-II CPUs - ppc4xx Files specific to AMCC PowerPC 4xx CPUs - pxa Files specific to Intel XScale PXA CPUs - s3c44b0 Files specific to Samsung S3C44B0 CPUs - sa1100 Files specific to Intel StrongARM SA1100 CPUs- disk Code for disk drive partition handling- doc Documentation (don't expect too much)- drivers Commonly used device drivers- dtt Digital Thermometer and Thermostat drivers- examples Example code for standalone applications, etc.- include Header Files- lib_arm Files generic to ARM architecture- lib_avr32 Files generic to AVR32 architecture- lib_generic Files generic to all architectures- lib_i386 Files generic to i386 architecture- lib_m68k Files generic to m68k architecture- lib_mips Files generic to MIPS architecture- lib_nios Files generic to NIOS architecture- lib_ppc Files generic to PowerPC architecture- libfdt Library files to support flattened device trees- net Networking code- post Power On Self Test- rtc Real Time Clock drivers- tools Tools to build S-Record or U-Boot images, etc.Software Configuration:=======================Configuration is usually done using C preprocessor defines; therationale behind that is to avoid dead code whenever possible.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 if you don't know what you're doing; they have names beginning with "CFG_".Later we will add a configuration tool - probably similar to or evenidentical to what's used for the Linux kernel. Right now, we have todo the configuration by hand, which means creating some symboliclinks and editing some configuration files. We use the TQM8xxL boardsas an example here.Selection of Processor Architecture and Board Type:---------------------------------------------------For all supported boards there are ready-to-use defaultconfigurations available; just type "make <board_name>_config".Example: For a TQM823L module type: cd u-boot make TQM823L_configFor the Cogent platform, you need to specify the cpu type as well;e.g. "make cogent_mpc8xx_config". And also configure the cogentdirectory according to the instructions in cogent/README.Configuration Options:----------------------Configuration depends on the combination of board and CPU type; allsuch information is kept in a configuration file"include/configs/<board_name>.h".Example: For a TQM823L module, all configuration settings are in"include/configs/TQM823L.h".Many of the options are named exactly as the corresponding Linuxkernel configuration options. The intention is to make it easier tobuild a config tool - later.The following options need to be configured:- CPU Type: Define exactly one, e.g. CONFIG_MPC85XX.- Board Type: Define exactly one, e.g. CONFIG_MPC8540ADS.- CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined) Define exactly one of CONFIG_ATSTK1002- CPU Module Type: (if CONFIG_COGENT is defined) Define exactly one of CONFIG_CMA286_60_OLD--- FIXME --- not tested yet: CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P, CONFIG_CMA287_23, CONFIG_CMA287_50- Motherboard Type: (if CONFIG_COGENT is defined) Define exactly one of CONFIG_CMA101, CONFIG_CMA102- Motherboard I/O Modules: (if CONFIG_COGENT is defined) Define one or more of CONFIG_CMA302- Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined) Define one or more of CONFIG_LCD_HEARTBEAT - update a character position on the lcd display every second with a "rotator" |\-/|\-/- Board flavour: (if CONFIG_MPC8260ADS is defined) CONFIG_ADSTYPE Possible values are: CFG_8260ADS - original MPC8260ADS CFG_8266ADS - MPC8266ADS CFG_PQ2FADS - PQ2FADS-ZU or PQ2FADS-VR CFG_8272ADS - MPC8272ADS- MPC824X Family Member (if CONFIG_MPC824X is defined) Define exactly one of CONFIG_MPC8240, CONFIG_MPC8245- 8xx CPU Options: (if using an MPC8xx cpu) CONFIG_8xx_GCLK_FREQ - deprecated: CPU clock if get_gclk_freq() cannot work e.g. if there is no 32KHz reference PIT/RTC clock CONFIG_8xx_OSCLK - PLL input clock (either EXTCLK or XTAL/EXTAL)- 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU): CFG_8xx_CPUCLK_MIN CFG_8xx_CPUCLK_MAX CONFIG_8xx_CPUCLK_DEFAULT See doc/README.MPC866 CFG_MEASURE_CPUCLK Define this to measure the actual CPU clock instead of relying on the correctness of the configured values. Mostly useful for board bringup to make sure the PLL is locked at the intended frequency. Note that this requires a (stable) reference clock (32 kHz RTC clock or CFG_8XX_XIN)- Intel Monahans options: CFG_MONAHANS_RUN_MODE_OSC_RATIO Defines the Monahans run mode to oscillator ratio. Valid values are 8, 16, 24, 31. The core frequency is this value multiplied by 13 MHz. CFG_MONAHANS_TURBO_RUN_MODE_RATIO Defines the Monahans turbo mode to oscillator ratio. Valid values are 1 (default if undefined) and 2. The core frequency as calculated above is multiplied by this value.- Linux Kernel Interface: CONFIG_CLOCKS_IN_MHZ U-Boot stores all clock information in Hz internally. For binary compatibility with older Linux kernels (which expect the clocks passed in the bd_info data to be in MHz) the environment variable "clocks_in_mhz" can be defined so that U-Boot converts clock data to MHZ before passing it to the Linux kernel. When CONFIG_CLOCKS_IN_MHZ is defined, a definition of "clocks_in_mhz=1" is automatically included in the default environment. CONFIG_MEMSIZE_IN_BYTES [relevant for MIPS only] When transfering memsize parameter to linux, some versions expect it to be in bytes, others in MB. Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes. CONFIG_OF_LIBFDT / CONFIG_OF_FLAT_TREE New kernel versions are expecting firmware settings to be passed using flattened device trees (based on open firmware concepts). CONFIG_OF_LIBFDT * New libfdt-based support * Adds the "fdt" command * The bootm command automatically updates the fdt CONFIG_OF_FLAT_TREE * Deprecated, see CONFIG_OF_LIBFDT * Original ft_build.c-based support * Automatically modifies the dft as part of the bootm command * The environment variable "disable_of", when set, disables this functionality. OF_CPU - The proper name of the cpus node. OF_SOC - The proper name of the soc node. OF_TBCLK - The timebase frequency. OF_STDOUT_PATH - The path to the console device boards with QUICC Engines require OF_QE to set UCC mac addresses CONFIG_OF_HAS_BD_T * CONFIG_OF_LIBFDT - enables the "fdt bd_t" command * CONFIG_OF_FLAT_TREE - The resulting flat device tree will have a copy of the bd_t. Space should be pre-allocated in the dts for the bd_t. CONFIG_OF_HAS_UBOOT_ENV * CONFIG_OF_LIBFDT - enables the "fdt env" command * CONFIG_OF_FLAT_TREE - The resulting flat device tree will have a copy of u-boot's environment variables CONFIG_OF_BOARD_SETUP Board code has addition modification that it wants to make to the flat device tree before handing it off to the kernel CONFIG_OF_BOOT_CPU This define fills in the correct boot cpu in the boot param header, the default value is zero if undefined.- Serial Ports: CFG_PL010_SERIAL Define this if you want support for Amba PrimeCell PL010 UARTs. CFG_PL011_SERIAL Define this if you want support for Amba PrimeCell PL011 UARTs. CONFIG_PL011_CLOCK If you have Amba PrimeCell PL011 UARTs, set this variable to the clock speed of the UARTs. CONFIG_PL01x_PORTS If you have Amba PrimeCell PL010 or PL011 UARTs on your board, define this to a list of base addresses for each (supported) port. See e.g. include/configs/versatile.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -