Forums

Reading file on DM642 with CSS 3.0.0.21

Started by keigo June 5, 2006
Hi,

I need to read in a sequence of raw video file (300 frames, 400MB), and
perform video encoding on the C6000 dsp board for benchmarking with known
sequences.

I tried using 'fopen' and 'fread' to read/encode frame by frame, however
the encoding is far too slow. 10 seconds of video took me hours to encode
which should not be the case. Is this mainly due to the file I/O thru
JTAG? (as i read from other threads.) So I wonder if there is any existing
faster method of streaming the data from the PC to the DSP boards for
encoding?

Thanks for any answer.



keigo wrote:
> > JTAG? (as i read from other threads.) So I wonder if there is any existing > faster method of streaming the data from the PC to the DSP boards for > encoding?
Yes there are other methods, but all involve a step change in the amount of work required over using file IO. Two that spring to mind are putting your card into a PCI slot, or using the Ethernet port. Neither is easy but there may be some third party libs to help (look at the Valley Technology PCI drivers for example). Probably the simplest all round is to rewrite your benchmark to discount the time taken by the file IO. the DSP/BIOS STS module will help with this. Cheers mark-r -- "Let's meet the panel. You couldn't ask for four finer comedians - so that answers your next question..." -- Humphrey Lyttleton
> >keigo wrote: >> >> JTAG? (as i read from other threads.) So I wonder if there is any
existing
>> faster method of streaming the data from the PC to the DSP boards for >> encoding? > >Yes there are other methods, but all involve a step change in the amount >of work required over using file IO. Two that spring to mind are putting >your card into a PCI slot, or using the Ethernet port. Neither is easy >but there may be some third party libs to help (look at the Valley >Technology PCI drivers for example). > >Probably the simplest all round is to rewrite your benchmark to discount >the time taken by the file IO. the DSP/BIOS STS module will help with >this. > >Cheers > >mark-r > >-- >"Let's meet the panel. You couldn't ask for four finer comedians - >so that answers your next question..." > -- Humphrey Lyttleton >
Hi Mark-r,

Thanks alot for your answers.

1.)As for the PCI drivers, doesnt TI provide them?
 
2.)Even if I rewrite the benchmark, I will still have to wait hours for
the results.

Will work on the ethernet solution first.
keigo wrote:
> > 1.)As for the PCI drivers, doesnt TI provide them?
TI provide a very basic driver to run on the target (i.e. the DM642). I've not used the Valley Tech. code, but I believe they provide a Windows(TM) device driver and a support library so that you can communicate with the DSP over the PCI bus from a normal user-space C++, VB, etc. program.
> 2.)Even if I rewrite the benchmark, I will still have to wait hours for > the results.
That's true, but you need to offset the time taken to develop your alternative. Say it takes 2 months to write and debug your new transfer mechanism - how many times could you have run your benchmark in that time?
> Will work on the ethernet solution first.
If you can get a ready made TCP/IP protocol stack for the DM642, then this would be the easiest route. I've not used the Ethernet port, so I don't know what TI provide as standard. Cheers mark-r -- "Let's meet the panel. You couldn't ask for four finer comedians - so that answers your next question..." -- Humphrey Lyttleton
keigo,

Yes,  I agree with Mark et al. that it is most likely the JTAG transfer
rate.

I'm surprised no one has asked this already. What type of JTAG are
you using? PCI? USB? Parallel Port? Also, I think that the model
JTAG (and not just the interface) can make a big difference.

--Randy

keigo wrote:
> Hi, > > I need to read in a sequence of raw video file (300 frames, 400MB), and > perform video encoding on the C6000 dsp board for benchmarking with known > sequences. > > I tried using 'fopen' and 'fread' to read/encode frame by frame, however > the encoding is far too slow. 10 seconds of video took me hours to encode > which should not be the case. Is this mainly due to the file I/O thru > JTAG? (as i read from other threads.) So I wonder if there is any existing > faster method of streaming the data from the PC to the DSP boards for > encoding? > > Thanks for any answer.
Randy Yates wrote:
> > I'm surprised no one has asked this already. What type of JTAG are > you using? PCI? USB? Parallel Port? Also, I think that the model > JTAG (and not just the interface) can make a big difference.
I've used file io with both a PCI XDS560 and a USB XDS510, both are painfully slow. While I guess a parallel port emulator would be slower than either of these, it's probably not going to be by much. I noticed that downloading data using file IO is at least an order of magnitude slower than downloading a program, so I think the "problem" lies in the file IO routines. Perhaps keigo could take advantage of this by splitting his benchmark into sections and uploading the data for each as a static array included in the code. It would be a pain to do all 400M like that, but maybe he can get sensible benchmark results (at least initially) from 30 frames rather than 300. Cheers mark-r -- "Let's meet the panel. You couldn't ask for four finer comedians - so that answers your next question..." -- Humphrey Lyttleton
Mark Robinson wrote:
> Randy Yates wrote: > > > > I'm surprised no one has asked this already. What type of JTAG are > > you using? PCI? USB? Parallel Port? Also, I think that the model > > JTAG (and not just the interface) can make a big difference. > > I've used file io with both a PCI XDS560 and a USB XDS510, both are > painfully slow.
I can't remember the specifics, but it seems that's contrary to my experience. It seemed like the 560 was something like a factor of 10 faster than the 510. --Randy