using the  _memcpy_l1 function on BF512 processor

I'm using the  "_memcpy_l1" function on BF512 processor in order to a large piece of code from data section to the instruction section.

most of the code is transfered correctly except of 9 bytes ,alwys at the same location of the code.


  • 0
    •  Analog Employees 
    on Oct 6, 2010 7:28 PM over 10 years ago


    What are you setting your arguments to when calling _memcpy_l1?    What happens when you just try to copy over 8bytes?



  • 0
    •  Analog Employees 
    on Oct 7, 2010 3:45 PM over 10 years ago

    What addresses don't get copied from/written to correctly?

    What version and update of the tools are you using?


    Stuart S.

  • I'm copying a full program (17408 bytes) to the start of the code section (0xffa00000).

    before using the function I had to take care to where the function _memcpy_l1 will be placed When loading the program, So I Want run over it when copying diffrent code.

    When finishing copy the code I placed the program counter at the start address (0xffa00000).

    The problem is the When transfering from data to code section it happened with some mistakes.

  • Hii Stuart

    look what i have found:

    Reference Number: 41134

    • Title: L1_memcpy      and memcpy_l1 can fail with BF51x revision 0.1
    • DSP      Family: Blackfin
    • First      Discovered In: VisualDSP++ 5.0 Update 7
    • Tool: Run Time Libraries
    • Status: Fixed in VisualDSP++ 5.0 Update 7
    • Description: For ADSP-BF51x silicon revision 0.1, l1_memcpy and      memcpy_l1 will function incorrectly when reading from or writing to Bank B      of L1 instruction memory.

    Do you know what does it mean : "will work incorrectly" ?

  • 0
    •  Analog Employees 
    on Oct 20, 2010 2:18 PM over 10 years ago

    That TAR shouldn't really be on the public list as the problem it covers was not ever in a released Update. It was only seen on unreleased versions of VisualDSP++ Update 7. While it should not be the cause of the problem you are seeing it does indicate that there has been activity in this area.

    What silicon revision is your project set to build for?

    Could you tell me the value in the MMR at 0xFFC00014?

    The reason I ask is there are changes in this function between revision 0.0 and 0.1 due to a change in the memory map and if you have a revision 0.0 processor that could be the problem.

    Also I wondered if you'd considered using DMA to do the copy. It's not my area of expertise though so perhaps I'm missing some problem that means it's not suitable.