]> git.ipfire.org Git - people/ms/u-boot.git/blame - doc/README.nios
* Patches by Xianghua Xiao, 15 Oct 2003:
[people/ms/u-boot.git] / doc / README.nios
CommitLineData
4a551709
WD
1
2 U-Boot for Nios-32
3
4 Last Update: October 4, 2003
5====================================================================
6
7This file contains information regarding U-Boot and the Altera
8Nios CPU. For information regarding U-Boot and the Nios Development
9Kit, Cyclone Edition (DK-1C20), see doc/README.dk1c20.
10
11For those interested in contributing ... see HELP WANTED below.
12
13
141. OVERVIEW
15------------
16
17U-Boot has been successfully tested on the Nios Cyclone development
18board using both the 'safe' and 'standard 32' configurations with
19Nios CPU revision 3.08 (CPU_ID = 0x3008). U-Boot can be used with
20or without the GERMS monitor. The initial version of U-Boot for the
21Cyclone development kit is about 60 Kbyte and will fit in a single
22sector of on-board FLASH. Only the Nios 32-bit CPU is supported.
23
241.1 GERMS Monitor
25------------------
26If GERMS is just not enough, then U-Boot is a great antibiotic.
27You will be very pleased with its high degree of configurability
28and its rich feature set.
29
30A few of the most obvious limitations of GERMS are overcome by
31using U-Boot (See 'Brain Damage'). Most notably, you can use
32minicom or Hyperterminal (duh).
33
341.2 Altera Source Code
35-----------------------
36The Nios port does NOT include ANY sources that Altera has the
37copyright. This was a conscious decision ... not an accident.
38The Altera license is not clear in terms of distributing Altera
39sources (when altera silicon is not involved). This isn't really
40a problem as little, if any, of the Altera source contains
41features that are not already available in U-Boot.
42
43The Nios port also does not use the long-winded peripheral
44structure definitions from the Nios SDK.
45
46
4a551709
WD
472. CONFIGURATION OPTIONS/SETTINGS
48----------------------------------
49
502.1 Nios-specific Options/Settings
51-----------------------------------
52All configuration options/settings that are specific to Nios begin
53with "CONFIG_NIOS_" or "CFG_NIOS_". The following is a list of
54currently defined Nios-specific options/parameters. If any options
55are related to Standard-32 Nios SDK excalibur.h definitions, the
56related definition follows the description).
57
58
59CONFIG_NIOS -- defined for all Nios-32 boards.
60
61CFG_NIOS_CONSOLE -- the base address of the console UART.
62 (standard-32: na_uart1_base).
63
64CFG_NIOS_FIXEDBAUD -- defined if the console UART PTF fixed_baud
65 parameter is set to '1'.
66
67CFG_NIOS_MULT_HW -- use full hardware multiply (not yet implemented).
68
69CFG_NIOS_MULT_MSTEP -- use hardware assisted multiply using the
70 MSTEP instruction (not yet implemented).
71
72CFG_NIOS_TMRBASE -- the base address of the timer used to support
73 xxx_timer routines (e.g. set_timer(), get_timer(), etc.).
74 (standard-32: na_lo_priority_timer2_base).
75
76CFG_NIOS_TMRIRQ -- the interrupt request (vector number) assigned to
77 the timer. (standard-32: na_low_priority_timer2_irq).
78
79CFG_NIOS_TMRMS -- the period of the timer in milliseconds.
80
812.2 Differences in U-Boot Options/Settings
82-------------------------------------------
83Some 'standard' U-Boot options/settings are treated differently in
84the Nios port. These are described below.
85
86CFG_GBL_DATA_OFFSET -- in the Nios port, this is the offset of the
87 global data structure in the Nios memory space. More simply,
88 the address of global data.
89
90
913. ASSEMBLY CODING
92-------------------
93
94In browsing the assembly source files, you may notice the absence
95of the 'magic macros' (e.g. MOVIA, MOVIP, ADDIP etc.). This is
96deliberate. The documentation for the magic macros is scant and
97it is hard to find ... it does not appear in the Nios programmer's
98manual, nor does it appear in the assembler manual. Regardless,
99the macros actually do very little to improve readability anyway.
100
101With this in mind, all assembler modules use only instructions that
102appear in the Nios programmer's manual OR are directly supported
103by the nios-elf toolchain. For example, the 'dec %rB' instruction
104is an alias for 'subi %rB,1' that is supported by the assembler
105but does not appear in the programmer's manual.
106
107
1084. BRAIN DAMAGE
109----------------
110
111This section describes some of the unfortunate and avoidable aspects
112of working with the Nios CPU ... and some things you can do to
113reduce your pain.
114
1154.1 GERMS doesn't work with Hyperterminal
116------------------------------------------
117GERMS doesn't do CR/LF mapping that is compatible with Hyperterminal
118(or minicom) -- geez. Regardless of you opion of Hyperterminal, this
119sad design decision is remedied by using U-Boot.
120
1214.2 cygwin Incompatibility
122---------------------------
123The version of cygwin distributed with the nios GNUPro toolchain is
124out-of-date and incompatible with the latest cygwin distributions.
125In addition, many of the standard utilities are very dated as well.
126If you try to download and build the lastest version of grep for
127example, you'll quickly realize that a native gcc is not available
128(the next topic) which leads to U-Boot build problems (following
129topic).
130
131The solution ... well, you can wait for Altera ... or build as
132set of tools for linux.
133
1344.3 No native gcc
135------------------
136I'm not sure how this one slipped through the cracks ... but it is
137a real pain. Basically, if you want to build anything for the native
138environment -- forget it! A native (cygwin) gcc is not distributed,
139and the old version of cygwin makes locating one challenging.
140
141The solution ... same as above. Just download the gcc source from
142Altera and build up a set of cross tools for your favorite linux
143distro.
144
1454.4 Can't build default U-Boot
146-------------------------------
147By default, when you build U-Boot you will be building some native
148tools along with the target elf, bin, and srec files. Without a
149native gcc, this (obviously) causes problems.
150
151For developers using the Altera cygwin tools you can remove the
152'tools' directory from SUBDIRS in the top-level Makefile. You will
153also have to edit common/Makefile:
154
155Replace:
156environment.o: environment.c ../tools/envcrc
157 $(CC) $(AFLAGS) -Wa,--no-warn \
158 -DENV_CRC=$(shell ../tools/envcrc) \
159 -c -o $@ environment.c
160
161With:
162environment.o: environment.c ../tools/envcrc
163 $(CC) $(AFLAGS) -Wa,--no-warn \
164 -DENV_CRC=0 \
165 -c -o $@ environment.c
166
167BTW, thats a 'zero' ... not the letter 'O'.
168
169
1705. HELP WANTED
171---------------
172
173There are plenty of areas where help is needed. Here's are some ideas
174for those interested in contributing:
175
176-SMC 91C111 support. E.g. add in tftpboot, etc.
177
178-CompactFlash. Port & test CF/FAT.
179
180-ASMI support. Use ASMI for environment, etc.
181
182-Bedbug. Develop bedbug for Nios ... or at least provide a disassemble
183 command.
184
185-Add boot support for ucLinux (niosnommu).
186
187-Implement (don't copy Altera code) the __mulxx routines using the
188 MSTEP and MUL instructions (e.g. CFG_NIOS_MULT_HW and CFG_NIOS_MULT_MSTEP).
189
190
4a551709
WD
191Regards,
192
193--Scott
194<smcnutt@psyent.com>