Οδηγός Ασύρματου ικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux

Σχετικά έγγραφα
Οδηγός Ασύρματου Δικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux

Οδηγός Ασύρματου Δικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux

Οδηγός Ασύρματου Δικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux

Οδηγός Ασύρµατου ικτύου Αισθητήρων στο Λειτουργικό Σύστηµα Linux

Οδηγός Ασύρματου Δικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux

ιεργασία Α Πυρήνας Linux Υλικό

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων. File Systems

Εισαγωγή στην Πληροφορική

Εικονική Μνήμη (1/2)

Εισαγωγή στην Πληροφορική

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Εισαγωγή στον προγραμματισμό στον πυρήνα του Linux

Λειτουργικά Συστήματα (Λ/Σ)

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Οργάνωση Υπολογιστών (IΙI)

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Επιτεύγµατα των Λ.Σ.

Εισαγωγή Χαρακτηριστικά του πυρήνα του Linux Ο ρόλος του λειτουργικού συστήματος...7

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

Λιβανός Γιώργος Εξάμηνο 2017Β

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μηχανισμός Διαδιεργασιακής Επικοινωνίας Μηδενικών Αντιγράφων για το ΛΣ Linux με Δωρεά Σελίδων Εικονικής Μνήμης

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Λειτουργικά Συστήματα Ι. Συστήματα Εισόδου/Εξόδου (I/O --- Input/Output)

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Ειδικό Τεύχος : Linux και Ηχος. Η Υποδοµή

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

Εικονική Μνήμη (Virtual Μemory)

Κρυπτογραφική συσκευή VirtIO για QEMU-KVM

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

ΛΟΓΙΣΜΙΚΟ (software)

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Αρχιτεκτονική Υπολογιστών

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Κεφάλαιο 3. Διδακτικοί Στόχοι

Περιγραφή και Έλεγχος ιεργασιών

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

Αρχιτεκτονική Υπολογιστών

Λειτουργικά Συστήματα (ΗΥ321)

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

Λειτουργικά Συστήματα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Λειτουργικά Συστήματα. Εισαγωγή

Εικονική Μνήμη (Virtual Μemory)

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Λειτουργικά Συστήματα

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Διαχείριση Κύριας Μνήμης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

Συστήματα Αρχείων (Σ.Α.)

Μεταφραστής (Compiler)

Αρχιτεκτονική Υπολογιστών

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Αρχεία. Προγραμματισμός II 1

Κύριες Υπηρεσίες ενός ΛΣ

Ενότητα Β1 κεφ.2 ο «Σο Εσωτερικό του Τπολογιστή»

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

Εργαστήριο Λειτουργικών Συστημάτων. Εισαγωγή

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Το εσωτερικό του Υπολογιστή. Χρήστος Ρέτσας 1

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος Οδηγός εργαστηριακής άσκησης Συσκευή κρυπτογράφησης για QEMU-KVM

Αρχεία. Προγραμματισμός II 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

WIRELESS SENSOR NETWORKS (WSN)

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

