Ce système d'exploitation était créé lors d'une affectation de classe. Le code est expérimental et très non testé, mais il devrait fonctionner.
Le système d'exploitation utilise un planificateur de robin très simple et fait un commutateur de contexte tous les 262144 cycles d'horloge. Ce comportement est contrôlable en définissant OCR0A et les Prescalers de TIMER0. Vous ne pouvez pas utiliser TIMER0 dans votre application, il est exclusivement utilisé par le planificateur.
Mettez simplement les fichiers en commençant par os dans votre projet. Modifiez os_config.h pour répondre à vos besoins. Depuis votre principal, appelez os_init() et créez vos tâches avec os_task_add(task_func, task_data) . Pour démarrer le planificateur, appelez os_run() . Notez que cet appel ne revient jamais, de sorte que le code suivant ne sera pas exécuté.
Veuillez noter que les tâches peuvent actuellement ne jamais se terminer et doivent être résiliées à l'aide d' os_current_task_kill() . Pour accéder au void-pointer donné à os_task_add , appelez os_current_task_get_data() .
Veuillez ne pas essayer d'utiliser des piles de récursivité ou d'appels profonds, car vous n'avez qu'une pile très limitée. Vous ne pouvez pas utiliser TIMER0, car il est utilisé pour le planificateur! N'essayez pas de réactiver les interruptions lorsque vous utilisez des routines de service d'interruption personnalisées!
Le système d'exploitation peut être configuré au moment de la compilation en utilisant les définis-macros suivants dans os_config.h :
OS_STACK_SIZE contrôle la taille de la pile pour une tâche.OS_TASK_COUNT CONTRÔLE Combien de tâches peuvent être créées simultanément. Copyright 2020 Stephan Brunner
L'autorisation est accordée gratuitement à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sublince et / ou de vendre des copies des conditions suivantes.
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les détenteurs de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres relations dans le logiciel.