We need to load an application to DSP memory and, boot and run the application on the DSP board without using JTAG through our Test application We are working with TMS 320C6415 The DSP application is created using CCS. This small project has the code to glow the LED when the processor wakes up in the boot code (RESET vector in vector.asm). All the vector information is kept ISRAM and program information in SDRAM.(External Memory) Once the .out file is generated for this application, we split the Vector information and program information from .out file in the form of binary using TI utility hex6x and some board specific tools. A code snipplet from Vector.asm: RESET: mvkl 0x60000014,A4 mvkh 0x60000014,A4 mvkl 0x0000,b4 mvkh 0x00230000,b4 stw b4,*a4 mvkl .s2 _c_int00,b0 mvkh .s2 _c_int00,b0 b b0 The source code for this application contains: void main() { asm(" mvkl 0x60000014,A4"); asm(" mvkh 0x60000014,A4"); asm(" mvkl 0x0000,b4"); asm(" mvkh 0x002f0000,b4"); asm(" stw b4,*a4"); asm(" nop"); asm(" nop"); asm(" nop"); asm(" nop"); asm(" nop"); } In order to load this DSP application through our Test program we do the following at the Host PC through PCI interface( without JTAG): 1) Initialize EMIF settings through PCI 2) Vector information is written through PCI in ISRAM from 0x20 (without Jtag) 3) Program information is wrtting through PCI in SDRAM from 0x80000000 4) Wakeup the DSP processor by setting DSPINT bit. We observe that LED code in vector.asm gets executed but the branching to main does not take place and hence LED code inside main does not get executed. Could you please help us to understand why branching is not taking place? |
Boot problem
Started by ●February 24, 2005
Reply by ●February 25, 20052005-02-25
Hi, I'm not familiar with C6415, but I think this is similar for all C6000. After boot you have to start c_int00. There some basic initilisation is made, like setting SP and FP. Without these settings things like function calls in C are not possible. I would suggest you try simulator to go through this step by step. HTH Gustl gangadhar80reddy wrote: > > > We need to load an application to DSP memory and, boot and run the > application on the DSP board without using JTAG through our Test > application > > We are working with TMS 320C6415 > > The DSP application is created using CCS. This small project has the > code to glow the LED when the processor wakes up in the boot code > (RESET vector in vector.asm). All the vector information is kept > ISRAM and program information in SDRAM.(External Memory) > > Once the .out file is generated for this application, we split the > Vector information and program information from .out file in the > form of binary using TI utility hex6x and some board specific tools. > > A code snipplet from Vector.asm: > > RESET: > > mvkl 0x60000014,A4 > mvkh 0x60000014,A4 > mvkl 0x0000,b4 > mvkh 0x00230000,b4 > stw b4,*a4 > mvkl .s2 _c_int00,b0 > mvkh .s2 _c_int00,b0 > b b0 > > The source code for this application contains: > void main() > { > > asm(" mvkl 0x60000014,A4"); > asm(" mvkh 0x60000014,A4"); > asm(" mvkl 0x0000,b4"); > asm(" mvkh 0x002f0000,b4"); > asm(" stw b4,*a4"); > asm(" nop"); > asm(" nop"); > asm(" nop"); > asm(" nop"); > asm(" nop"); > } > > In order to load this DSP application through our Test program we do > the following at the Host PC through PCI interface( without JTAG): > 1) Initialize EMIF settings through PCI > 2) Vector information is written through PCI in ISRAM from 0x20 > (without Jtag) > 3) Program information is wrtting through PCI in SDRAM from > 0x80000000 > 4) Wakeup the DSP processor by setting DSPINT bit. > We observe that LED code in vector.asm gets executed but the > branching to main does not take place and hence LED code inside main > does not get executed. > Could you please help us to understand why branching is not taking > place? |
Reply by ●February 26, 20052005-02-26
Hi gangadhar80reddy, Are you sure you simply don't need a "nop 5" after the branch instruction? mvkl .s2 _c_int00,b0 mvkh .s2 _c_int00,b0 b b0 nop 5 If you don't do this, the random memory following the branch instruction is executed as random instructions and this can disrupt your branch. -- Best regards, Reply to: Marco Braga Insignis Technologies |
Reply by ●February 28, 20052005-02-28
Hi gangadhar80reddy,
Did Marco's suggestion of filling the delay slot after the branch work for
you??
mikedunn
Marco Braga <m...@insignis.it> wrote: Hi gangadhar80reddy, |
Reply by ●March 2, 20052005-03-02
Hi gangadhar, > Branching is not happening to external > memory.is there any info we are missing wt respect to program > counter?bec PC value needs to changed from IRAM address to SDRAm > address?can u plz help me out from this. Are EMIF registers configured? -- Best regards, Reply to: Marco Braga Insignis Technologies |