ΑΣΚΗΣΗ: ΔΙΑΧΕΙΡΙΣΗ ΚΑΤΑΛΟΓΟΥ ΑΡΧΕΙΩΝ ΕΝΟΣ DIRECTORY. Μέρος Α`

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Οδεγόο Αζύξκαηνπ Γηθηύνπ Αηζζεηήξωλ ζην Λεηηνπξγηθό ύζηεκα Linux

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Διαφορές single-processor αρχιτεκτονικών και SoCs

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βιβλιοθήκη stdio. Προγραμματισμός II 1

ΚΕΦΑΛΑΙΟ 1 Ψηφιακός Κόσμος

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Κεφάλαιο 2.4: Εργασία με εικονίδια

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Οδηγός Ασύρματου ικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux Εργαστήριο Λειτουργικών Συστημάτων 3η εργαστηριακή άσκηση

Οργάνωση ενός σύγχρονου Λ.Σ. ιεργασία 1 ιεργασία 2 κλήσεις συστήματος ιεργασία 3 Χώρος χρήστη απομονωμένη εκτέλεση χρήση κλήσεων συστήματος Υπηρεσίες του πυρήνα Οδηγοί συσκευών εντολές I/O Υλικό Χώρος πυρήνα απεριόριστη πρόσβαση στη μνήμη ελεύθερη επικοινωνία με το υλικό

Ο πυρήνας του Linux ιαχείριση διεργασιών χρονοδρομολόγηση σε CPUs ιαχείριση μνήμης ιαδικτύωση (TCP/IP) Υποστήριξη συστημάτων αρχείων ιαχείριση συσκευών (Device Drivers)

Kernel modules Τμήματα κώδικα Επέκταση των δυνατοτήτων του πυρήνα Οδηγοί συσκευής, συστήματα αρχείων υναμική εισαγωγή / αφαίρεση Ενώ ο πυρήνας εκτελείται Απαιτούνται δικαιώματα root Εκτέλεση σε kernelspace

Οδηγοί συσκευής userspace kernelspace ιεργασία Α ιεργασία Β κλήσεις συστήματος Πυρήνας Linux Οδηγός συσκευής κλήσεις I/O Απόκρυψη των λεπτομερειών Καθορισμένο interface με τον πυρήνα υνατότητα δυναμικής εισαγωγής ως module Εφαρμογές ανεξάρτητες από το hardware

sensor0 Driver για ένα πραγματικό σύστημα

Μα υπάρχει ήδη driver! Application TTY Core layer /dev/ttyusb1 User Standard line discipline Kernel Serial over USB driver Hardware Wireless network base station

Ναι, αλλά Όλα τα πακέτα δεδομένων, χωρίς διάκριση, στο /dev/ttyusb1 Για μόνο μία διεργασία εν υπάρχει μηχανισμός για λεπτομερή ανάθεση δικαιωμάτων πρόσβασης ανά χρήστη, ανά αισθητήρα, ανά μέτρηση ανάγκη για διακριτή αντιμετώπιση

Οπότε Lunix:TNG driver για τον πυρήνα του Linux Χωριστό αρχείο συσκευής ανά αισθητήρα και μέτρηση /dev/lunix0-{batt, temp, light} /dev/lunix1-{batt, temp, light} Ταυτόχρονη πρόσβαση από πολλές διεργασίες Περιορισμός δικαιωμάτων ανά αρχείο

Υπό κατασκευή σύστημα /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. User Kernel Hardware Wireless network base station

Οδηγοί συσκευών στο Linux Συσκευές χαρακτήρων τερματικά, σειριακές/παράλληλες θύρες, κάρτες ήχου Συσκευές block Σκληροί δίσκοι, CD-ROM, δισκέτες Συσκευές δικτύου Κάρτες δικτύου, PPP

Παράδειγμα χρήσης οδηγού (1) user@utopia:~/lunix-tng$ make gcc -Wall -o mk_lookup_tables mk_lookup_tables.c -lm./mk_lookup_tables >lunix-lookup.h make -C /lib/modules/2.6.25/build M=/home/user/lunix-tng modules make[1]: Entering directory `/usr/src/linux-source-2.6.25' CC [M] /home/user/lunix-tng/lunix-module.o CC [M] /home/user/lunix-tng/lunix-chrdev.o CC [M] /home/user/lunix-tng/lunix-ldisc.o CC [M] /home/user/lunix-tng/lunix-protocol.o CC [M] /home/user/lunix-tng/lunix-sensors.o LD [M] /home/user/lunix-tng/lunix.o Building modules, stage 2. MODPOST 1 modules CC /home/user/lunix-tng/lunix.mod.o LD [M] /home/user/lunix-tng/lunix.ko make[1]: Leaving directory `/usr/src/linux-source-2.6.25' gcc -Wall -o lunix-attach lunix-attach.c user@utopia:~/lunix-tng$ make

