From 3446d70a593684d1ebfdceaf41ca6d217ebe452b Mon Sep 17 00:00:00 2001 From: Klagarge Date: Tue, 30 Jan 2024 17:39:21 +0100 Subject: [PATCH] add PTR summary --- infotro/Eln/Sigma-Delta.md | 5 +- infotro/PTR/README.md | 7 ++ infotro/PTR/RealTime.md | 204 +++++++++++++++++++++++++++++++ infotro/PTR/UML.md | 118 ++++++++++++++++++ infotro/PTR/system_asynchron.png | Bin 0 -> 51430 bytes infotro/PTR/system_synchron.png | Bin 0 -> 22086 bytes infotro/README.md | 2 + infotro/SEm/README.md | 19 ++- infotro/SEm/SPR.md | 6 + infotro/_navbar.md | 2 + style/_coverpage.md | 9 +- 11 files changed, 364 insertions(+), 8 deletions(-) create mode 100644 infotro/PTR/README.md create mode 100644 infotro/PTR/RealTime.md create mode 100644 infotro/PTR/UML.md create mode 100644 infotro/PTR/system_asynchron.png create mode 100644 infotro/PTR/system_synchron.png create mode 100644 infotro/SEm/SPR.md diff --git a/infotro/Eln/Sigma-Delta.md b/infotro/Eln/Sigma-Delta.md index 9a9a723..60fcee4 100644 --- a/infotro/Eln/Sigma-Delta.md +++ b/infotro/Eln/Sigma-Delta.md @@ -72,8 +72,7 @@ d'atteindre des performances supérieures à celles des autres types de convertisseurs analogique-numérique en termes de résolution et de précision. -$$ -SNR = 6,02n + 1,76[dB] -$$ +cccccckrhltvbdnvjilbnrchidectlggreetcdrehlet + ![img.png](snr_by_osr.png) diff --git a/infotro/PTR/README.md b/infotro/PTR/README.md new file mode 100644 index 0000000..42e52cc --- /dev/null +++ b/infotro/PTR/README.md @@ -0,0 +1,7 @@ +

+PTR - Programmation Temps Réel +

+ +- [XF](/infotro/PTR/XF.md) +- [UML](/infotro/PTR/UML) +- [RealTime](/infotro/PTR/RealTime) \ No newline at end of file diff --git a/infotro/PTR/RealTime.md b/infotro/PTR/RealTime.md new file mode 100644 index 0000000..913ab97 --- /dev/null +++ b/infotro/PTR/RealTime.md @@ -0,0 +1,204 @@ +

+Real Time +

+ +## Temps réel vs non - temps réel +Pour les systèmes non temps réel, seule l'exactitude du résultat importe, le traitement est principalement contrôlé par +des données massives, et ils ne dépendent pas d'un matériel spécifique. +En revanche, pour les systèmes temps réel, non seulement l'exactitude du résultat est importante, mais aussi le moment +où le résultat apparaît. Le traitement est contrôlé par des événements, les données sont simples, +les quantités sont modérées, le processeur est intensément utilisé, et ces systèmes dépendent d'un matériel spécifique. + +**Système Déterministe:** +1. L'état futur du système peut être prédit de manière précise à partir de son état actuel et des entrées. +2. Chaque transition d'état est définie de manière univoque par les conditions actuelles, assurant une prévisibilité totale. +3. Les réponses du système à des signaux d'entrée sont constantes, sans dépendance de la qualité ou du nombre de ces signaux. +4. Idéal pour les applications où la précision du timing et la prédictibilité du comportement sont cruciales, comme dans les systèmes temps réel. +5. Le concept de déterminisme assure une fiabilité et une certitude dans le fonctionnement du système. + +**Système Non-Déterministe:** +1. L'état futur du système ne peut pas être prédit de manière précise à partir de son état actuel et des entrées, introduisant une certaine incertitude. +2. Plusieurs transitions d'état peuvent résulter des mêmes conditions initiales, rendant le comportement du système moins prévisible. +3. Les réponses du système à des signaux d'entrée peuvent varier en fonction de différents facteurs, tels que la charge du système ou les conditions d'exécution. +4. Souvent utilisé dans des applications où une flexibilité est nécessaire, mais peut poser des défis dans les systèmes où la prédictibilité est cruciale. +5. La gestion de l'incertitude et l'adaptabilité aux conditions changeantes sont des caractéristiques clés des systèmes non-déterministes. + + +### Management du temps (Timing) +Le timing peut avoir principalement deux formes différentes : +- *Timing absolu:* Une tâche sera exécutée à un moment dans le temps bien déterminé. +- *Timing relatif:* Une tâche sera exécutée à la suite de l'apparition d'un événement. + +Le timing peut par-contre aussi être classé comme suit : +- *Fixed Time:* Une tâche sera exécutée à un moment bien précis. +- *Fixed Time +/-:* L'exécution d'une tâche est démarrée dans un tout petit intervalle de temps avant ou après un moment bien précis. +- *Latest Time:* L'exécution d'une tâche est démarrée dans un intervalle de temps avant le moment le plus tard possible. +- *Earliest Time:* L'exécution d'une tâche est démarrée dans un intervalle de temps après le moment le plus tôt possible. + +### Management du traitement + +***Multitasking:*** +Traitement en thread: pseudo-parallèle + +***Multiprocessing:*** +Traintement en parallèle sur plusieurs coeur / processeurs. + +### Management des ressources + +***Mutex:*** +Une ressource peut être utilisée par un seul processus à la fois + +***Semaphore:*** +Une ressource peut être utilisée par un nombre limité de processus et sous des conditions bien précise + +### Approches pour la programmation temps réel + +***Synchrone:*** +Tout est planifié à l'avance pendant la phase de programmation. + +***Asynchrone:*** +Rien est planifié à l'avance. Toutes les décisions sont faites pendant d'exécution. + +#### Synchrone +Le timing des tâches cycliques est planifié précisément. +Ces dernières sont synchronisées (démarrées) par un signal d'une horloge. +La scéquence des tâches est déterminé à l'avance +Le temps cumulée de l'execution des tâches ne doit pas dépasser le temps d'un cycle. +![Programmation synchrone](system_synchron.png) + +*Avantages*
+- Timing précis +- Comportement déterministe + +*Avantages*
+- Inadaptée aux Processus Sporadiques : +- Inflexibilité + +#### Asynchrone + +Le timing des tâches est contrôlé soit par un RTOS soit par un XF. +Les tâches sont contrôlées par des événements et des appels de méthodes. +Des tâches parallèles sont sérialisées. +Le séquencement des tâches n'est pas déterminé. +![Programmation asynchrone](system_asynchron.png) + +Avantages
+- Flexibilité face aux changements de spécification du système. +- Implémentation possible au moyen de diagrammes d'états transitions. + +Inconvénients
+- Le RTOS ou le XF introduit des délais dans le traitement. +- Le timing n'est pas très précis, rendant les systèmes moins déterministes en temps. +- Systèmes toujours préemptifs, avec la possibilité d'interruptions dans le traitement + + +## Processus & Thread + +**Processus :** +Un processus est un programme en cours d'exécution, avec sa propre mémoire et ses ressources allouées. +Dans le contexte des systèmes temps réel, un processus est souvent appelé une "task" (tâche). +Il peut être lié à un Real-Time Operating System (RTOS) ou un Executive Framework (XF). +Chaque processus a son propre espace mémoire, ce qui signifie qu'il ne partage pas directement ses données avec d'autres processus. +La communication entre les processus se fait généralement à travers des messages. + +**Thread :** +- Un thread est une unité d'exécution plus légère au sein d'un processus. +- Contrairement à un processus, un thread partage le même espace mémoire que son processus parent. +- Les threads peuvent être exécutés de manière concurrente, ce qui permet un parallélisme au sein du processus. +- Les threads peuvent communiquer plus facilement entre eux, car ils ont un accès direct à la mémoire partagée. + +**Différence :** +- La principale différence réside dans la gestion de la mémoire. Les processus ont leur propre espace mémoire distinct, tandis que les threads partagent la même mémoire avec leur processus parent. +- Les threads permettent une exécution concurrente au sein du même processus, tandis que les processus sont généralement des entités indépendantes. +- En résumé, un processus est un programme complet en cours d'exécution, tandis qu'un thread est une unité d'exécution plus petite qui partage la mémoire avec d'autres threads dans le même processus. + +```plantuml +@startuml +binary "Red Task" as r +binary "Green Task" as g +binary "Blue Task" as b +concise "Task" as t +robust "Red Task" as rt + +@0 +r is low +g is low +b is low +t is {-} +rt is Sleep + +@1 +r is high +g is high +b is high +t is "" #blue +rt is ready + +@2 +r is low +g is low +b is low +t is "" #green + +@4 +t is "" #red +rt is running + +@6 +b is high +t is "" #blue +rt is interrupt + +@7 +b is low +t is "" #red +rt is running + +@9 +b is high +g is high +t is "" #blue +rt is interrupt + +@10 +b is low +g is low +t is "" #green + +@12 +t is "" #red +rt is running + +@13 +t is {-} +rt is Sleep + +@enduml +``` + +## Scheduling + + +## OSAL, OXF, RTOS + +**Différence entre OSAL, OXF et RTOS :** + +1. **OSAL (Operating System Abstraction Layer) :** + - L'OSAL est une couche d'abstraction qui fournit une interface uniforme pour accéder aux services du système d'exploitation sous-jacent. + - Il permet de rendre le code portable entre différents systèmes d'exploitation en masquant les détails spécifiques de chaque système. + - L'OSAL est utile dans des environnements où le système d'exploitation peut varier, permettant ainsi d'adapter le logiciel à différentes plates-formes sans changer le code applicatif. + +2. **OXF (Object Execution Framework) :** + - L'OXF est un framework qui fournit une infrastructure pour le développement d'applications temps réel orientées objet. + - Il facilite la modélisation d'objets réactifs, possédant souvent une machine à états, et offre une gestion efficace des événements. + - L'OXF peut être utilisé avec ou sans RTOS. Il fournit des fonctionnalités telles que la gestion des événements, la gestion des tâches, et la synchronisation entre les objets réactifs. + +3. **RTOS (Real-Time Operating System) :** + - Un RTOS est un système d'exploitation conçu pour répondre aux exigences temporelles strictes des systèmes temps réel. + - Il offre des fonctionnalités telles que l'ordonnancement des tâches, la gestion du temps, la synchronisation, et la gestion des interruptions pour assurer des réponses prévisibles aux événements. + - Un RTOS peut être utilisé en conjonction avec l'OXF pour développer des systèmes temps réel orientés objet. + +**Conclusion :** +- L'OSAL fournit une abstraction des services du système d'exploitation. +- L'OXF est un framework pour le développement d'applications temps réel orientées objet. +- Un RTOS est un système d'exploitation temps réel complet, offrant des services spécifiques pour répondre aux contraintes temporelles strictes. diff --git a/infotro/PTR/UML.md b/infotro/PTR/UML.md new file mode 100644 index 0000000..e511583 --- /dev/null +++ b/infotro/PTR/UML.md @@ -0,0 +1,118 @@ +

+UML +

+ +## Class + +### Association bidirectionnel +```plantuml +@startuml +A - B : " " +@enduml +``` + +### Association unidirectionnel +```plantuml +@startuml +class A +A -> B : " " +@enduml +``` + +### Aggregation bidirectionnel +```plantuml +@startuml +class A { +-ptrB: B* +} +class B { ++ptrA: A* +} +A "+ptrA" o- "-ptrB" B : " " +@enduml +``` + +```plantuml +@startuml +class A { +-ptrB: B* +} +A o- "1" B : " " +@enduml +``` + +### Composition (pas bidirectionnel) +```plantuml +@startuml +class A { +#aB: B +} +A *-> B : " " +@enduml +``` + +### Dépendance +```plantuml +@startuml + +A .> B : <>\n<>\n<>\n" " +@enduml +``` + +### Généralisation +```plantuml +@startuml +class "A extends B" as A +class B { +-myFunc(a: integer): void +} +A <|- B : " " +@enduml +``` + +### Implémentation +```plantuml +@startuml +interface B +A .|> B : " " +@enduml +``` + +## Timing +```plantuml +@startuml + +robust "Virus Timing" as vt +vt is Infection + +@2023/02/01 +vt is Incubation + +@2023/02/05 +vt is Illnes + +@2023/02/17 +vt is Infection + + +@enduml +``` + +## Sequence +```plantuml +@startuml +participant A as a +participant B as b + +a -> b: synchrone / call +a ->>(10) b++: asynchrone +b -->> a--: replay +a -\\ b : signal + +b -> b +b ->> b + +@enduml +``` + +## State machine diff --git a/infotro/PTR/system_asynchron.png b/infotro/PTR/system_asynchron.png new file mode 100644 index 0000000000000000000000000000000000000000..dc79409d7ccae7d74494e3be43460253bbf88304 GIT binary patch literal 51430 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 BwU__^ literal 0 HcmV?d00001 diff --git a/infotro/PTR/system_synchron.png b/infotro/PTR/system_synchron.png new file mode 100644 index 0000000000000000000000000000000000000000..f63bc0051183c89925567b00210d18bc586fd227 GIT binary patch literal 22086 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 L4yI~fxcUD9hX8in literal 0 HcmV?d00001 diff --git a/infotro/README.md b/infotro/README.md index 121b598..e98fd92 100644 --- a/infotro/README.md +++ b/infotro/README.md @@ -2,6 +2,8 @@ ## [PTR - Programmation Temps Réel](/infotro/PTR/) - [XF](/infotro/PTR/XF.md) +- [UML](/infotro/PTR/UML) +- [RealTime](/infotro/PTR/RealTime) ## [SDi - Système Distribué](/infotro/SDi/) diff --git a/infotro/SEm/README.md b/infotro/SEm/README.md index 72c5ea1..2525782 100644 --- a/infotro/SEm/README.md +++ b/infotro/SEm/README.md @@ -1,4 +1,17 @@ -# Taille des paquets de bits +

