joepasquariello
Well-known member
I like the approach of statically allocated tasks. That way you can size the heap/stack without considering the number of tasks.
I'm fairly new to ARM and Arduino, but the way I'll use Zilch is to call only create() and yield(). No task can call yield() in the middle of a floating-point operation, so no task can possibly interrupt another task's floating-point. The only constraint is that if there are interrupts, the ISRs should do no floating-point. I'll add mailboxes and queues for communication between tasks and between ISRs and tasks, and one timer interrupt for delays and for timeouts on mailboxes and queues.
I guess I'll have to figure out some way of having to use the floating point registers between two tasks. Maybe non context switch example would be funcA uses floating point but does not finish it's floating point operation when funcB is called from funcA. Does the hardware handle that for us?
I'm fairly new to ARM and Arduino, but the way I'll use Zilch is to call only create() and yield(). No task can call yield() in the middle of a floating-point operation, so no task can possibly interrupt another task's floating-point. The only constraint is that if there are interrupts, the ISRs should do no floating-point. I'll add mailboxes and queues for communication between tasks and between ISRs and tasks, and one timer interrupt for delays and for timeouts on mailboxes and queues.