Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12590 Discussions

Avalon bus addressing wrong

Altera_Forum
Honored Contributor II
1,358 Views

Any idea why in my C code I poll address 0x8000 but actually see 0x0c00 (divide by 2) on Avalon address signals utilizing SignalTap? I would expect to see 0x2000 (divide by 4).

0 Kudos
7 Replies
Altera_Forum
Honored Contributor II
378 Views

0x0c00 isn't even a value you can get by dividing 0x8000 by an integer. Are you sure you are looking at the correct time in signaltap? The component's address bus is usually always connected to its master and you can see the address change when the CPU is actually accessing another component. Be sure you check the address only when the CPU does an actual read or write access.

0 Kudos
Altera_Forum
Honored Contributor II
378 Views

I am triggering on NIOS RD signal & see address 0xC00.  

 

Another observation is that when I run my code via Eclipse I would expect tool to stop at MAIN() then I click on RUN again. Eclipse does not do this and as mentioned I see NIOS RD's at 0xC00. 

 

I've used these tools on other projects before but this issue has me stumped.
0 Kudos
Altera_Forum
Honored Contributor II
378 Views

What is the CPU reading at that address? Is it a memory chip or a component? Do you look at the signals on the CPU's master Avalon interface or on the slave's? 

How did you implement your test software? 

Does your CPU have any data cache?
0 Kudos
Altera_Forum
Honored Contributor II
378 Views

-CPU is reading all zero's 

-I am trying to read my custom designed IP. 

-I am monitoring ADDRESS signal on my slave side 

-CPU has no cache 

 

I've did this sort of thing 1 year ago & was successfull. Appears to me to be a Quartus\QSYS bug. I am using version 12.0 sp2
0 Kudos
Altera_Forum
Honored Contributor II
378 Views

It's odd, I've never seen a problem like that before... 

Could you also monitor the CPU's data master to see what it is doing and what address it is using? You can still trigger on your slave's read signal to be sure you get the right transaction.
0 Kudos
Altera_Forum
Honored Contributor II
378 Views

Let me back up.... 

 

Have you ever seen where one runs in debug mode & when C code is downloaded the debugger does not stop at MAIN ()? 

 

Normally debugger stops at MAIN() , then user click RUN. 

 

I believe this is the root of my problem.
0 Kudos
Altera_Forum
Honored Contributor II
378 Views

I hardly ever use the debugger... Can you set a breakpoint and see if it stops there? 

It could also be a good idea to add a printf() at start up, just to be sure the debugger is running the correct code!
0 Kudos
Reply