
			   U-Boot for Nios-32

		    Last Update: February 1, 2004
====================================================================

This file contains information regarding U-Boot and the Altera
Nios CPU. For information regarding U-Boot and the Nios Development
Kits see:

  * Cyclone Edition (DK-1C20), see doc/README.dk1c20
  * Stratix Edition (DK-1S10), see doc/README.dk1s10 (TODO)
  * Stratix Edition (DK-1S40), see doc/README.dk1s40 (TODO)
  * Stratix Edition (DK-20K200), see doc/README.dk20k200 (TODO)

For informations regarding Nios Development Kit hardware overview
and the NIOS CPU standard configuration of all known boards made by
Altera see:

  * Development Kit (DK) hardware overview, see doc/README.nios_DK
  * NIOS CPU standard_32 at DK-1C20, see doc/README.dk1c20_std32
  * NIOS CPU standard_32 at DK-1S10, see doc/README.dk1s10_std32
  * NIOS CPU standard_32 at DK-1S40, see doc/README.dk1s40_std32
  * NIOS CPU standard_32 at DK-20K200, see doc/README.dk20k200_std32

For those interested in contributing ... see HELP WANTED below.


1. OVERVIEW
------------

U-Boot has been successfully tested on the Nios Cyclone development
board using both the 'safe' and 'standard 32' configurations with
Nios CPU revision 3.1 (CPU_ID = 0x3018). U-Boot can be used with
or without the GERMS monitor. The initial version of U-Boot for the
Cyclone development kit is about 60 Kbyte and will fit in a single
sector of on-board FLASH. Only the Nios 32-bit CPU is supported.

1.1 GERMS Monitor
------------------
If GERMS is just not enough, then U-Boot is a great antibiotic.
You will be very pleased with its high degree of configurability
and its rich feature set.

A few of the most obvious limitations of GERMS are overcome by
using U-Boot (See 'Brain Damage'). Most notably, you can use
minicom or Hyperterminal (duh).

1.2 Altera Source Code
-----------------------
The Nios port does NOT include ANY sources that Altera has the
copyright. This was a conscious decision ... not an accident.
The Altera license is not clear in terms of distributing Altera
sources (when altera silicon is not involved). This isn't really
a problem as little, if any, of the Altera source contains
features that are not already available in U-Boot.


2. CONFIGURATION OPTIONS/SETTINGS
----------------------------------

2.1 Nios-specific Options/Settings
-----------------------------------
All configuration options/settings that are specific to Nios begin
with "CONFIG_NIOS_", "CFG_NIOS_", or "CFG_NIOS_CPU_".

The configuration follows a two-stage process. In the first stage
the NIOS CPU core will defined like defined in Alteras SOPC Builder.
At this point we use the "CFG_NIOS_CPU_" defines exclusively. For
more informations about all the definitions you have to setup see
into current board configurations and doc/README.nios_CFG_NIOS_CPU.

In second stage we bring the NIOS CPU configuration in relation to
U-Boot configuration options/settings. The following is a list of
currently defined Nios-specific options/parameters used inside of
U-Boot. If any options are related to Standard-32 Nios SDK
excalibur.h definitions, the related definition follows the
description).

CONFIG_NIOS -- defined for all Nios-32 boards.

CFG_NIOS_CONSOLE -- the base address of the console UART.
	(standard-32: nasys_uart_0 resp. na_uart1_base).

CFG_NIOS_FIXEDBAUD -- defined if the console UART PTF fixed_baud
	parameter is set to '1'.

CFG_NIOS_MULT_HW -- use full hardware multiply (not yet implemented).

CFG_NIOS_MULT_MSTEP -- use hardware assisted multiply using the
	MSTEP instruction (not yet implemented).

CFG_NIOS_TMRBASE -- the base address of the timer used to support
	xxx_timer routines (e.g. set_timer(), get_timer(), etc.).
	(standard-32: nasys_timer_1 resp. na_lo_priority_timer2_base).

CFG_NIOS_TMRIRQ -- the interrupt request (vector number) assigned to
	the timer. (standard-32: nasys_timer_1_irq resp.
	na_low_priority_timer2_irq).

CFG_NIOS_TMRMS -- the period of the timer in milliseconds.

CFG_NIOS_ASMIBASE -- the base address of the ASMI peripheral.
	(standard-32: na_asmi_base).

CFG_NIOS_SPIBASE -- the base address of the SPI master (!) peripheral.
	(nasys_spi_0)

CFG_NIOS_SPIBITS -- the amount of configured SPI data bits in PTF.
	This value can be 8 or 16 only! (PTF: databits)


2.2 Differences in U-Boot Options/Settings
-------------------------------------------
Some 'standard' U-Boot options/settings are treated differently in
the Nios port. These are described below.

CFG_GBL_DATA_OFFSET -- in the Nios port, this is the offset of the
	global data structure in the Nios memory space. More simply,
	the address of global data.


3. ASSEMBLY CODING
-------------------