Παράδειγμα χρήσης οδηγού (2) user@utopia:~/lunix-tng$ su Password: utopia:~# cd ~user/lunix-tng utopia:/home/user/lunix-tng# insmod./lunix.ko utopia:/home/user/lunix-tng#./lunix_dev_nodes.sh utopia:/home/user/lunix-tng#./lunix-attach /dev/ttyusb1 tty_open: looking for lock tty_open: trying to open /dev/ttyusb1 tty_open: /dev/ttyusb1 (fd=3) Line discipline set on /dev/ttyusb1, press ^C to release the TTY... Οπότε μετά: user@utopia:~$ cat /dev/lunix2-temp 27.791 27.791 27.693 27.791 ^C

Υπό κατασκευή σύστημα /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. User Kernel Hardware Wireless network base station Στρώμα συσκευής χαρακτήρων Στρώμα συλλογής δεδομένων

Στρώμα συσκευής χαρακτήρων /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. User Kernel Hardware Wireless network base station

Τα πάντα είναι αρχεία $ ls l /dev crw-rw---- 1 root audio 14, 3 Jul 5 2000 /dev/dsp crw-rw-rw- 1 root root 1, 3 Jul 21 2002 /dev/null crw------- 1 root root 4, 1 Apr 22 18:10 /dev/tty1 crw-rw---- 1 root dialout 4, 64 Jul 5 2000 /dev/ttys0 crw-rw-rw- 1 root root 1, 5 Jul 21 2002 /dev/zero brw-rw---- 1 root disk 3, 0 Jul 5 2000 /dev/hda brw-rw---- 1 root floppy 2, 0 Jul 5 2000 /dev/fd0 Ειδικά αρχεία, πύλες πρόσβασης σε συσκευές Κατάλογος /dev Κλήσεις συστήματος στο ειδικό αρχείο open, close, read, write, lseek, ioctl

ιεπαφή με τον πυρήνα του Linux (1) $ ls l /dev crw-rw---- 1 root audio 14, 3 Jul 5 2000 /dev/dsp crw-rw-rw- 1 root root 1, 3 Jul 21 2002 /dev/null crw------- 1 root root 4, 1 Apr 22 18:10 /dev/tty1 crw-rw---- 1 root dialout 4, 64 Jul 5 2000 /dev/ttys0 crw-rw-rw- 1 root root 1, 5 Jul 21 2002 /dev/zero brw-rw---- 1 root disk 3, 0 Jul 5 2000 /dev/hda brw-rw---- 1 root floppy 2, 0 Jul 5 2000 /dev/fd0 Major / minor numbers major: Είδος συσκευής, καθορίζει τον οδηγό minor: Καθορίζει τη συσκευή, πχ. αριθμός σειριακής θύρας έσμευση major number με register_chrdev_region

ιεπαφή με τον πυρήνα του Linux (2) int (*open) (struct inode *, struct file *); void (*release) (struct inode *, struct file *); ssize_t (*read) (struct file *, char *, size_t, loff_t); ssize_t (*write) (struct file *, const char *, size_t, loff_t); loff_t (*llseek) (struct file *, loff_t, int); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); Υπηρεσίες οδηγού συσκευής χαρακτήρων Υλοποιούν κλήσεις συστήματος Εκτελούνται από τον πυρήνα Κατά την πρόσβαση στο ειδικό αρχείο Μέσω της δομής file_operations

ιεπαφή με τον πυρήνα του Linux (3) μέθοδος open μέθοδος read μέθοδος write μέθοδος llseek μέθοδος ioctl.. δομή file_operations για τον οδηγό lunix_open lunix_read lunix_write lunix_llseek lunix_ioctl κώδικας οδηγού συσκευής ομή file_operations Για κάθε λειτουργία, δείκτης σε αντίστοιχη συνάρτηση Μία για κάθε major number ήλωση κατά την καταχώρηση νέας συσκευής χαρακτήρων (cdev_add)

