Sign in

username:

password:



Not a member?

Search c6x



Search tips

Subscribe to c6x



c6x by Keywords

AD535 | BIOS | Booting | Bootloader | C621 | C6211 | C6415 | C671 | C6711 | C6711DSK | C6713 | CCS | Chassaing | COFF | DAT | DM64 | DM642 | DMA | DSK671 | DSK6711 | EDM | EDMA | EMIF | Emulator | EVM | EVM620 | FFT | FIR | GPIO | Halting | HPI | HWI | IDK | JTAG | LDB | LDH | LDW | Linker | LMS | LOG_printf | Matlab | McBSP | MEM_alloc | MIPS | PCI | PCM3003 | Pipeline | Profiling | QDM | Reset | ROM | RTDX | Sampling | SDRAM | Stack | TEB | THS1206 | TMS320C621 | TMS320C6416 | TMS320C6711 | TMS320C6713 | UART | Vector Table | XBUS | XDS560


Discussion Groups

See Also

Embedded SystemsFPGAElectronics

Discussion Groups | TMS320C6x | C6415 PCI Woes :|

Technical discussions about the TI C6000 DSPs (including the c62x, c64x and c67x DSPs).

  

Post a new Thread

C6415 PCI Woes :| - Steve Sharp - Sep 9 14:32:00 2002

Hi DSP'ers,

I am currently trying to build a dsp driver for linux to work with our
c6415. I have managed to load some code into the dsp's memory over the PCI
interface and can verify the code is correct, however the old (hex5x)
conversion utility used to have a start address flag, but the newer version
(hex6x) seems to have this missing.

Anyone any ideas how to set register values / program counter over the pci
interface, or does anyone have any documentation about how to load code over
the pci interface, as i cannot find any on the ti site :(

Kind Regards,

--
Steve.







(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

RE: C6415 PCI Woes :| - Jean-Michel MERCIER - Sep 9 15:32:00 2002


Steve wrote :
> I am currently trying to build a dsp driver for linux to work with our
> c6415. I have managed to load some code into the dsp's memory over the PCI
...
> Anyone any ideas how to set register values / program counter over the pci
> interface, or does anyone have any documentation about how to load code over
> the pci interface, as i cannot find any on the ti site :(

You can't force the PC.
To boot your code from the PCI you must :

- Have your DSP in PCI mode so that it doesn't run after
a hard-reset and keep waiting for a start command
- link you code with a correct vector table in 0x0000000
Your RESET vector should include a Branch to _c_int00
See below on how to do this.
- download your code AND CHECK it
You must check what you have downloaded because of
the current 11-burst-length bug in chip (check errata)
- Start the DSP code by generating an interrupt
(bit DSPINT in HDCR register in BAR-3)
As a start command, this will not run the INT13
interrupt vector but run the RESET vector.

1) If you are using DSP/Bios, DSP/Bios already provide
a vector table with a correct reset vector.
In your MEM settings, reserve a VECTORS area located
at address 0x00000000 with 512 bytes
Correct the ISRAM start address and length
Ensure that the .hwi_vec section is directed to VECTORS

2) If you are not using DSP/Bios, add a asm file with the
content below :

.ref _c_int00 ;code entry point
.sect ".hwi_vec"

_RESET: mvk _c_int00,b0
mvkh _c_int00,b0
b .s2 b0
nop 5
nop
nop
nop
nop

In your CMD file, add a VECTORS area in the MEMORY
block at address 0x00000000 with 512 bytes length
Adjust the start address and length of the ISRAM
In the SECTION block, have the .hwi_vec section mapped to
VECTORS
MEMORY
{
VECTORS : o=0x00000000 l=512
ISRAM : o=0x00000200 l=1048064 /* 1MB - 512 */
}
SECTION
{
.hwi_sec > VECTORS
}
I hope this is clear and helpfull Jean-Michel MERCIER


______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

RE: C6415 PCI Woes :| - Steve Sharp - Sep 10 14:52:00 2002

Thank you for you responses :) more than i have got from ti...

I have checked the errata about the 11 word burst problem (ti document
SPRZ011G for those interested) , but how is it possible to to check that the
loaded code is correct ? CRC ? if the code that is loaded is to be executed
? It seems like a catch-22 to me ?

Any help would be gratefully accepted, as im v. new to DSP's and ti's docs
seem less than verbose :(

Kind Regards.

--
Steve.

-----Original Message-----
From: Jean-Michel MERCIER [mailto:]
Sent: 09 September 2002 16:32
To:
Subject: RE: [c6x] C6415 PCI Woes :|
Steve wrote :
> I am currently trying to build a dsp driver for linux to work with our
> c6415. I have managed to load some code into the dsp's memory over the PCI
...
> Anyone any ideas how to set register values / program counter over the pci
> interface, or does anyone have any documentation about how to load code
over
> the pci interface, as i cannot find any on the ti site :(

You can't force the PC.
To boot your code from the PCI you must :

- Have your DSP in PCI mode so that it doesn't run after
a hard-reset and keep waiting for a start command
- link you code with a correct vector table in 0x0000000
Your RESET vector should include a Branch to _c_int00
See below on how to do this.
- download your code AND CHECK it
You must check what you have downloaded because of
the current 11-burst-length bug in chip (check errata)
- Start the DSP code by generating an interrupt
(bit DSPINT in HDCR register in BAR-3)
As a start command, this will not run the INT13
interrupt vector but run the RESET vector.

1) If you are using DSP/Bios, DSP/Bios already provide
a vector table with a correct reset vector.
In your MEM settings, reserve a VECTORS area located
at address 0x00000000 with 512 bytes
Correct the ISRAM start address and length
Ensure that the .hwi_vec section is directed to VECTORS

2) If you are not using DSP/Bios, add a asm file with the
content below :

.ref _c_int00 ;code entry point
.sect ".hwi_vec"

_RESET: mvk _c_int00,b0
mvkh _c_int00,b0
b .s2 b0
nop 5
nop
nop
nop
nop

In your CMD file, add a VECTORS area in the MEMORY
block at address 0x00000000 with 512 bytes length
Adjust the start address and length of the ISRAM
In the SECTION block, have the .hwi_vec section mapped to
VECTORS
MEMORY
{
VECTORS : o=0x00000000 l=512
ISRAM : o=0x00000200 l=1048064 /* 1MB - 512 */
}
SECTION
{
.hwi_sec > VECTORS
}
I hope this is clear and helpfull Jean-Michel MERCIER
_____________________________________



______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

RE: C6415 PCI Woes :| - Jean-Michel MERCIER - Sep 10 17:40:00 2002


Steve wrote :
> I have checked the errata about the 11 word burst problem (ti document
> SPRZ011G for those interested) , but how is it possible to to check that the
> loaded code is correct ? CRC ? if the code that is loaded is to be executed
> ? It seems like a catch-22 to me ?

The bug appears as a slave write problem where the eleventh word is
not written at the correct address. It does not concern read.

So if you read back what you have written it is ok.

You can also secure your download code by placing
a dummy read on the board every 8 or 10 words to
be sure that burst of writes are never longer than 8/10 words.
Jean-Michel MERCIER


______________________________
New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )