Any ideas for pointers to xmem

Hi all

Rather new to the Rabbit. I need to create a linked list to track activity of unknown final dimension and have the felxibility of remiving the ones that are complete. I see that pointers cannot be used in xmem nor can the malloc/free concept be used, which is a pity.

I am using a R3300 borad and am trying to find a work around for this type of problem.

Typically the structure I am using to hold the info on the status of the activity is about 12-15 bytes long, consisting of which device I instructed to do something and what its status is.

All devices are communicated to via RS485…

Any ideas out there.

Many thanks

Nick

It’s not possible to have pointers pointing out of root memory.
I usually do the following: I put all my array of structures in xmem, and every time I need to use this data, I make xmem2root. If something is changed, then root2xmem again. It’s not very fast, but it works.

Regards,
Antoni

Hi

Many thanks - after many hours of pondering this is pretty much what I have summized and will be implementing. Only problem is that as the activities complete I need to remove them from the list and want to avoid having to do lengthy rearrangements of arrays to keep track of items still pending - hence was hoping to use doubly linked lists.

Thanks again

Nick

Hi Agendrau,

Are you sure that there is no way to have a pointer to and xmem block? then how root2xmem knows where to place data.

I understand that there is no way to have a register pointing to a 20-bit physical address, but I think that it micht be possible to set a 16-bit register + XPC to get a 20-bit address but apparently there is no available function inDC to do it.

My problem is that I want to get some data (64Kb) and store it in RAM but apparently there is no direct way to do it. Apparently the solution would be to set a buffer in root data and then use the root2xmem funcion several times until the last received byte.

Any guy from support that help us?

Regards,
Luciano

Hi

The functions in POOL.LIB work well for pointer manipulation. Takes a bit of getting used to but is good.

Regards

Nic