|
|
|
@ -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 |
|
|
|
|