AnsweredAssumed Answered

BF561 -- L2_bsz out of memory

Question asked by TRON on Jan 7, 2011
Latest reply on Mar 30, 2011 by CraigG

To get the version info details out of the way I am using:

 

VisualDSP 5.0 Update 8

Blackfin 561 rev 0.5

Dual-Core Application Project: A & B are in use

External Memory is 64MB, Default Partitioning

Instruction and Data cache enabled (Both Banks A & B on data), Write-through

Run-time Initialization: checked initialize return registers to zero, unchecked Enable Run-time memory initialization.

 

 

Now to my actual problem. I have apparently ran out of room in L2 (128KB SRAM) to store the ZERO_INIT memory:

 

[Error li1040] ".\HUDLime MK2.ldf":433 Out of memory in output section 'L2_bsz' in common memory '.\Debug/L2_and_L3_common_memory.sm'
        Total of 0x112c word(s) were not mapped.
For more details, see 'linker_log.xml' in the output directory.


[Error li1040] ".\HUDLime MK2.ldf":463 Out of memory in output section 'L2_bsz_not_cached' in common memory '.\Debug/L2_and_L3_common_memory.sm'
        Total of 0x112c word(s) were not mapped.
For more details, see 'linker_log.xml' in the output directory.

 

I have tried to reconfigure my project's projects files to use run-time initialization of memory (-mem in compiler settings, -meminit in linker) and it seemed to not actually resolve my problem as the exact same errors get reported by the linker (I even tried several clean rebuilds). Further reading into the documentation suggests that the memory initializer actually runs after the linker is done of which to me sounds like it really just saves memory for like firmware images and flash storage and wasn't designed to solve my current problem.

 

So, my question is this: How do I go about say moving the bsz and bsz_not_cache from L2 to L3 (SDRAM) instead? Or is it even possible to eliminate the need to even do bsz? I understand the reasoning for bsz is to speed up initialization of all global variables during processor bootup from the bootloader, but for me it isn't time critical on bootup time.

 

Sure I could try moving my own project files from L2 into L3, but I really need them there since its really just small device driver source files and what it looks like is most of that is hogging up L2 memory is from blackfin's own libraries for like ADI device drivers, runtime libraries, file system services, etc... Is it possible I could configure the LDF file or linker options to move some of those objects into L3/SDRAM instead? I'm kind of stuck as to what my options really are. I have looked through various documentation within the help files that VisualDSP brings up under Help -> Contents, and from what I gather I'm stuck with most likely having to move ALL of my own source files out of L2 and into L3, again I rather not do that.

 

Any help or suggestions is welcomed, thanks.

Outcomes