On 11/15/2023 9:06 PM, Ed Prochak wrote:
> On Tuesday, November 14, 2023 at 10:20:11 PM UTC-5, Don Y wrote:
>> On 11/14/2023 1:30 PM, Ed Prochak wrote:
>>> On Monday, November 13, 2023 at 3:00:51 PM UTC-5, Don Y wrote:
>>>> On 11/12/2023 6:40 PM, Ed Prochak wrote:
> []
>>> For small embedded systems, I've found this kind of kernel
>>> very efficient.
>> You may want to, also, look at uCOS and ThreadX -- assuming
>> "free" is one of your concerns. The problem with priority based
>> schedulers is they only indirectly address timeliness design goals:
>> if X is higher priority than Y will X finish before (or after?)
>> Y? Will X finish in time for its deadline (which isn't encoded
>> anywhere)?
>
> Well, this is a maintenance/update project, so I did not make the choice.
So, it's not "from scratch" but, rather, a reuse of an existing
*design* (though not necessarily *implementation*) refactored
to add some new set of features/behavior -- ?
If that's the case -- and it was "designed" with a priority-based
RTOS at its core (that you can't/won't reuse, for whatever reason),
-- make sure you are aware of how *that* behaved in all applicable
use cases. Else, a new RTOS may have slightly different policy
implementations that can cause subtle (but important) differences
in some cases.
E.g., if the old implemented Priority Ceiling Protocol while
the new implements Priority Inheritance Protocol, there will
be marked differences in how those conflicts are resolved
in terms of execution time. (Or, if the old didn't address
this, at all, and just left things entirely to chance).
Or, if the old wasn't preemptive while the new is.
Or, if the old only allowed preemption at specific places.
Or, ...
[i.e., all are not created equally]
>>>> Have you identified the *minimum* set of features/services
>>>> that you need/expect from the OS? And, how that fits with
>>>> those offered?
>>>
>>> No, I haven't seen the product requirement document yet.
>>> But from the verbal product description This kernel should be
>>> more than adequate.
>> A lot will depend on how much folks have envisioned your
>> device as a "computer" vs. "appliance". Lots of (often
>> unnecessary) bloat gets added to design goals based
>> on perceptions of what COULD be available (despite not
>> being strictly necessary)
>
> This is definitely in the appliance category.
As long as someone didn't "imagine": "Gee, we can store the
settings in a (genuine) *file* in one of the filesystems supported
by the kernel" or similar. (Thereby placing an added dependency
on the kernel that wasn't strictly necessary.)
[I really like to find ways to REMOVE code from designs
instead of finding uses for code that doesn't have to be there!]
>>>> [Do you even need timeliness guarantees or are you just looking
>>>> for an MTOS?]
>>>
>>> There's definitely some timeliness requirements. It is a medical device.
>> Cyclic Executive, instead?
>
> Cyclic executives are difficult to enhance it you happen to add features that now
> extend the timing cycle.
Yes. But, that is also true of other scheduling approaches.
Priority-based schedulers often find their developers
rejiggering priorities to "make things work" (shouldn't they
continue to work if they were jiggered properly to begin with?)
>>> Thanks Don. And I will post over in .embedded group. I was just hoping
>>> to stir up some discussion here for a change. 8^)
>> USENET is largely obsolescent. Most discussions, now,
>> seem to happen on (closed) email lists -- especially where
>> disclosure may be a concern -- or in (moderated) "forums".
>>
>> Good luck!
>
> We'll see if this sparks others to at least peek in.
> I see I got two responses, you and Niklas.
>
> Thank , Niklas for your response too.
>
> Enjoy the run.
Good Luck!