Innovative Approach to Electronics DesignInnovative Approach to Electronics Design

FX-RTOS version 3.1.1 released

01.05.2019

What's new in the version of FX-RTOS 3.1.1

Here comes FX-RTOS release version 3.1.1. There are no serious bugs that would require immediate patching, but there are a number of improvements that may be useful.

1) Starting with this version, it would be necessary to bring into production a more intelligent implementation of scheduler.

2) In versions with DPC all this time there was a problem that if we call the sheduler functions fr om DPC, then a program interrupt is requested. This is because it cannot be distinguished whether a function is called from a thread or from a DPC. A scheduler request is needed from the stream, not from the DPC, because the sheduler is called after processing the queue. Because of this, the latency of sheduling when activating threads from interrupts is twice as much as it could be, due to an extra call to PendSV that does nothing. Therefore, the internal function fx_dpc_environment was introduced, which returns true if we are in the dpc context, which allows the scheduler to not request PendSV when it is not needed.

3) Buf fixed. Statements that the kernel never prohibits interrupts turned out to be not quite true, in timers for synchronization with ISR there are literally a couple of lines wh ere the ban is used. Actually, an equal priority level for PendSV and SysTick was needed in order to remove this ban, and it apparently remained due to copy-paste in FX_SPL. Now I double-checked, interrupts are not prohibited now for sure. Of course, nothing will change much because of a pair of lines, but we made lock-free DPC just to avoid even this couple of lines.

4) The rest is not very significant, I will combine everything in one point.
• There was an invalid interrupt frame. Registers from R11 to R4 are written there, but they are saved the other way around. Since there is enough space and no one has addressed them by name, everything works. But for the future it is fixed.
• The stack is always aligned at 8. Previously, after creating the stream, it could be aligned at 4, which is deprecated for ARMv7-M.
• lang_param_assert_return is renamed to lang_param_assert. Since this macro is internal, no software modifications are needed.
• Due to the fact that the memory allocator is used the same in the "large" kernel, it was necessary to separate the algorithm and synchronization, which are now located in separate RTL_MEM_POOL and FX_MEM_POOL files, respectively. If you are satisfied with the old allocator, you can simply leave the old FX_MEM_POOL files and delete the RTL. Everything will work as before.

Back to the list

Tel: +7 (495) 232-18-64, E-mail: info@eremex.com Tel: +7 (495) 232-18-64, E-mail: