microblaze programm doesn't fit into bram...

hi

i just started to work with the microblaze processor and ethernet (i hav the digilent spartan3e board) and it seems the the test programm i compiled doesn't fit into the bram.. the warning i get is :

Address Map for Processor microblaze_0 (0x00000000-0x00003fff) dlmb_cntlr dlmb (0x00000000-0x00003fff) ilmb_cntlr ilmb (0x22000000-0x23ffffff) DDR_SDRAM_16Mx16 mb_opb (0x40000000-0x4000ffff) LEDs_8Bit mb_opb (0x40020000-0x4002ffff) DIP_Switches_4Bit mb_opb (0x40040000-0x4004ffff) Buttons_4Bit mb_opb (0x40600000-0x4060ffff) RS232_DCE mb_opb (0x40c00000-0x40c0ffff) Ethernet_MAC mb_opb (0x41400000-0x4140ffff) debug_module mb_opb

Initializing Memory... Checking ELFs associated with MICROBLAZE instance microblaze_0 for overlap...

Analyzing file TestApp_Peripheral/executable.elf... WARNING:MDT - Elf file TestApp_Peripheral/executable.elf does not reside completely within BRAM memory of processor microblaze_0. WARNING:MDT - The sections of ELF residing outside BRAMs must be initialized separately using a debugger, a bootloader, or an ACE file INFO:MDT - BRAM lmb_bram will be initialized with ELF of processor microblaze_0 Running Data2Mem with the following command: data2mem -bm implementation/system_bd -bt implementation/system.bit

-bd TestApp_Peripheral/executable.elf tag lmb_bram -o b implementation/download.bit

Memory Initialization completed successfully.

does this mean it worked?? i don't get any output on the UART terminal. i do get an output with the "testmem_app" though so uart should be working.

can anybody help me here please? does somebody also have some code snippets or tutorial how to send and recieve data with the ethernet ip core that comes wit the edk? that would be a great help! thanks

urban

Reply to
u_stadler
Loading thread data ...

I'm thinking "The sections of ELF residing outside BRAMs must be initialized separately using a debugger, a bootloader, or an ACE file" you should think about initialialising using a debugger, bootloader or ACE file. ;-)

When you use the microblaze it writes your code into a block RAM... Err, in picoblaze you get a handy little compiler that reads your assembler and spits out a .vhd file with INIT values in it. Of course if your code goes longer than the blockram length then how can it initialise the memory to the correct values?

Ok, I digress.

  1. Make sure your code is super efficient or/then..
  2. figure out a way to get more than one block RAM initialised with your values, AND get it addressed and executed from by the microblaze..

Have a google, it's been done before probably.

Ben

Reply to
Benjamin Todd

Urban,

I'm not sure but this sounds similiar to problems I've had before with the EDK + ppc development. As I recall you ought to go and generate a custom linker script, then make sure each and every one of the code sections for the ELF executable are set to load into the boot BRAM memory region. It doesn't seem to automatically do this. Find your ELF executable binary that is built and supposed to be loaded into the BRAM, and try doing an "objdump" on it, you can see where the sections are getting loaded. They should all be in the same region, which is your small boot BRAM. I think often they put code in one place and data somewhere else...

Regarding the edk, if you use the wizard to set up your design I think it offers the option of creating 2 applications, one is a simple memory test, the other tests all the peripherals. It tests the ethernet ip core if you've included that. I think it just does a simple loopback test but I don't remember for sure...

Hope this helped...

-Dave

--
David Ashley                http://www.xdr.com/dash
Embedded linux, device drivers, system architecture
Reply to
David Ashley

This means that your program is bigger than the amount of BRAM you have. So you have store your program in external memory. TestApp_Peripheral is usually bigger than TestApp_Memory, so it is not surprising that one fit into BRAM while the other doesn't.

To fix this you should create a design with external memory, and generate a linker script where you say that all sections reside in external memory. Then download the program to external memory and run.

For how to use ethernet, take a look at some of the examples here:

formatting link

-Siva

Reply to
Siva Velusamy

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.