Memory Pools with dual core

We are moving from BF537 to BF609, using uC/OS.

The 537 program had thread A running lwip, receiving into a buffer allocated from a memory pool block.then posting a message to thread B containing a pointer to the memory block.

Thread B would process the data and then free the pool block.

On the 609, we want Core 0 running LWIP, passing the data to a thread in core 1.  How can I achieve this using MCAPI without needing to copy the received data into another buffer?

Currently i'm thinking I have two options:

1) MCAPI sends a message to core 1 with a pointer to the memory block.  When done processing, core 1 sends a message to core 0 so it can free the block.

2) Send a MCAPI message with the received data to core 1, however this would require an extra memcpy.  

Any advise would be greatly appreciated.

Many Thanks

  • 0
    •  Analog Employees 
    on Jun 10, 2019 4:22 AM over 1 year ago


    Thanks for your information.

    Welcome to use BF609 and MCAPI. Just as you said, the first option using MCAPI to send a message with the pointer to the memory block is better and it needn't to require an extra memory.

    And for this option, I think it will be necessary to put the buffer allocated from a memory pool block at the Shared Memory witch the two Cores can access both (Core0 receives data into the block, Core1 gets  the data at the same block and then to process it).

    We will keep debugging it and find if there has any another better way for your requirements.

    Best Regards