In browsing the assembly source files, you may notice the absence
of the 'magic macros' (e.g. MOVIA, MOVIP, ADDIP etc.). This is
deliberate. The documentation for the magic macros is scant and
it is hard to find ... it does not appear in the Nios programmer's
manual, nor does it appear in the assembler manual. Regardless,
the macros actually do very little to improve readability anyway.

With this in mind, all assembler modules use only instructions that
appear in the Nios programmer's manual OR are directly supported
by the nios-elf toolchain. For example, the 'dec %rB' instruction
is an alias for 'subi %rB,1' that is supported by the assembler
but does not appear in the programmer's manual.


4. BOOT PROCESS
---------------

4.1 Boot process over GERMS
---------------------------
When the NIOS CPU catch a reset signal it will begin to be running
code from CFG_NIOS_CPU_RST_VECT. Normally at this place it will
find the GERMS monitor. That's the case for the generic NIOS CPU
configuration "standard_32". When the GERMS monitor starts running,
it performs important system initializations and then looks for
executable code in flash, using the following steps:

    1. Examining the two bytes at CFG_NIOS_CPU_FLASH_BASE + 0x04000C.
    2. Examining the button 0 on the PIO CFG_NIOS_CPU_BUTTON_PIO.
    3. If the button is not pressed and the two bytes contain 'N'
       and 'i', the monitor executes a CALL to location
       CFG_NIOS_CPU_FLASH_BASE + 0x040000.
    4. If the code is not executed in step 3 or the code returns,
       then prints an 8-digit version number to STDOUT and waits for
       user commands from STDIN.

In normal case, for "standard_32", STDIN and STDOUT are the first
serial port.

4.2 Return to GERMS command line
--------------------------------
During the boot process, the GERMS monitor checks for the existence
of application software in flash memory. If found, the processor
immediately executes the code. To return program execution to the
GERMS monitor (that is, avoid running code stored in flash memory):

    1. Hold down CFG_NIOS_CPU_BUTTON_PIO, button number 0.
    2. Press then release the CPU reset button.
    3. Release CFG_NIOS_CPU_BUTTON_PIO, button number 0.


5. BRAIN DAMAGE
----------------

This section describes some of the unfortunate and avoidable aspects
of working with the Nios CPU ... and some things you can do to
reduce your pain.

5.1 GERMS doesn't work with Hyperterminal
------------------------------------------
GERMS doesn't do CR/LF mapping that is compatible with Hyperterminal
(or minicom) -- geez. Regardless of you opion of Hyperterminal, this
sad design decision is remedied by using U-Boot.

5.2 cygwin Incompatibility
---------------------------
The version of cygwin distributed with the nios GNUPro toolchain is
out-of-date and incompatible with the latest cygwin distributions.
In addition, many of the standard utilities are very dated as well.
If you try to download and build the lastest version of grep for
example, you'll quickly realize that a native gcc is not available
(the next topic) which leads to U-Boot build problems (following
topic).

The solution ... well, you can wait for Altera ... or build as
set of tools for linux.

5.3 No native gcc
------------------
I'm not sure how this one slipped through the cracks ... but it is
a real pain. Basically, if you want to build anything for the native
environment -- forget it! A native (cygwin) gcc is not distributed,
and the old version of cygwin makes locating one challenging.

The solution ... same as above. Just download the gcc source from
Altera and build up a set of cross tools for your favorite linux
distro. Anybody who wants to use an already precompiled NIOS cross
toolchain can it found in the CDK4NIOS project hosted by Source
Forge at http://cdk4nios.sourceforge.net.

5.4 Can't build default U-Boot
-------------------------------
By default, when you build U-Boot you will be building some native
tools along with the target elf, bin, and srec files. Without a
native gcc, this (obviously) causes problems.

For developers using the Altera cygwin tools you can remove the
'tools' directory from SUBDIRS in the top-level Makefile. You will
also have to edit common/Makefile:

Replace:
environment.o: environment.c ../tools/envcrc
	$(CC) $(AFLAGS) -Wa,--no-warn \
		-DENV_CRC=$(shell ../tools/envcrc) \
		-c -o $@ environment.c

With:
environment.o: environment.c ../tools/envcrc
	$(CC) $(AFLAGS) -Wa,--no-warn \
		-DENV_CRC=0 \
		-c -o $@ environment.c

BTW, thats a 'zero' ... not the letter 'O'.


6. HELP WANTED
---------------

There are plenty of areas where help is needed. Here's are some ideas
for those interested in contributing:

-CompactFlash. Port & test CF/FAT.

-Bedbug. Develop bedbug for Nios ... or at least provide a disassemble
 command.

-Add boot support for ucLinux (niosnommu).

-Implement (don't copy Altera code) the __mulxx routines using the
 MSTEP and MUL instructions (e.g. CFG_NIOS_MULT_HW and CFG_NIOS_MULT_MSTEP).


Regards,

--Scott
<smcnutt@psyent.com>

--Stephan
<linz@li-pro.net>
