Jump to content
  • 0

Local Memory of the Microblaze overflowed


pulkit

Question

Hi, I am working on a project where i am using Digilent's Arty A7-35T along with Pmod WIFI module.

My task is just to interface microblaze with Pmod WIFI module, configure it with an IP and ping it from another PC in the same network using vivado 2016.4.

in my block design i am using only microblaze (with 128 KB memory),DDR3 and wifi module. when i am building sdk application, one error generates related to internal memory of microblaze.

"Description    Resource    Path    Location    Type
hello_app.elf section `.text' will not fit in region `microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem'    hello_app             C/C++ Problem"

Can someone help me to under stand this issue. I am not expert in embedded design so not able to handle this linker script issue.

Please help.

Thanks

Screenshot_1.jpg

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Hi @pulkit,

The application is trying to fit inside the block ram (BRAM) that is integrated with the FPGA, you will, as you already surmised, want to adjust the linker script.

You can do this by opening the lscript.ld that is directly below the main.cc you have open in your screenshot. Scroll down to the "Section to Memory Region Mapping" and adjust the Memory Region for each of the section names to "mig_7series_0_memaddr".

Let me know if you have any questions.

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Thanks JColvin. I increased the memory size as suggested by you and that solved my problem.

Now my next task is to configure Pmod wifi module with arty A7-35T with an IP address and my wifi address + password, and ping it from another computer connected with same wifi network.

I am using TCPEchoServer example provided in Pmod IP library. As shown in attached screen shot, i have passed my wifi credentials in main.cc file, but i am not able to ping Pmod wifi module even after successfully build the project and program the ARTY A7-35T board. Please provide some guidance.

 

Thank you.

Screenshot_2.jpg

Edited by pulkit
typo mistake
Link to comment
Share on other sites

  • 0

Hi JColvin. I tried to configure pmod wifi on Arty A7-35T with TCP IP Echo Server IP. I was not working and i could not see anything on serial terminal.

Then i commented all the statements in TcpEchoServer -> main.cc and wrote a simple code to print "hello world". It worked and i got it on terminal.

Then i again included "#include "PmodWIFI,h" statement and wrote "hello world" code after this statement. This did not work and nothing appears on serial terminal.

Can you please guide me on this issue.

Thank you.

Screenshot_4.jpg

Link to comment
Share on other sites

  • 0

nhchpmnhnh2024-03-13113956.thumb.png.c3686eeb8bfb0f9c047f0a42885ca721.png

On 11/2/2021 at 1:15 PM, pulkit said:

Thanks JColvin. I increased the memory size as suggested by you and that solved my problem.

Now my next task is to configure Pmod wifi module with arty A7-35T with an IP address and my wifi address + password, and ping it from another computer connected with same wifi network.

I am using TCPEchoServer example provided in Pmod IP library. As shown in attached screen shot, i have passed my wifi credentials in main.cc file, but i am not able to ping Pmod wifi module even after successfully build the project and program the ARTY A7-35T board. Please provide some guidance.

 

Thank you.

Screenshot_2.jpg

Hi. How did you increase your memory size? I tried to increase my memory size in Linker Script and the overflowed error disappeared but then my Tera Term didn't print anything as I expected. I'm so confused.....(the original size is 0x1FB0 and then I changed to 0x2FB0, I'm just doing a simple adder and multiply)

 

Edited by Bach
Link to comment
Share on other sites

  • 0

Hi @Bach

Local memory size is set when you run Block Automation to build out the system around the Microblaze processor in Vivado - you can't change local memory size from Vitis as the amount of BRAM dedicated to it is part of the hardware design. The easiest way to increase it is often to go back to Vivado, strip out Microblaze and many of the core blocks that come with it, add a Microblaze IP back into the design, and rerun Block Automation picking the largest local memory available (likely 64k). If you need more than 64k of memory and your board has DDR, you should use it (again, by modifying the hardware design).

Alternatively, reduce the amount of memory used by your software app - common libraries for C/C++, even stdio, can be too large for a system with very little memory.

Thanks,

Arthur

Link to comment
Share on other sites

  • 0
9 hours ago, artvvb said:

The easiest way to increase it is often to go back to Vivado, strip out Microblaze and many of the core blocks that come with it, add a Microblaze IP back into the design, and rerun Block Automation picking the largest local memory available (likely 64k).

No need for any of it - you can simply change the address range in the address editor, and Vivado will figure out the rest by itself:

image.thumb.png.49460c4ea3192b8b497c3eceeeb04d19.png

If you have separate instruction and data buses (like it's shown in the screenshot), you will need to change it in both places.

Link to comment
Share on other sites

  • 0
22 hours ago, artvvb said:

Hi @Bach

Local memory size is set when you run Block Automation to build out the system around the Microblaze processor in Vivado - you can't change local memory size from Vitis as the amount of BRAM dedicated to it is part of the hardware design. The easiest way to increase it is often to go back to Vivado, strip out Microblaze and many of the core blocks that come with it, add a Microblaze IP back into the design, and rerun Block Automation picking the largest local memory available (likely 64k). If you need more than 64k of memory and your board has DDR, you should use it (again, by modifying the hardware design).

Alternatively, reduce the amount of memory used by your software app - common libraries for C/C++, even stdio, can be too large for a system with very little memory.

Thanks,

Arthur

Hi @artvvb

I followed your instruction and changed the memory size of Microblaze to 128k by adding a new Microblaze IP in Block Design and I got the result that I expected. You can see the picture below.

Thank you very much for helping me do my work ! 

 Bach

my ip.jpg

Link to comment
Share on other sites

  • 0
12 hours ago, asmi said:

No need for any of it - you can simply change the address range in the address editor, and Vivado will figure out the rest by itself:

image.thumb.png.49460c4ea3192b8b497c3eceeeb04d19.png

If you have separate instruction and data buses (like it's shown in the screenshot), you will need to change it in both places.

It is a great idea and also new knowledge for me. Thank you very much for your contribution! I appreciate it a lot! 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...