Nios® II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
12455 Discussions

Why does NIOS write redundant stuff to SDRAM?

Altera_Forum
Honored Contributor II
830 Views

Hi, 

 

I have built a system with PCIe-NIOS-SDRAM, with the program being stored in a separate onchip memory. 

I am able to read and write data to SDRAM through PCIe, And also able to read and write from NIOS2, but I observe the following things; 

+ When I use Printf statement in NIOS2IDE, I get the ascii code of printf written to SDRAM! This doesn't make any sense to me, I think its a debug feature, if so I would like to turn it off.  

+ If I don't use printf. still a few unintended bytes are written in the code space of SDRAM. But I don't want to leave any memory locations for program, thats why I have the on chip memory. 

 

Please let me know how to solve the above issues. I can provide more information, please let me know.. 

 

Thanks, 

Ujjwal
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
127 Views

It sounds like your BSP linker script is not set correctly to only use the onchip memory. Check it in the BSP editor.

Altera_Forum
Honored Contributor II
127 Views

Hi Ted, 

 

Thanks for your reply.  

 

Please find attached the contents of my linker script. Is it fine? Or should I change my .heap and .stack to onchip memory instead of SDRAM? 

 

Ujjwal
Altera_Forum
Honored Contributor II
127 Views

The printf code almost certainly uses malloced memory - which is why you are seeing in in SDRAM. 

I would certainly try to get the stack in on-chip memory - and to use tightly coupled on-chip memory so you don't need to allocate resources to a data cache or large i-cache (you still need an i-cache for the boot code and JTAG debug - unless you are loading the code over PCIe). 

 

If you do nee careful placement of code/data in memory blocks. I'd suggest writing your own linker script from scratch - start from the documentation rather than the default script!
Reply