(16-core XS1-L16-128) XMOS AVB endpoint core memory space

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
tito2010
Newbie
Posts: 1
Joined: Fri Mar 20, 2015 12:05 pm

(16-core XS1-L16-128) XMOS AVB endpoint core memory space

Post by tito2010 »

hello every body

I am doing a demo using two XMOS endpoints connected through a switch. Where I control the 1722.1 streams using the AVDECC controller. As far as I know that the available memory provided by the XMOS endpoint is 128 Kb divided into two parts 65536 Kb for tile [0] and 65536 for tile [1].

What I am trying to do in this demo is just increase the number of TDM channels on the XMOS endpoints in order to investigate more the capability of the XMOS endpoint.

When I changed the TDM channels to 32, I got an error as below

Constraint check for "tile[0]" (node "0", tile 0):
Cores available: 8, used: 5 . OKAY
Timers available: 10, used: 6 . OKAY
Chanends available: 32, used: 18 . OKAY
Memory available: 65536, used: 73988 . FAILED
(Stack: 45096, Code: 25508, Data: 3384)
Error: Constraints check FAILED for tile[0].

==========================================
Constraint check for "tile[1]" (node "1", tile 0):
Cores available: 8, used: 7 . OKAY
Timers available: 10, used: 8 . OKAY
Chanends available: 32, used: 18 . OKAY
Memory available: 65536, used: 62832 . OKAY
(Stack: 4984, Code: 37208, Data: 20640)

==========================================
I tried to free memory space through optimizing the code by turning off some dynamic functions and changing it to static, for example turning off the Ethernet auto negotiation. But still I didn’t get enough memory space to increase the number of channels.

So my question is there any possibility to free more memory space for more investigation?


Thanks


User avatar
infiniteimprobability
XCore Legend
Posts: 1124
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

You are correct - the XS1-L devices used on the kits have up to 128KB of SRAM, 64K on each tile.

The single port reference can just manage 32 channels (single stream, or perhaps dual streams of 16 ch - but no more due to 75% of 100Mb being available) but do bear in mind that the listener requires 2ms of buffering per audio channel. At 48KHz, thats 96 samples at 32b storage each -> 384bytes per channel. x32 and you get to 12.2KB for receive FIFO already. In reality, it's about 10% bigger than that.

What have you set your maximum sample rate to? If 96KHz, then you can double that number, and you will certainly blow the memory usage.

Have you made any other changes that may increase code size?

I recommend tweaking max channel count and max frequency (and even disabling talker on one side and listener on the other) until it builds and then having a look at the binary viewer (double click on .xe in GUI) to see where the memory gets used..