DSPRelated.com
Forums

Executing from Blackfin535 L1 instruction memory

Started by DB July 28, 2003
I am using EZ-Kit lite and Visual DSP 3.1.
In most examples provided, as default, code is placed into L2 memory. I
would like to have my code executed from L1 Instruction memory (0xFFA00000).
In my understanding there are two ways how to do this :
1
Program FLASH with the code that includes L1 designated section, and use
second-stage-loader that will load this section into L1 space upon
reset/boot, than jump there.

or
2
Using examples provided, use default LDF file that will place code into L2
memory and execute from there (after Project is build, Visual DSP will
immediately download it onto platform), and this code (executed from L2
space) needs to DMA itself (or a portion of it) into L1 instruction memory,
than jump to beggining of L1.

Thanks for oppinions/comments.
Dubi


I believe you can use the debugger to download code into L1 memory, and
execute from it if the L1 memory is configured as SRAM memory.  If it is
configured a CACHE memory, the code located in L2 will be executing from L1
cache.

PD



"DB" <dbiruski@yahoo.com> wrote in message
news:bg3nk4$3vv$1@news01.intel.com...
> I am using EZ-Kit lite and Visual DSP 3.1. > In most examples provided, as default, code is placed into L2 memory. I > would like to have my code executed from L1 Instruction memory
(0xFFA00000).
> In my understanding there are two ways how to do this : > 1 > Program FLASH with the code that includes L1 designated section, and use > second-stage-loader that will load this section into L1 space upon > reset/boot, than jump there. > > or > 2 > Using examples provided, use default LDF file that will place code into L2 > memory and execute from there (after Project is build, Visual DSP will > immediately download it onto platform), and this code (executed from L2 > space) needs to DMA itself (or a portion of it) into L1 instruction
memory,
> than jump to beggining of L1. > > Thanks for oppinions/comments. > Dubi > >
In ASM file if I replace directive :
.SECTION    l2_bank0;
with
.SECTION program;

this should place the code (following directive) into L1 instruction memory
space, since LDF file is :
MEMORY
{
    CODE  { TYPE(RAM) START(0xFFA00000) END(0xFFA03FFF) WIDTH(8) }
....
PROCESSOR p0
{
    SECTIONS
    {
        code
        {
        INPUT_SECTION_ALIGN(2)
        INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program) )
        }>CODE
....

but when I build/load program, the DISASSEMBLY WINDOW starts stepping from
0xF0000000 (L2 memory), although there is same code in L1 memory. Why ? Why
not stepping from 0xFFA00000 since there should be nothing in L2 ? Am I
doing something wrong ?

thanks,
Dubi


Because the reset vector of the processor is F0000000.  I'm not 100% sure of
the exact syntax, but simply put a jump from L2 to L1 something like ljump
0xFFA00000.  You'll have to look up the proper syntax, but that should do
it.   You will need a few bytes of L2 code to do this.

PD


"DB" <dbiruski@yahoo.com> wrote in message
news:bg732n$jss$1@news01.intel.com...
> In ASM file if I replace directive : > .SECTION l2_bank0; > with > .SECTION program; > > this should place the code (following directive) into L1 instruction
memory
> space, since LDF file is : > MEMORY > { > CODE { TYPE(RAM) START(0xFFA00000) END(0xFFA03FFF) WIDTH(8) } > .... > PROCESSOR p0 > { > SECTIONS > { > code > { > INPUT_SECTION_ALIGN(2) > INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program) ) > }>CODE > .... > > but when I build/load program, the DISASSEMBLY WINDOW starts stepping from > 0xF0000000 (L2 memory), although there is same code in L1 memory. Why ?
Why
> not stepping from 0xFFA00000 since there should be nothing in L2 ? Am I > doing something wrong ? > > thanks, > Dubi > >