Hi all, Can someone offer some help with DSP56853 DSP ESSI with DMA? My application is used the 56853 to interface a multiple channel audio codec from Analog device. My 1st attempt was to code it with interrupt driven routines and that was ok. I used one of the D/A channel as the signal source, a A/D channel to sample the signal and D/A out again on a 2nd D/A output. 2nd attempt was to change over to DMA, I had also disabled the Tx & Rx FIFOs. The 1st D/A was working but the A/D part did not seem to be working. I set a break point at the interrupt service routine for Rx DMA complete, it DMA buffer shown that the data points were always dulplicate once (ie, every data point came as a pair). I'm ended up double the buffer size and use every second data sample. I could not figure out why did it happen like that, may be I got one DMA request for the data receive and anothe DMA request at the end of the frame? I was setting ESSI in network mode and I checked that the RLIE bit was cleared. Regards Steven |
Using ESSI with DMA on a DSP56853
Started by ●February 14, 2005
Reply by ●February 24, 20052005-02-24
>Hi all, >Can someone offer some help with DSP56853 DSP ESSI with DMA? >My application is used the 56853 to interface a multiple channel audio >codec from Analog device. > >My 1st attempt was to code it with interrupt driven routines and that >was ok. I used one of the D/A channel as the signal source, a A/D >channel to sample the signal and D/A out again on a 2nd D/A output. > >2nd attempt was to change over to DMA, I had also disabled the Tx & Rx >FIFOs. The 1st D/A was working but the A/D part did not seem to be >working. I set a break point at the interrupt service routine for Rx >DMA complete, it DMA buffer shown that the data points were always >dulplicate once (ie, every data point came as a pair). I'm ended up >double the buffer size and use every second data sample. >I could not figure out why did it happen like that, may be I got one >DMA request for the data receive and anothe DMA request at the end of >the frame? I was setting ESSI in network mode and I checked that the >RLIE bit was cleared. I ran into exactly the same problem interfacing a DSP56858 with a Si3210 SLIC/CODEC (in 16-bit linear mode) and have also had to double the buffer size and drop every second sample. Did you end up finding a solution? Tim |
Reply by ●February 25, 20052005-02-25
A few years ago, I developed a Codec/ESSI/DMA Driver for the 56858 using the
SDK. I never saw what you two are seeing. I just re-ran the loopback test and I
didn't see double samples being received. The Codec used was a Crystal codec that is on the 56858EVM. The ESSI was configured for network mode with two time slots. The clock and frame sync were externally generated. I used DMA Channel 4 for the ESSI0 Receiver. I used DMA Channel 5 for the ESSI0 Transmitter. While running the application, I stopped the debugger and checked the ESSI0 and DMA registers. Here they are: ESSI0: 0: 0EB1 1: 0000 2: 0000 3: 4A00 4: F1C8 5: 9B30 6: 009B 7: 0004 8: 3A61 9: 3A61 A: 0000 B: 0000 C: FFFF D: FFFF E: FFFF F: FFFF DMA4: 0: 7270 1: 0000 2: 2000 3: 2806 4: 0000 5: 23FE 6: 1F00 DMA5: 0: 8870 1: 0000 2: 2000 3: 20FE 4: 1F00 5: E805 6: 0000 Maybe you can compare your configuration with mine and see if anything sticks out. Jeff > > >>Hi all, >>Can someone offer some help with DSP56853 DSP ESSI with DMA? >>My application is used the 56853 to interface a multiple channel audio >>codec from Analog device. >> >>My 1st attempt was to code it with interrupt driven routines and that >>was ok. I used one of the D/A channel as the signal source, a A/D >>channel to sample the signal and D/A out again on a 2nd D/A output. >> >>2nd attempt was to change over to DMA, I had also disabled the Tx & Rx >>FIFOs. The 1st D/A was working but the A/D part did not seem to be >>working. I set a break point at the interrupt service routine for Rx >>DMA complete, it DMA buffer shown that the data points were always >>dulplicate once (ie, every data point came as a pair). I'm ended up >>double the buffer size and use every second data sample. >>I could not figure out why did it happen like that, may be I got one >>DMA request for the data receive and anothe DMA request at the end of >>the frame? I was setting ESSI in network mode and I checked that the >>RLIE bit was cleared. > >I ran into exactly the same problem interfacing a DSP56858 with a Si3210 SLIC/CODEC (in 16-bit linear mode) and have also had to double the buffer size and drop every second sample. Did you end up finding a solution? >Tim > |
Reply by ●March 5, 20052005-03-05
This leads me to ask for some help. The codec driver (non-DMA) that
came with SDK for DSP56858 is set up to loop the audio back.
To be useful, this driver needs to be reworked to separate the left and
right audio channels (which the supplied driver doesn't do) so they can be
processed separately and then recombined for retranmission.
The old assembly language routines for DSP56000/1/2 had easy access to the
left and right channel audio.
Any suggestions on the best way to separate them for DSP56858? The
C-code is deeply nested and a bit hard to follow.
j...@freescale.com wrote: A few years ago, I developed a Codec/ESSI/DMA Driver for the 56858 using the SDK. I never saw what you two are seeing. I just re-ran the loopback test and I didn't see double samples being received. |
Reply by ●March 7, 20052005-03-07
The codec driver actually uses the ESSI driver. The ESSI driver was
developed to be simple and fast. If the data needed to be parsed due to having
multiple time slots, then it was left to the application to do it. Another
reason for using one buffer is it would have the same result (data is one
buffer) as using the DMA driver because the DMA can't distinguish between
the different time slots. If I were to try parsing the samples in the driver, it would have been much more complex. Depending on the implementation, it would have required more configuration parameters, more pointers to buffers, and possibly more API functions. For those customers using one time slot, this would have been overkill. I recommend looking at the TDC1 driver that was also provided in the SDK. This driver does not use the ESSI driver. It actually parses the data, but it was written specifically for a DAA/Codec on the TDC1 daughter card. There was some specific timing requirements that had to be met in the interrupt service routines, so the driver had to be written this way. This driver is much more complex. You can modify the ESSI driver to parse the data at a lower level, but I don't think it will buy you anything because it will require the same amount of code and time to do it. If you want to keep the parsing hidden from the application, you can create a function that parses the data for you. You could pass in the time-slot to read, a pointer to where the data should be stored, and the number of samples to read. The function would then call codecRead(). codecRead() would return the un-parsed samples. The new function would then put the samples in their appropriate time-slot buffers. The new function would then copy the desired number of samples from the select time-slot buffer to the pointer that was passed in. The same can be done for writing data to the codec, just in the reverse order. > This leads me to ask for some help. The codec driver (non-DMA) that came with SDK for DSP56858 is set up to loop the audio back. > > To be useful, this driver needs to be reworked to separate the left and right audio channels (which the supplied driver doesn't do) so they can be processed separately and then recombined for retranmission. > > The old assembly language routines for DSP56000/1/2 had easy access to the left and right channel audio. > > Any suggestions on the best way to separate them for DSP56858? The C-code is deeply nested and a bit hard to follow. wrote: > A few years ago, I developed a Codec/ESSI/DMA Driver for the 56858 using the SDK. I never saw what you two are seeing. I just re-ran the loopback test and I didn't see double samples being received. The Codec used was a Crystal codec that is on the 56858EVM. The ESSI was configured for network mode with two time slots. The clock and frame sync were externally generated. I used DMA Channel 4 for the ESSI0 Receiver. I used DMA Channel 5 for the ESSI0 Transmitter. While running the application, I stopped the debugger and checked the ESSI0 and DMA registers. Here they are: ESSI0: 0: 0EB1 1: 0000 2: 0000 3: 4A00 4: F1C8 5: 9B30 6: 009B 7: 0004 8: 3A61 9: 3A61 A: 0000 B: 0000 C: FFFF D: FFFF E: FFFF F: FFFF DMA4: 0: 7270 1: 0000 2: 2000 3: 2806 4: >0000 5: 23FE 6: 1F00 DMA5: 0: 8870 1: 0000 2: 2000 3: 20FE 4: 1F00 5: E805 6: 0000 Maybe you can compare your configuration with mine and see if anything sticks out. Jeff > > > > > >>Hi all, >>Can someone offer some help with DSP56853 DSP ESSI with DMA? >>My application is used the 56853 to interface a multiple channel audio >>codec from Analog device. >> >>My 1st attempt was to code it with interrupt driven routines and that >>was ok. I used one of the D/A channel as the signal source, a A/D >>channel to sample the signal and D/A out again on a 2nd D/A output. >> >>2nd attempt was to change over to DMA, I had also disabled the Tx & Rx > >>FIFOs. The 1st D/A was working but the A/D part did not seem to be >>working. I set a break point at the interrupt service routine for Rx >>DMA complete, it DMA buffer shown that the data points were always >>dulplicate once (ie, every data point came as a pair). I'm ended up >>double the buffer size and use every second data sample. >>I could not figure out why did it happen like that, may be I got one >>DMA request for the data receive and anothe DMA request at the end of >>the frame? I was setting ESSI in network mode and I checked that the >>RLIE bit was cleared. > >I ran into exactly the same problem interfacing a DSP56858 with a Si3210 SLIC/CODEC (in 16-bit linear mode) and have also had to double the buffer size and drop every second sample. Did you end up finding a >solution? > > >Tim > > > > > > > > > NEW! You can now post a message or access and search the archives of this group on DSPRelated.com: http://www.dsprelated.com/groups/motoroladsp/1.php _____________________________________ Note: If you do a simple "reply" with your email client, only the author of this message will receive your answer. You need to do a "reply all" if you want your answer to be distributed to the entire group. _____________________________________ About this discussion group: Archives: http://www.dsprelated.com/groups/motoroladsp/1.php To >Post: Send an email to Other DSP Related Groups: http://www.dsprelated.com/groups.php |
Reply by ●March 7, 20052005-03-07
Have any of you tried to implement a bootloader for 56364 or any similar DSP? Serial host interface of 56364 only supports SPI and I2C. Regards Jose ___________________________________________________________ 250MB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar |
Reply by ●March 8, 20052005-03-08
Jose, The 56364 has 4 built-in bootsrtap modes (5 if you count the useless boot from PROM that contains no code). If you're looking to create a secondary bootloader at a higher core speed you can simply use the bootstrap ROM to load your secondary bootloader, program the PLL or do whatever else you want, then jump back to the bootstrap ROM code to finish loading the code. If you need to load to XRAM or YRAM you can simply copy what's in the bootstrap ROM and change the memory area it's moving to... -- dB --- Jose Fuentes <> wrote: > Have any of you tried to implement a bootloader for > 56364 or any similar DSP? Serial host interface of > 56364 only supports SPI and I2C. > > Regards > > Jose > > ___________________________________________________________ > 250MB gratis, Antivirus y Antispam > Correo Yahoo!, el mejor correo web del mundo > http://correo.yahoo.com.ar > __________________________________ Celebrate Yahoo!'s 10th Birthday! Yahoo! Netrospective: 100 Moments of the Web http://birthday.yahoo.com/netrospective/ |
Reply by ●March 9, 20052005-03-09
Now I need to create the memory image. Does any of you have the srec.exe program to convert the .cld file to s-record format? Below is the link to a program to create a memory image from a s-record file: http://www.freescale.com/files/archives/software_tools/code_translation/M68000BFP.txt Regards Jose --- dbaudiopro <> wrote: > Jose, > > The 56364 has 4 built-in bootsrtap modes (5 if you > count the useless > boot from PROM that contains no code). If you're > looking to create a > secondary bootloader at a higher core speed you can > simply use the > bootstrap ROM to load your secondary bootloader, > program the PLL or do > whatever else you want, then jump back to the > bootstrap ROM code to > finish loading the code. If you need to load to XRAM > or YRAM you can > simply copy what's in the bootstrap ROM and change > the memory area it's > moving to... > > -- > dB > > --- Jose Fuentes <> > wrote: > > Have any of you tried to implement a bootloader > for > > 56364 or any similar DSP? Serial host interface > of > > 56364 only supports SPI and I2C. > > > > Regards > > > > Jose > > > > > > > > > > > > > > > ___________________________________________________________ > > > 250MB gratis, Antivirus y Antispam > > Correo Yahoo!, el mejor correo web del mundo > > http://correo.yahoo.com.ar > > > > __________________________________ > Celebrate Yahoo!'s 10th Birthday! > Yahoo! Netrospective: 100 Moments of the Web > http://birthday.yahoo.com/netrospective/ > ___________________________________________________________ 250MB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar |