The DSKT2 Users Guide goes over this (specifically, refer to section
1.4):
http://www-s.ti.com/sc/techlit/spruev5
You're right, if you're in a closed system, and can always:
* create the same versions of the same codecs
* with the same create params
* in the same order
... you can configure the scratch size to 0k and still get deterministic
resource allocation behavior. However, you can break those hard
constraints by configuring the scratch sizes to the max - which is
what's strongly recommended.
Chris
________________________________
From: Omkiran Sharma [mailto:[EMAIL PROTECTED]
Sent: Friday, March 14, 2008 12:05 AM
To: Ring, Chris
Cc: Viraj Karandikar;
[email protected]
Subject: Re: Error "Remote node creation FAILED " for
multithreaded application & combo server
Sorry for picking up an non-active thread.
From what is mentioned below the CE shall allocate (max of
configured mem - 40k - and requested mem - 40k). This raises the
question of what is the real purpose of having the configured memory.
One could have configured it as 0K and as long as the worst case request
was made first all would work. I have confirmed it does. Our current
understanding was that for various groups you are limiting how much
memory can be given to it. I guess its wrong. Can we get a pointer to
where to look up on why the configuration and various groupings are
present?
Regards,
Omkiran
2008/3/10 Ring, Chris <[EMAIL PROTECTED]>:
I don't suspect this to be a Link error as a fork on
this thread is chasing.
More likely, it's a mis-configured server.cfg script.
As a simple example, consider the following:
* codec A and codec B share internal scratch memory
* codec A needs 40k, codec B needs 50k
* codec A and B are placed into scratch group 0
* there is 64k configured for internal memory
The server.cfg script _should_ configure 50k (the max
for all codecs) into scratch group 0. However, if the server.cfg script
only configured 40k...
* If codec A is created first, 40k (max of configured
mem - 40k - and requested mem - 40k) will be allocated. When codec B is
created, there's not enough memory in scratch (only 40k was allocated),
so the creation of alg B may fail.
* If codec B is created first, 50k (max of configured
mem - 40k - and requested mem - 50k) will be allocated. Creating codec
A later will succeed.
[ That's a simple example, but the same concept applies
to DMA and other resources as well. ]
These can get a bit tricky - I might suggest you open a
ticket with TI's software support so they can help dig in a bit more.
Unfortunately, CE 1.02 had little tracing support for
getting further insight into these complex codec resources requests. CE
2.00 and later have much better tracing support for these things, if you
have the flexibility to upgrade.
Chris
________________________________
From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Viraj Karandikar
Sent: Sunday, March 09, 2008 9:48 PM
To:
[email protected]
Subject: Error "Remote node creation FAILED "
for multithreaded application & combo server
Hi,
I have a combo server with multiple codecs on
DSP side and a multithreaded application on arm side. The application
creates a thread for each codec.
Each thread opens engine and calls codec APIs.
Problem I am facing is, if I try to open 8 threads for codec A first and
then 8 threads for codec B, it works fine.
But if I reverse the codec order (i.e if I open
8 threads for codec B first and then 8 threads of codec A, then for
codec A threads I am getting error as ->
@0x00084474:[T:0x0002800b] CE -
Engine_createNode> Remote node creation FAILED (0x80008008).
Number of threads out of 8 of codec A which give
this error varies for each run.
I have checked and I am getting non-NULL CE
handle with no error code. Also somewhere on net I read that above error
code 0x80008008 indicates dsp link layer version mismatch.
But then this error should have come in all
cases for all threads.
I also tried ensuring that a thread's call to
Engine_open() is complete before other thread calls its Engine_open. (by
using mutex) . But it didn't resolve the problem.
If I create any number of threads only for codec
A or only for codec B, then application works fine with no errors.
Any help is welcome J
Regards,
Viraj
**********************************************************************
This email and any files transmitted with it are
confidential and
intended solely for the use of the individual or
entity to whom they
are addressed. If you have received this email
in error please notify
[EMAIL PROTECTED]
**********************************************************************
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source