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 ... ...
近期下载者:
相关文件:
收藏者: