A Real-Time Microkernel for the dsPIC33E Family
Abstract
:1. Introduction
- M0. This memory management policy only allowes statically allocated memory. This means that all memory required for each process must be pre-allocated. This memory cannot change (neither grow nor shrink) during system operation. In Table 2, although static memory management is not explicitly provided by an RTOS, the M0 code is also assigned in cases where the services supported by the RTOS allow static memory projects development.
- M1. This memory management policy allows memory to be dynamically allocated to processes, while it cannot be freed. The allocations made remain in place throughout the system’s operation.
- M2. This memory management policy allows us to dynamically request and release memory during system operation. This alternative is not usually allowed in high-integrity systems.
- FreeRTOS
- is a very high-quality RTOS with a large user community. It has a version for safety systems (SafeRTOS). As described in Chapters 4.12.2 and 4.12.4 of [33], FreeRTOS can be configured to work with PS. In relation to the shared resource-locking policy, it uses PIP, as stated in Chapter 8.3.3 in [33].FreeRTOS provides four different alternatives for memory management (heap_1 to heap_4). Heap_1 is adapted to what we have called M1 and heap_4 is adapted to what we have called M2. Additionally, FreeRTOS offers the required resource creation services (tasks, queues, semaphores, and event groups) to facilitate exclusive utilization of static memory (Chapter 3.1.3 in [33]), aligning with the M0 classification of this work.
- Erika Enterprise
- is designed to facilitate the development of critical systems, particularly in the automotive industry, according to the specifications of the OSEK-VDX and AUTOSAR standards. It provides the utilization of the PS scheduling algorithm and the ICPP shared resource access policy (Chapter 2.6 in [34]). It exclusively supports static memory, ensuring strict adherence to the M0 model for its memory management (Chapter 1 in [34]).When using Erika, it is necessary to comply with a configuration protocol supported by the RT-Druid tool. This protocol is justified by the need to achieve compatibility across the multiple methods and processes employed by the many companies that contribute to the automotive industry. Specifically, an OIL file must be generated, conforming to the syntax and structure defined by the OSEK language (standardized as ISO 17356-6).Recently, Erika Enterprise and RT-Druid have changed their names; their newer versions are referred to as openERIKA and openDRUID, respectively.
- Trampoline
- is a project that started around the same time as Erika, originally with similar goals. It was initially developed to support projects related to the automotive industry. It follows the guidelines established by the OSEK-VDX and AUTOSAR standards (Section 0 in [35]). Therefore, it supports PS and ICPP (Chapters 3.2 and 5.1 in [35]). It exclusively supports static memory, ensuring strict adherence to the M0 model for its memory management (Chapter 0 in [35]). Like Erika, it must be configured using the OSEK language, for which it provides an OSEK builder tool (genconfig).
- seL4
- is a microkernel designed for safety, security, and reliability. seL4 has been formally verified by several authors using the Isabelle/HOL theorem prover [36], making it especially suitable for high-integrity systems.seL4 does not provide a scheduling algorithm for hard real-time systems, but there are works that analyze the worst-case execution time, which facilitates its use in soft real-time systems. In addition, seL4 is designed to work with a static configuration of resources (including memory). This is mainly due to the criteria of security, formal verifiability and determinism that it seeks for the applications that work on it. From this point of view, the seL4 memory model is M0. However, if the configuration of a process allows it, there is nothing to prevent the creation of systems that can utilize dynamic memory services in a controlled way. Therefore, M1 and M2 memory management alternatives can be assumed to be supported by seL4. (Chapter 2.4 in [36]).
- Eclipse ThreadX
- was originally proposed by Express Logic, which was later acquired by Microsoft, renamed Azure RTOS, and was recently released as Eclipse ThreadX under the stewardship of the Eclipse Foundation. ThreadX offers PS as one of its scheduling alternatives and PIP as an algorithm for accessing shared resources (Chapter 3 in [32]). ThreadX provides an M2-type memory model, but nothing in its services prevents the development of applications using static memory declaration (Sections 3 and 4 in [32]). Therefore, the M0 model is also supported.
- RTEMS
- is a mature RTOS with a large community of users and developers. RTEMS implements PS by default (see Chapter 6.2.3. in [37]), which can be adapted to different circumstances in the configuration. Regarding protocols for accessing shared resources, RTEMS offers PIP (Chapter 4.4.3 in [37]) and ICPP (Chapter 4.4.2 in [37]). RTEMS provides M2-type memory management, as described in Chapters 8 and 9 of [37].
- NuttX
- is an RTOS fundamentally inspired by the POSIX standard, but pretending to be reduced and efficient for the development of deeply embedded systems. This forces NuttX to sometimes adopt approaches inspired by other RTOSs. NuttX supports PS as described in API Reference, section Userspace API, subsection Task Scheduling Interfaces in [38]. With respect to access to shared resources, it implements PIP as specified in API Reference, section Architecture APIs, subsection Mutual Exclusion Lock in [38]. Regarding memory management, NuttX is adapted to type M2, as explained in OS Components, section Memory Management, subsection Standard Memory Management Functions in [38].
- mbed OS
- is self-defined as an open-source operating system for the Internet of Things. mbed OS offers two profiles:
- -
- A full profile, which includes all functionalities of the Keil RTX API and is based on CMSIS-RTOS. mbed implements PS as defined in CMSIS-RTOS2, section RTX v5 Implementation, subsection Tutorial, subsubsection Tread Management and Priority [39].
- -
- A bare metal profile, which does not include a real-time task scheduler.
Regarding the shared resource-locking algorithm, the mbed OS uses PIP as specified in CMSIS-RTOS2, section Reference, subsection CMSIS-RTOS2 API v2, subsubsection Mutex Management in [39]. With respect to memory management, mbed OS implements the M2 approach as described in CMSIS-RTOS2, section Reference, subsection CMSIS-RTOS2 API v2, subsubsection Memory Pool in [39]. - TinyOS
- is a lightweight operating system specifically designed to support the development of wireless sensor networks. It is important to note that TinyOS does not offer a real-time task scheduler. However, despite its seemingly limited activity, as evidenced by its web homepage and its GitHub repository, it has been the focus of extensive research, with ongoing contributions from the engineer community (see Table 1). TinyOS does not recommend the use of dynamic memory due to the inherent risks. In this regard, TinyOS aligns with the M0 model. However, it does not prevent the use of dynamic memory, so the M2 model is also available (see Chapter 3.5 in [40]).
- There is room for improvement in the selected algorithms of the evaluated RTOS schedulers. For example, some evaluated alternatives do not have a hard real-time scheduler (e.g., seL4 and TinyOS) or they have a hard real-time scheduler combining PS with PIP but not PS with ICPP (e.g., FreeRTOS, Eclipse ThreadX and NuttX).
- Some RTOSs that might be suitable are difficult to configure because of the need to combine very different actors within the same development domain. For example, Erika Enterprise and Trampoline are in this situation due to their strong automotive focus.
- Some RTOSs do not support the dsPIC33E family. Examples include Trampoline, seL4, Eclipse ThreadX, RTEMS, NuttX, Mbed OS, and TinyOS.
- Development of a microkernel for the dsPIC33E microcontroller family.
- The microkernel uses PS combined with ICPP as a real-time algorithm to schedule processes.
2. Materials and Methods
2.1. Material Resources
- A printed circuit board (PCB) containing the dsPIC33EP512GM604 microcontroller (see Figure 2). This PCB was built in this work.
- A Microchip Technology Inc. PICkit4 (Chandler, AZ, USA) in-circuit debugging probe.
- A RND 320-KA3005P (Nänikon, Switzerland) power supply.
- A SIGLENT SDS 1102CML+ (Shenzhen, China) dual-channel oscilloscope.
- A FLUKE 8846A multimeter (Everett, WA, USA).
2.2. Software Resources:
- MPLAB X (v6.20) development environment (this software was used in its Linux version).
- XC16 (v2.10) compiler (this software was used in its Linux version).
2.3. Methodological Approach
- Life cycle: Incremental developments have been selected as the life cycle for AK development. The following objectives were set for each of the development cycles.
- (a)
- Select an alternative to perform context switching.
- (b)
- Select an alternative to obtain exclusive access to shared variables inside AK.
- (c)
- Incorporate counting semaphores.
- (d)
- Incorporate mutexes.
- AK Service testing: White-box testing was selected as the method for evaluating each of the services offered by AK. These tests were carried out to obtain satisfactory evidence of the functioning of each of the AK services.
- Performance analysis: Performance testing was centered on assessing the temporal behavior of the services provided by AK. In this same section, current consumption tests were performed in relation to the microcontroller’s clock frequency. The objective of these tests was to obtain satisfactory assurance of AK’s suitability for use in solving real-life engineering problems.
3. Results
3.1. Main Characteristics of AK
- The real-time scheduling algorithm is PS combined with ICPP. This choice provides an equal or better performance than PS combined with PIP or PS combined with OCPP (often used in other RTOSs) and is easy to program.
- Running processes are not allowed to request dynamic memory (unless they create another process, which is possible, but not recommended).
- Semaphores and mutexes are provided as tools for process synchronization and resource sharing.
- No specific tool is provided to communicate processes.
- The maximum number of processes that AK can handle is set along with the compile time. It is configurable, and in this work, it is ten by default.
- I
- With respect to characteristic 1, some real-time microkernels offer policies for shared resource-locking, such as PIP or even OCPP. However, it is not common to find microkernels that offer ICPP. In this regard, ICPP achieves less than or an equal number of context switches as PIP or OCPP in the priority inversion scenario. In addition, ICPP has the advantage of being much easier to program than PIP and OCPP. The above-stated reasons justify the selection of ICPP.
- II
- Regarding characteristic 2, it is important to note that certain standards for developing high-integrity systems do not recommend the use of dynamic memory, at least for systems that require the highest level of integrity (IEC-61508, DO-178C, ISO 26262, EN 50128, etc.).
- III
- With respect to characteristic 3, semaphores are basic tools that are frequently used for the synchronization of processes, and mutexes are in fact mandatory when using ICPP.
- IV
- In relation to characteristic 4, currently, processes can communicate with each other using shared variables protected by mutexes. This is adopted strictly for the sake of simplicity. However, based on the synchronization tools that are already available in AK, it is not particularly difficult to build communication tools that can add value to the shared variables alternative. For example, mailboxes and monitors, among other tools, can be included in later versions of AK.
- V
- Finally, characteristic 5 greatly simplifies the design of AK. In addition, it makes AK more efficient by allowing it to declare some of its structures statically instead of forcing all of them to be dynamic, and facilitates the verification and validation of the systems developed on top of AK.
3.2. AK High-Level Architecture Design
- Interface services: This component (see Figure 3, first row) contains all AK services that can be called from the outside. It is of particular interest for “mutex” because it implements the ICPP locking policy.
- Internal services: This component (see Figure 3, middle row, last component) contains services that can only be invoked from within AK. Of particular note is the scheduler, which implements PS.
- Data structures: This component (see Figure 3, middle row, first element) contains data structures required by other AK components.
- Task queue services: AK includes the services encapsulated in this component (see Figure 3, bottom left) to manage process queues. It is common in microkernels to have to manage process queues for various reasons, such as processes that are ready to run, processes that are blocked in a semaphore, etc.
- Hardware abstraction layer (HAL): This component (see Figure 3, bottom right) encapsulates some elements that depend on the programming model of the hardware on which AK is to run. It consists of a set of functions coded in an assembler, the most important of which is the processing of the Timer 1 interruption. This interruption is responsible for keeping the tick counter up to date and for calling the task scheduler. Another feature that stands out is the handling of the external interrupt 2 (INT2). In short, INT2 is used as a software interrupter in case a context switch needs to be performed before the next Timer 1 interruption will be activated.
3.3. AK Interface
3.3.1. Initial Use Services
- init_AuK
- It allows us to indicate the frequency with which the scheduler will be activated.
- create_task
- It allows the creation of processes.
- start_AuK
- Its execution causes the microkernel to start working.
3.3.2. Synchronization Tools
- Counting Semaphores
- They have the particularity of ordering the blocked processes by priority, and FIFO order within the same priority.
- init_semaphore
- It allows to initialize a semaphore indicating the value at which its event counter starts working.
- wait
- It allows to capture an event associated with a semaphore. The semaphore counter is decremented by one, unless it has already counted zero events, in which case it is not decremented and the calling process is blocked.
- wait_within_driver
- This service works in the same way as the previous one, but enables the interrupt specified as a parameter at the end of its execution. This simplifies the development of device drivers that need to share a semaphore with an interrupt handler.
- signal
- It allows to generate an event associated with a semaphore. If the semaphore event counter is greater than zero, it is incremented by one. If it is equal to zero, it is incremented if there are no blocked processes in the semaphore; otherwise, the highest-priority process that has been blocked for the longest time is unblocked.
- Mutex
- This makes it possible to work with persistent resources that are shared between processes according to the ICPP scheduling algorithm.
- mutex_init
- Initializes a mutex, and its priority must be configured as the highest priority of the processes that can use it (required by the ICPP algorithm).
- mutex_lock
- It allows us to acquire a shared resource for exclusive use. When a process acquires a mutex, due to ICPP scheduling algorithm being enforced, the process priority is updated with that of the mutex. This significantly and predictably reduces the length of time for which a process can cause a priority inversion.
- mutex_unlock
- It allows us to free a shared resource that had been acquired with mutex_lock and the process recovers the previous process priority.
3.3.3. Services for Real-Time Systems
- clock
- It returns the length of time for which the system has been running in ticks, since AK was started. A tick is the time interval between two process scheduler activations.
- delay_until
- It allows a process to be blocked until a specified time (tick) is reached. This service is essential for real-time tasks with periodic activation.
3.3.4. Additional Services
- give_me_my_id
- It supplies the process identifier to the invoking process.
- tic_period
- It indicates how much time elapses, in seconds, between consecutive activations of the scheduler.
3.3.5. General Considerations
- The peripheral interrupt is not allowed initially.
- The peripheral driver blocks itself on a semaphore using wait_within_driver, which as a last action enables the peripheral interrupt.
- When the peripheral interrupt is triggered, the device interrupt handler saves the essential data, disables the peripheral interrupt, and sends a signal to the semaphore on which the peripheral driver is blocked.
- The peripheral driver wakes up and finishes processing the information associated with the interrupt. It then returns to step 2, and steps 2 through 4 are repeated in an infinite loop.
3.4. AK Performance
- The context-switching interval
- represents the time that elapses between the process being executed being ejected from the CPU and the moment that the new selected process starts executing. It should be noted that with a priority-based scheduling algorithm, it is very common for the newly selected process to be the same process that was running at the time the scheduler was invoked. This scenario is handled very efficiently in .
- Processes CPU utilization
- is the percentage of time spent executing process code compared to the total time (the total time is the time spent executing processes plus the time spent on context switches by AK).
- Current consumption
- Current consumption detected in the system.
- Microkernel services time consumption
- is the time invested in executing the services provided by AK.
3.5. Context-Switching Interval
3.6. Process CPU Utilization
3.7. Current Consumption
3.8. Time Consumed by the Execution of K Services
4. Application Examples with AK
4.1. First Example
4.2. Second Example
5. Discussion
6. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
Abbreviations
AK | Another microkernel. |
AUTOSAR | AUTomotive Open System ARchitecture. |
CMSIS | Common Microcontroller Software Interface Standard. |
CPU | Central Processing Unit. |
DMA | Direct Memory Access. |
DMS | Deadline monotonic scheduling. |
FPGA | Field Programmable Gate Array. |
ICPP | Immediate ceiling priority protocol. |
OCPP | Original ceiling priority protocol. |
OSEK | Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen. |
PIP | Priority inheritance protocol. |
PS | Priority scheduling. |
RMS | Rate monotonic scheduling. |
RTOS | Real-time operating system. |
VDX | Vehicle Distributed eXecutive. |
References
- Silberschatz, A.; Galvin, P.B.; Gagne, G. Operating Systems Concepts, 10th ed.; Wiley: New York, NY, USA, 2018. [Google Scholar]
- Craig, I.D. Formal Models of Operating System Kernels; Springer: Berlin/Heidelberg, Germany, 2007. [Google Scholar]
- Xu, R.; Zhang, L.; Ge, N. Modeling and Timing Analysis for Microkernel-Based Real-Time Embedded System. IEEE Access 2019, 7, 39547–39563. [Google Scholar] [CrossRef]
- Liu, J.W.S. Real-Time Systems; Prentice Hall: Hoboken, NJ, USA, 2000. [Google Scholar]
- Laplante, P.A.; Ovaska, S.J. Real-Time Systems Design and Analysis. Tools for the Practitioner; IEEE Press: Piscataway, NJ, USA; Wiley: New York, NY, USA, 2012. [Google Scholar]
- Buttazzo, G.C. Hard Real-Time Computing Systems. Predictable Scheduling Algorithms and Applications; Springer: Berlin/Heidelberg, Germany, 2011. [Google Scholar]
- Cottet, F.; Delacroix, J.; Kaiser, C.; Mammeri, Z. Schedulling in Real-Time Systems; John Wiley and Sons: New York, NY, USA, 2002. [Google Scholar]
- Burns, A.; Wellings, A. Real-Time Systems and Programming Languages; Addison-Wesley: Boston, MA, USA, 2009. [Google Scholar]
- Joseph, M. (Ed.) Real-Time Systems Specification, Verificationi and Analysis; Prentice Hall: Boston, MA, USA, 1996. [Google Scholar]
- Ramegowda, D.; Lin, M. Energy efficient mixed task handling on real-time embedded systems using FreeRTOS. J. Syst. Archit. 2022, 131, 102708. [Google Scholar] [CrossRef]
- Zhang, Y.W.; Chen, R.K. A survey of energy-aware scheduling in mixed-criticality systems. J. Syst. Archit. 2022, 127, 102524. [Google Scholar] [CrossRef]
- Zhang, Y.W. DVFS-based energy-aware scheduling of imprecise mixed-criticality real-time tasks. J. Syst. Archit. 2023, 137, 102849. [Google Scholar] [CrossRef]
- Capota, E.A.; Stangaciu, C.S.; Micea, M.V.; Curiac, D.I. Towards mixed criticality task scheduling in cyber physical systems: Challenges and perspectives. J. Syst. Softw. 2019, 156, 204–216. [Google Scholar] [CrossRef]
- Zhang, Q.; Lin, M.; Yang, L.T.; Chen, Z.; Khan, S.U.; Li, P. A Double Deep Q-Learning Model for Energy-Efficient Edge Scheduling. IEEE Trans. Serv. Comput. 2019, 12, 739–749. [Google Scholar] [CrossRef]
- Awan, M.A.; Petters, S.M. Intra-task device scheduling for real-time embedded systems. J. Syst. Archit. 2015, 61, 321–340. [Google Scholar] [CrossRef]
- Dantas, L.P.; de Azevedo, R.J.; Gimenez, S.P. A Novel Processor Architecture With a Hardware Microkernel to Improve the Performance of Task-Based Systems. IEEE Embed. Syst. Lett. 2019, 11, 46–49. [Google Scholar] [CrossRef]
- Tang, Y.; Bergmann, N.W. A Hardware Scheduler Based on Task Queues for FPGA-Based Embedded Real-Time Systems. IEEE Trans. Comput. 2015, 64, 1254–1267. [Google Scholar] [CrossRef]
- Gaitan, V.G.; Gaitan, N.C.; Ungurean, I. CPU Architecture Based on a Hardware Scheduler and Independent Pipeline Registers. IEEE Trans. Very Large Scale Integr. (VLSI) Syst. 2015, 23, 1661–1674. [Google Scholar] [CrossRef]
- Rüetschi, A.; Syrpas, P.; Flak, B.; Tomzik, K.; Steimer, P.K. Heterogeneous Control Platform Design for Power Conversion Systems. IEEE Trans. Ind. Inform. 2022, 18, 2934–2942. [Google Scholar] [CrossRef]
- Arm, J.; Baštán, O.; Mihálik, O.; Bradáč, Z. Measuring the Performance of FreeRTOS on ESP32 Multi-Core. IFAC-PapersOnLine 2022, 55, 292–297. [Google Scholar] [CrossRef]
- Penna, P.H.; Souto, J.V.; Uller, J.F.; Castro, M.; Freitas, H.; Méhaut, J.F. Inter-kernel communication facility of a distributed operating system for NoC-based lightweight manycores. J. Parallel Distrib. Comput. 2021, 154, 1–15. [Google Scholar] [CrossRef]
- Serino, A.; Cheng, L. Real-Time Operating Systems for Cyber-Physical Systems: Current Status and Future Research. In Proceedings of the 2020 International Conferences on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData) and IEEE Congress on Cybermatics (Cybermatics), Rhodes, Greece, 2–6 November 2020; pp. 419–425. [Google Scholar] [CrossRef]
- Kang, H.; Kim, K.; Jin, H.W. Real-Time Software Pipelining for Multidomain Motion Controllers. IEEE Trans. Ind. Inform. 2016, 12, 705–715. [Google Scholar] [CrossRef]
- García Villaescusa, D.; Aldea Rivas, M.; González Harbour, M. Response-time analysis of mesh-based many-core systems. J. Syst. Archit. 2023, 134, 102762. [Google Scholar] [CrossRef]
- Arlat, J.; Fabre, J.C.; Rodriguez, M. Dependability of COTS microkernel-based systems. IEEE Trans. Comput. 2002, 51, 138–163. [Google Scholar] [CrossRef]
- Ungurean, I. Timing Comparison of the Real-Time Operating Systems for Small Microcontrollers. Symmetry 2020, 12, 592. [Google Scholar] [CrossRef]
- Azimi, S.; De Sio, C.; Portaluri, A.; Rizzieri, D.; Vacca, E.; Sterpone, L.; Merodio Codinachs, D. Exploring the Impact of Soft Errors on the Reliability of Real-Time Embedded Operating Systems. Electronics 2023, 12, 169. [Google Scholar] [CrossRef]
- Lee, J.H.; Hyeon, B.S.; Jeon, O.Y.; Park, N.I. Analysis of real-time operating systems’ file systems: Built-in cameras from vehicles. Forensic Sci. Int. Digit. Investig. 2023, 44, 301500. [Google Scholar] [CrossRef]
- Delgado, R.; Jo, Y.H.; Choi, B.W. RT-AIDE: A RTOS-Agnostic and Interoperable Development Environment for Real-Time Systems. IEEE Trans. Ind. Inform. 2023, 19, 2772–2781. [Google Scholar] [CrossRef]
- Yoo, T.; Choi, B.W. Real-Time Performance Benchmarking of RISC-V Architecture: Implementation and Verification on an EtherCAT-Based Robotic Control System. Electronics 2024, 13, 733. [Google Scholar] [CrossRef]
- seL4 Performance. 2025. Available online: https://sel4.systems/About/Performance/ (accessed on 26 April 2025).
- ThreadX Documentation. 2025. Available online: https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/index.md (accessed on 26 April 2025).
- Barry, R.; FreeRTOS. Mastering the FreeRTOS Real Time Kernel. A Hands-On Tutorial Guide; Version 1.1.0; Amazon.com: Washington, DC, USA, 2023. [Google Scholar]
- ERIKA Enterprise Manual. Real-Time Made Easy, version: 1.4.5.; Evidence Embedding Technology ed.; Evidence Srl: Pisa, Italy, 2012. [Google Scholar]
- Béchnnec, J.L.; Briday, M.; Faucou, S.; Molinaro, P.; Pavin, F. The Trampoline Handbook. Release 2.0. 2023. Available online: https://github.com/TrampolineRTOS/trampoline/tree/master/documentation/manual (accessed on 26 April 2025).
- seL4 Foundation. seL4 Reference Manual; Version 13.0.0; The seL4 Foundation: Sydnay, Australia, 2024. [Google Scholar]
- RTEMS. RTEMS Classic API Guide. Release 7.e8e6f12, RTEMS Project and contributors. 2025.
- NuttX Documentation. 2025. Available online: https://nuttx.apache.org/docs/latest/index.html (accessed on 26 April 2025).
- CMSIS-RTOS2 Version 2.2.0. Real-Time Operating System: API and RTX Reference Implementation. 2025. Available online: https://arm-software.github.io/CMSIS_5/develop/RTOS2/html/index.html (accessed on 26 April 2025).
- Levis, P.; Gay, D. TinyOS Programming; Cambridge University Press: Cambridge, UK, 2009. [Google Scholar]
- Hernandez, W.; Cañas, N. AμK Source Code. 2025. Available online: https://github.com/Norberto-CdP/AuK (accessed on 30 April 2025).
- Chen, W.K. (Ed.) The Electrical Engineerging Handbook; Elsevier Academic Press: Amsterdam, The Netherlands, 2004. [Google Scholar]
- Farina, M.; Shaker, W.K.; Ali, A.M.; Hussein, S.A.; Dalang, F.S.; Bassey, J.O. Automated guided vehicles with a mounted serial manipulator: A systematic literature review. Heliyon 2023, 9, e15950. [Google Scholar] [CrossRef] [PubMed]
- Liu, Z.; Liang, X.; Chen, X.; Wen, X. Design of a sweeping robot based on fuzzy QFD and ARIZ algorithms. Heliyon 2024, 10, e38319. [Google Scholar] [CrossRef]
- Patruno, C.; Renò, V.; Nitti, M.; Mosca, N.; di Summa, M.; Stella, E. Vision-based omnidirectional indoor robots for autonomous navigation and localization in manufacturing industry. Heliyon 2024, 10, e26042. [Google Scholar] [CrossRef] [PubMed]
- Section 22. Direct Memory Access (DMA). dsPIC33E/PIC24E Family Reference Manual. 2011. Available online: https://ww1.microchip.com/downloads/en/DeviceDoc/70182C.pdf (accessed on 12 May 2025).
- Kopetz, H. Real-Time Systems. Design Principles for Distributed Embedded Applications; Springer: Berlin/Heidelberg, Germany, 2011. [Google Scholar]
Microkernel or RTOS | IEEE Explore | Science Direct | ACM | Springer Link | Wiley | MDPI |
---|---|---|---|---|---|---|
FreeRTOS | 205 | 228 | 388 | 412 | 68 | 162 |
Erika | 27 | 29 | 26 | 30 | 5 | 1 |
Trampoline | 4 | 5 | 309 | 19 | 3 | 0 |
seL4 | 47 | 37 | 254 | 259 | 10 | 5 |
Azure RTOS | 3 | 1 | 6 | 3 | 0 | 0 |
RTEMS | 43 | 70 | 137 | 100 | 4 | 5 |
NuttX | 6 | 25 | 35 | 34 | 9 | 16 |
mbed OS | 12 | 36 | 33 | 29 | 6 | 19 |
TinyOS | 715 | 969 | 1792 | 1753 | 325 | 37 |
Microkernel or RTOS | Scheduling Algorithm | Memory Model | Suported Devices | Performance Overhead |
---|---|---|---|---|
FreeRTOS | PS, PIP | M0, M1, M2 | Very big list | NR |
of microcontrollers and | ||||
microprocessors of | ||||
different manufacturers | ||||
including dsPIC33C | ||||
dsPIC33E, dsPIC33F | ||||
families | ||||
Erika | PS, ICPP | M0 | Mainly ARM, AVR, | NR |
Enterprise | Intel x86-64, Renesas, | |||
dsPIC (dsPIC33EV), etc. | ||||
Trampoline | PS, ICPP | M0 | Mainly ARM, RISC-V, | NR |
Power-PC, AVR, etc. | ||||
seL4 | Non hard real-time | M0, M1, M2 | ARM, RISC-V, x-86, | See [31] |
scheduler | (non dsPIC) | |||
Eclipse | PS, PIP | M0, M2 | Very big list | See Chapter “Overview of |
ThreadX | of microcontrollers and | ThreadX” in [32] | ||
(previously | microprocessors of | |||
Azure RTOS) | different manufacturers | |||
(non dsPIC) | ||||
RTEMS | PS, PIP, ICPP | M2 | Mainly processors and | NR |
ARM microcontroller | ||||
(non dsPIC) | ||||
NuttX | PS, PIP | M2 | Mainly ARM | NR |
(non dsPIC) | ||||
mbed OS | -Full profile (PS, PIP) | M2 | Mainly ARM | NR |
-Bare metal profile | (non dsPIC) | |||
(Non hard real-time | ||||
scheduler) | ||||
TinyOS | Non hard real-time | M0, M2 | Some specific | NR |
scheduler | sensor nodes |
(MHz) | (MHz) | (ms) | (s) | (%) | (mA) |
---|---|---|---|---|---|
7.3728 | 3.6864 | 9.999729 | 103.9 | 98.961 | 15.77 |
60.8256 | 30.4128 | 10.00023 | 13.02 | 99.87 | 38.37 |
68.1984 | 34.0992 | 10.000205 | 11.24 | 99.888 | 40.98 |
75.5712 | 37.7856 | 10.000185 | 10.14 | 99.899 | 43.59 |
82.944 | 41.472 | 10.000169 | 9.55 | 99.905 | 46.20 |
90.3168 | 45.1584 | 10.000155 | 8.48 | 99.915 | 48.81 |
97.6896 | 48.8448 | 10.000225 | 8.11 | 99.919 | 51.41 |
105.0624 | 52.5312 | 10.001218 | 7.79 | 99.922 | 53.97 |
112.4352 | 56.2176 | 10.001138 | 7.04 | 99.93 | 56.56 |
119.808 | 59.904 | 10.001052 | 6.39 | 99.936 | 59.16 |
Service | Time () |
---|---|
init_AuK | 40.331197 |
create_task | 5.859375 |
start_AuK (till first context switch) | 1.602564 |
give_me_my_id | 0.283787393 |
tic_period | 0.116853632 |
init_semaphore | 0.567574786 |
mutext_init | 1.085069 |
clock | 0.116853632 |
delay_until (till context switch) | 1.168536 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Hernandez, W.; Cañas, N. A Real-Time Microkernel for the dsPIC33E Family. Electronics 2025, 14, 2160. https://doi.org/10.3390/electronics14112160
Hernandez W, Cañas N. A Real-Time Microkernel for the dsPIC33E Family. Electronics. 2025; 14(11):2160. https://doi.org/10.3390/electronics14112160
Chicago/Turabian StyleHernandez, Wilmar, and Norberto Cañas. 2025. "A Real-Time Microkernel for the dsPIC33E Family" Electronics 14, no. 11: 2160. https://doi.org/10.3390/electronics14112160
APA StyleHernandez, W., & Cañas, N. (2025). A Real-Time Microkernel for the dsPIC33E Family. Electronics, 14(11), 2160. https://doi.org/10.3390/electronics14112160