Υπάρχει μια αυξανόμενη ζήτηση για embedded operating systems, και είναι καλύτερο όταν αυτά είναι ανοιχτού κώδικα. Η ομάδα R&D του έργου RT-Thread μετά από τρία χρόνια έρευνας και εντατικής ανάπτυξης δημιούργησε το έργο RT-Thread Smart.
Πρόκειται για ένα λειτουργικό σύστημα microkernel που απευθύνεται κυρίως σε επεξεργαστές μεσαίου εύρους έως υψηλού επιπέδου όπως RISC-V ή Arm Cortex-A που διαθέτει μονάδα διαχείρισης μνήμης (MMU) και παρέχει μια ανταγωνιστική πλατφόρμα λογισμικού με βάση το POSIX για όλες τις βιομηχανίες στο χώρο των embedded συστημάτων.
Ποιος χρειάζεται το RT-Thread Smart;
Το RT-Thread Smart είναι ένα επαγγελματικό, υψηλής απόδοσης, λειτουργικό σύστημα microkernel για real-time εφαρμογές . Προσφέρει μια βάση ανοιχτού κώδικα για ενσωματωμένες συσκευές σε οποιαδήποτε αγορά, συμπεριλαμβανομένης της ασφάλειας (π.χ. κάμερες διαδικτύου), βιομηχανικού ελέγχου, ενσωματωμένων συσκευών, ηλεκτρονικών ειδών ευρείας κατανάλωσης και οτιδήποτε άλλο χρησιμοποιεί ενσωματωμένη τεχνολογία (η οποία όλο και περισσότερο σημαίνει "τα πάντα"). Είναι σημαντικό γιατί, σε αντίθεση με τα παραδοσιακά λειτουργικά συστήματα IoT, ένα λειτουργικό σύστημα microkernel μπορεί να καλύψει το κενό μεταξύ ενός παραδοσιακού λειτουργικού συστήματος πραγματικού χρόνου (RTOS) και ενός συγκριτικά μεγάλου λειτουργικού συστήματος όπως το Linux για την επίτευξη της καλύτερης ισορροπίας μεταξύ απόδοσης σε πραγματικό χρόνο, κόστους, ασφάλεια, ταχύτητα εκκίνησης και πολλά άλλα.
Η αρχιτεκτονική του RT-Thread Smart
Το RT-Thread Smart χωρίζει ένα σύστημα σε χώρο πυρήνα και χώρο χρήστη εκμεταλλευόμενο τις μεθόδους MMU και κλήσεων συστήματος. Στη συνέχεια διαιρεί το χώρο διευθύνσεων για κάθε λειτουργία (ένα σύστημα 32 bit παρέχει χώρο διευθύνσεων 4G).
(RT-Thread, CC BY-SA 4.0)
Ο πυρήνας RT-Thread Smart περιλαμβάνει τη βασική λειτουργικότητα της πλατφόρμας και υποστηρίζει προσαρμογές. Το περιβάλλον εφαρμογών χώρου χρήστη του RT-Thread Smart χρησιμοποιεί musl libc για να παρέχει κλήσεις διεπαφής POSIX και C runtime supports. Kληρονομεί επίσης το αρχικό οικοσύστημα RT-Thread, χρησιμοποιώντας SCons ή άλλα εργαλεία κατασκευής, όπως Autotools , Makefiles, CMake , καθώς και υποστήριξη για πάνω από 342 πακέτα λογισμικού αυτή τη στιγμή. Μπορείτε ακόμη και να μεταφέρετε εφαρμογές Linux, όπως wget / cURL, BusyBox, OpenSSL και Simple DirectMedia Layer, στην πλατφόρμα σας.
Ο συμπιεσμένος πυρήνας RT-Thread Smart είναι μόλις 217KB, με σύστημα αρχείων root 127KB. Η τυπική χρήση μνήμης είναι περίπου 2MB.
Συμπεριλαμβανομένης της πλήρους υποστήριξης για συστήματα αρχείων, στοίβες πρωτοκόλλων δικτύου και πολυμέσα, χρειάζονται μόνο τρία έως πέντε δευτερόλεπτα για να ολοκληρωθεί η διαδικασία εκκίνησης του RT-Thread. Χωρίς εκτέλεση ή φόρτωση σύνθετων εφαρμογών χρήστη, το RT-Thread Smart απαιτεί λιγότερα από 500ms για να ξεκινήσει και να είναι έτοιμο.
Με το ενσωματωμένη επιφάνεια εργασίας Persimmon (UI), ο χρόνος που απαιτείται από την ενεργοποίηση μέχρι το γραφικό περιβάλλον είναι περίπου ένα δευτερόλεπτο. Με άλλα λόγια, αυτό είναι ένα πολύ μικρό και γρήγορο σύστημα. Φυσικά, το "real time" δεν αφορά την εκκίνηση, αλλά την απόδοση του συστήματος με συνέπεια με την πάροδο του χρόνου. Για το RT-Thread, η απόδοση σε πραγματικό χρόνο αποτελεί προτεραιότητα και η interrupt latency είναι μικρότερη από 1 μs, η οποία ικανοποιεί τις περισσότερες περιπτώσεις εφαρμογής με τις αυστηρότερες απαιτήσεις σε πραγματικό χρόνο.
RT-Thread Smart vs. RT-Thread
Ίσως αναρωτιέστε για τις διαφορές μεταξύ RT-Thread Smart και RT-Thread. Με απλά λόγια, το RT-Thread Smart είναι ένα λειτουργικό σύστημα RT-Thread RTOS, αλλά ενσωματώνει τη διεργασία user-space. Το μέρος του πυρήνα του RT-Smart είναι ουσιαστικά RT-Thread RTOS και τρέχει σε εικονικές διευθύνσεις, προσθέτει διαχείριση διεργασιών και χρησιμοποιεί μηχανισμούς επικοινωνίας μεταξύ διεργασιών, διαχείριση χώρου εικονικής μνήμης / διευθύνσεων, ELF loaders κ.ο.κ. Όταν τα στοιχεία IwP είναι απενεργοποιημένα, το RT-Smart επιστρέφει στο RT-Thread RTOS.
Ακολουθεί μια σύγκριση:
RT-Thread | RT-Thread Smart | |
---|---|---|
Supported chips | Cortex-M/R, RISC-V RV32IMAC (and similar), Cortex-A MPU | MPU with MMU, such as Cortex-A |
Compiling | The kernel and application are compiled into an image program. | The kernel and application can be separately compiled and executed. |
Memory | Runs on a linear address space (even with MMU) and uses virtual addressing with the physical address | Runs on a 32-bit system with the kernel running on more than 1GB, the user-state process has separate address spaces that are isolated from each other. Peripheral drivers must access peripherals with virtual addresses. |
Running errors | When an application fails, the overall system collapses. | When an application fails, it does not affect kernel and other process execution. |
Running model | Multi-thread model | Multiprocess model (multithread is supported within the process, and kernel threads are supported by the kernel) |
User model | Single-user model | Single-user model |
API | RT-Thread API, POSIX PSE52 | RT-Thread API (on kernel and userspace), plus a full POSIX API |
Real time | Preemptive hard real-time system | Preemptive hard real-time system |
Resource utilization | Very small | Relatively small |
Debugging | Generally debugged through the emulator | Supports GDB debugging and no emulator required |
Το RT-Thread RTOS είναι πολύ συμπαγές. Όλες οι εφαρμογές και τα υποσυστήματα συγκεντρώνονται στο Image και οι εφαρμογές πολλαπλών νημάτων εκτελούνται και μοιράζονται τον ίδιο χώρο διευθύνσεων.
Το RT-Thread Smart είναι ανεξάρτητο. Τα συστήματα και οι εφαρμογές γίνονται compiled ξεχωριστά και εκτελούνται. Οι εφαρμογές έχουν πλήρη χώρο διευθύνσεων και διατηρούνται απομονωμένες μεταξύ τους Κληρονομεί επίσης όλα τα εξαιρετικά χαρακτηριστικά σε πραγματικό χρόνο του RT-Thread και διαθέτει ένα περιβάλλον POSIX.
Ομοίως, και τα δύο είναι συμβατά με το RT-Thread API, οπότε οι εφαρμογές σε RT-Thread RTOS μπορούν να μεταφερθούν ομαλά στο RT-Thread Smart.
Ανοιχτός κώδικας
Το RT-Thread Smart είναι ένα έργο ανοιχτού κώδικα, με τον κώδικα του διαθέσιμο στο GitHub. Μπορείτε να κατεβάσετε τον κώδικα και την τεκμηρίωσή του, να τον δοκιμάσετε, να υποβάλετε σχόλια και σχόλια και να τον βοηθήσετε να τον διαδώσετε σε περισσότερους υποστηρικτές ανοιχτού κώδικα. Τα ενσωματωμένα συστήματα πρέπει να ανήκουν στους χρήστες τους και υπάρχουν πάρα πολλοί προγραμματιστές εκεί έξω που δεν αντιλαμβάνονται τι είναι διαθέσιμο.
Πηγή άρθρου: https://opensource.com/