ιεπαφή με τον πυρήνα του Linux (4) διεργασία διεργασίαχρήστη ομή ομήfile file /dev/lunix /dev/lunix read(fd, ) open( /dev/lunix ) major =? Συλλογή Συλλογή από απόδείκτες σε σεσυναρτήσεις συναρτήσεις δομή file_operations για τον οδηγό lunix_open lunix_open lunix_read lunix_read lunix_write lunix_write lunix_llseek lunix_llseek lunix_ioctl lunix_ioctl κώδικας οδηγού συσκευής

Στρώμα συλλογής δεδομένων /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. User Kernel Hardware Wireless network base station

Lunix:TNG line discipline User Application user buffer read() /dev/ttyusb1 User TTY Core (struct file_operations *) tty_read Standard line discipline (struct tty_disc *) Serial over USB driver (struct tty_driver *) Serial Device tty buffer flip buffer ldisc read ldisc receive_buf handler interrupt Incoming data Kernel to Lunix:TNG protocol & sensors Hardware data transfer function call

Στρώμα συλλογής δεδομένων (2) /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. User Kernel Hardware Wireless network base station Επεξεργασία πρωτοκόλλου Αποθήκευση σε απομονωτές

Ζητήματα Υλοποίησης (1) Πρόσβαση σε δεδομένα χώρου χρήστη copy_to_user(), copy_from_user() Πώς πέφτουν οι διεργασίες για ύπνο; Μπλοκάρισμα διεργασιών σε ουρές αναμονής εν είναι έτοιμες προς εκτέλεση, δεν καταναλώνουν χρόνο CPU Κρίσιμα τμήματα στον κώδικα του πυρήνα Σηματοφορείς, spinlocks

Ζητήματα Υλοποίησης (2) Η read() είναι το κέντρο της υλοποίησης Κρατάει την μορφοποιημένη τιμή σε προσωρινό χώρο μνήμης ίνει από εκεί bytes ανάλογα με το f_pos Όταν το f_pos είναι μηδέν τι γίνεται; Υπάρχουν φρέσκα δεδομένα; Χρήση timestamps Αν δεν υπάρχουν πρέπει να πέφτει για ύπνο Όταν έρθουν ξυπνάει και τα επιστρέφει 2 7. 3 2 9

Ζητήματα Υλοποίησης (3) /dev/ttyusb1 Standard line disc. Application TTY Core layer Lunix:TNG line discipline Serial over USB driver Application /dev/lunix0-batt, /dev/lunix1-temp Lunix:TNG character dev Lunix:TNG sensor buffers Lunix:TNG protocol proc. Ζ Ζ z User Kernel Hardware Wireless network base station

Πρακτικά Ζητήματα Υλοποίηση μέσα σε εικονική μηχανή root privilege σε Debian μέσα σε Virtualbox Από πού ξεκινάω; make στον έτοιμο κώδικα, ανάγνωση του lunix-sensors.c, προσθήκες στα lunixchrdev.{h,c} Σας δίνεται σκελετός με σχόλια Kernel logging, printk, /var/log/kern.log Linux Cross Reference (LXR)

Έλεγχος και πιθανές επεκτάσεις Έλεγχος σωστής λειτουργίας Από userspace, με ταυτόχρονα cat Πιθανές επεκτάσεις Υποστήριξη ioctl() για raw / cooked modes Υποστήριξη memory-mapped I/O με mmap() Userspace πρόγραμμα για καταγραφή και παρουσίαση μετρήσεων

Ιστοσελίδα του μαθήματος http://courses.cslab.ece.ntua.gr (Moodle)

Βιβλιογραφία Linux Device Drivers, 3nd Edition, Jonathan Corbet, Alessandro Rubini, and Greg Kroah- Hartman. http://lwn.net/kernel/ LDD3