I’m a developer and I am currently developing software with mbed v2.
I’m going to migrate to mbed v3 and I have a question concerning the scheduling in MINAR.
In the application I have several long time running (and CPU consuming) tasks.
For example a module to generate a key pair encryption for ECC (elliptic curve cryptography).
Time to complete such tasks is typically several hundred milliseconds.
How to organize the application (with MINAR) if at the same time application must quickly service hardware interrupts (e.g receive data from UART)?
With Mbed v2 solution was simple. One process (main loop) in the background for long tasks.
Other processes runs as ISR (hardware or software) with different levels of priorities.
I’m in a similar situation… I schedule long tasks with minar and run short tasks as ISR (I continuously receive data from serial port). All seems to work fine
Tasks scheduled in MINAR can be pre-empted by interrupts, so provided any time-critical things that need to happen while your long MINAR task is running are handled by your interrupt handler, this should be OK.
That said, the scheduler is used by many parts of mbed OS, and permanently blocking in a task, or blocking for tens/hundreds of milliseconds while attempting to use drivers or networking stacks, may cause problems: so if possible perform long running operations while other services are not in use.