#
# (C) Copyright 2001
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# The files in this directory are free software; you can redistribute
# them and/or modify them 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.
#
# These files are distributed in the hope that they 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
#

This directory contains scripts that help to perform certain actions
that need to be done frequently when working with U-Boot.

They are meant as EXAMPLE code, so it is very likely  that  you  will
have to modify them before use.


Short description:
==================

dot.kermrc:

	Example for "~/.kermrc" Kermit init file for use with U-Boot

	by Wolfgang Denk, 24 Jun 2001

flash_param:

	"kermit" script to automatically initialize the environment
	variables on your target. This is most useful during
	development when your environment variables are stored in an
	embedded flash sector which is erased whenever you install a
	new U-Boot image.

	by Swen Anderson, 10 May 2001

send_cmd:

	send_cmd U_BOOT_COMMAND

	"kermit" script to send a U-Boot command and print the
	results. When used from a shell with history (like the bash)
	this indirectly adds kind of history to U-Boot ;-)

	by Swen Anderson, 10 May 2001

send_image:

	send_image FILE_NAME OFFSET

	"kermit" script to automatically download a file to the
	target using the "loadb" command (kermit binary protocol)

	by Swen Anderson, 10 May 2001
