Nios II debugging with gdb

I'm working with a Nios II processor on an Altera fpga. Mostly, I'm doing fine, but there is one feature of the Eclipse interface to gdb that I seem to be missing - a gdb command window. There is a "nios2-gdb-server output" option for the Console window, but that's for output only. I want to be able to type my own commands. When using other gui front-ends for gdb, including gvd, insight and ddd, there is no problem doing this, but I can't find any way to get it in Eclipse.

If I can't get this working, does anyone know of information about using gdb directly from the command line on the Nios2, such as references for the nios2-gdb-server parameters?

-- David

"I love deadlines. I love the whooshing noise they make as they go past." Douglas Adams

Reply to
David Brown
Loading thread data ...

Hi David,

Here is some info on this from our engineering team:

GDB console from the IDE:

1) Start a debug session in the IDE. 2) In the toolbar for the console window, select the triangle next to the "display output from selected processes" icon (which looks like a the "man who looks like he just got a beer from the fridge" icon). 3) Select the "Show Default Output" from the menu. This will switch the Console window to "Nios II Debugger". 4) To allow the user to type gdb commands in this window you need to click the "Show debugger console on target selection" icon from the debug toolbar (right next to the familiar "Step Return/Step Out" debug icon). 5) You can now type gdb commands in the console window. Ensure that your cursor is at the bottom line of the window.

Alternatively, here is how you would do the same, but from the command line:

1) Launch a Nios SDK shell from the "Start" menu. 2) Type "nios2-gdb-server". It will tell you what port it's listening on. 3) Write-down the port-number printed by nios2-gdb-server on a post-it note. 4) Launch a *second* Nios SDK shell from the "Start" menu. 5) Type "nios2-elf-gdb" 6) At the (gdb) prompt, type: "target remote localhost: 7) You're now talking to the target using command-line gdb.

I don't think there's any gdb-command-line facility from *within* the eclipse environment, but you'd better get an answer from Peter Brookes (copied on this message) on that one.

If you want to know the command-line parameters for nios2-gdb-server, type "nios2-gdb-server --help."

Reply to
Jesse Kempa

Hi David (and other readers),

Please disregard the 2nd to last paragraph in my reply to your question; I did not intend to post that, but pressed the button too soon! Quite obviously there is a method from the IDE (Mr. Brookes provided it).

Jesse Kempa Altera Corp. jkempa at altera dot com

Reply to
Jesse Kempa

Hi David (and other readers),

Please disregard the 2nd to last paragraph in my reply to your question; I did not intend to post that, but pressed the button too soon! Quite obviously there is a method from the IDE (Mr. Brookes provided it).

Jesse Kempa Altera Corp. jkempa at altera dot com

Reply to
Jesse Kempa

Hi,

I don't know what Mr. Brookes method is, since it was not posted here. Perhaps he (or you) tried to email me a copy, but failed to notice the "no spam" addition to my news-posting address.

However, just at the moment I have a far bigger problem that is stopping me doing any debugging at all - nios2-gdb-server is now refusing to connect to my Nios2 jtag port. I have tried all sorts of things, including rebuilding a new (fairly minimal) nios2 design on my board, with no luck. The last thing I did was take a test project I made on my original Nios Cyclone development kit and replace the Nios 1 with a Nios 2, and I still can't get any contact. This is hardware that I know without doubt is working fine - I can download designs with the jtag interface (ByteBlaster II), and can connect gdb to the Nios 1 design. But I can no longer contact a Nios 2 for debugging over the jtag interface. When I run "nios2-gdb-server --verbosity=4" and try to connect to it with nios2-elf-gdb, I get the information:

# [nios2-gdb-server] g_verbosity: 4 # [nios2-gdb-server] nios2-gdb-server listening on port 2342 # [nios2-gdb-server] accepting gdb connection # [nios2-gdb-server] connecting to JTAG debug module # [nios2-gdb-server] CPU will be reset on connect # [nios2-gdb-server] JTAG cable: "" # [nios2-gdb-server] JTAG device: -1 # [nios2-gdb-server] JTAG debug module instance: -1 # [nios2-gdb-server] using MDI port: "sld" # [nios2-gdb-server] MDI error FindAndOpenNode Lock Chain: AJI_BAD_HARDWARE. -105 (nios2-gdb-server_mdi.c line 161) # [nios2-gdb-server] failed to connect

Similarly, the IDE debug setup finds my ByteBlasterII on lpt1, but reports for the jtag device. I had this same effect when I first used the Nios 2, with the ByteBlaster II connected to lpt2. This worked fine for the Nios, and for downloading fpga designs, but the Nios2 debugger could not see the Nios 2. Switching to lpt1 fixed that. I was not too surprised with that, since I have had little luck getting my lpt2 card to work with other jtag-type debuggers - in fact, I was very surprised when it *did* work with the Nios 1.

I've now tried everything I can think of, so if anyone else has any bright ideas for me, I'd be very grateful!

David

doing

seem

output"

can't

gdb

Reply to
David Brown

Hi David,

Sorry, the reference to that gentleman was only in the context of talking to GDB directly from within the IDE as you had originally inquired about - I posted that information during the first reply (I just forgot to remove some of the email chain that wasn't relevant to your question).

About your problem: Can you download/debug a hello-world type application without doing the gdb commands manually? This would be a good starting point. One thing I noticed from the error message dump is that there is no JTAG cable ("") -- you might try the following: Make a new "run" or "debug" target in the IDE (this is covered in the Nios II SW dev tutorial in the IDE on-line help), and in the 'Run' screen go to 'Target Connection' and manually pick the programming cable you're using from the drop-down, and if necessary the device in the JTAG chain (if there are multiple devices). Here you can also 'Refresh' the lists to see that things are being detected properly. This is necessary more often than not if you have two programming cables installed (and it sounds like you might, one in lpt1, and one in lpt2).

FYI, the "list" of programming cables comes from Quartus (what ever programming cables the Quartus programmer sees, the IDE will have access to).

If the above doesn't help I'd suggest that you contact your FAE or Altera support team for some one-on-one help on the issue.

Jesse Kempa Altera Corp. jkempa at altera dot com

Reply to
Jesse Kempa

Hi,

I've got it working again - comments underneath.

"no

me

to

rebuilding

get

fine - I

for

reports

I

Nios2

not

card

when

bright

I see what you mean now - you had given me instructions how to do what I wanted (although I couldn't try it until now), along with a note saying it couldn't be done... I've now got my gdb command prompt from within Eclipse, just as I wanted.

I couldn't get that far - I'd have been happy getting a "0x00000000 in ?? ()" message indicating some contact with gdb.

I'd been doing that until I was blue in the face...

I had two cables in the jtag setup from Quartus programmer, and had tried swapping between them - both worked fine for programming from Quartus. What finally got the debugger working was to remove lpt2 from the Quartus setup - after that, the IDE had no problem seeing the Nios2 and selecting it automatically. I can see now why running gdb-server from the command-line was unlikely to work when I had two cables set up - I had tried without specifing a cable, and with "lpt1" and "lpt2" as cable arguements. Now when I run nios2-gdb-server from the command line, it reports the cable as "ByteBlasterII [LPT1]", so maybe I should have specified that whole string. Anyway, I'm only using one board at a time, so I'm happy enough with just lpt1 setup. The strange thing is that both were set up in Quartus the other day when Nios2 debugging was working fine. Perhaps there is an obscure bug in the debugger server - after all, I doubt that two parallel port cables is a setup that has figured greatly in testing, and I suppose I'll be moving to a USB Blaster before long anyway.

I've talked to him, and he was going to ask others at Altera. I'm happy that my debugging is now working exactly as I wanted, both on the development kit and my own hardware.

Many thanks!

David

Reply to
David Brown

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.