Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

Why does NIOS write redundant stuff to SDRAM?

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

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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!