STM32 MCU: AZURE RTOS as an ARM based RTOS? I do not assume.
I understand, why STM goes meanwhile with AZURE RTOS: it has several nice features. e.g. FileX, LevelX, several network and USB stacks (where STM needs effort to provide as well).
But I do not understand why this AZURE RTOS should be a "Real-Time OS" for ARM based platforms?
I see so many violations on ARM based coding rules, esp. this:
- ARM based systems use up to four registers directly, for the function call parameters
- if you use more as four parameters on a function call: a stack located parameter is needed (and shuffling registers inside the called functions) - suggestion is to put more as four into a struct and use "call by reference"
- using stack based call parameters: it consumes space from stack (memory size!) - and it can be slower compared to the use of MCU registers (stack is on slower memory)
- it makes it tough to predict how many stack size do you need
I see so many function calls with more as four parameters, e.g. in FileX:
UINT fx_directory_first_full_entry_find(
FX_MEDIA *media_ptr,
CHAR *directory_name,
UINT *attributes,
ULONG *size,
UINT *year,
UINT *month,
UINT *day,
UINT *hour,
UINT *minute,
UINT *second);
Is AZURE RTOS really designed to act as an RTOS on ARM systems? (I have some doubts)
It is not "my approach" for a real-time system, esp. to ignore ARM coding guidelines. And it scares me to consider AZURE as an RTOS (with real real-time support).
To be very sarcastic: "why to go with a Microsoft RTOS for ARM systems where their main OS is not considered as a real-time system?"
Dear STM team: why you do not have labels as "RTOS", "AZURE" in your list when posting...?
