λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Quicktime

Πώς εκτελέστηκε το πρόγραμμα διακοπής χρονοδιακόπτη;

Η εκτέλεση ενός προγράμματος διακοπής χρονοδιακόπτη ενεργοποιείται από έναν χρονομετρητή υλικού που φτάνει σε προκαθορισμένη τιμή. Ακολουθεί μια ανάλυση της διαδικασίας:

1. Ρύθμιση χρονοδιακόπτη υλικού:

* Αρχικοποίηση: Ο χρονοδιακόπτης αρχικοποιείται με μια συγκεκριμένη τιμή (count) που αντιπροσωπεύει το επιθυμητό χρονικό διάστημα. Αυτό μπορεί να περιλαμβάνει τη ρύθμιση των καταχωρητών στο υλικό του χρονοδιακόπτη. Ο χρονοδιακόπτης χρειάζεται επίσης τη λειτουργία του (π.χ., μία βολή για μία μόνο σκανδάλη, περιοδική για επαναλαμβανόμενες διακοπές).

* Πηγή ρολογιού: Ο χρονομετρητής συνδέεται με μια πηγή ρολογιού (π.χ. ρολόι συστήματος). Αυτό το ρολόι αυξάνει τον μετρητή του χρονοδιακόπτη.

2. Χρονοδιακόπτη παραγωγή διακοπής:

* Αντίστοιχος που φτάνει στο μηδέν: Καθώς το ρολόι αυξάνει τον μετρητή του χρονοδιακόπτη, τελικά φτάνει στο μηδέν (ή έναν καθορισμένο αριθμό τερματικών). Αυτό το συμβάν ενεργοποιεί ένα σήμα διακοπής υλικού.

* Αίτημα διακοπής (IRQ): Ο χρονομετρητής υλικού στέλνει ένα αίτημα διακοπής (IRQ) στον επεξεργαστή. Αυτό το αίτημα σηματοδοτεί ότι ένα συμβάν χρειάζεται άμεση προσοχή.

3. Διακοπή χειρισμού από τη CPU:

* Διακοπή αναγνωρισμένος: Η CPU αναγνωρίζει τη διακοπή, αναστέλλοντας την τρέχουσα εκτέλεση της. Η προτεραιότητα της διακοπής του χρονοδιακόπτη καθορίζει εάν χειρίζεται αμέσως ή μετά από διακοπές υψηλότερης προτεραιότητας.

* Εξοικονόμηση πλαισίου: Η CPU αποθηκεύει την κατάσταση του τρέχοντος προγράμματος (μητρώα, μετρητής προγράμματος κ.λπ.) σε μια στοίβα. Αυτό είναι ζωτικής σημασίας για την επανάληψη της εκτέλεσης αργότερα.

* Πίνακας διάνυσμα διακοπής: Η CPU συμβουλεύει τον πίνακα διανυσμάτων διακοπής για να εντοπίσει τη διεύθυνση μνήμης της ρουτίνας υπηρεσίας διακοπής (ISR) που σχετίζεται με τη διακοπή του χρονοδιακόπτη.

* Μεταβείτε στο ISR: Η CPU πηδάει στη θέση μνήμης του ISR του Timer Cutrupt.

4. Ρουτίνα διακοπής (ISR) εκτέλεση:

* Κωδικός ISR: Αυτό είναι το συγκεκριμένο κομμάτι κώδικα που έχει σχεδιαστεί για να χειρίζεται τη διακοπή του χρονοδιακόπτη. Τα καθήκοντά του μπορεί να περιλαμβάνουν:

* Ενημέρωση ενός μετρητή: Παρακολούθηση του χρόνου που παρέμενε.

* Ενεργοποίηση μιας εξόδου: Έλεγχος LED ή άλλου περιφερειακού.

* Εργασίες προγραμματισμού: Εκτέλεση άλλων λειτουργιών του προγράμματος σε συγκεκριμένα διαστήματα.

* Δεδομένα αισθητήρα ανάγνωσης: Δειγματοληψία δεδομένων από αισθητήρες σε τακτά χρονικά διαστήματα.

* Επικοινωνία: Αποστολή/λήψη δεδομένων μέσω δικτύου ή σειριακής θύρας.

* Κρατώντας το σύντομο: Τα ISR πρέπει να διατηρούνται όσο το δυνατόν συντομότερα για να ελαχιστοποιηθεί ο χρόνος που διακόπτεται το κύριο πρόγραμμα. Οι μακροχρόνιες εργασίες θα πρέπει να εκφορτωθούν στο κύριο πρόγραμμα μετά το ISR θέτει μια σημαία ή ενημερώνει μια κοινή δομή δεδομένων.

5. Επιστροφή από τη διακοπή:

* Πλαίσιο αποκατάστασης: Το ISR αποκαθιστά την κατάσταση της CPU που σώθηκε νωρίτερα (μητρώα, μετρητής προγράμματος κλπ.).

* Επιστροφή από τη διακοπή (IRET ή RTI): Μια ειδική εντολή (IRET ή RTI, ανάλογα με την αρχιτεκτονική) εκτελείται για να επιστρέψει τον έλεγχο στο κύριο πρόγραμμα. Η CPU συνεχίζει την εκτέλεση από το σημείο όπου έμεινε πριν από τη διακοπή.

Παράδειγμα (εννοιολογικός κώδικας C):

`` `c

// χρονοδιακόπτης ISR

void timer_isr () {

Στατικός μη υπογεγραμμένος μετρητής int =0; // Αντιμετωπίστε το χρόνο παρακολούθησης

μετρητής ++;

αν (Counter ==1000) {// Ελέγξτε αν έχουν συμβεί διακοπές 1000 χρονοδιακόπτη

Counter =0;

// Εκτελέστε κάποια ενέργεια, π.χ., εναλλαγή LED

TOGGLE_LED ();

}

}

`` `

Σημαντικές εκτιμήσεις:

* Διακοπή καθυστέρησης: Ο χρόνος που απαιτείται μεταξύ του αιτήματος διακοπής και της έναρξης του ISR είναι η καθυστέρηση διακοπής. Είναι σημαντικό να διατηρείτε αυτό το χαμηλό για εφαρμογές σε πραγματικό χρόνο.

* Διακοπή προτεραιότητα: Οι πολλαπλές διακοπές μπορούν να εμφανιστούν ταυτόχρονα. Η CPU χειρίζεται αυτά με βάση τις προτεραιότητές τους.

* Επαναπροσδιορισμός: Οι ISR πρέπει να είναι επανεισερχόμενες. Σημαίνει ότι μπορούν να διακοπεί ξανά πριν ολοκληρώσουν την εκτέλεση τους χωρίς να προκαλέσουν διαφθορά δεδομένων.

* Κοινόχρηστοι πόροι: Απαιτούνται προσεκτικοί μηχανισμοί συγχρονισμού (π.χ. σηματοφόρα, mutexes) εάν το ISR αποκτήσει πρόσβαση σε κοινούς πόρους που χρησιμοποιούνται επίσης από το κύριο πρόγραμμα.

Αυτή η διαδικασία ισχύει για ένα ευρύ φάσμα μικροελεγκτών και ενσωματωμένων συστημάτων. Οι συγκεκριμένες λεπτομέρειες (ονόματα μητρώου, οδηγίες) θα διαφέρουν ανάλογα με την αρχιτεκτονική υλικού.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα