{"id":20285654,"url":"https://github.com/aep/tplink-bootloader","last_synced_at":"2026-05-13T02:06:54.482Z","repository":{"id":140902145,"uuid":"129293076","full_name":"aep/tplink-bootloader","owner":"aep","description":null,"archived":false,"fork":false,"pushed_at":"2018-04-12T18:13:34.000Z","size":9043,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-24T14:54:34.872Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aep.png","metadata":{"files":{"readme":"README","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-12T18:13:01.000Z","updated_at":"2023-08-31T06:07:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"e218f47f-5f17-440a-a998-f109a65aeec2","html_url":"https://github.com/aep/tplink-bootloader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep%2Ftplink-bootloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep%2Ftplink-bootloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep%2Ftplink-bootloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep%2Ftplink-bootloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aep","download_url":"https://codeload.github.com/aep/tplink-bootloader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241780512,"owners_count":20019061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T14:28:11.338Z","updated_at":"2026-05-13T02:06:49.450Z","avatar_url":"https://github.com/aep.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"#\n# (C) Copyright 2000 - 2005\n# Wolfgang Denk, DENX Software Engineering, wd@denx.de.\n#\n# See file CREDITS for list of people who contributed to this\n# project.\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License as\n# published by the Free Software Foundation; either version 2 of\n# the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\tSee the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston,\n# MA 02111-1307 USA\n#\n\nSummary:\n========\n\nThis directory contains the source code for U-Boot, a boot loader for\nEmbedded boards based on PowerPC, ARM, MIPS and several other\nprocessors, which can be installed in a boot ROM and used to\ninitialize and test the hardware or to download and run application\ncode.\n\nThe development of U-Boot is closely related to Linux: some parts of\nthe source code originate in the Linux source tree, we have some\nheader files in common, and special provision has been made to\nsupport booting of Linux images.\n\nSome attention has been paid to make this software easily\nconfigurable and extendable. For instance, all monitor commands are\nimplemented with the same call interface, so that it's very easy to\nadd new commands. Also, instead of permanently adding rarely used\ncode (for instance hardware test utilities) to the monitor, you can\nload and run it dynamically.\n\n\nStatus:\n=======\n\nIn general, all boards for which a configuration option exists in the\nMakefile have been tested to some extent and can be considered\n\"working\". In fact, many of them are used in production systems.\n\nIn case of problems see the CHANGELOG and CREDITS files to find out\nwho contributed the specific port.\n\n\nWhere to get help:\n==================\n\nIn case you have questions about, problems with or contributions for\nU-Boot you should send a message to the U-Boot mailing list at\n\u003cu-boot-users@lists.sourceforge.net\u003e. There is also an archive of\nprevious traffic on the mailing list - please search the archive\nbefore asking FAQ's. Please see\nhttp://lists.sourceforge.net/lists/listinfo/u-boot-users/\n\n\nWhere we come from:\n===================\n\n- start from 8xxrom sources\n- create PPCBoot project (http://sourceforge.net/projects/ppcboot)\n- clean up code\n- make it easier to add custom boards\n- make it possible to add other [PowerPC] CPUs\n- extend functions, especially:\n  * Provide extended interface to Linux boot loader\n  * S-Record download\n  * network boot\n  * PCMCIA / CompactFLash / ATA disk / SCSI ... boot\n- create ARMBoot project (http://sourceforge.net/projects/armboot)\n- add other CPU families (starting with ARM)\n- create U-Boot project (http://sourceforge.net/projects/u-boot)\n\n\nNames and Spelling:\n===================\n\nThe \"official\" name of this project is \"Das U-Boot\". The spelling\n\"U-Boot\" shall be used in all written text (documentation, comments\nin source files etc.). Example:\n\n\tThis is the README file for the U-Boot project.\n\nFile names etc. shall be based on the string \"u-boot\". Examples:\n\n\tinclude/asm-ppc/u-boot.h\n\n\t#include \u003casm/u-boot.h\u003e\n\nVariable names, preprocessor constants etc. shall be either based on\nthe string \"u_boot\" or on \"U_BOOT\". Example:\n\n\tU_BOOT_VERSION\t\tu_boot_logo\n\tIH_OS_U_BOOT\t\tu_boot_hush_start\n\n\nVersioning:\n===========\n\nU-Boot uses a 3 level version number containing a version, a\nsub-version, and a patchlevel: \"U-Boot-2.34.5\" means version \"2\",\nsub-version \"34\", and patchlevel \"4\".\n\nThe patchlevel is used to indicate certain stages of development\nbetween released versions, i. e. officially released versions of\nU-Boot will always have a patchlevel of \"0\".\n\n\nDirectory Hierarchy:\n====================\n\n- board\t\tBoard dependent files\n- common\tMisc architecture independent functions\n- cpu\t\tCPU specific files\n  - 74xx_7xx\tFiles specific to Freescale MPC74xx and 7xx CPUs\n  - arm720t\tFiles specific to ARM 720 CPUs\n  - arm920t\tFiles specific to ARM 920 CPUs\n    - at91rm9200 Files specific to Atmel AT91RM9200 CPU\n    - imx\tFiles specific to Freescale MC9328 i.MX CPUs\n    - s3c24x0\tFiles specific to Samsung S3C24X0 CPUs\n  - arm925t\tFiles specific to ARM 925 CPUs\n  - arm926ejs\tFiles specific to ARM 926 CPUs\n  - arm1136\tFiles specific to ARM 1136 CPUs\n  - i386\tFiles specific to i386 CPUs\n  - ixp\t\tFiles specific to Intel XScale IXP CPUs\n  - mcf52x2\tFiles specific to Freescale ColdFire MCF52x2 CPUs\n  - mips\tFiles specific to MIPS CPUs\n  - mpc5xx\tFiles specific to Freescale MPC5xx  CPUs\n  - mpc5xxx\tFiles specific to Freescale MPC5xxx CPUs\n  - mpc8xx\tFiles specific to Freescale MPC8xx  CPUs\n  - mpc8220\tFiles specific to Freescale MPC8220 CPUs\n  - mpc824x\tFiles specific to Freescale MPC824x CPUs\n  - mpc8260\tFiles specific to Freescale MPC8260 CPUs\n  - mpc85xx\tFiles specific to Freescale MPC85xx CPUs\n  - nios\tFiles specific to Altera NIOS CPUs\n  - nios2\tFiles specific to Altera Nios-II CPUs\n  - ppc4xx\tFiles specific to AMCC PowerPC 4xx CPUs\n  - pxa\t\tFiles specific to Intel XScale PXA CPUs\n  - s3c44b0\tFiles specific to Samsung S3C44B0 CPUs\n  - sa1100\tFiles specific to Intel StrongARM SA1100 CPUs\n- disk\t\tCode for disk drive partition handling\n- doc\t\tDocumentation (don't expect too much)\n- drivers\tCommonly used device drivers\n- dtt\t\tDigital Thermometer and Thermostat drivers\n- examples\tExample code for standalone applications, etc.\n- include\tHeader Files\n- lib_arm\tFiles generic to ARM\t architecture\n- lib_generic\tFiles generic to all\t architectures\n- lib_i386\tFiles generic to i386\t architecture\n- lib_m68k\tFiles generic to m68k\t architecture\n- lib_mips\tFiles generic to MIPS\t architecture\n- lib_nios\tFiles generic to NIOS\t architecture\n- lib_ppc\tFiles generic to PowerPC architecture\n- net\t\tNetworking code\n- post\t\tPower On Self Test\n- rtc\t\tReal Time Clock drivers\n- tools\t\tTools to build S-Record or U-Boot images, etc.\n\nSoftware Configuration:\n=======================\n\nConfiguration is usually done using C preprocessor defines; the\nrationale behind that is to avoid dead code whenever possible.\n\nThere are two classes of configuration variables:\n\n* Configuration _OPTIONS_:\n  These are selectable by the user and have names beginning with\n  \"CONFIG_\".\n\n* Configuration _SETTINGS_:\n  These depend on the hardware etc. and should not be meddled with if\n  you don't know what you're doing; they have names beginning with\n  \"CFG_\".\n\nLater we will add a configuration tool - probably similar to or even\nidentical to what's used for the Linux kernel. Right now, we have to\ndo the configuration by hand, which means creating some symbolic\nlinks and editing some configuration files. We use the TQM8xxL boards\nas an example here.\n\n\nSelection of Processor Architecture and Board Type:\n---------------------------------------------------\n\nFor all supported boards there are ready-to-use default\nconfigurations available; just type \"make \u003cboard_name\u003e_config\".\n\nExample: For a TQM823L module type:\n\n\tcd u-boot\n\tmake TQM823L_config\n\nFor the Cogent platform, you need to specify the cpu type as well;\ne.g. \"make cogent_mpc8xx_config\". And also configure the cogent\ndirectory according to the instructions in cogent/README.\n\n\nConfiguration Options:\n----------------------\n\nConfiguration depends on the combination of board and CPU type; all\nsuch information is kept in a configuration file\n\"include/configs/\u003cboard_name\u003e.h\".\n\nExample: For a TQM823L module, all configuration settings are in\n\"include/configs/TQM823L.h\".\n\n\nMany of the options are named exactly as the corresponding Linux\nkernel configuration options. The intention is to make it easier to\nbuild a config tool - later.\n\n\nThe following options need to be configured:\n\n- CPU Type:\tDefine exactly one of\n\n\t\tPowerPC based CPUs:\n\t\t-------------------\n\t\tCONFIG_MPC823,\tCONFIG_MPC850,\tCONFIG_MPC855,\tCONFIG_MPC860\n\tor\tCONFIG_MPC5xx\n\tor\tCONFIG_MPC8220\n\tor\tCONFIG_MPC824X, CONFIG_MPC8260\n\tor\tCONFIG_MPC85xx\n\tor\tCONFIG_IOP480\n\tor\tCONFIG_405GP\n\tor\tCONFIG_405EP\n\tor\tCONFIG_440\n\tor\tCONFIG_MPC74xx\n\tor\tCONFIG_750FX\n\n\t\tARM based CPUs:\n\t\t---------------\n\t\tCONFIG_SA1110\n\t\tCONFIG_ARM7\n\t\tCONFIG_PXA250\n\t\tCONFIG_CPU_MONAHANS\n\n\t\tMicroBlaze based CPUs:\n\t\t----------------------\n\t\tCONFIG_MICROBLAZE\n\n\t\tNios-2 based CPUs:\n\t\t----------------------\n\t\tCONFIG_NIOS2\n\n\n- Board Type:\tDefine exactly one of\n\n\t\tPowerPC based boards:\n\t\t---------------------\n\n\t\tCONFIG_ADCIOP\t\tCONFIG_GEN860T\t\tCONFIG_PCI405\n\t\tCONFIG_ADS860\t\tCONFIG_GENIETV\t\tCONFIG_PCIPPC2\n\t\tCONFIG_AMX860\t\tCONFIG_GTH\t\tCONFIG_PCIPPC6\n\t\tCONFIG_AP1000\t\tCONFIG_gw8260\t\tCONFIG_pcu_e\n\t\tCONFIG_AR405\t\tCONFIG_hermes\t\tCONFIG_PIP405\n\t\tCONFIG_BAB7xx\t\tCONFIG_hymod\t\tCONFIG_PM826\n\t\tCONFIG_c2mon\t\tCONFIG_IAD210\t\tCONFIG_ppmc8260\n\t\tCONFIG_CANBT\t\tCONFIG_ICU862\t\tCONFIG_QS823\n\t\tCONFIG_CCM\t\tCONFIG_IP860\t\tCONFIG_QS850\n\t\tCONFIG_CMI\t\tCONFIG_IPHASE4539\tCONFIG_QS860T\n\t\tCONFIG_cogent_mpc8260\tCONFIG_IVML24\t\tCONFIG_RBC823\n\t\tCONFIG_cogent_mpc8xx\tCONFIG_IVML24_128\tCONFIG_RPXClassic\n\t\tCONFIG_CPCI405\t\tCONFIG_IVML24_256\tCONFIG_RPXlite\n\t\tCONFIG_CPCI4052\t\tCONFIG_IVMS8\t\tCONFIG_RPXsuper\n\t\tCONFIG_CPCIISER4\tCONFIG_IVMS8_128\tCONFIG_rsdproto\n\t\tCONFIG_CPU86\t\tCONFIG_IVMS8_256\tCONFIG_sacsng\n\t\tCONFIG_CRAYL1\t\tCONFIG_JSE\t\tCONFIG_Sandpoint8240\n\t\tCONFIG_CSB272\t\tCONFIG_LANTEC\t\tCONFIG_Sandpoint8245\n\t\tCONFIG_CU824\t\tCONFIG_LITE5200B\tCONFIG_sbc8260\n\t\tCONFIG_DASA_SIM\t\tCONFIG_lwmon\t\tCONFIG_sbc8560\n\t\tCONFIG_DB64360\t\tCONFIG_MBX\t\tCONFIG_SM850\n\t\tCONFIG_DB64460\t\tCONFIG_MBX860T\t\tCONFIG_SPD823TS\n\t\tCONFIG_DU405\t\tCONFIG_MHPC\t\tCONFIG_STXGP3\n\t\tCONFIG_DUET_ADS\t\tCONFIG_MIP405\t\tCONFIG_SXNI855T\n\t\tCONFIG_EBONY\t\tCONFIG_MOUSSE\t\tCONFIG_TQM823L\n\t\tCONFIG_ELPPC\t\tCONFIG_MPC8260ADS\tCONFIG_TQM8260\n\t\tCONFIG_ELPT860\t\tCONFIG_MPC8540ADS\tCONFIG_TQM850L\n\t\tCONFIG_ep8260\t\tCONFIG_MPC8540EVAL\tCONFIG_TQM855L\n\t\tCONFIG_ERIC\t\tCONFIG_MPC8560ADS\tCONFIG_TQM860L\n\t\tCONFIG_ESTEEM192E\tCONFIG_MUSENKI\t\tCONFIG_TTTech\n\t\tCONFIG_ETX094\t\tCONFIG_MVS1\t\tCONFIG_UTX8245\n\t\tCONFIG_EVB64260\t\tCONFIG_NETPHONE\t\tCONFIG_V37\n\t\tCONFIG_FADS823\t\tCONFIG_NETTA\t\tCONFIG_W7OLMC\n\t\tCONFIG_FADS850SAR\tCONFIG_NETVIA\t\tCONFIG_W7OLMG\n\t\tCONFIG_FADS860T\t\tCONFIG_NX823\t\tCONFIG_WALNUT\n\t\tCONFIG_FLAGADM\t\tCONFIG_OCRTC\t\tCONFIG_ZPC1900\n\t\tCONFIG_FPS850L\t\tCONFIG_ORSG\t\tCONFIG_ZUMA\n\t\tCONFIG_FPS860L\t\tCONFIG_OXC\n\n\t\tARM based boards:\n\t\t-----------------\n\n\t\tCONFIG_ARMADILLO,\tCONFIG_AT91RM9200DK,\tCONFIG_CERF250,\n\t\tCONFIG_CSB637,\t\tCONFIG_DELTA,\t\tCONFIG_DNP1110,\n\t \tCONFIG_EP7312,\t\tCONFIG_H2_OMAP1610,\tCONFIG_HHP_CRADLE,\n\t\tCONFIG_IMPA7,\t\tCONFIG_INNOVATOROMAP1510, CONFIG_INNOVATOROMAP1610, \n\t\tCONFIG_KB9202,\t\tCONFIG_LART,\t\tCONFIG_LPD7A400,\n\t\tCONFIG_LUBBOCK,\t\tCONFIG_OSK_OMAP5912,\tCONFIG_OMAP2420H4,\n\t\tCONFIG_SHANNON,\t\tCONFIG_P2_OMAP730,\tCONFIG_SMDK2400,\n\t\tCONFIG_SMDK2410,\tCONFIG_TRAB,\t\tCONFIG_VCMA9\n\n\t\tMicroBlaze based boards:\n\t\t------------------------\n\n\t\tCONFIG_SUZAKU\n\n\t\tNios-2 based boards:\n\t\t------------------------\n\n\t\tCONFIG_PCI5441 CONFIG_PK1C20\n\n\n- CPU Module Type: (if CONFIG_COGENT is defined)\n\t\tDefine exactly one of\n\t\tCONFIG_CMA286_60_OLD\n--- FIXME --- not tested yet:\n\t\tCONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P,\n\t\tCONFIG_CMA287_23, CONFIG_CMA287_50\n\n- Motherboard Type: (if CONFIG_COGENT is defined)\n\t\tDefine exactly one of\n\t\tCONFIG_CMA101, CONFIG_CMA102\n\n- Motherboard I/O Modules: (if CONFIG_COGENT is defined)\n\t\tDefine one or more of\n\t\tCONFIG_CMA302\n\n- Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)\n\t\tDefine one or more of\n\t\tCONFIG_LCD_HEARTBEAT\t- update a character position on\n\t\t\t\t\t  the lcd display every second with\n\t\t\t\t\t  a \"rotator\" |\\-/|\\-/\n\n- Board flavour: (if CONFIG_MPC8260ADS is defined)\n\t\tCONFIG_ADSTYPE\n\t\tPossible values are:\n\t\t\tCFG_8260ADS\t- original MPC8260ADS\n\t\t\tCFG_8266ADS\t- MPC8266ADS\n\t\t\tCFG_PQ2FADS\t- PQ2FADS-ZU or PQ2FADS-VR\n\t\t\tCFG_8272ADS\t- MPC8272ADS\n\n- MPC824X Family Member (if CONFIG_MPC824X is defined)\n\t\tDefine exactly one of\n\t\tCONFIG_MPC8240, CONFIG_MPC8245\n\n- 8xx CPU Options: (if using an MPC8xx cpu)\n\t\tCONFIG_8xx_GCLK_FREQ\t- deprecated: CPU clock if\n\t\t\t\t\t  get_gclk_freq() cannot work\n\t\t\t\t\t  e.g. if there is no 32KHz\n\t\t\t\t\t  reference PIT/RTC clock\n\t\tCONFIG_8xx_OSCLK\t- PLL input clock (either EXTCLK\n\t\t\t\t\t  or XTAL/EXTAL)\n\n- 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU):\n\t\tCFG_8xx_CPUCLK_MIN\n\t\tCFG_8xx_CPUCLK_MAX\n\t\tCONFIG_8xx_CPUCLK_DEFAULT\n\t\t\tSee doc/README.MPC866\n\n\t\tCFG_MEASURE_CPUCLK\n\n\t\tDefine this to measure the actual CPU clock instead\n\t\tof relying on the correctness of the configured\n\t\tvalues. Mostly useful for board bringup to make sure\n\t\tthe PLL is locked at the intended frequency. Note\n\t\tthat this requires a (stable) reference clock (32 kHz\n\t\tRTC clock or CFG_8XX_XIN)\n\n- Intel Monahans options:\n\t\tCFG_MONAHANS_RUN_MODE_OSC_RATIO\n\n\t\tDefines the Monahans run mode to oscillator\n\t\tratio. Valid values are 8, 16, 24, 31. The core\n\t\tfrequency is this value multiplied by 13 MHz.\n\n\t\tCFG_MONAHANS_TURBO_RUN_MODE_RATIO\n\t\t\n\t\tDefines the Monahans turbo mode to oscillator\n\t\tratio. Valid values are 1 (default if undefined) and\n\t\t2. The core frequency as calculated above is multiplied \n\t\tby this value.\n\t\t\n- Linux Kernel Interface:\n\t\tCONFIG_CLOCKS_IN_MHZ\n\n\t\tU-Boot stores all clock information in Hz\n\t\tinternally. For binary compatibility with older Linux\n\t\tkernels (which expect the clocks passed in the\n\t\tbd_info data to be in MHz) the environment variable\n\t\t\"clocks_in_mhz\" can be defined so that U-Boot\n\t\tconverts clock data to MHZ before passing it to the\n\t\tLinux kernel.\n\t\tWhen CONFIG_CLOCKS_IN_MHZ is defined, a definition of\n\t\t\"clocks_in_mhz=1\" is  automatically  included  in  the\n\t\tdefault environment.\n\n\t\tCONFIG_MEMSIZE_IN_BYTES\t\t[relevant for MIPS only]\n\n\t\tWhen transfering memsize parameter to linux, some versions\n\t\texpect it to be in bytes, others in MB.\n\t\tDefine CONFIG_MEMSIZE_IN_BYTES to make it in bytes.\n\n\t\tCONFIG_OF_FLAT_TREE\n\n\t\tNew kernel versions are expecting firmware settings to be\n\t\tpassed using flat open firmware trees.\n\t\tThe environment variable \"disable_of\", when set, disables this\n\t\tfunctionality.\n\n\t\tCONFIG_OF_FLAT_TREE_MAX_SIZE\n\n\t\tThe maximum size of the constructed OF tree.\n\n\t\tOF_CPU - The proper name of the cpus node.\n\t\tOF_SOC - The proper name of the soc node.\n\t\tOF_TBCLK - The timebase frequency.\n\t\tOF_STDOUT_PATH - The path to the console device\n\n\t\tCONFIG_OF_HAS_BD_T\n\n\t\tThe resulting flat device tree will have a copy of the bd_t.\n\t\tSpace should be pre-allocated in the dts for the bd_t.\n\n\t\tCONFIG_OF_HAS_UBOOT_ENV\n\n\t\tThe resulting flat device tree will have a copy of u-boot's\n\t\tenvironment variables\n\n\t\tCONFIG_OF_BOARD_SETUP\n\n\t\tBoard code has addition modification that it wants to make\n\t\tto the flat device tree before handing it off to the kernel\n\n- Serial Ports:\n\t\tCFG_PL010_SERIAL\n\n\t\tDefine this if you want support for Amba PrimeCell PL010 UARTs.\n\n\t\tCFG_PL011_SERIAL\n\n\t\tDefine this if you want support for Amba PrimeCell PL011 UARTs.\n\n\t\tCONFIG_PL011_CLOCK\n\n\t\tIf you have Amba PrimeCell PL011 UARTs, set this variable to\n\t\tthe clock speed of the UARTs.\n\n\t\tCONFIG_PL01x_PORTS\n\n\t\tIf you have Amba PrimeCell PL010 or PL011 UARTs on your board,\n\t\tdefine this to a list of base addresses for each (supported)\n\t\tport. See e.g. include/configs/versatile.h\n\n\n- Console Interface:\n\t\tDepending on board, define exactly one serial port\n\t\t(like CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2,\n\t\tCONFIG_8xx_CONS_SCC1, ...), or switch off the serial\n\t\tconsole by defining CONFIG_8xx_CONS_NONE\n\n\t\tNote: if CONFIG_8xx_CONS_NONE is defined, the serial\n\t\tport routines must be defined elsewhere\n\t\t(i.e. serial_init(), serial_getc(), ...)\n\n\t\tCONFIG_CFB_CONSOLE\n\t\tEnables console device for a color framebuffer. Needs following\n\t\tdefines (cf. smiLynxEM, i8042, board/eltec/bab7xx)\n\t\t\tVIDEO_FB_LITTLE_ENDIAN\tgraphic memory organisation\n\t\t\t\t\t\t(default big endian)\n\t\t\tVIDEO_HW_RECTFILL\tgraphic chip supports\n\t\t\t\t\t\trectangle fill\n\t\t\t\t\t\t(cf. smiLynxEM)\n\t\t\tVIDEO_HW_BITBLT\t\tgraphic chip supports\n\t\t\t\t\t\tbit-blit (cf. smiLynxEM)\n\t\t\tVIDEO_VISIBLE_COLS\tvisible pixel columns\n\t\t\t\t\t\t(cols=pitch)\n\t\t\tVIDEO_VISIBLE_ROWS\tvisible pixel rows\n\t\t\tVIDEO_PIXEL_SIZE\tbytes per pixel\n\t\t\tVIDEO_DATA_FORMAT\tgraphic data format\n\t\t\t\t\t\t(0-5, cf. cfb_console.c)\n\t\t\tVIDEO_FB_ADRS\t\tframebuffer address\n\t\t\tVIDEO_KBD_INIT_FCT\tkeyboard int fct\n\t\t\t\t\t\t(i.e. i8042_kbd_init())\n\t\t\tVIDEO_TSTC_FCT\t\ttest char fct\n\t\t\t\t\t\t(i.e. i8042_tstc)\n\t\t\tVIDEO_GETC_FCT\t\tget char fct\n\t\t\t\t\t\t(i.e. i8042_getc)\n\t\t\tCONFIG_CONSOLE_CURSOR\tcursor drawing on/off\n\t\t\t\t\t\t(requires blink timer\n\t\t\t\t\t\tcf. i8042.c)\n\t\t\tCFG_CONSOLE_BLINK_COUNT blink interval (cf. i8042.c)\n\t\t\tCONFIG_CONSOLE_TIME\tdisplay time/date info in\n\t\t\t\t\t\tupper right corner\n\t\t\t\t\t\t(requires CFG_CMD_DATE)\n\t\t\tCONFIG_VIDEO_LOGO\tdisplay Linux logo in\n\t\t\t\t\t\tupper left corner\n\t\t\tCONFIG_VIDEO_BMP_LOGO\tuse bmp_logo.h instead of\n\t\t\t\t\t\tlinux_logo.h for logo.\n\t\t\t\t\t\tRequires CONFIG_VIDEO_LOGO\n\t\t\tCONFIG_CONSOLE_EXTRA_INFO\n\t\t\t\t\t\taddional board info beside\n\t\t\t\t\t\tthe logo\n\n\t\tWhen CONFIG_CFB_CONSOLE is defined, video console is\n\t\tdefault i/o. Serial console can be forced with\n\t\tenvironment 'console=serial'.\n\n\t\tWhen CONFIG_SILENT_CONSOLE is defined, all console\n\t\tmessages (by U-Boot and Linux!) can be silenced with\n\t\tthe \"silent\" environment variable. See\n\t\tdoc/README.silent for more information.\n\n- Console Baudrate:\n\t\tCONFIG_BAUDRATE - in bps\n\t\tSelect one of the baudrates listed in\n\t\tCFG_BAUDRATE_TABLE, see below.\n\t\tCFG_BRGCLK_PRESCALE, baudrate prescale\n\n- Interrupt driven serial port input:\n\t\tCONFIG_SERIAL_SOFTWARE_FIFO\n\n\t\tPPC405GP only.\n\t\tUse an interrupt handler for receiving data on the\n\t\tserial port. It also enables using hardware handshake\n\t\t(RTS/CTS) and UART's built-in FIFO. Set the number of\n\t\tbytes the interrupt driven input buffer should have.\n\n\t\tLeave undefined to disable this feature, including\n\t\tdisable the buffer and hardware handshake.\n\n- Console UART Number:\n\t\tCONFIG_UART1_CONSOLE\n\n\t\tAMCC PPC4xx only.\n\t\tIf defined internal UART1 (and not UART0) is used\n\t\tas default U-Boot console.\n\n- Boot Delay:\tCONFIG_BOOTDELAY - in seconds\n\t\tDelay before automatically booting the default image;\n\t\tset to -1 to disable autoboot.\n\n\t\tSee doc/README.autoboot for these options that\n\t\twork with CONFIG_BOOTDELAY. None are required.\n\t\tCONFIG_BOOT_RETRY_TIME\n\t\tCONFIG_BOOT_RETRY_MIN\n\t\tCONFIG_AUTOBOOT_KEYED\n\t\tCONFIG_AUTOBOOT_PROMPT\n\t\tCONFIG_AUTOBOOT_DELAY_STR\n\t\tCONFIG_AUTOBOOT_STOP_STR\n\t\tCONFIG_AUTOBOOT_DELAY_STR2\n\t\tCONFIG_AUTOBOOT_STOP_STR2\n\t\tCONFIG_ZERO_BOOTDELAY_CHECK\n\t\tCONFIG_RESET_TO_RETRY\n\n- Autoboot Command:\n\t\tCONFIG_BOOTCOMMAND\n\t\tOnly needed when CONFIG_BOOTDELAY is enabled;\n\t\tdefine a command string that is automatically executed\n\t\twhen no character is read on the console interface\n\t\twithin \"Boot Delay\" after reset.\n\n\t\tCONFIG_BOOTARGS\n\t\tThis can be used to pass arguments to the bootm\n\t\tcommand. The value of CONFIG_BOOTARGS goes into the\n\t\tenvironment value \"bootargs\".\n\n\t\tCONFIG_RAMBOOT and CONFIG_NFSBOOT\n\t\tThe value of these goes into the environment as\n\t\t\"ramboot\" and \"nfsboot\" respectively, and can be used\n\t\tas a convenience, when switching between booting from\n\t\tram and nfs.\n\n- Pre-Boot Commands:\n\t\tCONFIG_PREBOOT\n\n\t\tWhen this option is #defined, the existence of the\n\t\tenvironment variable \"preboot\" will be checked\n\t\timmediately before starting the CONFIG_BOOTDELAY\n\t\tcountdown and/or running the auto-boot command resp.\n\t\tentering interactive mode.\n\n\t\tThis feature is especially useful when \"preboot\" is\n\t\tautomatically generated or modified. For an example\n\t\tsee the LWMON board specific code: here \"preboot\" is\n\t\tmodified when the user holds down a certain\n\t\tcombination of keys on the (special) keyboard when\n\t\tbooting the systems\n\n- Serial Download Echo Mode:\n\t\tCONFIG_LOADS_ECHO\n\t\tIf defined to 1, all characters received during a\n\t\tserial download (using the \"loads\" command) are\n\t\techoed back. This might be needed by some terminal\n\t\temulations (like \"cu\"), but may as well just take\n\t\ttime on others. This setting #define's the initial\n\t\tvalue of the \"loads_echo\" environment variable.\n\n- Kgdb Serial Baudrate: (if CFG_CMD_KGDB is defined)\n\t\tCONFIG_KGDB_BAUDRATE\n\t\tSelect one of the baudrates listed in\n\t\tCFG_BAUDRATE_TABLE, see below.\n\n- Monitor Functions:\n\t\tCONFIG_COMMANDS\n\t\tMost monitor functions can be selected (or\n\t\tde-selected) by adjusting the definition of\n\t\tCONFIG_COMMANDS; to select individual functions,\n\t\t#define CONFIG_COMMANDS by \"OR\"ing any of the\n\t\tfollowing values:\n\n\t\t#define enables commands:\n\t\t-------------------------\n\t\tCFG_CMD_ASKENV\t* ask for env variable\n\t\tCFG_CMD_AUTOSCRIPT Autoscript Support\n\t\tCFG_CMD_BDI\t  bdinfo\n\t\tCFG_CMD_BEDBUG\t* Include BedBug Debugger\n\t\tCFG_CMD_BMP\t* BMP support\n\t\tCFG_CMD_BSP\t* Board specific commands\n\t\tCFG_CMD_BOOTD\t  bootd\n\t\tCFG_CMD_CACHE\t* icache, dcache\n\t\tCFG_CMD_CONSOLE\t  coninfo\n\t\tCFG_CMD_DATE\t* support for RTC, date/time...\n\t\tCFG_CMD_DHCP\t* DHCP support\n\t\tCFG_CMD_DIAG\t* Diagnostics\n\t\tCFG_CMD_DOC\t* Disk-On-Chip Support\n\t\tCFG_CMD_DTT\t* Digital Therm and Thermostat\n\t\tCFG_CMD_ECHO\t  echo arguments\n\t\tCFG_CMD_EEPROM\t* EEPROM read/write support\n\t\tCFG_CMD_ELF\t* bootelf, bootvx\n\t\tCFG_CMD_ENV\t  saveenv\n\t\tCFG_CMD_FDC\t* Floppy Disk Support\n\t\tCFG_CMD_FAT\t* FAT partition support\n\t\tCFG_CMD_FDOS\t* Dos diskette Support\n\t\tCFG_CMD_FLASH\t  flinfo, erase, protect\n\t\tCFG_CMD_FPGA\t  FPGA device initialization support\n\t\tCFG_CMD_HWFLOW\t* RTS/CTS hw flow control\n\t\tCFG_CMD_I2C\t* I2C serial bus support\n\t\tCFG_CMD_IDE\t* IDE harddisk support\n\t\tCFG_CMD_IMI\t  iminfo\n\t\tCFG_CMD_IMLS\t  List all found images\n\t\tCFG_CMD_IMMAP\t* IMMR dump support\n\t\tCFG_CMD_IRQ\t* irqinfo\n\t\tCFG_CMD_ITEST\t  Integer/string test of 2 values\n\t\tCFG_CMD_JFFS2\t* JFFS2 Support\n\t\tCFG_CMD_KGDB\t* kgdb\n\t\tCFG_CMD_LOADB\t  loadb\n\t\tCFG_CMD_LOADS\t  loads\n\t\tCFG_CMD_MEMORY\t  md, mm, nm, mw, cp, cmp, crc, base,\n\t\t\t\t  loop, loopw, mtest\n\t\tCFG_CMD_MISC\t  Misc functions like sleep etc\n\t\tCFG_CMD_MMC\t* MMC memory mapped support\n\t\tCFG_CMD_MII\t* MII utility commands\n\t\tCFG_CMD_NAND\t* NAND support\n\t\tCFG_CMD_NET\t  bootp, tftpboot, rarpboot\n\t\tCFG_CMD_PCI\t* pciinfo\n\t\tCFG_CMD_PCMCIA\t* PCMCIA support\n\t\tCFG_CMD_PING\t* send ICMP ECHO_REQUEST to network host\n\t\tCFG_CMD_PORTIO\t* Port I/O\n\t\tCFG_CMD_REGINFO * Register dump\n\t\tCFG_CMD_RUN\t  run command in env variable\n\t\tCFG_CMD_SAVES\t* save S record dump\n\t\tCFG_CMD_SCSI\t* SCSI Support\n\t\tCFG_CMD_SDRAM\t* print SDRAM configuration information\n\t\t\t\t  (requires CFG_CMD_I2C)\n\t\tCFG_CMD_SETGETDCR Support for DCR Register access (4xx only)\n\t\tCFG_CMD_SPI\t* SPI serial bus support\n\t\tCFG_CMD_USB\t* USB support\n\t\tCFG_CMD_VFD\t* VFD support (TRAB)\n\t\tCFG_CMD_BSP\t* Board SPecific functions\n\t\tCFG_CMD_CDP\t* Cisco Discover Protocol support\n\t\t-----------------------------------------------\n\t\tCFG_CMD_ALL\tall\n\n\t\tCONFIG_CMD_DFL\tDefault configuration; at the moment\n\t\t\t\tthis is includes all commands, except\n\t\t\t\tthe ones marked with \"*\" in the list\n\t\t\t\tabove.\n\n\t\tIf you don't define CONFIG_COMMANDS it defaults to\n\t\tCONFIG_CMD_DFL in include/cmd_confdefs.h. A board can\n\t\toverride the default settings in the respective\n\t\tinclude file.\n\n\t\tEXAMPLE: If you want all functions except of network\n\t\tsupport you can write:\n\n\t\t#define CONFIG_COMMANDS (CFG_CMD_ALL \u0026 ~CFG_CMD_NET)\n\n\n\tNote:\tDon't enable the \"icache\" and \"dcache\" commands\n\t\t(configuration option CFG_CMD_CACHE) unless you know\n\t\twhat you (and your U-Boot users) are doing. Data\n\t\tcache cannot be enabled on systems like the 8xx or\n\t\t8260 (where accesses to the IMMR region must be\n\t\tuncached), and it cannot be disabled on all other\n\t\tsystems where we (mis-) use the data cache to hold an\n\t\tinitial stack and some data.\n\n\n\t\tXXX - this list needs to get updated!\n\n- Watchdog:\n\t\tCONFIG_WATCHDOG\n\t\tIf this variable is defined, it enables watchdog\n\t\tsupport. There must be support in the platform specific\n\t\tcode for a watchdog. For the 8xx and 8260 CPUs, the\n\t\tSIU Watchdog feature is enabled in the SYPCR\n\t\tregister.\n\n- U-Boot Version:\n\t\tCONFIG_VERSION_VARIABLE\n\t\tIf this variable is defined, an environment variable\n\t\tnamed \"ver\" is created by U-Boot showing the U-Boot\n\t\tversion as printed by the \"version\" command.\n\t\tThis variable is readonly.\n\n- Real-Time Clock:\n\n\t\tWhen CFG_CMD_DATE is selected, the type of the RTC\n\t\thas to be selected, too. Define exactly one of the\n\t\tfollowing options:\n\n\t\tCONFIG_RTC_MPC8xx\t- use internal RTC of MPC8xx\n\t\tCONFIG_RTC_PCF8563\t- use Philips PCF8563 RTC\n\t\tCONFIG_RTC_MC146818\t- use MC146818 RTC\n\t\tCONFIG_RTC_DS1307\t- use Maxim, Inc. DS1307 RTC\n\t\tCONFIG_RTC_DS1337\t- use Maxim, Inc. DS1337 RTC\n\t\tCONFIG_RTC_DS1338\t- use Maxim, Inc. DS1338 RTC\n\t\tCONFIG_RTC_DS164x\t- use Dallas DS164x RTC\n\t\tCONFIG_RTC_MAX6900\t- use Maxim, Inc. MAX6900 RTC\n\n\t\tNote that if the RTC uses I2C, then the I2C interface\n\t\tmust also be configured. See I2C Support, below.\n\n- Timestamp Support:\n\n\t\tWhen CONFIG_TIMESTAMP is selected, the timestamp\n\t\t(date and time) of an image is printed by image\n\t\tcommands like bootm or iminfo. This option is\n\t\tautomatically enabled when you select CFG_CMD_DATE .\n\n- Partition Support:\n\t\tCONFIG_MAC_PARTITION and/or CONFIG_DOS_PARTITION\n\t\tand/or CONFIG_ISO_PARTITION\n\n\t\tIf IDE or SCSI support\tis  enabled  (CFG_CMD_IDE  or\n\t\tCFG_CMD_SCSI) you must configure support for at least\n\t\tone partition type as well.\n\n- IDE Reset method:\n\t\tCONFIG_IDE_RESET_ROUTINE - this is defined in several\n\t\tboard configurations files but used nowhere!\n\n\t\tCONFIG_IDE_RESET - is this is defined, IDE Reset will\n\t\tbe performed by calling the function\n\t\t\tide_set_reset(int reset)\n\t\twhich has to be defined in a board specific file\n\n- ATAPI Support:\n\t\tCONFIG_ATAPI\n\n\t\tSet this to enable ATAPI support.\n\n- LBA48 Support\n\t\tCONFIG_LBA48\n\n\t\tSet this to enable support for disks larger than 137GB\n\t\tAlso look at CFG_64BIT_LBA ,CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL\n\t\tWhithout these , LBA48 support uses 32bit variables and will 'only'\n\t\tsupport disks up to 2.1TB.\n\n\t\tCFG_64BIT_LBA:\n\t\t\tWhen enabled, makes the IDE subsystem use 64bit sector addresses.\n\t\t\tDefault is 32bit.\n\n- SCSI Support:\n\t\tAt the moment only there is only support for the\n\t\tSYM53C8XX SCSI controller; define\n\t\tCONFIG_SCSI_SYM53C8XX to enable it.\n\n\t\tCFG_SCSI_MAX_LUN [8], CFG_SCSI_MAX_SCSI_ID [7] and\n\t\tCFG_SCSI_MAX_DEVICE [CFG_SCSI_MAX_SCSI_ID *\n\t\tCFG_SCSI_MAX_LUN] can be adjusted to define the\n\t\tmaximum numbers of LUNs, SCSI ID's and target\n\t\tdevices.\n\t\tCFG_SCSI_SYM53C8XX_CCF to fix clock timing (80Mhz)\n\n- NETWORK Support (PCI):\n\t\tCONFIG_E1000\n\t\tSupport for Intel 8254x gigabit chips.\n\n\t\tCONFIG_EEPRO100\n\t\tSupport for Intel 82557/82559/82559ER chips.\n\t\tOptional CONFIG_EEPRO100_SROM_WRITE enables eeprom\n\t\twrite routine for first time initialisation.\n\n\t\tCONFIG_TULIP\n\t\tSupport for Digital 2114x chips.\n\t\tOptional CONFIG_TULIP_SELECT_MEDIA for board specific\n\t\tmodem chip initialisation (KS8761/QS6611).\n\n\t\tCONFIG_NATSEMI\n\t\tSupport for National dp83815 chips.\n\n\t\tCONFIG_NS8382X\n\t\tSupport for National dp8382[01] gigabit chips.\n\n- NETWORK Support (other):\n\n\t\tCONFIG_DRIVER_LAN91C96\n\t\tSupport for SMSC's LAN91C96 chips.\n\n\t\t\tCONFIG_LAN91C96_BASE\n\t\t\tDefine this to hold the physical address\n\t\t\tof the LAN91C96's I/O space\n\n\t\t\tCONFIG_LAN91C96_USE_32_BIT\n\t\t\tDefine this to enable 32 bit addressing\n\n\t\tCONFIG_DRIVER_SMC91111\n\t\tSupport for SMSC's LAN91C111 chip\n\n\t\t\tCONFIG_SMC91111_BASE\n\t\t\tDefine this to hold the physical address\n\t\t\tof the device (I/O space)\n\n\t\t\tCONFIG_SMC_USE_32_BIT\n\t\t\tDefine this if data bus is 32 bits\n\n\t\t\tCONFIG_SMC_USE_IOFUNCS\n\t\t\tDefine this to use i/o functions instead of macros\n\t\t\t(some hardware wont work with macros)\n\n- USB Support:\n\t\tAt the moment only the UHCI host controller is\n\t\tsupported (PIP405, MIP405, MPC5200); define\n\t\tCONFIG_USB_UHCI to enable it.\n\t\tdefine CONFIG_USB_KEYBOARD to enable the USB Keyboard\n\t\tand define CONFIG_USB_STORAGE to enable the USB\n\t\tstorage devices.\n\t\tNote:\n\t\tSupported are USB Keyboards and USB Floppy drives\n\t\t(TEAC FD-05PUB).\n\t\tMPC5200 USB requires additional defines:\n\t\t\tCONFIG_USB_CLOCK\n\t\t\t\tfor 528 MHz Clock: 0x0001bbbb\n\t\t\tCONFIG_USB_CONFIG\n\t\t\t\tfor differential drivers: 0x00001000\n\t\t\t\tfor single ended drivers: 0x00005000\n\n\n- MMC Support:\n\t\tThe MMC controller on the Intel PXA is supported. To\n\t\tenable this define CONFIG_MMC. The MMC can be\n\t\taccessed from the boot prompt by mapping the device\n\t\tto physical memory similar to flash. Command line is\n\t\tenabled with CFG_CMD_MMC. The MMC driver also works with\n\t\tthe FAT fs. This is enabled with CFG_CMD_FAT.\n\n- Journaling Flash filesystem support:\n\t\tCONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,\n\t\tCONFIG_JFFS2_NAND_DEV\n\t\tDefine these for a default partition on a NAND device\n\n\t\tCFG_JFFS2_FIRST_SECTOR,\n\t\tCFG_JFFS2_FIRST_BANK, CFG_JFFS2_NUM_BANKS\n\t\tDefine these for a default partition on a NOR device\n\n\t\tCFG_JFFS_CUSTOM_PART\n\t\tDefine this to create an own partition. You have to provide a\n\t\tfunction struct part_info* jffs2_part_info(int part_num)\n\n\t\tIf you define only one JFFS2 partition you may also want to\n\t\t#define CFG_JFFS_SINGLE_PART\t1\n\t\tto disable the command chpart. This is the default when you\n\t\thave not defined a custom partition\n\n- Keyboard Support:\n\t\tCONFIG_ISA_KEYBOARD\n\n\t\tDefine this to enable standard (PC-Style) keyboard\n\t\tsupport\n\n\t\tCONFIG_I8042_KBD\n\t\tStandard PC keyboard driver with US (is default) and\n\t\tGERMAN key layout (switch via environment 'keymap=de') support.\n\t\tExport function i8042_kbd_init, i8042_tstc and i8042_getc\n\t\tfor cfb_console. Supports cursor blinking.\n\n- Video support:\n\t\tCONFIG_VIDEO\n\n\t\tDefine this to enable video support (for output to\n\t\tvideo).\n\n\t\tCONFIG_VIDEO_CT69000\n\n\t\tEnable Chips \u0026 Technologies 69000 Video chip\n\n\t\tCONFIG_VIDEO_SMI_LYNXEM\n\t\tEnable Silicon Motion SMI 712/710/810 Video chip. The\n\t\tvideo output is selected via environment 'videoout'\n\t\t(1 = LCD and 2 = CRT). If videoout is undefined, CRT is\n\t\tassumed.\n\n\t\tFor the CT69000 and SMI_LYNXEM drivers, videomode is\n\t\tselected via environment 'videomode'. Two diferent ways\n\t\tare possible:\n\t\t- \"videomode=num\"   'num' is a standard LiLo mode numbers.\n\t\tFollowing standard modes are supported\t(* is default):\n\n\t\t      Colors\t640x480 800x600 1024x768 1152x864 1280x1024\n\t\t-------------+---------------------------------------------\n\t\t      8 bits |\t0x301*\t0x303\t 0x305\t  0x161\t    0x307\n\t\t     15 bits |\t0x310\t0x313\t 0x316\t  0x162\t    0x319\n\t\t     16 bits |\t0x311\t0x314\t 0x317\t  0x163\t    0x31A\n\t\t     24 bits |\t0x312\t0x315\t 0x318\t    ?\t    0x31B\n\t\t-------------+---------------------------------------------\n\t\t(i.e. setenv videomode 317; saveenv; reset;)\n\n\t\t- \"videomode=bootargs\" all the video parameters are parsed\n\t\tfrom the bootargs. (See drivers/videomodes.c)\n\n\n\t\tCONFIG_VIDEO_SED13806\n\t\tEnable Epson SED13806 driver. This driver supports 8bpp\n\t\tand 16bpp modes defined by CONFIG_VIDEO_SED13806_8BPP\n\t\tor CONFIG_VIDEO_SED13806_16BPP\n\n- Keyboard Support:\n\t\tCONFIG_KEYBOARD\n\n\t\tDefine this to enable a custom keyboard support.\n\t\tThis simply calls drv_keyboard_init() which must be\n\t\tdefined in your board-specific files.\n\t\tThe only board using this so far is RBC823.\n\n- LCD Support:\tCONFIG_LCD\n\n\t\tDefine this to enable LCD support (for output to LCD\n\t\tdisplay); also select one of the supported displays\n\t\tby defining one of these:\n\n\t\tCONFIG_NEC_NL6448AC33:\n\n\t\t\tNEC NL6448AC33-18. Active, color, single scan.\n\n\t\tCONFIG_NEC_NL6448BC20\n\n\t\t\tNEC NL6448BC20-08. 6.5\", 640x480.\n\t\t\tActive, color, single scan.\n\n\t\tCONFIG_NEC_NL6448BC33_54\n\n\t\t\tNEC NL6448BC33-54. 10.4\", 640x480.\n\t\t\tActive, color, single scan.\n\n\t\tCONFIG_SHARP_16x9\n\n\t\t\tSharp 320x240. Active, color, single scan.\n\t\t\tIt isn't 16x9, and I am not sure what it is.\n\n\t\tCONFIG_SHARP_LQ64D341\n\n\t\t\tSharp LQ64D341 display, 640x480.\n\t\t\tActive, color, single scan.\n\n\t\tCONFIG_HLD1045\n\n\t\t\tHLD1045 display, 640x480.\n\t\t\tActive, color, single scan.\n\n\t\tCONFIG_OPTREX_BW\n\n\t\t\tOptrex\t CBL50840-2 NF-FW 99 22 M5\n\t\t\tor\n\t\t\tHitachi\t LMG6912RPFC-00T\n\t\t\tor\n\t\t\tHitachi\t SP14Q002\n\n\t\t\t320x240. Black \u0026 white.\n\n\t\tNormally display is black on white background; define\n\t\tCFG_WHITE_ON_BLACK to get it inverted.\n\n- Splash Screen Support: CONFIG_SPLASH_SCREEN\n\n\t\tIf this option is set, the environment is checked for\n\t\ta variable \"splashimage\". If found, the usual display\n\t\tof logo, copyright and system information on the LCD\n\t\tis suppressed and the BMP image at the address\n\t\tspecified in \"splashimage\" is loaded instead. The\n\t\tconsole is redirected to the \"nulldev\", too. This\n\t\tallows for a \"silent\" boot where a splash screen is\n\t\tloaded very quickly after power-on.\n\n- Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP\n\n\t\tIf this option is set, additionally to standard BMP\n\t\timages, gzipped BMP images can be displayed via the\n\t\tsplashscreen support or the bmp command.\n\n- Compression support:\n\t\tCONFIG_BZIP2\n\n\t\tIf this option is set, support for bzip2 compressed\n\t\timages is included. If not, only uncompressed and gzip\n\t\tcompressed images are supported.\n\n\t\tNOTE: the bzip2 algorithm requires a lot of RAM, so\n\t\tthe malloc area (as defined by CFG_MALLOC_LEN) should\n\t\tbe at least 4MB.\n\n- MII/PHY support:\n\t\tCONFIG_PHY_ADDR\n\n\t\tThe address of PHY on MII bus.\n\n\t\tCONFIG_PHY_CLOCK_FREQ (ppc4xx)\n\n\t\tThe clock frequency of the MII bus\n\n\t\tCONFIG_PHY_GIGE\n\n\t\tIf this option is set, support for speed/duplex\n\t\tdetection of Gigabit PHY is included.\n\n\t\tCONFIG_PHY_RESET_DELAY\n\n\t\tSome PHY like Intel LXT971A need extra delay after\n\t\treset before any MII register access is possible.\n\t\tFor such PHY, set this option to the usec delay\n\t\trequired. (minimum 300usec for LXT971A)\n\n\t\tCONFIG_PHY_CMD_DELAY (ppc4xx)\n\n\t\tSome PHY like Intel LXT971A need extra delay after\n\t\tcommand issued before MII status register can be read\n\n- Ethernet address:\n\t\tCONFIG_ETHADDR\n\t\tCONFIG_ETH2ADDR\n\t\tCONFIG_ETH3ADDR\n\n\t\tDefine a default value for ethernet address to use\n\t\tfor the respective ethernet interface, in case this\n\t\tis not determined automatically.\n\n- IP address:\n\t\tCONFIG_IPADDR\n\n\t\tDefine a default value for the IP address to use for\n\t\tthe default ethernet interface, in case this is not\n\t\tdetermined through e.g. bootp.\n\n- Server IP address:\n\t\tCONFIG_SERVERIP\n\n\t\tDefines a default value for theIP address of a TFTP\n\t\tserver to contact when using the \"tftboot\" command.\n\n- BOOTP Recovery Mode:\n\t\tCONFIG_BOOTP_RANDOM_DELAY\n\n\t\tIf you have many targets in a network that try to\n\t\tboot using BOOTP, you may want to avoid that all\n\t\tsystems send out BOOTP requests at precisely the same\n\t\tmoment (which would happen for instance at recovery\n\t\tfrom a power failure, when all systems will try to\n\t\tboot, thus flooding the BOOTP server. Defining\n\t\tCONFIG_BOOTP_RANDOM_DELAY causes a random delay to be\n\t\tinserted before sending out BOOTP requests. The\n\t\tfollowing delays are insterted then:\n\n\t\t1st BOOTP request:\tdelay 0 ... 1 sec\n\t\t2nd BOOTP request:\tdelay 0 ... 2 sec\n\t\t3rd BOOTP request:\tdelay 0 ... 4 sec\n\t\t4th and following\n\t\tBOOTP requests:\t\tdelay 0 ... 8 sec\n\n- DHCP Advanced Options:\n\t\tCONFIG_BOOTP_MASK\n\n\t\tYou can fine tune the DHCP functionality by adding\n\t\tthese flags to the CONFIG_BOOTP_MASK define:\n\n\t\tCONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS\n\t\tserverip from a DHCP server, it is possible that more\n\t\tthan one DNS serverip is offered to the client.\n\t\tIf CONFIG_BOOTP_DNS2 is enabled, the secondary DNS\n\t\tserverip will be stored in the additional environment\n\t\tvariable \"dnsip2\". The first DNS serverip is always\n\t\tstored in the variable \"dnsip\", when CONFIG_BOOTP_DNS\n\t\tis added to the CONFIG_BOOTP_MASK.\n\n\t\tCONFIG_BOOTP_SEND_HOSTNAME - Some DHCP servers are capable\n\t\tto do a dynamic update of a DNS server. To do this, they\n\t\tneed the hostname of the DHCP requester.\n\t\tIf CONFIG_BOOP_SEND_HOSTNAME is added to the\n\t\tCONFIG_BOOTP_MASK, the content of the \"hostname\"\n\t\tenvironment variable is passed as option 12 to\n\t\tthe DHCP server.\n\n - CDP Options:\n\t\tCONFIG_CDP_DEVICE_ID\n\n\t\tThe device id used in CDP trigger frames.\n\n\t\tCONFIG_CDP_DEVICE_ID_PREFIX\n\n\t\tA two character string which is prefixed to the MAC address\n\t\tof the device.\n\n\t\tCONFIG_CDP_PORT_ID\n\n\t\tA printf format string which contains the ascii name of\n\t\tthe port. Normally is set to \"eth%d\" which sets\n\t\teth0 for the first ethernet, eth1 for the second etc.\n\n\t\tCONFIG_CDP_CAPABILITIES\n\n\t\tA 32bit integer which indicates the device capabilities;\n\t\t0x00000010 for a normal host which does not forwards.\n\n\t\tCONFIG_CDP_VERSION\n\n\t\tAn ascii string containing the version of the software.\n\n\t\tCONFIG_CDP_PLATFORM\n\n\t\tAn ascii string containing the name of the platform.\n\n\t\tCONFIG_CDP_TRIGGER\n\n\t\tA 32bit integer sent on the trigger.\n\n\t\tCONFIG_CDP_POWER_CONSUMPTION\n\n\t\tA 16bit integer containing the power consumption of the\n\t\tdevice in .1 of milliwatts.\n\n\t\tCONFIG_CDP_APPLIANCE_VLAN_TYPE\n\n\t\tA byte containing the id of the VLAN.\n\n- Status LED:\tCONFIG_STATUS_LED\n\n\t\tSeveral configurations allow to display the current\n\t\tstatus using a LED. For instance, the LED will blink\n\t\tfast while running U-Boot code, stop blinking as\n\t\tsoon as a reply to a BOOTP request was received, and\n\t\tstart blinking slow once the Linux kernel is running\n\t\t(supported by a status LED driver in the Linux\n\t\tkernel). Defining CONFIG_STATUS_LED enables this\n\t\tfeature in U-Boot.\n\n- CAN Support:\tCONFIG_CAN_DRIVER\n\n\t\tDefining CONFIG_CAN_DRIVER enables CAN driver support\n\t\ton those systems that support this (optional)\n\t\tfeature, like the TQM8xxL modules.\n\n- I2C Support:\tCONFIG_HARD_I2C | CONFIG_SOFT_I2C\n\n\t\tThese enable I2C serial bus commands. Defining either of\n\t\t(but not both of) CONFIG_HARD_I2C or CONFIG_SOFT_I2C will\n\t\tinclude the appropriate I2C driver for the selected cpu.\n\n\t\tThis will allow you to use i2c commands at the u-boot\n\t\tcommand line (as long as you set CFG_CMD_I2C in\n\t\tCONFIG_COMMANDS) and communicate with i2c based realtime\n\t\tclock chips. See common/cmd_i2c.c for a description of the\n\t\tcommand line interface.\n\n\t\tCONFIG_HARD_I2C selects the CPM hardware driver for I2C.\n\n\t\tCONFIG_SOFT_I2C configures u-boot to use a software (aka\n\t\tbit-banging) driver instead of CPM or similar hardware\n\t\tsupport for I2C.\n\n\t\tThere are several other quantities that must also be\n\t\tdefined when you define CONFIG_HARD_I2C or CONFIG_SOFT_I2C.\n\n\t\tIn both cases you will need to define CFG_I2C_SPEED\n\t\tto be the frequency (in Hz) at which you wish your i2c bus\n\t\tto run and CFG_I2C_SLAVE to be the address of this node (ie\n\t\tthe cpu's i2c node address).\n\n\t\tNow, the u-boot i2c code for the mpc8xx (cpu/mpc8xx/i2c.c)\n\t\tsets the cpu up as a master node and so its address should\n\t\ttherefore be cleared to 0 (See, eg, MPC823e User's Manual\n\t\tp.16-473). So, set CFG_I2C_SLAVE to 0.\n\n\t\tThat's all that's required for CONFIG_HARD_I2C.\n\n\t\tIf you use the software i2c interface (CONFIG_SOFT_I2C)\n\t\tthen the following macros need to be defined (examples are\n\t\tfrom include/configs/lwmon.h):\n\n\t\tI2C_INIT\n\n\t\t(Optional). Any commands necessary to enable the I2C\n\t\tcontroller or configure ports.\n\n\t\teg: #define I2C_INIT (immr-\u003eim_cpm.cp_pbdir |=\tPB_SCL)\n\n\t\tI2C_PORT\n\n\t\t(Only for MPC8260 CPU). The I/O port to use (the code\n\t\tassumes both bits are on the same port). Valid values\n\t\tare 0..3 for ports A..D.\n\n\t\tI2C_ACTIVE\n\n\t\tThe code necessary to make the I2C data line active\n\t\t(driven).  If the data line is open collector, this\n\t\tdefine can be null.\n\n\t\teg: #define I2C_ACTIVE (immr-\u003eim_cpm.cp_pbdir |=  PB_SDA)\n\n\t\tI2C_TRISTATE\n\n\t\tThe code necessary to make the I2C data line tri-stated\n\t\t(inactive).  If the data line is open collector, this\n\t\tdefine can be null.\n\n\t\teg: #define I2C_TRISTATE (immr-\u003eim_cpm.cp_pbdir \u0026= ~PB_SDA)\n\n\t\tI2C_READ\n\n\t\tCode that returns TRUE if the I2C data line is high,\n\t\tFALSE if it is low.\n\n\t\teg: #define I2C_READ ((immr-\u003eim_cpm.cp_pbdat \u0026 PB_SDA) != 0)\n\n\t\tI2C_SDA(bit)\n\n\t\tIf \u003cbit\u003e is TRUE, sets the I2C data line high. If it\n\t\tis FALSE, it clears it (low).\n\n\t\teg: #define I2C_SDA(bit) \\\n\t\t\tif(bit) immr-\u003eim_cpm.cp_pbdat |=  PB_SDA; \\\n\t\t\telse\timmr-\u003eim_cpm.cp_pbdat \u0026= ~PB_SDA\n\n\t\tI2C_SCL(bit)\n\n\t\tIf \u003cbit\u003e is TRUE, sets the I2C clock line high. If it\n\t\tis FALSE, it clears it (low).\n\n\t\teg: #define I2C_SCL(bit) \\\n\t\t\tif(bit) immr-\u003eim_cpm.cp_pbdat |=  PB_SCL; \\\n\t\t\telse\timmr-\u003eim_cpm.cp_pbdat \u0026= ~PB_SCL\n\n\t\tI2C_DELAY\n\n\t\tThis delay is invoked four times per clock cycle so this\n\t\tcontrols the rate of data transfer.  The data rate thus\n\t\tis 1 / (I2C_DELAY * 4). Often defined to be something\n\t\tlike:\n\n\t\t#define I2C_DELAY  udelay(2)\n\n\t\tCFG_I2C_INIT_BOARD\n\n\t\tWhen a board is reset during an i2c bus transfer\n\t\tchips might think that the current transfer is still\n\t\tin progress. On some boards it is possible to access\n\t\tthe i2c SCLK line directly, either by using the\n\t\tprocessor pin as a GPIO or by having a second pin\n\t\tconnected to the bus. If this option is defined a\n\t\tcustom i2c_init_board() routine in boards/xxx/board.c\n\t\tis run early in the boot sequence.\n\n\t\tCONFIG_I2CFAST (PPC405GP|PPC405EP only)\n\n\t\tThis option enables configuration of bi_iic_fast[] flags\n\t\tin u-boot bd_info structure based on u-boot environment\n\t\tvariable \"i2cfast\". (see also i2cfast)\n\n- SPI Support:\tCONFIG_SPI\n\n\t\tEnables SPI driver (so far only tested with\n\t\tSPI EEPROM, also an instance works with Crystal A/D and\n\t\tD/As on the SACSng board)\n\n\t\tCONFIG_SPI_X\n\n\t\tEnables extended (16-bit) SPI EEPROM addressing.\n\t\t(symmetrical to CONFIG_I2C_X)\n\n\t\tCONFIG_SOFT_SPI\n\n\t\tEnables a software (bit-bang) SPI driver rather than\n\t\tusing hardware support. This is a general purpose\n\t\tdriver that only requires three general I/O port pins\n\t\t(two outputs, one input) to function. If this is\n\t\tdefined, the board configuration must define several\n\t\tSPI configuration items (port pins to use, etc). For\n\t\tan example, see include/configs/sacsng.h.\n\n- FPGA Support: CONFIG_FPGA_COUNT\n\n\t\tSpecify the number of FPGA devices to support.\n\n\t\tCONFIG_FPGA\n\n\t\tUsed to specify the types of FPGA devices.  For example,\n\t\t#define CONFIG_FPGA  CFG_XILINX_VIRTEX2\n\n\t\tCFG_FPGA_PROG_FEEDBACK\n\n\t\tEnable printing of hash marks during FPGA configuration.\n\n\t\tCFG_FPGA_CHECK_BUSY\n\n\t\tEnable checks on FPGA configuration interface busy\n\t\tstatus by the configuration function. This option\n\t\twill require a board or device specific function to\n\t\tbe written.\n\n\t\tCONFIG_FPGA_DELAY\n\n\t\tIf defined, a function that provides delays in the FPGA\n\t\tconfiguration driver.\n\n\t\tCFG_FPGA_CHECK_CTRLC\n\t\tAllow Control-C to interrupt FPGA configuration\n\n\t\tCFG_FPGA_CHECK_ERROR\n\n\t\tCheck for configuration errors during FPGA bitfile\n\t\tloading. For example, abort during Virtex II\n\t\tconfiguration if the INIT_B line goes low (which\n\t\tindicated a CRC error).\n\n\t\tCFG_FPGA_WAIT_INIT\n\n\t\tMaximum time to wait for the INIT_B line to deassert\n\t\tafter PROB_B has been deasserted during a Virtex II\n\t\tFPGA configuration sequence. The default time is 500\n\t\tmS.\n\n\t\tCFG_FPGA_WAIT_BUSY\n\n\t\tMaximum time to wait for BUSY to deassert during\n\t\tVirtex II FPGA configuration. The default is 5 mS.\n\n\t\tCFG_FPGA_WAIT_CONFIG\n\n\t\tTime to wait after FPGA configuration. The default is\n\t\t200 mS.\n\n- Configuration Management:\n\t\tCONFIG_IDENT_STRING\n\n\t\tIf defined, this string will be added to the U-Boot\n\t\tversion information (U_BOOT_VERSION)\n\n- Vendor Parameter Protection:\n\n\t\tU-Boot considers the values of the environment\n\t\tvariables \"serial#\" (Board Serial Number) and\n\t\t\"ethaddr\" (Ethernet Address) to be parameters that\n\t\tare set once by the board vendor / manufacturer, and\n\t\tprotects these variables from casual modification by\n\t\tthe user. Once set, these variables are read-only,\n\t\tand write or delete attempts are rejected. You can\n\t\tchange this behviour:\n\n\t\tIf CONFIG_ENV_OVERWRITE is #defined in your config\n\t\tfile, the write protection for vendor parameters is\n\t\tcompletely disabled. Anybody can change or delete\n\t\tthese parameters.\n\n\t\tAlternatively, if you #define _both_ CONFIG_ETHADDR\n\t\t_and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default\n\t\tethernet address is installed in the environment,\n\t\twhich can be changed exactly ONCE by the user. [The\n\t\tserial# is unaffected by this, i. e. it remains\n\t\tread-only.]\n\n- Protected RAM:\n\t\tCONFIG_PRAM\n\n\t\tDefine this variable to enable the reservation of\n\t\t\"protected RAM\", i. e. RAM which is not overwritten\n\t\tby U-Boot. Define CONFIG_PRAM to hold the number of\n\t\tkB you want to reserve for pRAM. You can overwrite\n\t\tthis default value by defining an environment\n\t\tvariable \"pram\" to the number of kB you want to\n\t\treserve. Note that the board info structure will\n\t\tstill show the full amount of RAM. If pRAM is\n\t\treserved, a new environment variable \"mem\" will\n\t\tautomatically be defined to hold the amount of\n\t\tremaining RAM in a form that can be passed as boot\n\t\targument to Linux, for instance like that:\n\n\t\t\tsetenv bootargs ... mem=\\${mem}\n\t\t\tsaveenv\n\n\t\tThis way you can tell Linux not to use this memory,\n\t\teither, which results in a memory region that will\n\t\tnot be affected by reboots.\n\n\t\t*WARNING* If your board configuration uses automatic\n\t\tdetection of the RAM size, you must make sure that\n\t\tthis memory test is non-destructive. So far, the\n\t\tfollowing board configurations are known to be\n\t\t\"pRAM-clean\":\n\n\t\t\tETX094, IVMS8, IVML24, SPD8xx, TQM8xxL,\n\t\t\tHERMES, IP860, RPXlite, LWMON, LANTEC,\n\t\t\tPCU_E, FLAGADM, TQM8260\n\n- Error Recovery:\n\t\tCONFIG_PANIC_HANG\n\n\t\tDefine this variable to stop the system in case of a\n\t\tfatal error, so that you have to reset it manually.\n\t\tThis is probably NOT a good idea for an embedded\n\t\tsystem where you want to system to reboot\n\t\tautomatically as fast as possible, but it may be\n\t\tuseful during development since you can try to debug\n\t\tthe conditions that lead to the situation.\n\n\t\tCONFIG_NET_RETRY_COUNT\n\n\t\tThis variable defines the number of retries for\n\t\tnetwork operations like ARP, RARP, TFTP, or BOOTP\n\t\tbefore giving up the operation. If not defined, a\n\t\tdefault value of 5 is used.\n\n- Command Interpreter:\n\t\tCFG_AUTO_COMPLETE\n\n\t\tEnable auto completion of commands using TAB.\n\n\t\tCFG_HUSH_PARSER\n\n\t\tDefine this variable to enable the \"hush\" shell (from\n\t\tBusybox) as command line interpreter, thus enabling\n\t\tpowerful command line syntax like\n\t\tif...then...else...fi conditionals or `\u0026\u0026' and '||'\n\t\tconstructs (\"shell scripts\").\n\n\t\tIf undefined, you get the old, much simpler behaviour\n\t\twith a somewhat smaller memory footprint.\n\n\n\t\tCFG_PROMPT_HUSH_PS2\n\n\t\tThis defines the secondary prompt string, which is\n\t\tprinted when the command interpreter needs more input\n\t\tto complete a command. Usually \"\u003e \".\n\n\tNote:\n\n\t\tIn the current implementation, the local variables\n\t\tspace and global environment variables space are\n\t\tseparated. Local variables are those you define by\n\t\tsimply typing `name=value'. To access a local\n\t\tvariable later on, you have write `$name' or\n\t\t`${name}'; to execute the contents of a variable\n\t\tdirectly type `$name' at the command prompt.\n\n\t\tGlobal environment variables are those you use\n\t\tsetenv/printenv to work with. To run a command stored\n\t\tin such a variable, you need to use the run command,\n\t\tand you must not use the '$' sign to access them.\n\n\t\tTo store commands and special characters in a\n\t\tvariable, please use double quotation marks\n\t\tsurrounding the whole text of the variable, instead\n\t\tof the backslashes before semicolons and special\n\t\tsymbols.\n\n- Default Environment:\n\t\tCONFIG_EXTRA_ENV_SETTINGS\n\n\t\tDefine this to contain any number of null terminated\n\t\tstrings (variable = value pairs) that will be part of\n\t\tthe default environment compiled into the boot image.\n\n\t\tFor example, place something like this in your\n\t\tboard's config file:\n\n\t\t#define CONFIG_EXTRA_ENV_SETTINGS \\\n\t\t\t\"myvar1=value1\\0\" \\\n\t\t\t\"myvar2=value2\\0\"\n\n\t\tWarning: This method is based on knowledge about the\n\t\tinternal format how the environment is stored by the\n\t\tU-Boot code. This is NOT an official, exported\n\t\tinterface! Although it is unlikely that this format\n\t\twill change soon, there is no guarantee either.\n\t\tYou better know what you are doing here.\n\n\t\tNote: overly (ab)use of the default environment is\n\t\tdiscouraged. Make sure to check other ways to preset\n\t\tthe environment like the autoscript function or the\n\t\tboot command first.\n\n- DataFlash Support:\n\t\tCONFIG_HAS_DATAFLASH\n\n\t\tDefining this option enables DataFlash features and\n\t\tallows to read/write in Dataflash via the standard\n\t\tcommands cp, md...\n\n- SystemACE Support:\n\t\tCONFIG_SYSTEMACE\n\n\t\tAdding this option adds support for Xilinx SystemACE\n\t\tchips attached via some sort of local bus. The address\n\t\tof the chip must alsh be defined in the\n\t\tCFG_SYSTEMACE_BASE macro. For example:\n\n\t\t#define CONFIG_SYSTEMACE\n\t\t#define CFG_SYSTEMACE_BASE 0xf0000000\n\n\t\tWhen SystemACE support is added, the \"ace\" device type\n\t\tbecomes available to the fat commands, i.e. fatls.\n\n- TFTP Fixed UDP Port:\n\t\tCONFIG_TFTP_PORT\n\n\t\tIf this is defined, the environment variable tftpsrcp\n\t\tis used to supply the TFTP UDP source port value.\n\t\tIf tftpsrcp isn't defined, the normal pseudo-random port\n\t\tnumber generator is used.\n\n\t\tAlso, the environment variable tftpdstp is used to supply\n\t\tthe TFTP UDP destination port value.  If tftpdstp isn't\n\t\tdefined, the normal port 69 is used.\n\n\t\tThe purpose for tftpsrcp is to allow a TFTP server to\n\t\tblindly start the TFTP transfer using the pre-configured\n\t\ttarget IP address and UDP port. This has the effect of\n\t\t\"punching through\" the (Windows XP) firewall, allowing\n\t\tthe remainder of the TFTP transfer to proceed normally.\n\t\tA better solution is to properly configure the firewall,\n\t\tbut sometimes that is not allowed.\n\n- Show boot progress:\n\t\tCONFIG_SHOW_BOOT_PROGRESS\n\n\t\tDefining this option allows to add some board-\n\t\tspecific code (calling a user-provided function\n\t\t\"show_boot_progress(int)\") that enables you to show\n\t\tthe system's boot progress on some display (for\n\t\texample, some LED's) on your board. At the moment,\n\t\tthe following checkpoints are implemented:\n\n  Arg\tWhere\t\t\tWhen\n    1\tcommon/cmd_bootm.c\tbefore attempting to boot an image\n   -1\tcommon/cmd_bootm.c\tImage header has bad\t magic number\n    2\tcommon/cmd_bootm.c\tImage header has correct magic number\n   -2\tcommon/cmd_bootm.c\tImage header has bad\t checksum\n    3\tcommon/cmd_bootm.c\tImage header has correct checksum\n   -3\tcommon/cmd_bootm.c\tImage data   has bad\t checksum\n    4\tcommon/cmd_bootm.c\tImage data   has correct checksum\n   -4\tcommon/cmd_bootm.c\tImage is for unsupported architecture\n    5\tcommon/cmd_bootm.c\tArchitecture check OK\n   -5\tcommon/cmd_bootm.c\tWrong Image Type (not kernel, multi, standalone)\n    6\tcommon/cmd_bootm.c\tImage Type check OK\n   -6\tcommon/cmd_bootm.c\tgunzip uncompression error\n   -7\tcommon/cmd_bootm.c\tUnimplemented compression type\n    7\tcommon/cmd_bootm.c\tUncompression OK\n   -8\tcommon/cmd_bootm.c\tWrong Image Type (not kernel, multi, standalone)\n    8\tcommon/cmd_bootm.c\tImage Type check OK\n   -9\tcommon/cmd_bootm.c\tUnsupported OS (not Linux, BSD, VxWorks, QNX)\n    9\tcommon/cmd_bootm.c\tStart initial ramdisk verification\n  -10\tcommon/cmd_bootm.c\tRamdisk header has bad\t   magic number\n  -11\tcommon/cmd_bootm.c\tRamdisk header has bad\t   checksum\n   10\tcommon/cmd_bootm.c\tRamdisk header is OK\n  -12\tcommon/cmd_bootm.c\tRamdisk data   has bad\t   checksum\n   11\tcommon/cmd_bootm.c\tRamdisk data   has correct checksum\n   12\tcommon/cmd_bootm.c\tRamdisk verification complete, start loading\n  -13\tcommon/cmd_bootm.c\tWrong Image Type (not PPC Linux Ramdisk)\n   13\tcommon/cmd_bootm.c\tStart multifile image verification\n   14\tcommon/cmd_bootm.c\tNo initial ramdisk, no multifile, continue.\n   15\tcommon/cmd_bootm.c\tAll preparation done, transferring control to OS\n\n  -30\tlib_ppc/board.c\t\tFatal error, hang the system\n  -31\tpost/post.c\t\tPOST test failed, detected by post_output_backlog()\n  -32\tpost/post.c\t\tPOST test failed, detected by post_run_single()\n\n   -1\tcommon/cmd_doc.c\tBad usage of \"doc\" command\n   -1\tcommon/cmd_doc.c\tNo boot device\n   -1\tcommon/cmd_doc.c\tUnknown Chip ID on boot device\n   -1\tcommon/cmd_doc.c\tRead Error on boot device\n   -1\tcommon/cmd_doc.c\tImage header has bad magic number\n\n   -1\tcommon/cmd_ide.c\tBad usage of \"ide\" command\n   -1\tcommon/cmd_ide.c\tNo boot device\n   -1\tcommon/cmd_ide.c\tUnknown boot device\n   -1\tcommon/cmd_ide.c\tUnknown partition table\n   -1\tcommon/cmd_ide.c\tInvalid partition type\n   -1\tcommon/cmd_ide.c\tRead Error on boot device\n   -1\tcommon/cmd_ide.c\tImage header has bad magic number\n\n   -1\tcommon/cmd_nand.c\tBad usage of \"nand\" command\n   -1\tcommon/cmd_nand.c\tNo boot device\n   -1\tcommon/cmd_nand.c\tUnknown Chip ID on boot device\n   -1\tcommon/cmd_nand.c\tRead Error on boot device\n   -1\tcommon/cmd_nand.c\tImage header has bad magic number\n\n   -1\tcommon/env_common.c\tEnvironment has a bad CRC, using default\n\n\nModem Support:\n--------------\n\n[so far only for SMDK2400 and TRAB boards]\n\n- Modem support endable:\n\t\tCONFIG_MODEM_SUPPORT\n\n- RTS/CTS Flow control enable:\n\t\tCONFIG_HWFLOW\n\n- Modem debug support:\n\t\tCONFIG_MODEM_SUPPORT_DEBUG\n\n\t\tEnables debugging stuff (char screen[1024], dbg())\n\t\tfor modem support. Useful only with BDI2000.\n\n- Interrupt support (PPC):\n\n\t\tThere are common interrupt_init() and timer_interrupt()\n\t\tfor all PPC archs. interrupt_init() calls interrupt_init_cpu()\n\t\tfor cpu specific initialization. interrupt_init_cpu()\n\t\tshould set decrementer_count to appropriate value. If\n\t\tcpu resets decrementer automatically after interrupt\n\t\t(ppc4xx) it should set decrementer_count to zero.\n\t\ttimer_interrupt() calls timer_interrupt_cpu() for cpu\n\t\tspecific handling. If board has watchdog / status_led\n\t\t/ other_activity_monitor it works automatically from\n\t\tgeneral timer_interrupt().\n\n- General:\n\n\t\tIn the target system modem support is enabled when a\n\t\tspecific key (key combination) is pressed during\n\t\tpower-on. Otherwise U-Boot will boot normally\n\t\t(autoboot). The key_pressed() fuction is called from\n\t\tboard_init(). Currently key_pressed() is a dummy\n\t\tfunction, returning 1 and thus enabling modem\n\t\tinitialization.\n\n\t\tIf there are no modem init strings in the\n\t\tenvironment, U-Boot proceed to autoboot; the\n\t\tprevious output (banner, info printfs) will be\n\t\tsupressed, though.\n\n\t\tSee also: doc/README.Modem\n\n\nConfiguration Settings:\n-----------------------\n\n- CFG_LONGHELP: Defined when you want long help messages included;\n\t\tundefine this when you're short of memory.\n\n- CFG_PROMPT:\tThis is what U-Boot prints on the console to\n\t\tprompt for user input.\n\n- CFG_CBSIZE:\tBuffer size for input from the Console\n\n- CFG_PBSIZE:\tBuffer size for Console output\n\n- CFG_MAXARGS:\tmax. Number of arguments accepted for monitor commands\n\n- CFG_BARGSIZE: Buffer size for Boot Arguments which are passed to\n\t\tthe application (usually a Linux kernel) when it is\n\t\tbooted\n\n- CFG_BAUDRATE_TABLE:\n\t\tList of legal baudrate settings for this board.\n\n- CFG_CONSOLE_INFO_QUIET\n\t\tSuppress display of console information at boot.\n\n- CFG_CONSOLE_IS_IN_ENV\n\t\tIf the board specific function\n\t\t\textern int overwrite_console (void);\n\t\treturns 1, the stdin, stderr and stdout are switched to the\n\t\tserial port, else the settings in the environment are used.\n\n- CFG_CONSOLE_OVERWRITE_ROUTINE\n\t\tEnable the call to overwrite_console().\n\n- CFG_CONSOLE_ENV_OVERWRITE\n\t\tEnable overwrite of previous console environment settings.\n\n- CFG_MEMTEST_START, CFG_MEMTEST_END:\n\t\tBegin and End addresses of the area used by the\n\t\tsimple memory test.\n\n- CFG_ALT_MEMTEST:\n\t\tEnable an alternate, more extensive memory test.\n\n- CFG_MEMTEST_SCRATCH:\n\t\tScratch address used by the alternate memory test\n\t\tYou only need to set this if address zero isn't writeable\n\n- CFG_TFTP_LOADADDR:\n\t\tDefault load address for network file downloads\n\n- CFG_LOADS_BAUD_CHANGE:\n\t\tEnable temporary baudrate change while serial download\n\n- CFG_SDRAM_BASE:\n\t\tPhysical start address of SDRAM. _Must_ be 0 here.\n\n- CFG_MBIO_BASE:\n\t\tPhysical start address of Motherboard I/O (if using a\n\t\tCogent motherboard)\n\n- CFG_FLASH_BASE:\n\t\tPhysical start address of Flash memory.\n\n- CFG_MONITOR_BASE:\n\t\tPhysical start address of boot monitor code (set by\n\t\tmake config files to be same as the text base address\n\t\t(TEXT_BASE) used when linking) - same as\n\t\tCFG_FLASH_BASE when booting from flash.\n\n- CFG_MONITOR_LEN:\n\t\tSize of memory reserved for monitor code, used to\n\t\tdetermine _at_compile_time_ (!) if the environment is\n\t\tembedded within the U-Boot image, or in a separate\n\t\tflash sector.\n\n- CFG_MALLOC_LEN:\n\t\tSize of DRAM reserved for malloc() use.\n\n- CFG_BOOTM_LEN:\n\t\tNormally compressed uImages are limited to an\n\t\tuncompressed size of 8 MBytes. If this is not enough,\n\t\tyou can define CFG_BOOTM_LEN in your board config file\n\t\tto adjust this setting to your needs.\n\n- CFG_BOOTMAPSZ:\n\t\tMaximum size of memory mapped by the startup code of\n\t\tthe Linux kernel; all data that must be processed by\n\t\tthe Linux kernel (bd_info, boot arguments, eventually\n\t\tinitrd image) must be put below this limit.\n\n- CFG_MAX_FLASH_BANKS:\n\t\tMax number of Flash memory banks\n\n- CFG_MAX_FLASH_SECT:\n\t\tMax number of sectors on a Flash chip\n\n- CFG_FLASH_ERASE_TOUT:\n\t\tTimeout for Flash erase operations (in ms)\n\n- CFG_FLASH_WRITE_TOUT:\n\t\tTimeout for Flash write operations (in ms)\n\n- CFG_FLASH_LOCK_TOUT\n\t\tTimeout for Flash set sector lock bit operation (in ms)\n\n- CFG_FLASH_UNLOCK_TOUT\n\t\tTimeout for Flash clear lock bits operation (in ms)\n\n- CFG_FLASH_PROTECTION\n\t\tIf defined, hardware flash sectors protection is used\n\t\tinstead of U-Boot software protection.\n\n- CFG_DIRECT_FLASH_TFTP:\n\n\t\tEnable TFTP transfers directly to flash memory;\n\t\twithout this option such a download has to be\n\t\tperformed in two steps: (1) download to RAM, and (2)\n\t\tcopy from RAM to flash.\n\n\t\tThe two-step approach is usually more reliable, since\n\t\tyou can check if the download worked before you erase\n\t\tthe flash, but in some situations (when sytem RAM is\n\t\ttoo limited to allow for a tempory copy of the\n\t\tdownloaded image) this option may be very useful.\n\n- CFG_FLASH_CFI:\n\t\tDefine if the flash driver uses extra elements in the\n\t\tcommon flash structure for storing flash geometry.\n\n- CFG_FLASH_CFI_DRIVER\n\t\tThis option also enables the building of the cfi_flash driver\n\t\tin the drivers directory\n\n- CFG_FLASH_QUIET_TEST\n\t\tIf this option is defined, the common CFI flash doesn't\n\t\tprint it's warning upon not recognized FLASH banks. This\n\t\tis useful, if some of the configured banks are only\n\t\toptionally available.\n\n- CFG_RX_ETH_BUFFER:\n\t\tDefines the number of ethernet receive buffers. On some\n\t\tethernet controllers it is recommended to set this value\n\t\tto 8 or even higher (EEPRO100 or 405 EMAC), since all\n\t\tbuffers can be full shortly after enabling the interface\n\t\ton high ethernet traffic.\n\t\tDefaults to 4 if not defined.\n\nThe following definitions that deal with the placement and management\nof environment data (variable area); in general, we support the\nfollowing configurations:\n\n- CFG_ENV_IS_IN_FLASH:\n\n\tDefine this if the environment is in flash memory.\n\n\ta) The environment occupies one whole flash sector, which is\n\t   \"embedded\" in the text segment with the U-Boot code. This\n\t   happens usually with \"bottom boot sector\" or \"top boot\n\t   sector\" type flash chips, which have several smaller\n\t   sectors at the start or the end. For instance, such a\n\t   layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In\n\t   such a case you would place the environment in one of the\n\t   4 kB sectors - with U-Boot code before and after it. With\n\t   \"top boot sector\" type flash chips, you would put the\n\t   environment in one of the last sectors, leaving a gap\n\t   between U-Boot and the environment.\n\n\t- CFG_ENV_OFFSET:\n\n\t   Offset of environment data (variable area) to the\n\t   beginning of flash memory; for instance, with bottom boot\n\t   type flash chips the second sector can be used: the offset\n\t   for this sector is given here.\n\n\t   CFG_ENV_OFFSET is used relative to CFG_FLASH_BASE.\n\n\t- CFG_ENV_ADDR:\n\n\t   This is just another way to specify the start address of\n\t   the flash sector containing the environment (instead of\n\t   CFG_ENV_OFFSET).\n\n\t- CFG_ENV_SECT_SIZE:\n\n\t   Size of the sector containing the environment.\n\n\n\tb) Sometimes flash chips have few, equal sized, BIG sectors.\n\t   In such a case you don't want to spend a whole sector for\n\t   the environment.\n\n\t- CFG_ENV_SIZE:\n\n\t   If you use this in combination with CFG_ENV_IS_IN_FLASH\n\t   and CFG_ENV_SECT_SIZE, you can specify to use only a part\n\t   of this flash sector for the environment. This saves\n\t   memory for the RAM copy of the environment.\n\n\t   It may also save flash memory if you decide to use this\n\t   when your environment is \"embedded\" within U-Boot code,\n\t   since then the remainder of the flash sector could be used\n\t   for U-Boot code. It should be pointed out that this is\n\t   STRONGLY DISCOURAGED from a robustness point of view:\n\t   updating the environment in flash makes it always\n\t   necessary to erase the WHOLE sector. If something goes\n\t   wrong before the contents has been restored from a copy in\n\t   RAM, your target system will be dead.\n\n\t- CFG_ENV_ADDR_REDUND\n\t  CFG_ENV_SIZE_REDUND\n\n\t   These settings describe a second storage area used to hold\n\t   a redundand copy of the environment data, so that there is\n\t   a valid backup copy in case there is a power failure during\n\t   a \"saveenv\" operation.\n\nBE CAREFUL! Any changes to the flash layout, and some changes to the\nsource code will make it necessary to adapt \u003cboard\u003e/u-boot.lds*\naccordingly!\n\n\n- CFG_ENV_IS_IN_NVRAM:\n\n\tDefine this if you have some non-volatile memory device\n\t(NVRAM, battery buffered SRAM) which you want to use for the\n\tenvironment.\n\n\t- CFG_ENV_ADDR:\n\t- CFG_ENV_SIZE:\n\n\t  These two #defines are used to determin the memory area you\n\t  want to use for environment. It is assumed that this memory\n\t  can just be read and written to, without any special\n\t  provision.\n\nBE CAREFUL! The first access to the environment happens quite early\nin U-Boot initalization (when we try to get the setting of for the\nconsole baudrate). You *MUST* have mappend your NVRAM area then, or\nU-Boot will hang.\n\nPlease note that even with NVRAM we still use a copy of the\nenvironment in RAM: we could work on NVRAM directly, but we want to\nkeep settings there always unmodified except somebody uses \"saveenv\"\nto save the current settings.\n\n\n- CFG_ENV_IS_IN_EEPROM:\n\n\tUse this if you have an EEPROM or similar serial access\n\tdevice and a driver for it.\n\n\t- CFG_ENV_OFFSET:\n\t- CFG_ENV_SIZE:\n\n\t  These two #defines specify the offset and size of the\n\t  environment area within the total memory of your EEPROM.\n\n\t- CFG_I2C_EEPROM_ADDR:\n\t  If defined, specified the chip address of the EEPROM device.\n\t  The default address is zero.\n\n\t- CFG_EEPROM_PAGE_WRITE_BITS:\n\t  If defined, the number of bits used to address bytes in a\n\t  single page in the EEPROM device.  A 64 byte page, for example\n\t  would require six bits.\n\n\t- CFG_EEPROM_PAGE_WRITE_DELAY_MS:\n\t  If defined, the number of milliseconds to delay between\n\t  page writes.\tThe default is zero milliseconds.\n\n\t- CFG_I2C_EEPROM_ADDR_LEN:\n\t  The length in bytes of the EEPROM memory array address.  Note\n\t  that this is NOT the chip address length!\n\n\t- CFG_I2C_EEPROM_ADDR_OVERFLOW:\n\t  EEPROM chips that implement \"address overflow\" are ones\n\t  like Catalyst 24WC04/08/16 which has 9/10/11 bits of\n\t  address and the extra bits end up in the \"chip address\" bit\n\t  slots. This makes a 24WC08 (1Kbyte) chip look like four 256\n\t  byte chips.\n\n\t  Note that we consider the length of the address field to\n\t  still be one byte because the extra address bits are hidden\n\t  in the chip address.\n\n\t- CFG_EEPROM_SIZE:\n\t  The size in bytes of the EEPROM device.\n\n\n- CFG_ENV_IS_IN_DATAFLASH:\n\n\tDefine this if you have a DataFlash memory device which you\n\twant to use for the environment.\n\n\t- CFG_ENV_OFFSET:\n\t- CFG_ENV_ADDR:\n\t- CFG_ENV_SIZE:\n\n\t  These three #defines specify the offset and size of the\n\t  environment area within the total memory of your DataFlash placed\n\t  at the specified address.\n\n- CFG_ENV_IS_IN_NAND:\n\n\tDefine this if you have a NAND device which you want to use\n\tfor the environment.\n\n\t- CFG_ENV_OFFSET:\n\t- CFG_ENV_SIZE:\n\n\t  These two #defines specify the offset and size of the environment\n\t  area within the first NAND device.\n\n\t- CFG_ENV_OFFSET_REDUND\n\n\t  This setting describes a second storage area of CFG_ENV_SIZE\n\t  size used to hold a redundant copy of the environment data,\n\t  so that there is a valid backup copy in case there is a\n\t  power failure during a \"saveenv\" operation.\n\n\tNote: CFG_ENV_OFFSET and CFG_ENV_OFFSET_REDUND must be aligned\n\tto a block boundary, and CFG_ENV_SIZE must be a multiple of\n\tthe NAND devices block size.\n\n- CFG_SPI_INIT_OFFSET\n\n\tDefines offset to the initial SPI buffer area in DPRAM. The\n\tarea is used at an early stage (ROM part) if the environment\n\tis configured to reside in the SPI EEPROM: We need a 520 byte\n\tscratch DPRAM area. It is used between the two initialization\n\tcalls (spi_init_f() and spi_init_r()). A value of 0xB00 seems\n\tto be a good choice since it makes it far enough from the\n\tstart of the data area as well as from the stack pointer.\n\nPlease note that the environment is read-only as long as the monitor\nhas been relocated to RAM and a RAM copy of the environment has been\ncreated; also, when using EEPROM you will have to use getenv_r()\nuntil then to read environment variables.\n\nThe environment is protected by a CRC32 checksum. Before the monitor\nis relocated into RAM, as a result of a bad CRC you will be working\nwith the compiled-in default environment - *silently*!!! [This is\nnecessary, because the first environment variable we need is the\n\"baudrate\" setting for the console - if we have a bad CRC, we don't\nhave any device yet where we could complain.]\n\nNote: once the monitor has been relocated, then it will complain if\nthe default environment is used; a new CRC is computed as soon as you\nuse the \"saveenv\" command to store a valid environment.\n\n- CFG_FAULT_ECHO_LINK_DOWN:\n\t\tEcho the inverted Ethernet link state to the fault LED.\n\n\t\tNote: If this option is active, then CFG_FAULT_MII_ADDR\n\t\t      also needs to be defined.\n\n- CFG_FAULT_MII_ADDR:\n\t\tMII address of the PHY to check for the Ethernet link state.\n\n- CFG_64BIT_VSPRINTF:\n\t\tMakes vsprintf (and all *printf functions) support printing\n\t\tof 64bit values by using the L quantifier\n\n- CFG_64BIT_STRTOUL:\n\t\tAdds simple_strtoull that returns a 64bit value\n\nLow Level (hardware related) configuration options:\n---------------------------------------------------\n\n- CFG_CACHELINE_SIZE:\n\t\tCache Line Size of the CPU.\n\n- CFG_DEFAULT_IMMR:\n\t\tDefault address of the IMMR after system reset.\n\n\t\tNeeded on some 8260 systems (MPC8260ADS, PQ2FADS-ZU,\n\t\tand RPXsuper) to be able to adjust the position of\n\t\tthe IMMR register after a reset.\n\n- Floppy Disk Support:\n\t\tCFG_FDC_DRIVE_NUMBER\n\n\t\tthe default drive number (default value 0)\n\n\t\tCFG_ISA_IO_STRIDE\n\n\t\tdefines the spacing between fdc chipset registers\n\t\t(default value 1)\n\n\t\tCFG_ISA_IO_OFFSET\n\n\t\tdefines the offset of register from address. It\n\t\tdepends on which part of the data bus is connected to\n\t\tthe fdc chipset. (default value 0)\n\n\t\tIf CFG_ISA_IO_STRIDE CFG_ISA_IO_OFFSET and\n\t\tCFG_FDC_DRIVE_NUMBER are undefined, they take their\n\t\tdefault value.\n\n\t\tif CFG_FDC_HW_INIT is defined, then the function\n\t\tfdc_hw_init() is called at the beginning of the FDC\n\t\tsetup. fdc_hw_init() must be provided by the board\n\t\tsource code. It is used to make hardware dependant\n\t\tinitializations.\n\n- CFG_IMMR:\tPhysical address of the Internal Memory.\n\t\tDO NOT CHANGE unless you know exactly what you're\n\t\tdoing! (11-4) [MPC8xx/82xx systems only]\n\n- CFG_INIT_RAM_ADDR:\n\n\t\tStart address of memory area that can be used for\n\t\tinitial data and stack; please note that this must be\n\t\twritable memory that is working WITHOUT special\n\t\tinitialization, i. e. you CANNOT use normal RAM which\n\t\twill become available only after programming the\n\t\tmemory controller and running certain initialization\n\t\tsequences.\n\n\t\tU-Boot uses the following memory types:\n\t\t- MPC8xx and MPC8260: IMMR (internal memory of the CPU)\n\t\t- MPC824X: data cache\n\t\t- PPC4xx:  data cache\n\n- CFG_GBL_DATA_OFFSET:\n\n\t\tOffset of the initial data structure in the memory\n\t\tarea defined by CFG_INIT_RAM_ADDR. Usually\n\t\tCFG_GBL_DATA_OFFSET is chosen such that the initial\n\t\tdata is located at the end of the available space\n\t\t(sometimes written as (CFG_INIT_RAM_END -\n\t\tCFG_INIT_DATA_SIZE), and the initial stack is just\n\t\tbelow that area (growing from (CFG_INIT_RAM_ADDR +\n\t\tCFG_GBL_DATA_OFFSET) downward.\n\n\tNote:\n\t\tOn the MPC824X (or other systems that use the data\n\t\tcache for initial memory) the address chosen for\n\t\tCFG_INIT_RAM_ADDR is basically arbitrary - it must\n\t\tpoint to an otherwise UNUSED address space between\n\t\tthe top of RAM and the start of the PCI space.\n\n- CFG_SIUMCR:\tSIU Module Configuration (11-6)\n\n- CFG_SYPCR:\tSystem Protection Control (11-9)\n\n- CFG_TBSCR:\tTime Base Status and Control (11-26)\n\n- CFG_PISCR:\tPeriodic Interrupt Status and Control (11-31)\n\n- CFG_PLPRCR:\tPLL, Low-Power, and Reset Control Register (15-30)\n\n- CFG_SCCR:\tSystem Clock and reset Control Register (15-27)\n\n- CFG_OR_TIMING_SDRAM:\n\t\tSDRAM timing\n\n- CFG_MAMR_PTA:\n\t\tperiodic timer for refresh\n\n- CFG_DER:\tDebug Event Register (37-47)\n\n- FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CFG_REMAP_OR_AM,\n  CFG_PRELIM_OR_AM, CFG_OR_TIMING_FLASH, CFG_OR0_REMAP,\n  CFG_OR0_PRELIM, CFG_BR0_PRELIM, CFG_OR1_REMAP, CFG_OR1_PRELIM,\n  CFG_BR1_PRELIM:\n\t\tMemory Controller Definitions: BR0/1 and OR0/1 (FLASH)\n\n- SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE,\n  CFG_OR_TIMING_SDRAM, CFG_OR2_PRELIM, CFG_BR2_PRELIM,\n  CFG_OR3_PRELIM, CFG_BR3_PRELIM:\n\t\tMemory Controller Definitions: BR2/3 and OR2/3 (SDRAM)\n\n- CFG_MAMR_PTA, CFG_MPTPR_2BK_4K, CFG_MPTPR_1BK_4K, CFG_MPTPR_2BK_8K,\n  CFG_MPTPR_1BK_8K, CFG_MAMR_8COL, CFG_MAMR_9COL:\n\t\tMachine Mode Register and Memory Periodic Timer\n\t\tPrescaler definitions (SDRAM timing)\n\n- CFG_I2C_UCODE_PATCH, CFG_I2C_DPMEM_OFFSET [0x1FC0]:\n\t\tenable I2C microcode relocation patch (MPC8xx);\n\t\tdefine relocation offset in DPRAM [DSP2]\n\n- CFG_SPI_UCODE_PATCH, CFG_SPI_DPMEM_OFFSET [0x1FC0]:\n\t\tenable SPI microcode relocation patch (MPC8xx);\n\t\tdefine relocation offset in DPRAM [SCC4]\n\n- CFG_USE_OSCCLK:\n\t\tUse OSCM clock mode on MBX8xx board. Be careful,\n\t\twrong setting might damage your board. Read\n\t\tdoc/README.MBX before setting this variable!\n\n- CFG_CPM_POST_WORD_ADDR: (MPC8xx, MPC8260 only)\n\t\tOffset of the bootmode word in DPRAM used by post\n\t\t(Power On Self Tests). This definition overrides\n\t\t#define'd default value in commproc.h resp.\n\t\tcpm_8260.h.\n\n- CFG_PCI_SLV_MEM_LOCAL, CFG_PCI_SLV_MEM_BUS, CFG_PICMR0_MASK_ATTRIB,\n  CFG_PCI_MSTR0_LOCAL, CFG_PCIMSK0_MASK, CFG_PCI_MSTR1_LOCAL,\n  CFG_PCIMSK1_MASK, CFG_PCI_MSTR_MEM_LOCAL, CFG_PCI_MSTR_MEM_BUS,\n  CFG_CPU_PCI_MEM_START, CFG_PCI_MSTR_MEM_SIZE, CFG_POCMR0_MASK_ATTRIB,\n  CFG_PCI_MSTR_MEMIO_LOCAL, CFG_PCI_MSTR_MEMIO_BUS, CPU_PCI_MEMIO_START,\n  CFG_PCI_MSTR_MEMIO_SIZE, CFG_POCMR1_MASK_ATTRIB, CFG_PCI_MSTR_IO_LOCAL,\n  CFG_PCI_MSTR_IO_BUS, CFG_CPU_PCI_IO_START, CFG_PCI_MSTR_IO_SIZE,\n  CFG_POCMR2_MASK_ATTRIB: (MPC826x only)\n\t\tOverrides the default PCI memory map in cpu/mpc8260/pci.c if set.\n\n- CONFIG_ETHER_ON_FEC[12]\n\t\tDefine to enable FEC[12] on a 8xx series processor.\n\n- CONFIG_FEC[12]_PHY\n\t\tDefine to the hardcoded PHY address which corresponds\n\t\tto the given FEC; i. e.\n\t\t\t#define CONFIG_FEC1_PHY 4\n\t\tmeans that the PHY with address 4 is connected to FEC1\n\n\t\tWhen set to -1, means to probe for first available.\n\n- CONFIG_FEC[12]_PHY_NORXERR\n\t\tThe PHY does not have a RXERR line (RMII only).\n\t\t(so program the FEC to ignore it).\n\n- CONFIG_RMII\n\t\tEnable RMII mode for all FECs.\n\t\tNote that this is a global option, we can't\n\t\thave one FEC in standard MII mode and another in RMII mode.\n\n- CONFIG_CRC32_VERIFY\n\t\tAdd a verify option to the crc32 command.\n\t\tThe syntax is:\n\n\t\t=\u003e crc32 -v \u003caddress\u003e \u003ccount\u003e \u003ccrc32\u003e\n\n\t\tWhere address/count indicate a memory area\n\t\tand crc32 is the correct crc32 which the\n\t\tarea should have.\n\n- CONFIG_LOOPW\n\t\tAdd the \"loopw\" memory command. This only takes effect if\n\t\tthe memory commands are activated globally (CFG_CMD_MEM).\n\n- CONFIG_MX_CYCLIC\n\t\tAdd the \"mdc\" and \"mwc\" memory commands. These are cyclic\n\t\t\"md/mw\" commands.\n\t\tExamples:\n\n\t\t=\u003e mdc.b 10 4 500\n\t\tThis command will print 4 bytes (10,11,12,13) each 500 ms.\n\n\t\t=\u003e mwc.l 100 12345678 10\n\t\tThis command will write 12345678 to address 100 all 10 ms.\n\n\t\tThis only takes effect if the memory commands are activated\n\t\tglobally (CFG_CMD_MEM).\n\n- CONFIG_SKIP_LOWLEVEL_INIT\n- CONFIG_SKIP_RELOCATE_UBOOT\n\n\t\t[ARM only] If these variables are defined, then\n\t\tcertain low level initializations (like setting up\n\t\tthe memory controller) are omitted and/or U-Boot does\n\t\tnot relocate itself into RAM.\n\t\tNormally these variables MUST NOT be defined. The\n\t\tonly exception is when U-Boot is loaded (to RAM) by\n\t\tsome other boot loader or by a debugger which\n\t\tperforms these intializations itself.\n\n\nBuilding the Software:\n======================\n\nBuilding U-Boot has been tested in native PPC environments (on a\nPowerBook G3 running LinuxPPC 2000) and in cross environments\n(running RedHat 6.x and 7.x Linux on x86, Solaris 2.6 on a SPARC, and\nNetBSD 1.5 on x86).\n\nIf you are not using a native PPC environment, it is assumed that you\nhave the GNU cross compiling tools available in your path and named\nwith a prefix of \"powerpc-linux-\". If this is not the case, (e.g. if\nyou are using Monta Vista's Hard Hat Linux CDK 1.2) you must change\nthe definition of CROSS_COMPILE in Makefile. For HHL on a 4xx CPU,\nchange it to:\n\n\tCROSS_COMPILE = ppc_4xx-\n\n\nU-Boot is intended to be  simple  to  build.  After  installing\t the\nsources\t you must configure U-Boot for one specific board type. This\nis done by typing:\n\n\tmake NAME_config\n\nwhere \"NAME_config\" is the name of one of the existing\nconfigurations; the following names are supported:\n\n\tADCIOP_config\t\tFPS860L_config\t\tomap730p2_config\n\tADS860_config\t\tGEN860T_config\t\tpcu_e_config\n\tAlaska8220_config\n\tAR405_config\t\tGENIETV_config\t\tPIP405_config\n\tat91rm9200dk_config\tGTH_config\t\tQS823_config\n\tCANBT_config\t\thermes_config\t\tQS850_config\n\tcmi_mpc5xx_config\thymod_config\t\tQS860T_config\n\tcogent_common_config\tIP860_config\t\tRPXlite_config\n\tcogent_mpc8260_config\tIVML24_config\t\tRPXlite_DW_config\n\tcogent_mpc8xx_config\tIVMS8_config\t\tRPXsuper_config\n\tCPCI405_config\t\tJSE_config\t\trsdproto_config\n\tCPCIISER4_config\tLANTEC_config\t\tSandpoint8240_config\n\tcsb272_config\t\tlwmon_config\t\tsbc8260_config\n\tCU824_config\t\tMBX860T_config\t\tsbc8560_33_config\n\tDUET_ADS_config\t\tMBX_config\t\tsbc8560_66_config\n\tEBONY_config\t\tMPC8260ADS_config\tSM850_config\n\tELPT860_config\t\tMPC8540ADS_config\tSPD823TS_config\n\tESTEEM192E_config\tMPC8540EVAL_config\tstxgp3_config\n\tETX094_config\t\tMPC8560ADS_config\tSXNI855T_config\n\tFADS823_config\t\tNETVIA_config\t\tTQM823L_config\n\tFADS850SAR_config\tomap1510inn_config\tTQM850L_config\n\tFADS860T_config\t\tomap1610h2_config\tTQM855L_config\n\tFPS850L_config\t\tomap1610inn_config\tTQM860L_config\n\t\t\t\tomap5912osk_config\twalnut_config\n\t\t\t\tomap2420h4_config\tYukon8220_config\n\t\t\t\t\t\t\tZPC1900_config\n\nNote: for some board special configuration names may exist; check if\n      additional information is available from the board vendor; for\n      instance, the TQM823L systems are available without (standard)\n      or with LCD support. You can select such additional \"features\"\n      when chosing the configuration, i. e.\n\n      make TQM823L_config\n\t- will configure for a plain TQM823L, i. e. no LCD support\n\n      make TQM823L_LCD_config\n\t- will configure for a TQM823L with U-Boot console on LCD\n\n      etc.\n\n\nFinally, type \"make all\", and you should get some working U-Boot\nimages ready for download to / installation on your system:\n\n- \"u-boot.bin\" is a raw binary image\n- \"u-boot\" is an image in ELF binary format\n- \"u-boot.srec\" is in Motorola S-Record format\n\n\nPlease be aware that the Makefiles assume you are using GNU make, so\nfor instance on NetBSD you might need to use \"gmake\" instead of\nnative \"make\".\n\n\nIf the system board that you have is not listed, then you will need\nto port U-Boot to your hardware platform. To do this, follow these\nsteps:\n\n1.  Add a new configuration option for your board to the toplevel\n    \"Makefile\" and to the \"MAKEALL\" script, using the existing\n    entries as examples. Note that here and at many other places\n    boards and other names are listed in alphabetical sort order. Please\n    keep this order.\n2.  Create a new directory to hold your board specific code. Add any\n    files you need. In your board directory, you will need at least\n    the \"Makefile\", a \"\u003cboard\u003e.c\", \"flash.c\" and \"u-boot.lds\".\n3.  Create a new configuration file \"include/configs/\u003cboard\u003e.h\" for\n    your board\n3.  If you're porting U-Boot to a new CPU, then also create a new\n    directory to hold your CPU specific code. Add any files you need.\n4.  Run \"make \u003cboard\u003e_config\" with your new name.\n5.  Type \"make\", and you should get a working \"u-boot.srec\" file\n    to be installed on your target system.\n6.  Debug and solve any problems that might arise.\n    [Of course, this last step is much harder than it sounds.]\n\n\nTesting of U-Boot Modifications, Ports to New Hardware, etc.:\n==============================================================\n\nIf you have modified U-Boot sources (for instance added a new\tboard\nor  support  for  new  devices,\t a new CPU, etc.) you are expected to\nprovide feedback to the other developers. The feedback normally takes\nthe form of a \"patch\", i. e. a context diff against a certain (latest\nofficial or latest in CVS) version of U-Boot sources.\n\nBut before you submit such a patch, please verify that\tyour  modifi-\ncation\tdid not break existing code. At least make sure that *ALL* of\nthe supported boards compile WITHOUT ANY compiler warnings. To do so,\njust run the \"MAKEALL\" script, which will configure and build U-Boot\nfor ALL supported system. Be warned, this will take a while. You  can\nselect\twhich  (cross)\tcompiler  to use by passing a `CROSS_COMPILE'\nenvironment variable to the script, i. e. to use the cross tools from\nMontaVista's Hard Hat Linux you can type\n\n\tCROSS_COMPILE=ppc_8xx- MAKEALL\n\nor to build on a native PowerPC system you can type\n\n\tCROSS_COMPILE=' ' MAKEALL\n\nSee also \"U-Boot Porting Guide\" below.\n\n\nMonitor Commands - Overview:\n============================\n\ngo\t- start application at address 'addr'\nrun\t- run commands in an environment variable\nbootm\t- boot application image from memory\nbootp\t- boot image via network using BootP/TFTP protocol\ntftpboot- boot image via network using TFTP protocol\n\t       and env variables \"ipaddr\" and \"serverip\"\n\t       (and eventually \"gatewayip\")\nrarpboot- boot image via network using RARP/TFTP protocol\ndiskboot- boot from IDE devicebootd   - boot default, i.e., run 'bootcmd'\nloads\t- load S-Record file over serial line\nloadb\t- load binary file over serial line (kermit mode)\nmd\t- memory display\nmm\t- memory modify (auto-incrementing)\nnm\t- memory modify (constant address)\nmw\t- memory write (fill)\ncp\t- memory copy\ncmp\t- memory compare\ncrc32\t- checksum calculation\nimd\t- i2c memory display\nimm\t- i2c memory modify (auto-incrementing)\ninm\t- i2c memory modify (constant address)\nimw\t- i2c memory write (fill)\nicrc32\t- i2c checksum calculation\niprobe\t- probe to discover valid I2C chip addresses\niloop\t- infinite loop on address range\nisdram\t- print SDRAM configuration information\nsspi\t- SPI utility commands\nbase\t- print or set address offset\nprintenv- print environment variables\nsetenv\t- set environment variables\nsaveenv - save environment variables to persistent storage\nprotect - enable or disable FLASH write protection\nerase\t- erase FLASH memory\nflinfo\t- print FLASH memory information\nbdinfo\t- print Board Info structure\niminfo\t- print header information for application image\nconinfo - print console devices and informations\nide\t- IDE sub-system\nloop\t- infinite loop on address range\nloopw\t- infinite write loop on address range\nmtest\t- simple RAM test\nicache\t- enable or disable instruction cache\ndcache\t- enable or disable data cache\nreset\t- Perform RESET of the CPU\necho\t- echo args to console\nversion - print monitor version\nhelp\t- print online help\n?\t- alias for 'help'\n\n\nMonitor Commands - Detailed Description:\n========================================\n\nTODO.\n\nFor now: just type \"help \u003ccommand\u003e\".\n\n\nEnvironment Variables:\n======================\n\nU-Boot supports user configuration using Environment Variables which\ncan be made persistent by saving to Flash memory.\n\nEnvironment Variables are set using \"setenv\", printed using\n\"printenv\", and saved to Flash using \"saveenv\". Using \"setenv\"\nwithout a value can be used to delete a variable from the\nenvironment. As long as you don't save the environment you are\nworking with an in-memory copy. In case the Flash area containing the\nenvironment is erased by accident, a default environment is provided.\n\nSome configuration options can be set using Environment Variables:\n\n  baudrate\t- see CONFIG_BAUDRATE\n\n  bootdelay\t- see CONFIG_BOOTDELAY\n\n  bootcmd\t- see CONFIG_BOOTCOMMAND\n\n  bootargs\t- Boot arguments when booting an RTOS image\n\n  bootfile\t- Name of the image to load with TFTP\n\n  autoload\t- if set to \"no\" (any string beginning with 'n'),\n\t\t  \"bootp\" will just load perform a lookup of the\n\t\t  configuration from the BOOTP server, but not try to\n\t\t  load any image using TFTP\n\n  autostart\t- if set to \"yes\", an image loaded using the \"bootp\",\n\t\t  \"rarpboot\", \"tftpboot\" or \"diskboot\" commands will\n\t\t  be automatically started (by internally calling\n\t\t  \"bootm\")\n\n\t\t  If set to \"no\", a standalone image passed to the\n\t\t  \"bootm\" command will be copied to the load address\n\t\t  (and eventually uncompressed), but NOT be started.\n\t\t  This can be used to load and uncompress arbitrary\n\t\t  data.\n\n  i2cfast\t- (PPC405GP|PPC405EP only)\n\t\t  if set to 'y' configures Linux I2C driver for fast\n\t\t  mode (400kHZ). This environment variable is used in\n\t\t  initialization code. So, for changes to be effective\n\t\t  it must be saved and board must be reset.\n\n  initrd_high\t- restrict positioning of initrd images:\n\t\t  If this variable is not set, initrd images will be\n\t\t  copied to the highest possible address in RAM; this\n\t\t  is usually what you want since it allows for\n\t\t  maximum initrd size. If for some reason you want to\n\t\t  make sure that the initrd image is loaded below the\n\t\t  CFG_BOOTMAPSZ limit, you can set this environment\n\t\t  variable to a value of \"no\" or \"off\" or \"0\".\n\t\t  Alternatively, you can set it to a maximum upper\n\t\t  address to use (U-Boot will still check that it\n\t\t  does not overwrite the U-Boot stack and data).\n\n\t\t  For instance, when you have a system with 16 MB\n\t\t  RAM, and want to reserve 4 MB from use by Linux,\n\t\t  you can do this by adding \"mem=12M\" to the value of\n\t\t  the \"bootargs\" variable. However, now you must make\n\t\t  sure that the initrd image is placed in the first\n\t\t  12 MB as well - this can be done with\n\n\t\t  setenv initrd_high 00c00000\n\n\t\t  If you set initrd_high to 0xFFFFFFFF, this is an\n\t\t  indication to U-Boot that all addresses are legal\n\t\t  for the Linux kernel, including addresses in flash\n\t\t  memory. In this case U-Boot will NOT COPY the\n\t\t  ramdisk at all. This may be useful to reduce the\n\t\t  boot time on your system, but requires that this\n\t\t  feature is supported by your Linux kernel.\n\n  ipaddr\t- IP address; needed for tftpboot command\n\n  loadaddr\t- Default load address for commands like \"bootp\",\n\t\t  \"rarpboot\", \"tftpboot\", \"loadb\" or \"diskboot\"\n\n  loads_echo\t- see CONFIG_LOADS_ECHO\n\n  serverip\t- TFTP server IP address; needed for tftpboot command\n\n  bootretry\t- see CONFIG_BOOT_RETRY_TIME\n\n  bootdelaykey\t- see CONFIG_AUTOBOOT_DELAY_STR\n\n  bootstopkey\t- see CONFIG_AUTOBOOT_STOP_STR\n\n  ethprime\t- When CONFIG_NET_MULTI is enabled controls which\n\t\t  interface is used first.\n\n  ethact\t- When CONFIG_NET_MULTI is enabled controls which\n\t\t  interface is currently active. For example you\n\t\t  can do the following\n\n\t\t  =\u003e setenv ethact FEC ETHERNET\n\t\t  =\u003e ping 192.168.0.1 # traffic sent on FEC ETHERNET\n\t\t  =\u003e setenv ethact SCC ETHERNET\n\t\t  =\u003e ping 10.0.0.1 # traffic sent on SCC ETHERNET\n\n   netretry\t- When set to \"no\" each network operation will\n\t\t  either succeed or fail without retrying.\n\t\t  When set to \"once\" the network operation will\n\t\t  fail when all the available network interfaces\n\t\t  are tried once without success.\n\t\t  Useful on scripts which control the retry operation\n\t\t  themselves.\n\n  tftpsrcport\t- If this is set, the value is used for TFTP's\n\t\t  UDP source port.\n\n  tftpdstport\t- If this is set, the value is used for TFTP's UDP\n\t\t  destination port instead of the Well Know Port 69.\n\n   vlan\t\t- When set to a value \u003c 4095 the traffic over\n\t\t  ethernet is encapsulated/received over 802.1q\n\t\t  VLAN tagged frames.\n\nThe following environment variables may be used and automatically\nupdated by the network boot commands (\"bootp\" and \"rarpboot\"),\ndepending the information provided by your boot server:\n\n  bootfile\t- see above\n  dnsip\t\t- IP address of your Domain Name Server\n  dnsip2\t- IP address of your secondary Domain Name Server\n  gatewayip\t- IP address of the Gateway (Router) to use\n  hostname\t- Target hostname\n  ipaddr\t- see above\n  netmask\t- Subnet Mask\n  rootpath\t- Pathname of the root filesystem on the NFS server\n  serverip\t- see above\n\n\nThere are two special Environment Variables:\n\n  serial#\t- contains hardware identification information such\n\t\t  as type string and/or serial number\n  ethaddr\t- Ethernet address\n\nThese variables can be set only once (usually during manufacturing of\nthe board). U-Boot refuses to delete or overwrite these variables\nonce they have been set once.\n\n\nFurther special Environment Variables:\n\n  ver\t\t- Contains the U-Boot version string as printed\n\t\t  with the \"version\" command. This variable is\n\t\t  readonly (see CONFIG_VERSION_VARIABLE).\n\n\nPlease note that changes to some configuration parameters may take\nonly effect after the next boot (yes, that's just like Windoze :-).\n\n\nCommand Line Parsing:\n=====================\n\nThere are two different command line parsers available with U-Boot:\nthe old \"simple\" one, and the much more powerful \"hush\" shell:\n\nOld, simple command line parser:\n--------------------------------\n\n- supports environment variables (through setenv / saveenv commands)\n- several commands on one line, separated by ';'\n- variable substitution using \"... ${name} ...\" syntax\n- special characters ('$', ';') can be escaped by prefixing with '\\',\n  for example:\n\tsetenv bootcmd bootm \\${address}\n- You can also escape text by enclosing in single apostrophes, for example:\n\tsetenv addip 'setenv bootargs $bootargs ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname::off'\n\nHush shell:\n-----------\n\n- similar to Bourne shell, with control structures like\n  if...then...else...fi, for...do...done; while...do...done,\n  until...do...done, ...\n- supports environment (\"global\") variables (through setenv / saveenv\n  commands) and local shell variables (through standard shell syntax\n  \"name=value\"); only environment variables can be used with \"run\"\n  command\n\nGeneral rules:\n--------------\n\n(1) If a command line (or an environment variable executed by a \"run\"\n    command) contains several commands separated by semicolon, and\n    one of these commands fails, then the remaining commands will be\n    executed anyway.\n\n(2) If you execute several variables with one call to run (i. e.\n    calling run with a list af variables as arguments), any failing\n    command will cause \"run\" to terminate, i. e. the remaining\n    variables are not executed.\n\nNote for Redundant Ethernet Interfaces:\n=======================================\n\nSome boards come with redundant ethernet interfaces; U-Boot supports\nsuch configurations and is capable of automatic selection of a\n\"working\" interface when needed. MAC assignment works as follows:\n\nNetwork interfaces are numbered eth0, eth1, eth2, ... Corresponding\nMAC addresses can be stored in the environment as \"ethaddr\" (=\u003eeth0),\n\"eth1addr\" (=\u003eeth1), \"eth2addr\", ...\n\nIf the network interface stores some valid MAC address (for instance\nin SROM), this is used as default address if there is NO correspon-\nding setting in the environment; if the corresponding environment\nvariable is set, this overrides the settings in the card; that means:\n\no If the SROM has a valid MAC address, and there is no address in the\n  environment, the SROM's address is used.\n\no If there is no valid address in the SROM, and a definition in the\n  environment exists, then the value from the environment variable is\n  used.\n\no If both the SROM and the environment contain a MAC address, and\n  both addresses are the same, this MAC address is used.\n\no If both the SROM and the environment contain a MAC address, and the\n  addresses differ, the value from the environment is used and a\n  warning is printed.\n\no If neither SROM nor the environment contain a MAC address, an error\n  is raised.\n\n\nImage Formats:\n==============\n\nThe \"boot\" commands of this monitor operate on \"image\" files which\ncan be basicly anything, preceeded by a special header; see the\ndefinitions in include/image.h for details; basicly, the header\ndefines the following image properties:\n\n* Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD,\n  4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,\n  LynxOS, pSOS, QNX, RTEMS, ARTOS;\n  Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS).\n* Target CPU Architecture (Provisions for Alpha, ARM, Intel x86,\n  IA64, MIPS, NIOS, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;\n  Currently supported: ARM, Intel x86, MIPS, NIOS, PowerPC).\n* Compression Type (uncompressed, gzip, bzip2)\n* Load Address\n* Entry Point\n* Image Name\n* Image Timestamp\n\nThe header is marked by a special Magic Number, and both the header\nand the data portions of the image are secured against corruption by\nCRC32 checksums.\n\n\nLinux Support:\n==============\n\nAlthough U-Boot should support any OS or standalone application\neasily, the main focus has always been on Linux during the design of\nU-Boot.\n\nU-Boot includes many features that so far have been part of some\nspecial \"boot loader\" code within the Linux kernel. Also, any\n\"initrd\" images to be used are no longer part of one big Linux image;\ninstead, kernel and \"initrd\" are separate images. This implementation\nserves several purposes:\n\n- the same features can be used for other OS or standalone\n  applications (for instance: using compressed images to reduce the\n  Flash memory footprint)\n\n- it becomes much easier to port new Linux kernel versions because\n  lots of low-level, hardware dependent stuff are done by U-Boot\n\n- the same Linux kernel image can now be used with different \"initrd\"\n  images; of course this also means that different kernel images can\n  be run with the same \"initrd\". This makes testing easier (you don't\n  have to build a new \"zImage.initrd\" Linux image when you just\n  change a file in your \"initrd\"). Also, a field-upgrade of the\n  software is easier now.\n\n\nLinux HOWTO:\n============\n\nPorting Linux to U-Boot based systems:\n---------------------------------------\n\nU-Boot cannot save you from doing all the necessary modifications to\nconfigure the Linux device drivers for use with your target hardware\n(no, we don't intend to provide a full virtual machine interface to\nLinux :-).\n\nBut now you can ignore ALL boot loader code (in arch/ppc/mbxboot).\n\nJust make sure your machine specific header file (for instance\ninclude/asm-ppc/tqm8xx.h) includes the same definition of the Board\nInformation structure as we define in include/u-boot.h, and make\nsure that your definition of IMAP_ADDR uses the same value as your\nU-Boot configuration in CFG_IMMR.\n\n\nConfiguring the Linux kernel:\n-----------------------------\n\nNo specific requirements for U-Boot. Make sure you have some root\ndevice (initial ramdisk, NFS) for your target system.\n\n\nBuilding a Linux Image:\n-----------------------\n\nWith U-Boot, \"normal\" build targets like \"zImage\" or \"bzImage\" are\nnot used. If you use recent kernel source, a new build target\n\"uImage\" will exist which automatically builds an image usable by\nU-Boot. Most older kernels also have support for a \"pImage\" target,\nwhich was introduced for our predecessor project PPCBoot and uses a\n100% compatible format.\n\nExample:\n\n\tmake TQM850L_config\n\tmake oldconfig\n\tmake dep\n\tmake uImage\n\nThe \"uImage\" build target uses a special tool (in 'tools/mkimage') to\nencapsulate a compressed Linux kernel image with header\t information,\nCRC32 checksum etc. for use with U-Boot. This is what we are doing:\n\n* build a standard \"vmlinux\" kernel image (in ELF binary format):\n\n* convert the kernel into a raw binary image:\n\n\t${CROSS_COMPILE}-objcopy -O binary \\\n\t\t\t\t -R .note -R .comment \\\n\t\t\t\t -S vmlinux linux.bin\n\n* compress the binary image:\n\n\tgzip -9 linux.bin\n\n* package compressed binary image for U-Boot:\n\n\tmkimage -A ppc -O linux -T kernel -C gzip \\\n\t\t-a 0 -e 0 -n \"Linux Kernel Image\" \\\n\t\t-d linux.bin.gz uImage\n\n\nThe \"mkimage\" tool can also be used to create ramdisk images for use\nwith U-Boot, either separated from the Linux kernel image, or\ncombined into one file. \"mkimage\" encapsulates the images with a 64\nbyte header containing information about target architecture,\noperating system, image type, compression method, entry points, time\nstamp, CRC32 checksums, etc.\n\n\"mkimage\" can be called in two ways: to verify existing images and\nprint the header information, or to build new images.\n\nIn the first form (with \"-l\" option) mkimage lists the information\ncontained in the header of an existing U-Boot image; this includes\nchecksum verification:\n\n\ttools/mkimage -l image\n\t  -l ==\u003e list image header information\n\nThe second form (with \"-d\" option) is used to build a U-Boot image\nfrom a \"data file\" which is used as image payload:\n\n\ttools/mkimage -A arch -O os -T type -C comp -a addr -e ep \\\n\t\t      -n name -d data_file image\n\t  -A ==\u003e set architecture to 'arch'\n\t  -O ==\u003e set operating system to 'os'\n\t  -T ==\u003e set image type to 'type'\n\t  -C ==\u003e set compression type 'comp'\n\t  -a ==\u003e set load address to 'addr' (hex)\n\t  -e ==\u003e set entry point to 'ep' (hex)\n\t  -n ==\u003e set image name to 'name'\n\t  -d ==\u003e use image data from 'datafile'\n\nRight now, all Linux kernels for PowerPC systems use the same load\naddress (0x00000000), but the entry point address depends on the\nkernel version:\n\n- 2.2.x kernels have the entry point at 0x0000000C,\n- 2.3.x and later kernels have the entry point at 0x00000000.\n\nSo a typical call to build a U-Boot image would read:\n\n\t-\u003e tools/mkimage -n '2.4.4 kernel for TQM850L' \\\n\t\u003e -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \\\n\t\u003e -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux.gz \\\n\t\u003e examples/uImage.TQM850L\n\tImage Name:   2.4.4 kernel for TQM850L\n\tCreated:      Wed Jul 19 02:34:59 2000\n\tImage Type:   PowerPC Linux Kernel Image (gzip compressed)\n\tData Size:    335725 Bytes = 327.86 kB = 0.32 MB\n\tLoad Address: 0x00000000\n\tEntry Point:  0x00000000\n\nTo verify the contents of the image (or check for corruption):\n\n\t-\u003e tools/mkimage -l examples/uImage.TQM850L\n\tImage Name:   2.4.4 kernel for TQM850L\n\tCreated:      Wed Jul 19 02:34:59 2000\n\tImage Type:   PowerPC Linux Kernel Image (gzip compressed)\n\tData Size:    335725 Bytes = 327.86 kB = 0.32 MB\n\tLoad Address: 0x00000000\n\tEntry Point:  0x00000000\n\nNOTE: for embedded systems where boot time is critical you can trade\nspeed for memory and install an UNCOMPRESSED image instead: this\nneeds more space in Flash, but boots much faster since it does not\nneed to be uncompressed:\n\n\t-\u003e gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux.gz\n\t-\u003e tools/mkimage -n '2.4.4 kernel for TQM850L' \\\n\t\u003e -A ppc -O linux -T kernel -C none -a 0 -e 0 \\\n\t\u003e -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux \\\n\t\u003e examples/uImage.TQM850L-uncompressed\n\tImage Name:   2.4.4 kernel for TQM850L\n\tCreated:      Wed Jul 19 02:34:59 2000\n\tImage Type:   PowerPC Linux Kernel Image (uncompressed)\n\tData Size:    792160 Bytes = 773.59 kB = 0.76 MB\n\tLoad Address: 0x00000000\n\tEntry Point:  0x00000000\n\n\nSimilar you can build U-Boot images from a 'ramdisk.image.gz' file\nwhen your kernel is intended to use an initial ramdisk:\n\n\t-\u003e tools/mkimage -n 'Simple Ramdisk Image' \\\n\t\u003e -A ppc -O linux -T ramdisk -C gzip \\\n\t\u003e -d /LinuxPPC/images/SIMPLE-ramdisk.image.gz examples/simple-initrd\n\tImage Name:   Simple Ramdisk Image\n\tCreated:      Wed Jan 12 14:01:50 2000\n\tImage Type:   PowerPC Linux RAMDisk Image (gzip compressed)\n\tData Size:    566530 Bytes = 553.25 kB = 0.54 MB\n\tLoad Address: 0x00000000\n\tEntry Point:  0x00000000\n\n\nInstalling a Linux Image:\n-------------------------\n\nTo downloading a U-Boot image over the serial (console) interface,\nyou must convert the image to S-Record format:\n\n\tobjcopy -I binary -O srec examples/image examples/image.srec\n\nThe 'objcopy' does not understand the information in the U-Boot\nimage header, so the resulting S-Record file will be relative to\naddress 0x00000000. To load it to a given address, you need to\nspecify the target address as 'offset' parameter with the 'loads'\ncommand.\n\nExample: install the image to address 0x40100000 (which on the\nTQM8xxL is in the first Flash bank):\n\n\t=\u003e erase 40100000 401FFFFF\n\n\t.......... done\n\tErased 8 sectors\n\n\t=\u003e loads 40100000\n\t## Ready for S-Record download ...\n\t~\u003eexamples/image.srec\n\t1 2 3 4 5 6 7 8 9 10 11 12 13 ...\n\t...\n\t15989 15990 15991 15992\n\t[file transfer complete]\n\t[connected]\n\t## Start Addr = 0x00000000\n\n\nYou can check the success of the download using the 'iminfo' command;\nthis includes a checksum verification so you  can  be  sure  no\t data\ncorruption happened:\n\n\t=\u003e imi 40100000\n\n\t## Checking Image at 40100000 ...\n\t   Image Name:\t 2.2.13 for initrd on TQM850L\n\t   Image Type:\t PowerPC Linux Kernel Image (gzip compressed)\n\t   Data Size:\t 335725 Bytes = 327 kB = 0 MB\n\t   Load Address: 00000000\n\t   Entry Point:\t 0000000c\n\t   Verifying Checksum ... OK\n\n\nBoot Linux:\n-----------\n\nThe \"bootm\" command is used to boot an application that is stored in\nmemory (RAM or Flash). In case of a Linux kernel image, the contents\nof the \"bootargs\" environment variable is passed to the kernel as\nparameters. You can check and modify this variable using the\n\"printenv\" and \"setenv\" commands:\n\n\n\t=\u003e printenv bootargs\n\tbootargs=root=/dev/ram\n\n\t=\u003e setenv bootargs root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2\n\n\t=\u003e printenv bootargs\n\tbootargs=root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2\n\n\t=\u003e bootm 40020000\n\t## Booting Linux kernel at 40020000 ...\n\t   Image Name:\t 2.2.13 for NFS on TQM850L\n\t   Image Type:\t PowerPC Linux Kernel Image (gzip compressed)\n\t   Data Size:\t 381681 Bytes = 372 kB = 0 MB\n\t   Load Address: 00000000\n\t   Entry Point:\t 0000000c\n\t   Verifying Checksum ... OK\n\t   Uncompressing Kernel Image ... OK\n\tLinux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:35:17 MEST 2000\n\tBoot arguments: root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2\n\ttime_init: decrementer frequency = 187500000/60\n\tCalibrating delay loop... 49.77 BogoMIPS\n\tMemory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]\n\t...\n\nIf you want to boot a Linux kernel with initial ram disk, you pass\nthe memory addresses of both the kernel and the initrd image (PPBCOOT\nformat!) to the \"bootm\" command:\n\n\t=\u003e imi 40100000 40200000\n\n\t## Checking Image at 40100000 ...\n\t   Image Name:\t 2.2.13 for initrd on TQM850L\n\t   Image Type:\t PowerPC Linux Kernel Image (gzip compressed)\n\t   Data Size:\t 335725 Bytes = 327 kB = 0 MB\n\t   Load Address: 00000000\n\t   Entry Point:\t 0000000c\n\t   Verifying Checksum ... OK\n\n\t## Checking Image at 40200000 ...\n\t   Image Name:\t Simple Ramdisk Image\n\t   Image Type:\t PowerPC Linux RAMDisk Image (gzip compressed)\n\t   Data Size:\t 566530 Bytes = 553 kB = 0 MB\n\t   Load Address: 00000000\n\t   Entry Point:\t 00000000\n\t   Verifying Checksum ... OK\n\n\t=\u003e bootm 40100000 40200000\n\t## Booting Linux kernel at 40100000 ...\n\t   Image Name:\t 2.2.13 for initrd on TQM850L\n\t   Image Type:\t PowerPC Linux Kernel Image (gzip compressed)\n\t   Data Size:\t 335725 Bytes = 327 kB = 0 MB\n\t   Load Address: 00000000\n\t   Entry Point:\t 0000000c\n\t   Verifying Checksum ... OK\n\t   Uncompressing Kernel Image ... OK\n\t## Loading RAMDisk Image at 40200000 ...\n\t   Image Name:\t Simple Ramdisk Image\n\t   Image Type:\t PowerPC Linux RAMDisk ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faep%2Ftplink-bootloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faep%2Ftplink-bootloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faep%2Ftplink-bootloader/lists"}