|
@@ -55,6 +55,12 @@ 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.
|
|
|
|
|
|
+1.3 Debugging via OCI
|
|
|
+---------------------
|
|
|
+The Nios port supports debugging with gdb and/or nios-console
|
|
|
+via the JTAG port. Stubs for debugging with gdb via the serial
|
|
|
+port are not currently implemented.
|
|
|
+
|
|
|
|
|
|
2. CONFIGURATION OPTIONS/SETTINGS
|
|
|
----------------------------------
|
|
@@ -79,7 +85,11 @@ description).
|
|
|
|
|
|
CONFIG_NIOS -- defined for all Nios-32 boards.
|
|
|
|
|
|
-CFG_NIOS_CONSOLE -- the base address of the console UART.
|
|
|
+CFG_NIOS_CONSOLE -- the base address of the console UART or the JTAG
|
|
|
+ stdio port. To enable a console via JTAG, define
|
|
|
+ CONFIG_CONSOLE_JTAG and set CGF_NIOS_CONSOLE to the base address
|
|
|
+ of the JTAG stdio port (normally OCI base + 0x00fa). Then
|
|
|
+ run nios-console with the -w option.
|
|
|
(standard-32: nasys_uart_0 resp. na_uart1_base).
|
|
|
|
|
|
CFG_NIOS_FIXEDBAUD -- defined if the console UART PTF fixed_baud
|
|
@@ -176,20 +186,109 @@ GERMS monitor (that is, avoid running code stored in flash memory):
|
|
|
3. Release CFG_NIOS_CPU_BUTTON_PIO, button number 0.
|
|
|
|
|
|
|
|
|
-5. BRAIN DAMAGE
|
|
|
+5. DEBUGGING WITH GDB
|
|
|
+---------------------
|
|
|
+
|
|
|
+Debug sessions using gdb are currently supported only via JTAG. The
|
|
|
+stubs for debugging via a serial port are not implemented. To enable
|
|
|
+the gdb JTAG stubs, simply reference _brkpt_hw_int and _brkpt_sw_int
|
|
|
+at vector table offsets 3 and 4, respectively. For an example, see
|
|
|
+board/altera/dk1c20/vectors.S.
|
|
|
+
|
|
|
+5.1 Vector Table Initialization and ROM Stubs
|
|
|
+---------------------------------------------
|
|
|
+If CONFIG_ROM_STUBS is defined, the debug breakpoint and single step
|
|
|
+entries in the vector table are restored to their initial values
|
|
|
+immediately _after_ initializing the vector table. Defining this macro
|
|
|
+is useful when ROM-based stubs are implemented.
|
|
|
+
|
|
|
+NOTE: The default GERMS monitor does NOT implement gdb stubs, nor does
|
|
|
+it initialize the vector table. Therefore, when debugging U-Boot, you
|
|
|
+should NOT set a software breakpoint prior to vector table initialization.
|
|
|
+
|
|
|
+5.2 Starting a Debug Session
|
|
|
+----------------------------
|
|
|
+If you're not familiar with gdb, you follow these step-by-step instructions.
|
|
|
+These instructions are NOT the only way to start a debug session, but they
|
|
|
+cover most of the individual functions to get you started.
|
|
|
+
|
|
|
+ 1. Start the JTAG gdb server. Open a Nios shell window and start
|
|
|
+ the server. When the server is started you must provide the base
|
|
|
+ address of the OCI core. For example, when using the Cyclone
|
|
|
+ development kit (DK1C20):
|
|
|
+
|
|
|
+ $ nios-gdb-server --ocibase=0x00920800 --tcpport=2342
|
|
|
+
|
|
|
+ 2. Start gdb. Open a Nios shell window, change to the top-level
|
|
|
+ U-Boot directory and start gdb, specifying the u-boot elf file:
|
|
|
+
|
|
|
+ $ nios-elf-gdb u-boot
|
|
|
+
|
|
|
+ 3. Update target settings. From the file menu, select
|
|
|
+ "Target Settings ..." and select the following, then click 'Ok':
|
|
|
+
|
|
|
+ Target: Remote/TCP
|
|
|
+ Port : 2342 (same as in step 1)
|
|
|
+ Display download dialog: checked
|
|
|
+ All other check boxes: unchecked
|
|
|
+
|
|
|
+ 4. Connect to the target. Select menu: 'Run->Connect to target'.
|
|
|
+ You should see a dialog box indicating the you successfully connected
|
|
|
+ to the target.
|
|
|
+
|
|
|
+ 5. Download U-Boot. Select menu: 'Run->Download'.
|
|
|
+
|
|
|
+ 6. Open a gdb console window and set the source directory paths.
|
|
|
+ Select menu: 'View->Console'. In the console window, enter the
|
|
|
+ following commands, then close the console window:
|
|
|
+
|
|
|
+ (gdb) directory common
|
|
|
+ (gdb) directory cpu/nios
|
|
|
+ (gdb) directory lib_nios
|
|
|
+ (gdb) directory board/altera/dk1c20
|
|
|
+
|
|
|
+ Note that the last command is for the DK1C20 board only. If you
|
|
|
+ are using another board, specify that board's directory.
|
|
|
+
|
|
|
+ 7. Open the file board.c (using the file menu in the lower
|
|
|
+ left hand corner). Scroll to the board_init() routine and set
|
|
|
+ a breakpoint.
|
|
|
+
|
|
|
+ 8. Run U-Boot. Just click on the run icon, or select menu:
|
|
|
+ 'Run->Run'. U-Boot should start running, then break at your
|
|
|
+ breakpoint.
|
|
|
+
|
|
|
+ 9. Have fun & start learning more about gdb.
|
|
|
+
|
|
|
+
|
|
|
+5.3 For advanced Users
|
|
|
+----------------------
|
|
|
+A few notes for those more familiar with gdb.
|
|
|
+
|
|
|
+ -Serial port stubs are not implemented. Sorry, but it's just not
|
|
|
+ worth _my_ effort. The JTAG stubs work great and are ridiculously
|
|
|
+ simple to implement.
|
|
|
+
|
|
|
+ -If you need to debug the early startup code (prior to the vector
|
|
|
+ table initialization), use the nios-console debugger.
|
|
|
+
|
|
|
+ - Connect, download & run -- there are some problems here. Connect
|
|
|
+ download and run seperately to avoid trouble.
|
|
|
+
|
|
|
+6. 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
|
|
|
+6.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
|
|
|
+6.2 cygwin Incompatibility
|
|
|
---------------------------
|
|
|
The version of cygwin distributed with the nios GNUPro toolchain is
|
|
|
out-of-date and incompatible with the latest cygwin distributions.
|
|
@@ -202,7 +301,7 @@ topic).
|
|
|
The solution ... well, you can wait for Altera ... or build as
|
|
|
set of tools for linux.
|
|
|
|
|
|
-5.3 No native gcc
|
|
|
+6.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
|
|
@@ -215,7 +314,7 @@ 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
|
|
|
+6.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
|
|
@@ -232,15 +331,16 @@ environment.o: environment.c ../tools/envcrc
|
|
|
-c -o $@ environment.c
|
|
|
|
|
|
With:
|
|
|
-environment.o: environment.c ../tools/envcrc
|
|
|
+environment.o: environment.c
|
|
|
$(CC) $(AFLAGS) -Wa,--no-warn \
|
|
|
-DENV_CRC=0 \
|
|
|
-c -o $@ environment.c
|
|
|
|
|
|
-BTW, thats a 'zero' ... not the letter 'O'.
|
|
|
+BTW, thats a 'zero' ... not the letter 'O'. And not that the
|
|
|
+"../tools/envcrc" dependency is removed.
|
|
|
|
|
|
|
|
|
-6. HELP WANTED
|
|
|
+7. HELP WANTED
|
|
|
---------------
|
|
|
|
|
|
There are plenty of areas where help is needed. Here's are some ideas
|