In case anyone wants to know, I got my answer from TI that the DSP can only be 
a slave when using the CE API and answers to a few
other questions I asked:
-------------------------------------------------------------------------------------------------------------------
Hi Andy,
 
Here is the response I got back from our software support team
 
"From a CE point of view the DSP is the server. There is not a task that I know 
of that is running on the DSP that has callback to the ARM.
 
Multi-threaded applications must either serialize access to a shared Engine 
instance or create a separate Engine instance for each thread. Note: Be aware 
that Engine handles are not thread-protected. Each thread that uses an Engine 
instance should perform its own Engine_open call and use its own Engine handle. 
This protects each Engine instance from access by other threads in a 
multi-threaded environment."
 
In conclusion, the answer to your first question is that no DSP task calls on 
the ARM; after thinking about it a bit more, even if you passed an ARM function 
pointer into the DSP, in order for the DSP to call this ARM function, it would 
have to do it via the RPC mechanism via which the ARM and the DSP communicate.  
Unfortunately, this RPC mechanism appears to be unidirectional (ARM to DSP) and 
to change it, you would need codec engine source code which we do not give out.
 
The answer to your second question is pretty clear from the explanation above.
 
Unfortunately, this is probably not what you wanted to hear but hopefully these 
answers will help you make the right decisions.  Let us know if there is 
anything else we can assist you with.
 
Best Regards, 
Juan Gonzales
 
DSP Applications
Texas Instruments
Semiconductor Technical Support
http://www-k.ext.ti.com/sc/technical_support/pic/americas.htm 
 
If you have further questions please reply to this email.  And see the DSP 
Knowledge Base located at 
http://www-k.ext.ti.com/sc/technical-support/knowledgebase.asp?dsp
 
Also try the DSP Discussion Groups: A Place to Exchange Ideas with Fellow DSP 
Developers located at 
http://focus.ti.com/dsp/docs/dspsupporto.tsp?sectionId=3&tabId=413
 
TI assumes no liability for applications assistance or customer product design. 
Customer is fully responsible for all design decisions and engineering with 
regard to its products, including decisions relating to application of TI 
products. By providing technical information, TI does not intend to offer or 
provide engineering services or advice concerning Customer's design. If 
Customer desires engineering services, the Customer should rely on its retained 
employees and consultants and/or procure engineering services from a licensed 
professional engineer (LPE).

-----Original Message----- 


Juan,
 
Thanks for your response.  I understood what you are saying in answering 
question #3.  I understand the basic idea behind the codec framework and 
xDAIS/xDM compliant DSP algorithms.   The VISA / Code Engine API looks like a 
client-server API where the ARM (the client, master) asks the DSP (the server, 
slave) to process (encode/decode) data and return the processed data to the 
ARM.  However, what I was trying to ask is: If we use the VISA / CE API, is 
there also a way for the DSP to act as the master initiator and tells the ARM 
side (now a slave) to do something?  For example, I want to have a task that 
runs under the DSP/BIOS within the CE Server on the DSP side and want it to 
command the ARM side to do something.  So basically, I want to use the VISA / 
CE API method but also want to expand it to make the DSP act as a master 
requesting the ARM to process data also.  If the VISA / CE API doesnt allow 
that, does that mean I have to abandon VISA / CE API method and come up
 with my own xDAIS/xDM algorithm to do what I want (I rather not because the 
VISA / CE API method is readily available for use)?  Please advise.  Thank you.
 
I would like to ask another question:  When I create an instance of a codec, 
(lets use the sphenc_copy codec as an example, it has the SPHENCCOPY_TI_process 
and SPHENCCOPY_TI_control functions), can different threads on the ARM side 
call the different support functions of that instance at the same time?  For 
example, on the ARM application, thread 1 calls SPHENCCOPY_TI_process but gets 
interrupted by thread 2, which calls SPHENCCOPY_TI_control.  Will this cause a 
reentrant issue?  Lets say those 2 functions dont access come data on the DSP 
side.
 
Thanks!



----- Original Message ----
From: Andy Ngo <[EMAIL PROTECTED]>
To: "Ring, Chris" <[EMAIL PROTECTED]>; Jean-Michel Mercier <[EMAIL PROTECTED]>; 
[email protected]
Sent: Monday, January 15, 2007 1:23:54 PM
Subject: Can the DSP be a master besides being a slave in the CE API


I figured out the smallest unit on the C64+ is a byte and data can be aligned 
to non-even boundaries; I was asking because I was using the C5510 last year 
and it was 16-bit aligned only.
 
On a different topic, (Chris/Jean-Michel, sorry for addressing you directly, 
but you guys seem to be the most experienced), can we do much stuff on the DSP 
side other than it only being a encode/decode "slave" server to the ARM side 
via the CE API?  For example, can I implement a "master" process/task under the 
DSP/BIOS OS on the DSP side and have it initiate a intercommunication operation 
(across shared memory) where the ARM (now a slave) is waiting for data?  If so, 
where do I find the documentation on how to do this?  Thanks.
 
Regards,
Andy Ngo
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to