Débuté sous Linux embarqué !
Fermé
youscoul
Messages postés
125
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
7 janvier 2013
-
5 janv. 2013 à 22:51
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 7 janv. 2013 à 23:57
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 7 janv. 2013 à 23:57
A voir également:
- Débuté sous Linux embarqué !
- Linux mint - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Distribution linux - Guide
- Play on linux - Télécharger - Divers Utilitaires
3 réponses
mamiemando
Messages postés
33077
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2024
7 748
6 janv. 2013 à 01:49
6 janv. 2013 à 01:49
Peut-être que tu devrais commencer par lire les sites dédiés comme par exemple :
http://embeddedcraft.org/embedlinuxdesktoplinux.html
1) Si c'est comme un linux normal, une fois le noyau (kernel) chargé, celui-ci lance le processus init qui va lancer en cascade toute une série de processus.
2) Il existe sans doute tout simplement une librairie ou une fonction en C qui permet de travailler directement avec le port série.
http://www.hotels-of-london.com/easyswcom/
3) Je n'ai pas compris ce que tu entendais par séquentiel. Je ne pense pas qu'il y ait de différence, concrètement, ton OS déroule le (les) fil(s) d'exécution de ton programme et dans chaque fil d'exécution, il exécute chaque instruction séquentiellement. Tant que tu n'utilises pas de threads ou de mécanismes équivalents (voir epoll) tu n'as qu'un seul fil d'exécution.
4) Je pense que cette question n'a pas vraiment de sens non plus. Sous linux une application s'appuie sur l'OS, qui s'appuie sur le noyau, qui interagit avec le matériel. Ces deux parties sont complètement segmentées.
Le noyau permet à l'OS de s'abstraire le plus possible des considérations matériel. Pour faire très simple tu peux voir le noyau comme une sorte de "pilote" pour l'ensemble de ton matériel.
Maintenant il faut se demander ce que tu veux développer : s'agit-il d'un programme qui tourne dans l'espace utilisateur ou dans l'espace noyau.
https://fr.wikipedia.org/wiki/Espace_noyau
https://fr.wikipedia.org/wiki/Espace_utilisateur
- Typiquement un pilote est spécifique à un matériel donné, il est donc développé dans l'espace matériel. De manière générale les considérations "bas niveau" (gestion du système de fichiers, du matériel etc...) sont gérés par le noyau ou un module et tourne donc dans l'espace noyau.
- Dans l'espace utilisateur tourne les applications, en particulier celles lancées ou directement manipulée par un utilisateur (par exemple son navigateur internet, son environnement graphique, etc...).
Bonne chance
http://embeddedcraft.org/embedlinuxdesktoplinux.html
1) Si c'est comme un linux normal, une fois le noyau (kernel) chargé, celui-ci lance le processus init qui va lancer en cascade toute une série de processus.
2) Il existe sans doute tout simplement une librairie ou une fonction en C qui permet de travailler directement avec le port série.
http://www.hotels-of-london.com/easyswcom/
3) Je n'ai pas compris ce que tu entendais par séquentiel. Je ne pense pas qu'il y ait de différence, concrètement, ton OS déroule le (les) fil(s) d'exécution de ton programme et dans chaque fil d'exécution, il exécute chaque instruction séquentiellement. Tant que tu n'utilises pas de threads ou de mécanismes équivalents (voir epoll) tu n'as qu'un seul fil d'exécution.
4) Je pense que cette question n'a pas vraiment de sens non plus. Sous linux une application s'appuie sur l'OS, qui s'appuie sur le noyau, qui interagit avec le matériel. Ces deux parties sont complètement segmentées.
applications ------------------ OS ---------------- kernel | modules ---------------- hardware
Le noyau permet à l'OS de s'abstraire le plus possible des considérations matériel. Pour faire très simple tu peux voir le noyau comme une sorte de "pilote" pour l'ensemble de ton matériel.
Maintenant il faut se demander ce que tu veux développer : s'agit-il d'un programme qui tourne dans l'espace utilisateur ou dans l'espace noyau.
https://fr.wikipedia.org/wiki/Espace_noyau
https://fr.wikipedia.org/wiki/Espace_utilisateur
- Typiquement un pilote est spécifique à un matériel donné, il est donc développé dans l'espace matériel. De manière générale les considérations "bas niveau" (gestion du système de fichiers, du matériel etc...) sont gérés par le noyau ou un module et tourne donc dans l'espace noyau.
- Dans l'espace utilisateur tourne les applications, en particulier celles lancées ou directement manipulée par un utilisateur (par exemple son navigateur internet, son environnement graphique, etc...).
Bonne chance
youscoul
Messages postés
125
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
7 janvier 2013
4
7 janv. 2013 à 21:54
7 janv. 2013 à 21:54
Merci pour les points 1 et 2. Par contre sur le troisième point, je pensais que le rôle de l'OS était justement de faire la gestion des évènements qui se déroulent autour de ton programme. Je croyais qu'utiliser un OS te permettrait d'utiliser les fonctions de gestion d'évènement toute faite (Par exemple: réception d'un flux de message sur UART). Si j'ai un OS et que je dois encore implementer mes fonctions d'interruption sur l'UART, alors je ne vois pas le rôle de l'OS. A moins que la reception pourra se faire dans un Thread !!!! peut être bien lol......
En tout cas, plus je vous lis plus j'ai des reponses à mes questions. Je n'ai pas tout à fait commencer mon projet, donc je souhaiterai vos avis sur quelle type de carte me conseillerez-vous afin de pouvoir s'amuser à developper de petits projets autour d'un OS Linux embarqué ?
En gros, je souhaiterai une carte avec interfaces serie (232 ou 485 ou même USB) et ethernet IP.
Merci d'avance.
Yous
En tout cas, plus je vous lis plus j'ai des reponses à mes questions. Je n'ai pas tout à fait commencer mon projet, donc je souhaiterai vos avis sur quelle type de carte me conseillerez-vous afin de pouvoir s'amuser à developper de petits projets autour d'un OS Linux embarqué ?
En gros, je souhaiterai une carte avec interfaces serie (232 ou 485 ou même USB) et ethernet IP.
Merci d'avance.
Yous
mamiemando
Messages postés
33077
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2024
7 748
7 janv. 2013 à 23:57
7 janv. 2013 à 23:57
Alors je ne vois pas le rôle de l'OS.
Prends une fonction au hasard, par exemple malloc. Cette fonction alloue de la mémoire. La manière dont la mémoire sous linux et sous windows diffère, car chaque OS a sa propre stratégie. La fonction malloc est donc implémentée différemment dans la libc sous windows et sous linux. En ce sens la libc est dépendante de l'OS.
Une fonction malloc n'a d'effet parce qu'elle agit sur des éléments sous-jacents (noyau, puis matériel), car un moment il faut bien finir par interagir avec le matériel. En ce sens le noyau et l'OS sont utilisé par ton programme.
C'est pour ça que je ne comprends pas vraiment ta question, c'est comme si tu me disais l'encre ça sert à rien dans un stylo. À un moment il faut bien pouvoir écrire, sinon ce stylo ne sert à rien :-)
A moins que la reception pourra se faire dans un Thread !!!!
Rien à voir. Un thread est juste un processus fils créé à partir d'un processus parent. Chaque processus exécute son propre fil d'exécution et tourne "en parallèle" (en fonction du nombre de CPU, de s'ils sont disponibles, etc...).
Je croyais qu'utiliser un OS te permettrait d'utiliser les fonctions de gestion d'évènement toute faite (Par exemple: réception d'un flux de message sur UART).
Oui et c'est typiquement ce qu'il va se passer. Si ton noyau gère un port série alors ton OS peut espérer interagir avec le port série. Dès lors les fonctions de la libc qui travaillent avec ont une chance de marcher.
Par exemple sous linux, un port série est représenté par un device. Un device est un fichier qui n'a pas d'existence sur le disque dur au même titre qu'un dossier ou qu'un fichier de données. Mais après tout, pourquoi se limiter à des fichiers de données. En effet, comme une arborescence de fichiers n'est qu'une vue de l'esprit, pourquoi ne pas y intégrer des fichiers un peu spéciaux ? C'est le choix qui a été fait sous linux, et on peut donc représenter avec des fichiers plein de choses (des sockets, des pipes, des liens symboliques, des hard links, des devices etc...). Ainsi la notion de fichiers est beaucoup plus générale sous linux que sous windows.
Un device est une interface proposé par l'OS pour manipuler un matériel sous-jacent. Sous linux les devices sont rangés dans /dev. Par exemple écrire dans le device associé à une carte son revient à jouer un son, écrire des bits dans un device associé à une partition de données revient à modifier bit à bit ce qui est stocké sur la partition etc. Pour un port série j'imagine que tu peux lire ou écrire des données (selon que tu les reçois ou que tu les émets).
Comme tu le vois dans cet exemple, le port série est représenté par un fichier /dev/ttySMX0 (ici via le langage shell et via le programme stty)
http://www.armadeus.org/wiki/index.php?title=Uart
En langage C pour ouvrir un fichier on utilise la fonction fopen, qui retourne un file descriptor (fd). À partir de ce file descriptor, on peut déclencher des opérations de lecture ou d'écriture. Ici tu as un exemple poù le programme est écrit en langage C :
http://pficheux.free.fr/articles/lmf/serial/
Bonne chance
Prends une fonction au hasard, par exemple malloc. Cette fonction alloue de la mémoire. La manière dont la mémoire sous linux et sous windows diffère, car chaque OS a sa propre stratégie. La fonction malloc est donc implémentée différemment dans la libc sous windows et sous linux. En ce sens la libc est dépendante de l'OS.
Une fonction malloc n'a d'effet parce qu'elle agit sur des éléments sous-jacents (noyau, puis matériel), car un moment il faut bien finir par interagir avec le matériel. En ce sens le noyau et l'OS sont utilisé par ton programme.
C'est pour ça que je ne comprends pas vraiment ta question, c'est comme si tu me disais l'encre ça sert à rien dans un stylo. À un moment il faut bien pouvoir écrire, sinon ce stylo ne sert à rien :-)
A moins que la reception pourra se faire dans un Thread !!!!
Rien à voir. Un thread est juste un processus fils créé à partir d'un processus parent. Chaque processus exécute son propre fil d'exécution et tourne "en parallèle" (en fonction du nombre de CPU, de s'ils sont disponibles, etc...).
Je croyais qu'utiliser un OS te permettrait d'utiliser les fonctions de gestion d'évènement toute faite (Par exemple: réception d'un flux de message sur UART).
Oui et c'est typiquement ce qu'il va se passer. Si ton noyau gère un port série alors ton OS peut espérer interagir avec le port série. Dès lors les fonctions de la libc qui travaillent avec ont une chance de marcher.
Par exemple sous linux, un port série est représenté par un device. Un device est un fichier qui n'a pas d'existence sur le disque dur au même titre qu'un dossier ou qu'un fichier de données. Mais après tout, pourquoi se limiter à des fichiers de données. En effet, comme une arborescence de fichiers n'est qu'une vue de l'esprit, pourquoi ne pas y intégrer des fichiers un peu spéciaux ? C'est le choix qui a été fait sous linux, et on peut donc représenter avec des fichiers plein de choses (des sockets, des pipes, des liens symboliques, des hard links, des devices etc...). Ainsi la notion de fichiers est beaucoup plus générale sous linux que sous windows.
Un device est une interface proposé par l'OS pour manipuler un matériel sous-jacent. Sous linux les devices sont rangés dans /dev. Par exemple écrire dans le device associé à une carte son revient à jouer un son, écrire des bits dans un device associé à une partition de données revient à modifier bit à bit ce qui est stocké sur la partition etc. Pour un port série j'imagine que tu peux lire ou écrire des données (selon que tu les reçois ou que tu les émets).
Comme tu le vois dans cet exemple, le port série est représenté par un fichier /dev/ttySMX0 (ici via le langage shell et via le programme stty)
http://www.armadeus.org/wiki/index.php?title=Uart
En langage C pour ouvrir un fichier on utilise la fonction fopen, qui retourne un file descriptor (fd). À partir de ce file descriptor, on peut déclencher des opérations de lecture ou d'écriture. Ici tu as un exemple poù le programme est écrit en langage C :
http://pficheux.free.fr/articles/lmf/serial/
Bonne chance