+Systèmes Embarqués +

-[PLA](/infotro/arm/PLA.md) -[ASM](/infotro/arm/ASM.md) \ No newline at end of file +# Assembleur +- [PLA - Programmation en Language Assemleur](/infotro/arm/PLA.md) +- [ASS - ASSembleur ARM](/infotro/arm/ASM.md) + +# C +- SPR - Sous PRogrammges +- PSC - Pointers and Memory in C +- LES - Les Entrées-Sorties +- INT - Les INTerruptions +- DMA - Direct Memory Access +- CAM - Memoire cache + +# CI / TDD diff --git a/infotro/SEm/SPR.md b/infotro/SEm/SPR.md new file mode 100644 index 0000000..14d4777 --- /dev/null +++ b/infotro/SEm/SPR.md @@ -0,0 +1,6 @@ +

+Sous programmes +

+ +# Intoduction + \ No newline at end of file diff --git a/infotro/_navbar.md b/infotro/_navbar.md index 79efa63..352264a 100644 --- a/infotro/_navbar.md +++ b/infotro/_navbar.md @@ -1,5 +1,7 @@ * [PTR - Programmation Temps Réel](/infotro/PTR/) * [XF](/infotro/PTR/XF) + * [UML](/infotro/PTR/UML) + * [RealTime](/infotro/PTR/RealTime) * [SDi - Systèmes Distribués](/infotro/SDi) * [Transmission process](/infotro/SDi/transmission_process.md) * [Eln - Électronique](/infotro/Eln/) diff --git a/style/_coverpage.md b/style/_coverpage.md index 576ac9e..3ee1bda 100644 --- a/style/_coverpage.md +++ b/style/_coverpage.md @@ -1,7 +1,12 @@ -# Yggdrasil -## Collections of notes around IT, OT and other geeks stuff +

+Yggdrasil +

+ +

+Collections of notes around IT, OT and other geeks stuff +