ARM-develop

所属分类:处理器开发
开发工具:Visual C++
文件大小:1864KB
下载次数:7
上传日期:2006-05-05 19:47:02
上 传 者frankfisher
说明:  嵌入式ARM的一些源代码,相当的全,后续还有一部分,以后会继续上传
(some source code, rather the whole, there are still some follow-up, there will continue to upload)

文件列表:
源代码\第4部分的代码\ppcboot-0.6.2\CHANGELOG (16714, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\config.mk (3270, 2000-10-30)
源代码\第4部分的代码\ppcboot-0.6.2\COPYING (15407, 2000-06-18)
源代码\第4部分的代码\ppcboot-0.6.2\CREDITS (1814, 2000-11-12)
源代码\第4部分的代码\ppcboot-0.6.2\MAKEALL (407, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\Makefile (7297, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\config.mk (932, 2000-07-11)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\flash.c (17563, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\Makefile (1289, 2000-08-18)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\ppcboot.lds (3524, 2000-10-12)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\ppcboot.lds.debug (3472, 2000-08-22)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx\tqm8xx.c (9545, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\tqm8xx (0, 2002-06-28)
源代码\第4部分的代码\ppcboot-0.6.2\tools\img2srec.c (11802, 2000-10-12)
源代码\第4部分的代码\ppcboot-0.6.2\tools\Makefile (1792, 2000-11-17)
源代码\第4部分的代码\ppcboot-0.6.2\tools\mkimage.c (14787, 2000-10-26)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\astest.c (2552, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\error.c (940, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\error.h (148, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\gdbcont.c (1241, 2000-10-11)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\gdbsend.c (2470, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\Makefile (1770, 2000-10-11)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\remote.c (24956, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\remote.h (172, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\serial.c (2270, 2000-10-26)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb\serial.h (330, 2000-10-04)
源代码\第4部分的代码\ppcboot-0.6.2\tools\gdb (0, 2002-06-28)
源代码\第4部分的代码\ppcboot-0.6.2\tools\easylogo\easylogo.c (9806, 2000-11-13)
源代码\第4部分的代码\ppcboot-0.6.2\tools\easylogo\linux_logo.tga (19244, 2000-10-15)
源代码\第4部分的代码\ppcboot-0.6.2\tools\easylogo\Makefile (46, 2000-10-26)
源代码\第4部分的代码\ppcboot-0.6.2\tools\easylogo\runme.sh (101, 2000-10-26)
源代码\第4部分的代码\ppcboot-0.6.2\tools\easylogo (0, 2002-06-28)
源代码\第4部分的代码\ppcboot-0.6.2\tools (0, 2002-06-28)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\config.mk (987, 2000-10-20)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\flash.c (2196, 2000-10-10)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\Makefile (1289, 2000-10-10)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\ppcboot.lds (3227, 2000-10-10)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\ppcboot.lds.debug (3499, 2000-10-10)
源代码\第4部分的代码\ppcboot-0.6.2\spd8xx\spd8xx.c (8305, 2000-11-17)
... ...

# # (C) Copyright 2000 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. # # See file CREDITS for list of people who contributed to this # project. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Summary: ======== This directory contains the source code for PPCBoot, a monitor for Embedded PowerPC boards, which can be installed in a boot ROM and used to test the hardware or download and run application code. The development of PPCBoot is closely related to Linux: some parts of the source code originate in the Linux source tree, we still have some header files in common, and special provision has been made to support booting of Linux images. Some attention has been paid to make this software easily configurable and extendable. For instance, all monitor commands are implemented with the same call interface, so that it's very easy to add new commands. Also, instead of permanently adding rarely used code (for instance hardware test utilities) to the monitor, you can load and run it dynamically. Where we come from: =================== - start from 8xxrom sources - clean up code - make it easier to add custom boards - eventually make it possible to add other [PowerPC] CPUs - extend functions, especially: * Provide extended interface to Linux boot loader * S-Record download * network boot * PCMCIA / ATA disk boot Directory Hierarchy: ==================== - common Misc architecture independend functions - doc Documentation (don't expect too much) - examples Example code for standalone applications, etc. - include Header Files - disk Harddisk interface code - net Networking code - ppc Files generic to PowerPC architecture - tools Tools to build S-Record or PPCBoot images, etc. - mpc8xx Files specific to Motorola MPC8xx CPUs - ppc4xx Files specific to IBM 4xx CPUs - adciop Files specific to ADCIOP boards - cogent Files specific to Cogent boards (need further configuration) - cpci405 Files specific to CPCI405 boards - etx094 Files specific to ETX_094 boards - fads Files specific to Motorola FADS boards - genietv Files specific to GENIETV boards - hymod Files specific to HYMOD boards - ivms8 Files specific to IVMS8 boards - mbx8xx Files specific to Motorola MBX boards - spd8xx Files specific to SPD8xxTS boards - tqm8xx Files specific to TQM8xxL boards Software Configuration: ======================= Configuration is usually done using C preprocessor defines; the rationale behind that is to avoid dead code whenever possible. There are two classes of configuration variables: * Configuration _OPTIONS_: These are selectable by the user and have names beginning with "CONFIG_". * Configuration _SETTINGS_: These depend on the hardware etc. and should not be meddled with if you don't know what you're doing; they have names beginning with "CFG_". Later we will add a configuration tool - probably similar to or even identical to what's used for the Linux kernel. Right now, we have to do the configuration by hand, which means creating some symbolic links and editing some configuration files. We use the TQM8xxL boards as an example here. Selection of Processor Architecture and Board Type: --------------------------------------------------- For all supported boards there are ready-to-use default configurations available; just type "make _config". Example: For a TQM823L module type: cd ppcboot make TQM823L_config For the Cogent platform, you need to specify the cpu type as well; e.g. "make cogent_mpc8xx_config". And also configure the cogent directory according to the instructions in cogent/README. Configuration Options: ---------------------- Configuration depends on the combination of board and CPU type; all such information is kept in a configuration file "include/config_.h". Example: For a TQM823L module, all configuration settings are in "include/config_TQM823L.h". The following options need to be configured: - CPU Type: Define exactly one of CONFIG_MPC823, CONFIG_MPC850, CONFIG_MPC855, CONFIG_MPC860 or CONFIG_IOP480 or CONFIG_PPC405GP or CONFIG_MPC8260 - Board Type: Define exactly one of CONFIG_TQM823L, CONFIG_TQM850L, CONFIG_TQM855L, CONFIG_TQM860L, CONFIG_ETX094, CONFIG_ADCIOP, CONFIG_CPCI405, CONFIG_COGENT, CONFIG_FADS, CONFIG_SPD823TS,CONFIG_FPS850L, CONFIG_MBX, CONFIG_SM850 --- FIXME --- not tested yet: CONFIG_TQM860, CONFIG_ADS, CONFIG_RPXLITE, CONFIG_RPXCLASSIC, CONFIG_BSEIP, CONFIG_HYMOD - CPU Module Type: (if CONFIG_COGENT is defined) Define exactly one of CONFIG_CMA286_60_OLD --- FIXME --- not tested yet: CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P, CONFIG_CMA287_23, CONFIG_CMA287_50 - Motherboard Type: (if CONFIG_COGENT is defined) Define exactly one of CONFIG_CMA101, CONFIG_CMA102 - Motherboard I/O Modules: (if CONFIG_COGENT is defined) Define one or more of CONFIG_CMA302 - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined) Define one or more of CONFIG_LCD_HEARTBEAT - update a character position on the lcd display every second with a "rotator" |\-/|\-/ - 8xx CPU Options: (if using an 8xx cpu) Define one or more of CONFIG_8xx_GCLK_FREQ - if get_gclk_freq() can not work e.g. no 32KHz reference PIT/RTC clock - Console Interface: Define exactly one of CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2 or CONFIG_8xx_CONS_NONE Note: if CONFIG_8xx_CONS_NONE is defined, the serial port routines must be defined elsewhere (i.e. serial_init(), serial_getc(), ...) - Console Baudrate: CONFIG_BAUDRATE - in bps Select one of 9600, 19200, 38400, 57600, 115200 (or 230400 if CONFIG_COGENT is defined) - Boot Delay: CONFIG_BOOTDELAY - in seconds Delay before automatically booting the default image; set to 0 to disable autoboot. - Autoboot Command: CONFIG_BOOTCOMMAND Only needed when CONFIG_BOOTDELAY is enabled; define a command string thatis automatically executed when no character is read on the console interface withing "Boot Delay" after reset. - Serial Download Echo Mode: CONFIG_LOADS_ECHO If defined to 1, all characters received during a serial download (using the "loads" command) are echoed back. This might be needed by some terminal emulations (like "cu"), but may as well just take time on others. This setting #define's the initial value of the "loads_echo" environment variable. - Binary File Download (Kermit mode): CONFIG_LOADB If defined, the "loadb" command will be added which allows to download binary files over the serial line using Kermit protocol. - Kgdb Serial Baudrate: (if CFG_CMD_KGDB is defined) CONFIG_KGDB_BAUDRATE Select one of 9600, 19200, 38400, 57600, 115200 (or 230400 if CONFIG_COGENT is defined) - Monitor Functions: CONFIG_COMMANDS Most monitor functions can be selected (or de-selected) by adjusting the definition of CONFIG_COMMANDS; to select individual functions, #define CONFIG_COMMANDS by "OR"ing any of the following values: #define enables commands: ------------------------- CFG_CMD_BDI bdinfo CFG_CMD_LOADS loads CFG_CMD_LOADB loadb CFG_CMD_IMI iminfo CFG_CMD_CACHE icache, dcache CFG_CMD_FLASH flinfo, erase, protect CFG_CMD_MEMORY md, mm, nm, mw, cp, cmp, crc, base, loop, mtest CFG_CMD_NET bootp, tftpboot, rarpboot CFG_CMD_ENV saveenv CFG_CMD_KGDB kgdb ------------------------- CFG_CMD_ALL all CFG_CMD_DFL Default configuration; at the moment this is defined as (CFG_CMD_ALL & ~(CFG_CMD_KGDB)) = everything except KGDB If you don't define CONFIG_COMMANDS it defaults to CFG_CMD_DFL . EXAMPLE: If you want all functions except of network support you can write: #define CONFIG_COMMANDS (CFG_CMD_ALL & ~CFG_CMD_NET) - Watchdog: CONFIG_WATCHDOG If this variable is defined, it enables watchdog support. There must support in the platform specific code for a watchdog. For the 8xx and 8260 CPUs, the SIU Watchdog feature is enabled in the SYPCR register. Configuration Settings: ----------------------- - CFG_LONGHELP: Defined when you want long help messages included; undefine this when you're short of memory. - CFG_PROMPT: This is what PPCBoot prints on the console to prompt for user input. - CFG_CBSIZE: Buffer size for input from the Console - CFG_PBSIZE: Buffer size for Console output - CFG_MAXARGS: max. Number of arguments accepted for monitor commands - CFG_BARGSIZE: Buffer size for Boot Arguments which are passed to the application (usually a Linux kernel) when it is bootet - CFG_MEMTEST_START, CFG_MEMTEST_END: Begin and End addresses of the area used by the simple memory test. - CFG_TFTP_LOADADDR: Default load address for network file downloads - CFG_LOADS_BAUD_CHANGE: Enable temporary baudrate change while serial download - CFG_SDRAM_BASE: Physical start address of SDRAM. _Must_ be 0 here. - CFG_MBIO_BASE: Physical start address of Motherboard I/O (if using a Cogent motherboard) - CFG_FLASH_BASE: Physical start address of Flash memory. - CFG_MONITOR_BASE: Physical start address of boot monitor code (set by make config files to be same as the text base address (TEXT_BASE) used when linking) - same as CFG_FLASH_BASE when booting from flash. - CFG_MONITOR_LEN: Size of memory reserved for monitor code - CFG_MALLOC_LEN: Size of DRAM reserved for malloc() use. - CFG_BOOTMAPSZ: Maximum size of memory mapped by the startup code of the Linux kernel; all data that must be processed by the Linux kernel (bd_info, boot arguments, initrd image) must be put below this limit. - CFG_MAX_FLASH_BANKS: Max number of Flash memory banks - CFG_MAX_FLASH_SECT: Max number of sectors on a Flash chip - CFG_FLASH_ERASE_TOUT: Timeout for Flash erase operations (in ms) - CFG_FLASH_WRITE_TOUT: Timeout for Flash write operations (in ms) - CFG_FLASH_ENV_OFFSET Offset of envrionment data (aka NVRAM area) to the beginning of flash memory; for instance, to with bottom boot type flash chips the second sector will be used; in our example configuration, the offset for this sector is 0x8000. BE CAREFUL! Any changes to the flash layout, and some changes to the source code will make it necessary to adapt /ppcboot.lds* accordingly! If you are not booting from flash, or want to have the environment separate from the monitor code for some reason, then don't define this, define CFG_FLASH_ENV_ADDR below. You will need to reflect this in your ppcboot.lds linker script. - CFG_FLASH_ENV_SIZE: Size of the flash sector(s) used for the environment. If you have very large flash sectors, keep this small (4K?) and define CFG_FLASH_ENV_BUF below. - CFG_FLASH_ENV_ADDR: Address of the non-volatile environment (usually within flash). This setting over-rides CFG_FLASH_ENV_OFFSET and is usually used if booting from EPROM or some other non-modifiable media, and hence the non-volatile area where the environment is stored must be separate from the area where the monitor boot code is stored. Before the monitor is relocated into RAM, the environment located at this address will be referenced directly (if it is valid, as indicated by a signature at the start of the environment - if it isn't valid, the default environment will *silently* be used). This is because until the monitor is relocated, the "in-memory" environment will actually be in ROM (in the BSS area) and therefore not valid. In other words, the environment should be considered to be "read-only" until the monitor is relocated. Note: once the monitor has been relocated, then it will complain if the default environment is used - it had to be silent before that because the serial console might not have been usable. Note2: you must edit your ppcboot.lds file to reflect this configuration. The label "env_offset" will not be defined which should provide a good warning signal if you forget. - CFG_FLASH_ENV_BUF: If this is defined, then it's value is the number of bytes in the flash sector where the environment is stored, and this much space will be reserved between the board info structure and the top of the stack (see board_init_f()). This space will be used as an intermediate buffer for writing the environment into flash. This allows the environment size (CFG_FLASH_ENV_SIZE) to be smaller than the size of a flash sector. Useful if you have huge sectors, as with the Cogent CMA302 Flash I/O module, which has 512KB sectors. This is only really useful if you aren't booting from flash (if you are, then the environment will automatically be in the flash) i.e. CFG_FLASH_ENV_ADDR is defined above. Many of the remaining options are named exactly as the corresponding Linux kernel configuration options. The intention is to make it easier to build a config tool - later. Low Level (hardware related) configuration options: - CFG_CACHELINE_SIZE: Cache Line Size of the CPU. - CFG_IMMR: Physical address of the Internal Memory Mapped Register; DO NOT CHANGE! (11-4) [MPC8xx systems only] - CFG_SIUMCR: SIU Module Configuration (11-6) - CFG_SYPCR: System Protection Control (11-9) - CFG_TBSCR: Time Base Status and Control (11-26) - CFG_PISCR: Periodic Interrupt Status and Control (11-31) - CFG_PLPRCR: PLL, Low-Power, and Reset Control Register (15-30) - CFG_SCCR: System Clock and reset Control Register (15-27) - CFG_OR_TIMING_SDRAM: SDRAM timing - CFG_MAMR_PTA: periodic timer for refresh - CFG_DER: Debug Event Register (37-47) - FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CFG_REMAP_OR_AM, CFG_PRELIM_OR_AM, CFG_OR_TIMING_FLASH, CFG_OR0_REMAP, CFG_OR0_PRELIM, CFG_BR0_PRELIM, CFG_OR1_REMAP, CFG_OR1_PRELIM, CFG_BR1_PRELIM: Memory Controller Definitions: BR0/1 and OR0/1 (FLASH) - SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE, CFG_OR_TIMING_SDRAM, CFG_OR2_PRELIM, CFG_BR2_PRELIM, CFG_OR3_PRELIM, CFG_BR3_PRELIM: Memory Controller Definitions: BR2/3 and OR2/3 (SDRAM) - CFG_MAMR_PTA, CFG_MPTPR_2BK_4K, CFG_MPTPR_1BK_4K, CFG_MPTPR_2BK_8K, CFG_MPTPR_1BK_8K, CFG_MAMR_8COL, CFG_MAMR_9COL: Machine Mode Register and Memory Periodic Timer Prescaler definitions (SDRAM timing) Building the Software: ====================== Building PPCBoot has been tested in native PPC environments (on a PowerBook G# running LinuxPPC 2000) and in cross environments (running RedHat 6.0 and 6.2 Linux on x86, and Solaris 2.6 on a SPARC). PPCBoot is intended to be simple to build. After installing the sources you must configure PPCBoot for one specific board type. This is done by typing: make NAME_config where "NAME_config" is the name of one of the existing configurations; the following names are suported: TQM823L_config TQM850L_config TQM860L_config ETX094_config CPCI405_config ADCIOP_config FADS850SAR_config SPD823TS_config cogent_mpc8xx_config MBX_config If the system board that you have is not listed, then you will need to port PPCBoot to your hardware platform. To do this, follow these steps: 1. Add a new configuration option for your board to the toplevel "Makefile", using the existing entries as examples. 2. Create a new directory to hold your board specific code. Add any files you need. 3. If you're porting PPCBoot to a new CPU, then also create a new directory to hold your CPU specific code. Add any files you need. 4. Run "make config_name" with your new name. 5. Type "make", and you should get a working "ppcboot.srec" file to be installed on your target system. [Of course, this last step is much harder than it sounds.] Monitor Commands - Overview: ============================ go - start application at address 'addr' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol tftpboot- boot image via network using TFTP protocol and env variables ipaddr and serverip rarpboot- boot image via network using RARP/TFTP protocol loads - load S-Record file over serial line md - memory display mm - memory modify (auto-incrementing) nm - memory modify (constant address) mw - memory write (fill) cp - memory copy crc32 - checksum calculation base - print or set address offset printenv- print environment variables setenv - set environment variables saveenv - save environment variables to persistent storage bdinfo - print Board Info structure flinfo - print FLASH memory information iminfo - print header information for application image erase - erase FLASH memory protect - enable or disable FLASH write protection loop - infinite loop on address range mtest - simple RAM test icache - enable or disable instruction cache dcache - enable or disable data cache reset - Perform RESET of the CPU version - print monitor version help - print online help ? - alias for 'help' Monitor Commands - Detailed Description: ======================================== TODO. For now: just type "help ". Environment Variables: ====================== PPCBoot supports user configuration using Environment Variables which can be made persistent by saving to Flash memory. Environment Variables are set using "setenv", printed using "printenv", and save ... ...

近期下载者

相关文件


收藏者