I have a project with real-time requirements for a medical device (see my other post about fast BLE/ESB transfer for the exact details), with the main one being that one nRF5340 ("receiver") needs to receive 10-byte packets every 1-2ms from another nRF5340 ("sender") via some wireless protocol (BLE/ESB). I'm currently interested in programming the "receiver" device to use its network core solely for the wireless comms and its application core to take said data and output it via UART. I would imagine the communication/data-transfer between the network core and application core would need to be at least as fast as my "10-bytes-per-ms requirement".
I have read several documentation links, forum posts, etc. The following options seem to be what's available (FYI I'm quite new to learning/working-with these libraries and protocols):
- RPC - I got the Entropy sample code working, but before trying to adapt it for my project, I wanted to clarify - is the data being sent wirelessly, even in the dual-core device setup? I take it that's why it's considered "remote" but I'm not too sure.
- IPC
- OpenAMP - Seems to be based off shared memory (see here)
- Bluetooth HCI - Seems quite popular but, if it's Bluetooth-based, I'm skeptical about its feasibility. So far, my experiments with getting fast BLE transfer show that BLE isn't fast enough for my project, but ESB most likely will work.
- Shared SRAM - I would imagine this is the "fastest" option as it's "wired", but I only found some forum posts with unofficial solutions like here. I was wondering if there was official sample code for this, especially ones that can handle race conditions via semaphores/mutexes and the like.
All in all, I'm hoping to get some advice/feedback on what options are out there, when to use this and that, and which ones I should put my efforts into first. Thanks in advance!
------------------------------------------------------------------------------------------
Development Setup:
- Board: nRF5340-DK
- Development Environment: VS Code
- SDK: nRF Connect 2.5.0
- OS: Windows 10