Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Πανταζή Δημητρίου του Σταύρου Αριθμός Μητρώου: 7093 Θέμα «Υλοποίηση E-Book Reader με τη βοήθεια προηγμένου ενσωματωμένου συστήματος Υλικού/Λογισμικού» Επιβλέπων Σταύρος Κουμπιάς Αριθμός Διπλωματικής Εργασίας: Πάτρα, Φεβρουάριος 2014

2 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Υλοποίηση E-Book Reader με τη βοήθεια προηγμένου ενσωματωμένου συστήματος Υλικού/Λογισμικού» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Πανταζή Δημητρίου του Σταύρου Αριθμός Μητρώου: 7093 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Σταύρος Κουμπιάς Καθηγητής Ευθύμιος Χούσος Καθηγητής

3 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Υλοποίηση E-Book Reader με τη βοήθεια προηγμένου ενσωματωμένου συστήματος Υλικού/Λογισμικού» Φοιτητής: Δημήτριος Πανταζής Επιβλέπων: Σταύρος Κουμπιάς Περίληψη Η παρούσα διπλωματική εργασία περιγράφει τη διαδικασία της μελέτης, του σχεδιασμού και και της υλοποίησης μίας συσκευής ανάγνωσης ηλεκτρονικών βιβλίων (e-book reader). Στόχος μας είναι η κατασκευή ενός ολοκληρωμένου ενσωματωμένου συστήματος υλικού και λογισμικού, το οποίο θα επιτελεί τον παραπάνω ρόλο. Αρχικά, θα περιγράψουμε τον γενικό σχεδιασμό του συστήματος και θα γίνει μία εισαγωγή στο υλικό της αναπτυξιακής πλατφόρμας A13-OlinuXino-MICRO και στην αρχιτεκτονική ARM του επεξεργαστικού της πυρήνα. Στη συνέχεια, θα ασχοληθούμε με τη διασύνδεση της οθόνης της συσκευής στην παραπάνω πλατφόρμα και με το σχεδιασμό του κυκλώματος φορητής τροφοδοσίας του συστήματος. Στο δεύτερο μισό της εργασίας, θα μελετήσουμε το κομμάτι του λογισμικού. Θα δούμε πώς γίνεται να ρυθμίσουμε σωστά ένα αναπτυξιακό περιβάλλον, για τη δημιουργία εκτελέσιμου κώδικα με στόχο υπολογιστικά συστήματα αρχιτεκτονικής ARM. Χρησιμοποιώντας το περιβάλλον αυτό, θα δημιουργήσουμε το λειτουργικό σύστημα της συσκευής μας, το οποίο βασίζεται στον πυρήνα Linux. Τελικώς, γίνεται ο προγραμματισμός της εφαρμογής ανάγνωσης των αρχείων e-book.

4 Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά όλους τους καθηγητές του τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών για τις γνώσεις που μας προσέφεραν όλα αυτά τα χρόνια των σπουδών. Ιδιαίτερες ευχαριστίες θα ήθελα να απευθύνω στον κ. Παναγιώτη Μητρόπουλο, καθώς χωρίς τη σημαντική βοήθειά του η ολοκλήρωση αυτής της εργασίας θα ήταν αδύνατη. Επίσης, θα ήθελα να ευχαριστήσω τον κ. Σταύρο Κουμπιά για την υποστήριξή του, όπως και τους υπολοίπους συναδέλφους του Εργαστηρίου Ηλεκτρονικών Εφαρμογών του Τομέα Ηλεκτρονικής και Υπολογιστών. Η εργασία είναι αφιερωμένη στους γονείς μου για τη στήριξη που μου παρείχαν στις δύσκολες στιγμές και σε όλους τους φίλους μου για τις όμορφες αναμνήσεις που μου έχουν χαρίσει...

5 Περιεχόμενα Κεφάλαιο 1 : Εισαγωγή Επιλογή θέματος και στόχος της εργασίας Βασικές έννοιες και ορολογίες Ο κόσμος των ενσωματωμένων συστημάτων Ιστορικά Στοιχεία και εξέλιξη του ηλεκτρονικού βιβλίου Διάρθρωση της εργασίας...15 Κεφάλαιο 2 : Σχεδίαση Συστήματος Εισαγωγή Αρχική Σχεδίαση Συστήματος Σχεδίαση Υλικού Τελικού Συστήματος Σχεδίαση Λογισμικού Τελικού Συστήματος Εισαγωγή Το λειτουργικό σύστημα GNU/Linux Ιστορικά Στοιχεία Δομή Συστήματος Αρχείων Η διανομή του E-book Reader Ο τρόπος υλοποίησης της εφαρμογής ανάγνωσης PDF Μέθοδος με χρήση του X Window System framework Μέθοδος με άμεση χρήση του Linux framebuffer Το Qt Framework Επιλογή προτύπου e-book Το πρότυπο αρχείων PDF Εισαγωγή Ιστορικά στοιχεία Δομή Αρχείου...27 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εισαγωγή Η αρχιτεκτονική ARM Γενικά Τεχνολογίες και Χαρακτηριστικά Η αρχιτεκτονική συνόλου εντολών Thumb Η τεχνολογία Vector Floating Point (VFP) Η τεχνολογία Advanced SIMD (NEON) Το SoC Allwinner A Περιφερειακά Υποσυστήματα Εισαγωγή Η μνήμη RAM Το κύκλωμα τροφοδοσίας Τα υποσυστήματα υλοποίησης των διεπαφών USB επικοινωνίας Λοιπά υποσυστήματα...41 Κεφάλαιο 4 : Περιφερειακό υλικό Εισαγωγή Η οθόνη TFT/LCD FriendlyARM 7'' Περιγραφή υλικού και τεχνικά χαρακτηριστικά Διασύνδεση με την αναπτυξιακή πλατφόρμα Συγχρονισμός οθόνης Το κύκλωμα φορητής τροφοδοσίας Εισαγωγή...56

6 4.3.2 Η μπαταρία του συστήματος Γενικά Τεχνικά χαρακτηριστικά Υπολογισμός αυτονομίας του τελικού συστήματος Το κύκλωμα φόρτισης της μπαταρίας Εισαγωγή Το ολοκληρωμένο κύκλωμα MCP Το κύκλωμα διαμοιρασμού φορτίου (load sharing) Το κύκλωμα προσαρμογής τάσεως Εισαγωγή Αρχή λειτουργίας του μετατροπέα ανώθησης τάσεως (boost converter) Το ολοκληρωμένο κύκλωμα TPS Υπολογισμός τιμών των παθητικών στοιχείων Το κύκλωμα ενεργοποίησης/απενεργοποίησης λειτουργίας της συσκευής Πιθανές βελτιώσεις...72 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Εισαγωγή Υπολογιστικό σύστημα ανάπτυξης τελικού λογισμικού Το λειτουργικό σύστημα Debian GNU/Linux Το shell γραμμής εντολών Τύποι Host/Target διάταξης Διάταξη αφαιρουμένου αποθηκευτικού μέσου Διασυνδεδεμένη διάταξη Αυτοτελής διάταξη Τύποι επικοινωνίας Host/Target στη διαδικασία αποσφαλμάτωσης Εισαγωγή Ενσύρματη σειριακή επικοινωνία Επικοινωνία μέσω δικτύου Επικοινωνία με χρήση ειδικού υλικού Cross-Toolchain Εισαγωγή Τύποι toolchain Απόκτηση Toolchain Crosstool-ng...83 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Εισαγωγή Διαμόρφωση της κάρτας μνήμης MicroSD Δημιουργία του root filesystem Εισαγωγή Διαδικασίας χρήσης του εργαλείου Buildroot Δημιουργία του πυρήνα Linux Το πρόγραμμα bootloader Das U-Boot Εισαγωγή Δημιουργία και εγκατάσταση του bootloader Δημιουργία επιπλέον υποστηρικτικών αρχείων και ρυθμίσεων Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων Εισαγωγή Ρύθμιση και εγκατάσταση του Qt Framework Εγκατάσταση και ρύθμιση του Qt-Creator IDE Περιγραφή του κώδικα της εφαρμογής...121

7 7.4.1 Δημιουργία νέου έργου Βασικά αρχεία Δευτερεύοντα αρχεία Αρχεία με κώδικα γλώσσας προγραμματισμού C Αρχεία με κώδικα γλώσσας προγραμματισμού QML Εγκατάσταση της εφαρμογής Κεφάλαιο 8 : Επίλογος Δυσκολίες Μελλοντικές Επεκτάσεις Κόστος Υλικού Αποκόμιση γνώσεων...130

8 Συντμήσεις ABI: Application Binary Interface AC: Alternative Current ADC: Analog-to-digital Converter BJT: Bipolar Junction Transistor CPU: Central Processing Unit CTM: Current Transormation Matrix DC: Direct Current DDR SDRAM: Double Data Rate Synchronous Dynamic Random-access Memory DMIPS: Dhrystone Million Instructions Per Second DVI: Digital Visual Interface EABI: Embedded Application Binary Interface FPU: Floating-point Unit GPIO: General-purpose Input/Output GPU: Graphics Processing Unit GUI: Graphical User Interface IC: Integrated Circuit IDE: Integrated Developmnet Environment ISO: International Organization for Standardization LED: Light-emitting Diode MMU: Memory Management Unit MOSFET: Metal-oxide-semiconductor Field-effect Transistor NC: Normally Closed NFS: Network File System NMI: Non-maskable Interrupt NO: Normally Open PDA: Personal Digital Assistant PPI: Pixels per inch PMU: Power Management Unit RAM: Random-access Memory RISC: Reduced Instruction Set Computing RTC: Real-time Clock SBC: Single Board Computer SD: Secure Digital SIMD: Single Instruction, Multiple Data TFT/LCD: Thin-film-transistor Liquid-crystal Display VGA: Video Graphics Array VPU: Video Processing Unit

9 1 Κεφάλαιο 1 : Εισαγωγή Κεφάλαιο 1 : Εισαγωγή 1.1 Επιλογή θέματος και στόχος της εργασίας Η θεματική ενότητα της εργασίας μας επιλέχτηκε κυρίως με βάση το επιστημονικό ενδιαφέρον και το επιθυμητό ερευνητικό πεδίο του συγγραφέα. Οι προδιαγραφές που τέθηκαν πριν την αναζήτηση του επακριβούς αντικειμένου γύρω από το οποίο θα περιστρεφόταν η εργασία, περιελάμβαναν τα ακόλουθα σημεία, χωρίς να περιορίζονται αποκλειστικά σε αυτά: Πρακτική και με κατασκευαστικά στοιχεία φύση της εργασίας, ώστε με το πέρας της να έχουμε στα χέρια μας απτά αποτελέσματα. Ο σχεδιασμός και η υλοποίηση ενσωματωμένων συστημάτων, ως κύριο ερευνητικό πεδίο. Σχεδίαση και υλοποίηση τουλάχιστον ενός ηλεκτρονικού κυκλώματος συγκεκριμένου σκοπού. Ενασχόληση με τον προγραμματισμό ή την παραμετροποίηση ενός ελεύθερου λειτουργικού συστήματος (βασισμένου σε πυρήνα Linux κατά προτίμηση), προς καλύτερη κατανόησή του. Προγραμματισμός εφαρμογής λογισμικού με χρήση κάποιας γλώσσας γενικού σκοπού (C/C++, Python κ.τ.λπ), με σκοπό τη διεύρυνση των αντιστοίχων ικανοτήτων. Προοπτική για περαιτέρω ενασχόληση και ανάπτυξη της εργασίας με το πέρας των σπουδών. Έπειτα από μία έρευνα θεμάτων μερικών εβδομάδων και έχοντας ως βάση τις παραπάνω συνθήκες, καταλήξαμε στην απόφαση της μελέτης, του σχεδιασμού και της κατασκευής ενός e-book reader, με τη βοήθεια ενός προηγμένου ενσωματωμένου συστήματος υλικού και λογισμικού. Προς αποφυγή παρεξηγήσεων κατά την πορεία της εργασίας, να τονίσουμε από τώρα ότι το όλο εγχείρημα απέχει πολύ από τη βελτιστοποίηση του ρόλου της συσκευής ως αναγνώστη ηλεκτρονικών βιβλίων. Ο βασικός στόχος είναι, όπως θα παρατηρήσουμε και στα επόμενα κεφάλαια, η δημιουργία ενός ενσωματωμένου συστήματος γενικότερου σκοπού, το οποίο εκτός άλλων θα περιλαμβάνει τη δυνατότητα υποστήριξης οθόνης και φορητότητας, με τη σχεδίαση να εξαρτάται σε μικρό βαθμό από το υλικό. Συνεπώς, η επιλογή του e-book reader ως κύρια εφαρμογή της συσκευής μας είναι περισσότερο ενδεικτική, εξυπηρετώντας κατά βάση τους σκοπούς μας ως ένας τρόπος επίδειξης των ικανοτήτων του τελικού συστήματος. Με το βάρος της εργασίας να γέρνει προς τη γενικότερη σχεδίαση της συσκευής αντί ως ενός συστήματος ειδικού σκοπού, επιδιώκεται κυρίως η επέκταση των γνώσεών μας γενικότερα στο πεδίο των ενσωματωμένων συστημάτων, αντί της συγκομιδής εξειδικευμένης γνώσης μόνο στον τομέα των συσκευών ανάγνωσης ηλεκτρονικών βιβλίων. Συγκεκριμένα, εστιάζουμε στην απόκτηση γνώσεων σχετικά με τον προγραμματισμό και την κατασκευή ενός ενσωματωμένου συστήματος κατά απαίτηση, βάσει των εκάστοτε απαιτούμενων προδιαγραφών. Αντί όμως να γενικολογούμε, ας περάσουμε στην ουσία της εργασίας. Θα δούμε στην συνέχεια πώς είναι εφικτό να υλοποιήσουμε τα παραπάνω πλάνα και να καταλήξουμε σε μία λειτουργική μονάδα, δίνοντας μορφή στον αρχικό στόχο. 1.2 Βασικές έννοιες και ορολογίες Σε αυτό το σημείο είναι καλό να γίνει μία σύντομη επεξήγηση ορισμένων εννοιών και ορολογιών που θα χρησιμοποιηθούν επανειλημμένως στη συνέχεια, προς αποσαφήνησή τους. Όπου κρίθηκε απαραίτητη η εκτενέστερη περιγραφή κάποιου όρου, αυτό έγινε εκτός αυτού του εισαγωγικού κεφαλαίου και εντός του κυρίως μέρους της εργασίας, στο σημείο που αυτός

10 2 Κεφάλαιο 1 : Εισαγωγή συναντάται για πρώτη φορά. Οι όροι είναι ταξινομημένοι κατά φθίνουσα σειρά σημασίας για την εργασία: E-book: Αποτελεί συντόμευση του electronic book, που μεταφράζεται στα ελληνικά ως ηλεκτρονικό βιβλίο. Είναι ένα βιβλίο σε ψηφιακή μορφή, που εκδίδεται με σκοπό την ανάγνωσή του σε ηλεκτρονικό αναγνώστη ή σε κάποιο άλλο υπολογιστικό σύστημα. [1] Target σύστημα (σύστημα-στόχος) ή τελικό σύστημα: Με τον όρο αυτό θα αναφερόμαστε στο ενσωματωμένο σύστημα που αναπτύσσουμε στο σύνολό του, δηλαδή στο υλικό και το λογισμικό του μαζί, ως μία ολότητα. Host σύστημα: Με τον όρο αυτό εννοούμε το υπολογιστικό σύστημα που χρησιμοποιείται ως αναπτυξιακό περιβάλλον του τελικού συστήματος. Cross-compile: Με τον όρο αυτό εννοούμε τη δημιουργία εκτελέσιμου κώδικα, με στόχο μία πλατφόρμα διαφορετική σε σχέση με αυτή στην οποία δημιουργείται ο κώδικας αυτός συχνά μάλιστα και διαφορετικής αρχιτεκτονικής από τη στοχευόμενη. SoC: Αποτελεί σύντμηση των λέξεων System on Chip. Πρόκειται για ένα ολοκληρωμένο κύκλωμα το οποίο συγκεντρώνει όλες τις συνιστώσες ενός υπολογιστικού ή άλλου ηλεκτρονικού συστήματος σε ένα μόνο τσιπ. Kernel (πυρήνας) : Ένα βασικότατο πρόγραμμα και θεμέλιος λίθος κάθε σύγχρονου λειτουργικού συστήματος, το οποίο αναθέτει τους πόρους του υπολογιστικού συστήματος σε άλλα προγράμματα που εκτελούνται, διέπει την έναρξη και τον τερματισμό της λειτουργίας τους και είναι υπεύθυνο για την επικοινωνία αυτών με το υλικό. Kernel Module: Πρόκειται για αντικείμενα αρχεία τα οποία περιέχουν κώδικα που επεκτείνει τις δυνατότητες του πυρήνα, για παράδειγμα με την υποστήριξη νέου υλικού ή συστήματος αρχείων. Toolchain: Σύνολο προγραμματιστικών εργαλείων που χρησιμοποιούνται για τη δημιουργία λογισμικού. Το όνομα αποτελεί σύνθεση των λέξεων tool που σημαίνει εργαλείο και chain που σημαίνει αλυσίδα, καθώς αρκετά συχνά η έξοδος ενός από τα εργαλεία αποτελεί την είσοδο του επομένου στη σειρά ανάπτυξης. Κονσόλα Linux: Η κονσόλα Linux είναι η κονσόλα συστήματος που υποστηρίζει ο πυρήνας Linux. Αποτελεί δηλαδή τη συσκευή που δέχεται όλα τα μηνύματα και τις προειδοποιήσεις του πυρήνα και επιτρέπει τη σύνδεση του χρήστη στο σύστημα, σε λειτουργία ενός χρήστη (single user mode). [2] Τερματικός Εξομοιωτής (Terminal Emulator): Πρόγραμμα το οποίο εξομοιώνει την διεπαφή επικοινωνίας ενός πραγματικού τερματικού το οποίο χρησιμοποιούταν παλαιότερα στα υπολογιστικά συστήματα. Partition: Λογική μονάδα αποθήκευσης η οποία επιτρέπει την υποδιαίρεση μίας φυσικής μονάδας αποθήκευσης σε πολλά τέτοια τμήματα, καθένα από τα οποία μπορεί να χρησιμοποιεί διαφορετικό σύστημα αρχείων. [3] Mount: Με τον όρο αυτό εννοούμε ότι προσαρτούμε ένα επιπλέον σύστημα αρχείων, στο ήδη προσπελάσιμο σύστημα ενός υπολογιστή, ώστε να γίνουν διαθέσιμα τα αρχεία του πρώτου. [4]

11 3 Κεφάλαιο 1 : Εισαγωγή Πακέτα λογισμικού: Προμεταφρασμένο (precompiled) λογισμικό, το οποίο είναι συγκεντρωμένο σε ένα μόνο αρχείο ειδικού τύπου συνήθως, για ευκολότερη εγκατάσταση στο υπολογιστικό σύστημα. [5][6] Makefile: Είναι ένα αρχείο με συγκεκριμένη δομή, το οποίο χρησιμοποιείται από το εργαλείο Make, για την αυτοματοποίηση της διαδικασίας δημιουργίας εκτελέσιμων προγραμμάτων και βιβλιοθηκών από πηγαίο κώδικα, με σχεδόν μηδενική παρέμβαση του χρήστη. Patch: Γενικά στον κόσμο των υπολογιστών, με αυτό το όνομα ορίζουμε ένα τμήμα λογισμικού που έχει σκοπό τη διόρθωση σφαλμάτων και την ενημέρωση ενός προϋπάρχοντος προγράμματος. Ειδικά για λειτουργικά συστήματα που βασίζονται στο Unix, η λέξη patch χρησιμοποιείται συχνά για να υποδηλώσει ένα εργαλείο που αναλαμβάνει την ενημέρωση αρχείων κειμένου, ανάλογα με το σχετικό αρχείο (patch file). Μεταβλητές Περιβάλλοντος (Environment Variables): Αποτελούν ένα σύνολο τιμών οι οποίες έχουν εκχωρηθεί δυναμικά σε συγκεκριμένες μεταβλητές, και δύναται να επηρεάσουν τη συμπεριφορά διαφόρων εκτελούμενων διεργασιών ενός υπολογιστικού περιβάλλοντος. 1.3 Ο κόσμος των ενσωματωμένων συστημάτων Ας προσπαθήσουμε να κάνουμε μία όσο το δυνατόν πιο σύντομη εισαγωγή στον άκρως ενδιαφέρον κόσμο τον ενσωματωμένων συστημάτων, με μία γενική περιγραφή τους. Ο όρος ενσωματωμένο χρησιμοποιείται για να περιγράψει το υλικό και το λογισμικό ενός υπολογιστικού συστήματος ειδικού σκοπού, το οποίο έχει σχεδιαστεί για να επιτελεί μία συγκεκριμένη λειτουργία ή μία ορισμένη ομάδα λειτουργιών. Τα ενσωματωμένα συστήματα συνήθως αποτελούν μέρος μεγαλύτερων συστημάτων (από εκεί πήραν και την ονομασία ενσωματωμένα ) και υπόκεινται συχνά σε χρονικούς περιορισμούς πραγματικού χρόνου, όσον αφορά το χρονικό διάστημα της επεξεργασίας των δεδομένων. Το κύριο χαρακτηριστικό τους είναι ότι χειρίζονται αποκλειστικά μια συγκεκριμένη εργασία, σε αντίθεση με τους υπολογιστές γενικού σκοπού, όπως οι προσωπικοί υπολογιστές, που ικανοποιούν μια μεγάλη ποικιλία λειτουργιών με την κατάλληλη χρήση του απαραίτητου λογισμικού. Η διάκριση βέβαια μεταξύ των δύο αυτών τύπων συστημάτων δεν είναι πάντα ξεκάθαρη, εφόσον πολλά ενσωματωμένα συστήματα παρέχουν κάποια δυνατότητα προγραμματισμού για πολλαπλές λειτουργίες, όπως η κατασκευή που μελετάμε στην παρούσα εργασία. Πλέον, πολλά σύγχρονα συστήματα που δεν ανήκουν ξεκάθαρα στην κατηγορία των ενσωματωμένων, δανείζονται τεχνολογίες από αυτά (όπως ολοκληρωμένα κυκλώματα, λειτουργικά συστήματα κ.τ.λ.). Υπάρχουν διάφοροι τρόποι κατηγοριοποίησης και σχεδιασμού των ενσωματωμένων συστημάτων, αναλόγως με το υλικό που χρησιμοποιούν για την επεξεργασία των δεδομένων, με το εύρος των δυνατοτήτων τους ή με την μέθοδο υλοποίησης της πλακέτας. Για την επεξεργασία των δεδομένων, ένα ενσωματωμένο σύστημα μπορεί να χρησιμοποιεί είτε έναν μικροελεγκτή, είτε έναν μικροεπεξεργαστή: [7] Ένας μικροεπεξεργαστής περιλαμβάνει όλα τα βασικά δομικά στοιχεία μίας κεντρικής μονάδας επεξεργασίας (CPU), δηλαδή την αριθμητική και λογική μονάδα (ALU), τη λογική μονάδα ελέγχου (CU) και τους καταχωρητές. Ο μικροεπεξεργαστής είναι ένα ολοκληρωμένο κύκλωμα (IC) γενικού σκοπού το οποίο λειτουργεί με βάση κάποιο πρόγραμμα το οποίο είναι αποθηκευμένο στην κύρια μνήμη. Το πρόγραμμα αυτό αποτελείται από εντολές σε μορφή γλώσσας μηχανής, σειρές δηλαδή από δυαδικά ψηφία, όπου είναι κωδικοποιημένο το είδος της εντολής. Το σύνολο αυτών των εντολών χρησιμεύει ως μία διασύνδεση ανάμεσα στο λογισμικό (software) και το υλικό (hardware), δηλαδή ανάμεσα στα προγράμματα και στους επεξεργαστές. Μια ειδική κατηγορία μικροεπεξεργαστών είναι οι επεξεργαστές ψηφιακού σήματος (DSP), οι

12 4 Κεφάλαιο 1 : Εισαγωγή οποίοι χρησιμοποιούνται ευρέως στα ενσωματωμένα συστήματα. Η διαφορά τους με τους υπόλοιπους μικροεπεξεργαστές γενικού σκοπού είναι ότι έχουν βελτιστοποιημένη αρχιτεκτονική, ώστε να εξυπηρετούν καλύτερα τις ανάγκες των υπολογισμών της επεξεργασίας ψηφιακών σημάτων. Για παράδειγμα, μπορεί να περιλαμβάνουν εξειδικευμένο υλικό για τον υπολογισμό πράξεων πολλαπλασιασμού ή προσπέλασης πινάκων. Φυσικά με την σύγχρονη τεχνολογία, ο μικροεπεξεργαστής δύναται να αποτελεί τμήμα ενός συστήματος σε τσιπ (System on Chip ή SoC), όπως είναι σύνηθες πλέον και θα δούμε ότι συμβαίνει και στην παρούσα εργασία. Αν σε ένα ολοκληρωμένο κύκλωμα συνυπάρχουν ένας μικροεπεξεργαστής μαζί με τη μνήμη και τις συσκευές εισόδου/εξόδου, τότε έχουμε έναν μικροελεγκτή. Πέρα από τη μνήμη τυχαίας προσπέλασης (RAM), συνήθως ο μικροελεγκτής περιλαμβάνει και τη μνήμη μόνο-ανάγνωσης (ROM) στην οποία βρίσκεται αποθηκευμένο το πρόγραμμα. Χάρη στον υψηλό βαθμό ολοκλήρωσης, οι σύγχρονοι μικροελεγκτές περιλαμβάνουν πολλά επιπλέον περιφερειακά κυκλώματα, όπως σειριακής επικοινωνίας (RS-232, SPI, I 2C, CAN), γεννήτριες PWM, AD/DA converters, χρονιστές κ.τ.λ.. Οι μικροελεγκτές είναι σχεδιασμένοι ειδικά για χρήση σε ενσωματωμένα συστήματα, σε αντίθεση με τους μικροεπεξεργαστές που πολλές φορές μπορεί να χρησιμοποιηθούν και σε γενικού σκοπού υπολογιστικά συστήματα. Για το λόγο αυτό, πρέπει η σχεδίασή τους να είναι όσο το δυνατόν πιο απλή, ώστε να επιτυγχάνεται μείωση του κόστους και αυξημένη αξιοπιστία. Στους επεξεργαστές ενσωματωμένων συστημάτων συναντάμε μία μεγάλη ποικιλία αρχιτεκτονικών, σε αντίθεση με την αγορά που αντιπροσωπεύει τους χρήστες προσωπικών υπολογιστών, καθώς το λογισμικό δεν απαιτείται να εγκατασταθεί από τον τελικό χρήστη. Έτσι, συναντάμε τόσο αρχιτεκτονικές τύπου Von Neumann, όσο και διάφορες παραλλαγές της αρχιτεκτονικής Harvard. Ομοίως, κυκλοφορούν επεξεργαστές RISC και non-risc αρχιτεκτονικής. Συνήθως κάθε εταιρεία έχει αναπτύξει πλέον το δικό της σύνολο εντολών, οπότε οι αρχιτεκτονικές πρακτικά είναι όσες και τα μοντέλα των μικροεπεξεργαστών. Περισσότερα όμως σχετικά με το αρχιτεκτονικό κομμάτι, θα μελετήσουμε στο κεφάλαιο 3, όπου αναλύουμε την αρχιτεκτονική του συστήματος της εργασίας. [8][9][10] 1.4 Ιστορικά Στοιχεία και εξέλιξη του ηλεκτρονικού βιβλίου [27] Πολλές προσπάθειες διεκδικούν τα εύσημα του πρώτου ηλεκτρονικού βιβλίου και αντίστοιχα, της πρώτης ηλεκτρονικής συσκευής ανάγνωσης στην ιστορία. Μία από τις πρώτες θεωρείται το Index Thomisticus, το οποίο άρχισε να δημιουργείται από τον Roberto Busa στα τέλη της δεκαετίας του 1940, με σκοπό να οργανώσει και να αρχειοθετήσει τη δουλειά του Thomas Aquinas, ενός Ιταλού φιλοσόφου, ιερέα και θεολόγου. Ολοκληρώθηκε τη δεκαετία του 1970, αλλά πολλοί δεν το αναγνωρίζουν ως το πρώτο ηλεκτρονικό βιβλίο, αλλά περισσότερο ως ηλεκτρονικό ευρετήριο, καθώς με αυτό το σκοπό άρχισε να αναπτύσσεται. [11] Μερικά χρόνια νωρίτερα και περί τα μέσα της δεκαετίας του 1930, ο Bob Brown είχε γράψει ένα βιβλίο ονόματι The Readies, στο οποίο πραγματευόταν την ιδέα του e-book reader, καθώς υποστήριζε ότι με την εμφάνιση των ταινιών με ήχο, τα βιβλία είχαν μείνει πίσω τεχνολογικά και έπρεπε κάπως να εξελιχθεί η διαχείρισή τους και να γίνουν πιο ευανάγνωστα. [12] Αν ζούσε όμως σήμερα, θα παρατηρούσε ότι η ιδέα του δεν εξελίχθηκε όπως την περιέγραφε, καθώς τα σημερινά e-books readers προσομοιώνουν τα έντυπα βιβλία, ενώ ο ίδιος πίστευε πως θα έπρεπε να είναι μία εξέλιξή τους με διαφορετική μορφή. Περιέγραφε τη συσκευή που φανταζόταν ως ένα μικροφίλμ, το οποίο θα περνούσε πίσω από έναν μεγεθυντικό φακό με ορισμένη ταχύτητα που ελέγχεται από τον χρήστη. Μία σύγχρονη διαδικτυακή υλοποίηση της ιδέας του είναι διαθέσιμη στην ιστοσελίδα [13]

13 5 Κεφάλαιο 1 : Εισαγωγή Το 1949, η Ισπανίδα καθηγήτρια Ángela Ruiz Robles δημιουργεί μία συσκευή που μπορεί να θεωρηθεί ως επίσημη πατέντα του πρώτου e-reader. Πρόκειται για ενός είδους μηχανική εγκυκλοπαίδεια, με σκοπό οι μαθητές της να μεταφέρουν λιγότερα βιβλία μαζί τους καθημερινά στο σχολείο. Εικόνα 1-1: H Ángela Ruiz Robles κρατώντας στα χέρια της το πρώτο ίσως e-book στην ιστορία. Ορισμένοι ιστορικοί μελετούν την πιθανότητα ύπαρξης μίας πίο σύγχρονης μορφής e-books, ήδη από τις αρχές της δεκαετίας του 1960, μέσω του "On-Line System" ή αλλιώς NLS, ενός συστήματος που σχεδιάστηκε από τον Douglas Engelbart στο Stanford Research Institute (SRI). Λίγο αργότερα, ο Andries Van Dam στο πανεπιστήμιο Brown δημιουργούσε το File Retrieval and Editing System ή FRESS. [14] Και τα δύο αυτά συστήματα εμπεριείχαν μεταξύ άλλων δυνατότητες απεικόνισης γραφικών και χρήσης υπερσυνδέσμων. O Van Dam έκανε κιόλας χρήση του όρου electronic book επίσημα από το [15] Το σύστημα FRESS χρησιμοποιούνταν για την ανάγνωση διαδικτυακών κειμένων καθώς και για διαδικτυακές συζητήσεις σε μερικά πανεπιστημιακά μαθήματα. Η ηγεσία του πανεπιστημίου Brown στο χώρο των ηλεκτρονικών βιβλίων συνεχίστηκε για πολλά χρόνια, με τη δημιουργία ηλεκτρονικών εγχειριδίων επισκευής για το ναυτικό, όπως και ενός συστήματος πολυμέσων γνωστού ως InterMedia. [16][17] Παρά όλα τα παραπάνω, συγκεκριμένες δημοσιευμένες αναφορές θεωρούν τον Michael S. Hart ως εφευρέτη του e-book. [18][19] Ο Hart δημιούργησε το πρώτο του ηλεκτρονικό έγγραφο το 1971, το οποίο ήταν η Διακήρυξη της Ανεξαρτησίας των Ηνωμένων Πολιτειών της Αμερικής. [20] Από εκεί και έπειτα ξεκίνησε το Project Gutenberg, το οποίο μέχρι σήμερα έχει ψηφιοποιήσει και αρχειοθετήσει περισσότερα από έγγραφα. Τα πρώτα χρόνια που κυκλοφόρησαν, τα e-books απευθύνονταν σε περιορισμένο και μικρό κοινό, με περιεχόμενο θεμάτων κυρίως τεχνικής φύσεως, όπως περιγραφές υλικού υπολογιστικών συστημάτων και αναφορές σε τεχνικές παραγωγής της βιομηχανίας. Από τα μέσα του 1990, η συνεχώς αυξανόμενη χρήση του διαδικτύου έκανε τη διανομή τους ευκολότερη, οπότε και απέκτησαν αυξανόμενη δημοτικότητα. Τα τελευταία χρόνια χρησιμοποιούνται ευρέως από το κοινό λόγω πλεονεκτημάτων που παρουσιάζουν έναντι των έντυπων βιβλίων. Κύριος λόγος προτίμησής τους από τους χρήστες είναι η δυνατότητα για μεταφορά τεράστιου πλήθους ηλεκτρονικών βιβλίων σε μία συσκευή e-book reader, με μόνο περιορισμό τη διαθέσιμη μνήμη, ο οποίος τείνει να εκλείψει με την εξέλιξη της τεχνολογίας. Επίσης, τα ηλεκτρονικά βιβλία λόγω της φύσης τους δε σταματάνε να είναι διαθέσιμα σχεδόν ποτέ για το κοινό, ενώ η παραλαβή τους είναι απείρως ευκολότερη σε σχέση με τα κοινά βιβλία. Πολλές φορές μάλιστα διατίθενται δωρεάν από εκδότες, όπως σε περιπτώσεις βιβλίων που τα πνευματικά τους δικαιώματα έχουν

14 6 Κεφάλαιο 1 : Εισαγωγή εκπνεύσει, ενώ σε περίπτωση απώλειάς τους, συνήθως μπορούν να αποκτηθούν ξανά δωρεάν. Ακόμα, εξαιτίας της μειωμένης χρήσης πρώτων υλών για τη δημιουργία τους (μέχρι και 3 φορές λιγότερες στο σύνολο), η τιμή τους είναι σημαντικά μειωμένη, εξαιρουμένης βέβαια της τιμής του e-reader. [21] Πλεονεκτήματα παρουσιάζουν όμως και στη χρήση τους όπως θα δούμε. Πολλές ιστοσελίδες παρέχουν τη δυνατότητα να κατεβάζουν οι χρήστες μεταφρασμένες εκδόσεις των διαθέσιμων βιβλίων, προς διευκόλυνσή τους. Άλλα παρόμοια προνόμια περιλαμβάνουν την τροποποίηση του φόντου των γραμμάτων αναλόγως με τις προτιμήσεις του χρήστη για να είναι πιο ευανάγνωστα, ή τη χρήση τεχνολογιών όπως κείμενο-σε-φωνή, για άτομα με μειωμένη ικανότητα όρασης ή με ειδικές ανάγκες όπως η δυσλεξία. [22] Επιπλέον δυνατότητες ενσωματώνονται συχνά σε ηλεκτρονικά βιβλία, όπως η προσθήκη ήχων, ταινιών και διαδραστικού περιεχομένου. Σήμερα συναντάμε στην αγορά ένα μεγάλο πλήθος από e-book reader συσκευές, με δυνατότητες πολύ πιο εξελιγμένες και σύγχρονες από τις παραπάνω. Οι περισσότερες πλέον έχουν πρόσβαση στο διαδίκτυο από όπου και ο χρήστης μπορεί να προμηθευτεί άμεσα τα e-books που προτιμάει. Συχνά δίνεται η επιλογή για αποθήκευσή τους στο λεγόμενο cloud storage, ώστε να μην καταλαμβάνουν χώρο στην ίδια τη συσκευή, γεγονός που αυξάνει κατά πολύ τη συνολική αποθηκευτική χωρητικότητα. Επιπλέον, μερικά e-readers που κυκλοφορούν προσφέρουν άμεση πρόσβαση σε διαδικτυακές βιβλιοθήκες μέσω του ενσωματωμένου τους λογισμικού, από όπου ο χρήστης μπορεί να αγοράσει ή να δανειστεί ψηφιοποιημένα βιβλία. Οι πιο δημοφιλείς σύγχρονες συσκευές για e-reading ανήκουν στην εταιρεία Amazon και συγκεκριμένα στη σειρά προϊόντων με την ονομασία Kindle που η ίδια έχει δημιουργήσει, μέσω τις οποίας έχει κερδίσει σχεδόν το μισό αγοραστικό κοινό. [23] Πολύ υψηλά στις προτιμήσεις του κοινού είναι επίσης οι συσκευές της σειράς Nook, δημιουργημένες από την εταιρεία Barnes & Noble. Λοιπές ανταγωνιστικές προτάσεις αποτελούν οι σειρές Kobo και PocketBook των ομωνύμων εταιρειών, τα Sony Readers της Sony, η σειρά Boox της Onyx και αρκετές άλλες υλοποιήσεις εταιρειών με μικρότερο μερίδιο αγοράς. [24] Η αλήθεια είναι ότι τα τελευταία 2 με 3 χρόνια, οι πωλήσεις των e-readers ακολουθούν καθοδική πορεία. Σε αυτό έχει συμβάλει κυρίως η αυξανόμενη δημοτικότητα των tablet υπολογιστών, τα οποία μεταξύ των άλλων εφαρμογών, περιλαμβάνουν μία πληθώρα για ανάγνωση e-books, οπότε λειτουργούν ανταγωνιστικά. [25] Παρόλα αυτά, όσο τα e-readers συνεχίσουν να διαφοροποιούνται από τα tablets με τα ιδιαίτερα χαρακτηριστικά τους, όπως οι ευανάγνωστες οθόνες τεχνολογίας Ε-Ιnk σε συνθήκες υψηλού φωτισμού και η μεγαλύτερη διάρκεια αυτονομίας, δεν αναμένεται να εκλείψουν από την αγορά, τουλάχιστον όχι στο άμεσο μέλλον. [26]

15 7 Κεφάλαιο 1 : Εισαγωγή Εικόνα 1-2: Ένα Amazon Kindle 3ης γενιάς. 1.5 Διάρθρωση της εργασίας Θεωρήθηκε κατά την έναρξη της συγγραφής της εργασίας, ότι ο βέλτιστος διαχωρισμός με βάση το περιεχόμενό της είναι τα 8 βασικά κεφάλαια. Βέβαια, το κάθε ένα από αυτά υποδιαιρείται σε πολλαπλές ενότητες και υποενότητες, για την καλύτερη οργάνωση της ύλης και την ευκολότερη παρακολούθηση της εξέλιξης της εργασίας από τον αναγνώστη. Το κεφάλαιο 1, το τρέχον δηλαδή κεφάλαιο, αποτελεί μία εισαγωγή όπως δηλώνει και ο τίτλος του, με σκοπό να προετοιμάσει τον αναγνώστη για το τι πρόκειται να επακολουθήσει, δίνοντάς του μία γενική ιδέα περί του θέματος και επεξηγώντας έννοιες απαραίτητες για την κατανόηση των επομένων κεφαλαίων. Επίσης, γίνεται μία σύντομη ιστορική αναδρομή σε αυτό που αποκαλούμε ηλεκτρονικό βιβλίο και στις σχετικές τεχνολογίες. Στο κεφάλαιο 2 γίνεται μία γενική επισκόπηση τόσο του αρχικού, όσο και του σχεδιασμού που έμελλε να είναι και ο τελικός του συστήματός μας. Γίνεται αναφορά και στο υλικό αλλά και στο λογισμικό του τελικού συστήματος, σε τέτοια έκταση ώστε να δικαιολογηθούν οι επιλογές που έγιναν. Στο κεφάλαιο 3 γίνεται μία περιγραφή της αναπτυξιακής πλατφόρμας που τελικώς χρησιμοποιείται στην εργασία, όπως και της αρχιτεκτονικής του επεξεργαστικού πυρήνα. Στο κεφάλαιο 4 περιγράφονται αναλυτικά τα υπόλοιπα υποσυστήματα πέραν της αναπτυξιακής πλατφόρμας, δηλαδή η οθόνη και το υποσύστημα φορητής τροφοδοσίας. Ιδιαίτερη βαρύτητα δίνεται στη διασύνδεσή τους με την αναπτυξιακή πλατφόρμα. Το κεφάλαιο 5 περιλαμβάνει μία περιγραφή του περιβάλλοντος ανάπτυξης του λογισμικού, όπως και της κατάλληλης προετοιμασίας αυτού. Στο κεφάλαιο 6 αναφέρεται η διαδικασία δημιουργίας του συνόλου του λογισμικού του τελικού συστήματος, εκτός της εφαρμογής ανάγνωσης των e-books. Στο κεφάλαιο 7 περιγράφονται οι ενέργειες που πρέπει να ακολουθήσουμε για τον προγραμματισμό της εφαρμογής ανάγνωσης e-books, και γίνεται επιπλέον μία σύντομη περιγραφή της λειτουργίας και της εγκατάστασής της. Το κεφάλαιο 8 αποτελεί το τελευταίο κεφάλαιο της εργασίας, έχει τη μορφή επιλόγου και συνοψίζει τις δυσκολίες που παρουσιάστηκαν, τις πιθανές μελλοντικές επεκτάσεις, και τα οφέλη που αποκομίσαμε συνολικά. Γίνεται επίσης μία σύνοψη του κόστους των υλικών.

16 8 Κεφάλαιο 2 : Σχεδίαση Συστήματος Κεφάλαιο 2 : Σχεδίαση Συστήματος 2.1 Εισαγωγή Το τρέχον κεφάλαιο χωρίζεται σε 3 βασικές ενότητες, πέραν της εισαγωγής: Αρχική Σχεδίαση Συστήματος, Σχεδίαση Υλικού Τελικού Συστήματος και Σχεδίαση Λογισμικού Τελικού Συστήματος. Αυτός ο διαχωρισμός κρίθηκε απαραίτητος, καθώς όπως θα δούμε και στη συνέχεια, ορισμένες συνθήκες μας οδήγησαν στον επαναπροσδιορισμό του 1ου σχεδιασμού του συστήματός μας, λόγω αδυναμίας υλοποίησής του για λόγους που θα αναφερθούν παρακάτω. 2.2 Αρχική Σχεδίαση Συστήματος Το πρώτο ζήτημα που μας προβλημάτισε με την έναρξη της ενασχόλησης με την εργασία αυτή, ήταν ο τρόπος με τον οποίο θα μπορούσαμε να υλοποιήσουμε την αρχική ιδέα σε μία λειτουργική συσκευή, που θα αποτελούταν από σχετικά απλά και διαθέσιμα ηλεκτρονικά εξαρτήματα. Αυτή η συσκευή θα έπρεπε να μας παρέχει τουλάχιστον μία βασική λειτουργικότητα: Τη δυνατότητα να αντιγράψουμε μερικά αρχεία τύπου PDF θα αναλύσουμε στη συνέχεια την επιλογή αυτού του προτύπου από έναν προσωπικό υπολογιστή σε μία αφαιρούμενη μονάδα αποθήκευσης αρχείων, και έπειτα από τη σύνδεση της τελευταίας στη συσκευή μας, να είναι δυνατή η απεικόνιση των περιεχομένων κάθε αρχείου σε μία οθόνη. Έχοντας πάντα ως οδηγό την παραπάνω βασική λειτουργία, το επόμενο λογικό βήμα ήταν ο καθορισμός των απαραίτητων υποσυστημάτων, που θα συντελούσαν στην επίτευξη του στόχου μας. Καταλήξαμε πως τα λίαν απαραίτητα είναι: 1. Μία κεντρική μονάδα που θα αναλάβει την επεξεργασία των δεδομένων και το συντονισμό των υπολοίπων περιφερειακών. 2. Μία μνήμη προσωρινής αποθήκευσης δεδομένων, προαπαιτούμενη για τη λειτουργία της κεντρικής μονάδας επεξεργασίας. 3. Μία αφαιρούμενη μνήμη μόνιμης αποθήκευσης δεδομένων. 4. Μία οθόνη σε μέγεθος που επιτρέπει τη φορητότητα, όπως πρέπει και όλα τα παραπάνω βέβαια. 5. Ένα κύκλωμα φορητής τροφοδοσίας, που θα επιτρέπει μία μερική αυτονομία στη λειτουργία της συσκευής. Και φυσικά, επιπλέον ό,τι περαιτέρω περιφερειακό υλικό χρειαζόταν για την διασύνδεση και απρόσκοπτη λειτουργία των ανωτέρω. Οι πρώτες δοκιμές μας βασίστηκαν στον μικροελεγκτή ATmega644 της εταιρείας AVR, ο οποίος ενσωματώνει κεντρική μονάδα επεξεργασίας και μνήμη RAM προσωρινής αποθήκευσης δεδομένων σε ένα ολοκληρωμένο κύκλωμα. Σαν μονάδα αφαιρούμενης αποθήκευσης επιλέξαμε μία κάρτα μνήμης SD, την οποία συνδέσαμε μέσω διεπαφής SPI με τον μικροελεγκτή. Ο προγραμματισμός του ATmega644 έγινε με τη βοήθεια της αναπτυξιακής πλατφόρμας STK-500 Starter Kit, την οποία όπως θα δούμε στα επόμενα κεφάλαια χρησιμοποιήσαμε τελικώς για διαφορετικό σκοπό.

17 9 Κεφάλαιο 2 : Σχεδίαση Συστήματος Εικόνα 2-1: Η αναπτυξιακή πλατφόρμα STK-500 Starter Kit και ο επεξεργαστής AVR ATmega644 πάνω σε αυτή. Το παραπάνω σύστημα επιλέχθηκε για τις πρώτες δοκιμές λόγω της άμεσης διαθεσιμότητας των στοιχείων του στα εργαστήρια της σχολής, με προοπτική τη μετάβαση σε κάποιο ταχύτερο και περισσοτέρων δυνατοτήτων, αν οι δοκιμές αυτές στέφονταν με επιτυχία. Δε θα αναφερθούμε σε λεπτομέρειες σχετικά με τις προδιαγραφές των υποσυστημάτων, καθώς όπως θα δούμε έπειτα, στην τελική σχεδίαση δε χρησιμοποιήθηκε κανένα από αυτά, αφού ακολουθήσαμε εντελώς διαφορετική προσέγγιση. Σχετικά με την οθόνη, η πρώτη μας επιλογή ήταν κάποια που είναι κατασκευασμένη με χρήση της τεχνολογίας E-Ink. Οι οθόνες αυτές διατίθενται σχεδόν κατά αποκλειστικότητα από την ομώνυμη εταιρεία E-Ink Corporation. Η καταλληλότητα μία οθόνης τέτοιας τεχνολογίας για μία συσκευή e-book reader φαίνεται από τα εξής πλεονεκτήματα που παρουσιάζουν, έναντι των συνηθισμένων οθονών τεχνολογίας TFT/LCD: Αυξημένη αυτονομία συστήματος, λόγω ελαχίστων απαιτήσεων στην κατανάλωση ενέργειας (μπορεί να φτάσει μέχρι και 30 μέρες, αναλόγως τη χρήση και την κατανάλωση των υπολοίπων περιφερειακών) Πιο ξεκούραστη ανάγνωση, καθώς επιχειρεί να προσομοιώσει το πραγματικό χαρτί ( για αυτό εξάλλου η τεχνολογία είναι γνωστή στο εμπόριο και με το όνομα e-paper ) Πολύ καλή ευκρίνεια υπό συνθήκες φυσικού φωτός μάλιστα, η ευκρίνεια αυξάνεται με την αύξηση του φωτός στο περιβάλλον, αντιθέτως με τις οθόνες TFT/LCD. Παρά τις προσπάθειές μας, η απάντηση της παραπάνω εταιρείας ήταν αρνητική στη διάθεση κάποιου δείγματος ή αναπτυξιακού κιτ για την μελέτη του και ενσωμάτωσή του στην κατασκευή μας.

18 10 Κεφάλαιο 2 : Σχεδίαση Συστήματος Εικόνα 2-2: Δείγματα οθονών E-Ink διαφόρων διαστάσεων Εξαιτίας της μη διαθεσιμότητας της προβλεπόμενης οθόνης, στις αρχικές δοκιμές παραλείψαμε τη χρήση της και συνδέσαμε μέσω UART διεπαφής τον μικροελεγκτή του συστήματος με τον υπολογιστή μας. Έτσι, θα μπορούσαμε να απεικονίσουμε τα αποτελέσματα των δοκιμών σε ένα σειριακό τερματικό, στην οθόνη του υπολογιστή. Επιχειρήσαμε έπειτα να ανοίξουμε ένα απλό αρχείο κειμένου μορφής.txt, το οποίο είχαμε αποθηκεύσει από πριν στην SD κάρτα μνήμης, με χρήση του ATmega644, και να αποστείλουμε σειριακά τα περιεχόμενά του στον υπολογιστή. Αυτό έγινε επιτυχώς και μάλιστα με ικανοποιητική ταχύτητα, που περιοριζόταν σχεδόν αποκλειστικά από την ταχύτητα της UART επικοινωνίας. Ο προγραμματισμός του ATmega644 για την παραπάνω διαδικασία έγινε σε γλώσσα προγραμματισμού C. Σαν επόμενο βήμα, επιχειρήσαμε να δημιουργήσουμε ένα πρόγραμμα γραμμένο σε γλώσσα C στον προσωπικό μας υπολογιστή, το οποίο με χρήση της βιβλιοθήκης συμπίεσης και αποσυμπίεσης δεδομένων zlib, θα φόρτωνε ένα αρχείο τύπου PDF και θα εξήγαγε το κείμενο που περιέχει αυτό, με σκοπό την προβολή του στον ίδιο υπολογιστή. Ήδη από το βήμα της αποσυμπίεσης του αρχείου PDF και μέσω του debugger του αναπτυξιακού περιβάλλοντος, παρατηρήσαμε τις αυξημένες ανάγκες του προγράμματος για πόρους και ειδικά τις αυξημένες απαιτήσεις μνήμης RAM. Αυτό το γεγονός οφειλόταν κυρίως στον τρόπο που αποθηκεύεται το κείμενο σε αρχεία PDF, για τον οποίον θα αναφέρουμε περισσότερα σε επόμενη ενότητα που μελετάμε το ίδιο το πρότυπο PDF. Αν και τελικώς επιτύχαμε στην εξαγωγή του κειμένου από ορισμένα αρχεία PDF, γρήγορα καταλήξαμε στο ότι η παραπάνω υλοποίηση δεν είναι ρεαλιστική. Ήδη γνωρίζαμε πως για τη χρήση της βιβλιοθήκης zlib ή αναγκαστικά κάποιος παρόμοιας στο ενσωματωμένο σύστημα που πρόκειται να κατασκευάσουμε, θα έπρεπε να καταφύγουμε στη χρήση αρχιτεκτονικής συστήματος 32-bit. Αν λάβουμε υπόψη μας και την ανάγκη προσθήκης επιπλέον εξωτερικής μνήμης, κάτι που θα αύξανε ραγδαία το τελικό κόστος, οδηγούμαστε με γοργά βήματα προς την επόμενη, που έμελλε να είναι και η τελική, σχεδίαση συστήματος. 2.3 Σχεδίαση Υλικού Τελικού Συστήματος Με βάση τους επιπλέον περιορισμούς που εισήχθησαν στις προδιαγραφές σχεδίασης του συστήματός μας και οι οποίοι προέκυψαν από τις προηγούμενες δοκιμές, καταλήξαμε ότι η χρήση ενός Single Board Computer (SBC) με λειτουργικό σύστημα θα ήταν η βέλτιστη. Πλέον, υπάρχουν πολλά SBCs που προσφέρουν τέτοια υποστήριξη, κάτι το οποίο μας προσφέρει μία δομή αφαιρετικότητας, αφού η διαδικασία αποκωδικοποίησης και προβολής του PDF συμβαίνει κάνοντας χρήση κάποιας βιβλιοθήκης που πατάει πάνω στο λειτουργικό σύστημα, ανεξαρτήτως υλικού. Ένα μεγάλο πλεονέκτημα αυτής της σχεδίασης είναι η μεταφερσιμότητα (portability) του τελικού λογισμικού σε άλλη πλατφόρμα που χρησιμοποιεί το ίδιο λειτουργικό σύστημα. Επίσης,

19 11 Κεφάλαιο 2 : Σχεδίαση Συστήματος καθώς τα περισσότερα συστήματα SBC πλέον ενσωματώνουν μεγάλη ποσότητα μνήμης, λύνουμε το πρόβλημα της απαίτησης μνήμης που υπήρχε μέχρι τώρα, αν ρυθμίσουμε σωστά το σύστημά μας, ώστε να μην γίνεται άσκοπη χρήση της. Το κόστος μίας τέτοιας σχεδίασης παραμένει σε λογικά πλαίσια, καθώς ισοσταθμίζεται με το κόστος της πρώτης σχεδίασης, αν συμπεριλάβουμε σε αυτό την επιπλέον εξωτερική μνήμη που θα χρειαζόμασταν. Αν και με τη ραγδαία εξέλιξη της τεχνολογίας οι εναλλακτικές επιλογές από SBCs που έχουν εμφανιστεί στην αγορά είναι πάρα πολλές, περιορίζονται σημαντικά αν προσανατολιστούμε μόνο προς τις open-source. Κατευθυνθήκαμε προς τις open-source επιλογές, γιατί έτσι μας δίνεται η δυνατότητα για τροποποίηση του υλικού της πλατφόρμας σε μελλοντικές εκδόσεις ανάλογα με τις ανάγκες μας, αλλά και η καλύτερη μελέτη και κατανόησή του. Μία πολύ ενδιαφέρουσα, open-source αναπτυξιακή πλατφόρμα, διαθέσιμη σε μικρό κόστος μόλις 35 ευρώ/τεμάχιο σε μικρές και 28 ευρώ/τεμάχιο σε μεγάλες ποσότητες είναι η A13-OLinuXino-MICRO, η οποία κατασκευάζεται από τη βουλγαρική εταιρεία Olimex, και τα σχέδιά της είναι διαθέσιμα υπό το Creative Commons Attribution-Share Alike 3.0 United States License. [28] Όπως θα δούμε και στο κεφάλαιο 3, η συγκεκριμένη πλατφόρμα βασίζεται στην αρχιτεκτονική ARM και καλύπτει με το παραπάνω τις ανάγκες του συστήματός μας. Ας μην ξεχνάμε πως στην αρχική σχεδίαση είχαμε παρουσιάσει κάποιες ανάγκες ως προς τα άκρως απαραίτητα υποσυστήματα από τα οποία πρέπει να απαρτίζεται το τελικό σύστημα. Αυτές φυσικά παραμένουν, με το A13-OLinuXino-MICRO να καλύπτει μόνο τις 3 από τις 5: μονάδα επεξεργασίας, μνήμη προσωρινής αποθήκευσης και αφαιρούμενη μνήμη μόνιμης αποθήκευσης. Παραμένουν οι επιλογές της οθόνης και του κυκλώματος φορητής τροφοδοσίας. Σχετικά με την οθόνη, από τη στιγμή που διαπιστώσαμε πως δεν είναι δυνατόν να χρησιμοποιήσουμε τελικώς κάποια τεχνολογίας E-Ink, στραφήκαμε προς τις κοινές οθόνες τεχνολογίας TFT/LCD. Οι απαιτήσεις μας - συγκριτικά πάντα με e-book readers που κυκλοφορούν στο εμπόριο - ήταν: Συμβατή διεπαφή επικοινωνίας με την A13-OLinuXino-MICRO Επαρκής ευκρίνεια (συνδυασμός μεγέθους διαγωνίου και ανάλυσης, που μετριέται σε εικονοστοιχεία ανά ίντσα, δηλαδή pixels-per-inch ή αλλιώς ppi) Αποδεκτό κόστος Κατάλληλο μέγεθος (όχι πολύ μεγάλο για τις ανάγκες της φορητότητας, αλλά ούτε πολύ μικρό γιατί περιορίζεται η ευκρίνεια) Ενσωματωμένο πάνελ αφής Αποδεκτή κατανάλωση ενέργειας Συμβατή τροφοδοσίας τάσης με την A13-OLinuXino-MICRO, (ώστε να μην παρουσιαστεί η ανάγκη για χρήση επιπλέον μετατροπέων τάσεως) - (Προαιρετικά) Με βάση τα παραπάνω, επιλέξαμε μία υλοποίηση οθόνης μεγέθους 7'' της εταιρείας FriendlyARM, η οποία βασίζεται στο πάνελ AT070TN83 της εταιρείας Innolux. Περαιτέρω αναφορά στα τεχνικά της χαρακτηριστικά, όπως και στον τρόπο διασύνδεσής της με το υπόλοιπο σύστημα, θα γίνει στο κεφάλαιο 4. Όσον αφορά το κύκλωμα φορητής τροφοδοσίας, επιλέξαμε να το σχεδιάσουμε μόνοι μας αντί να χρησιμοποιήσουμε ένα ολοκληρωμένο κύκλωμα που θα αναλάμβανε όλες τις σχετικές διαδικασίες, όπως τη φόρτιση της μπαταρίας, τη μετατροπή της τάσεως όπου χρειάζεται, τη διαδικασία της ενεργοποίησης της συσκευής κ.τ.λ.. Με αυτή την επιλογή, πρώτον μειώνεται το κόστος της συνολικής υλοποίησης, αφού όπως θα δούμε και στη συνέχεια υλοποιούμε μόνο τις λειτουργίες που επιθυμούμε με πολύ οικονομικά εξαρτήματα. Δεύτερον, επεκτείνουμε τις γνώσεις μας με τη μελέτη του υποσυστήματος αυτού. Τρίτον, όπως θα δούμε και στο κεφάλαιο 4, το κύκλωμα αυτό είναι σχεδιασμένο σχεδόν ανεξάρτητα από τα υπόλοιπα περιφερειακά του συστήματος, οπότε μπορεί να ενσωματωθεί και να υποστηρίξει σχεδόν οποιοδήποτε σύστημα που

20 12 Κεφάλαιο 2 : Σχεδίαση Συστήματος απαιτεί τροφοδοσία DC 5V, με μέτριες απαιτήσεις ρεύματος και να το μετατρέψει σε φορητό. Όλα τα υποσυστήματα που αναφέρθηκαν σε αυτή την ενότητα θα μελετηθούν και θα αναλυθούν περαιτέρω στα κεφάλαια 3 και Σχεδίαση Λογισμικού Τελικού Συστήματος Εισαγωγή Με βάση τις επιλογές του υλικού, είδαμε πως ήδη έχουμε καταλήξει στην ανάγκη χρήσης ενός ολοκληρωμένου λειτουργικού συστήματος, στο οποίο θα κάνουμε μία σύντομη αναφορά παρακάτω. Στη συνέχεια, θα περιγράψουμε εν συντομία τη μέθοδο υλοποίησης της τελικής εφαρμογής και τις πιθανές εναλλακτικές. Επιπλέον, θα δούμε τους λόγους που μας οδήγησαν στην επιλογή του PDF ως συμβατού προτύπου για την ανάγνωση e-books από την κατασκευή μας, καθώς και τα βασικότερα χαρακτηριστικά του ιδίου του προτύπου Το λειτουργικό σύστημα GNU/Linux Ιστορικά Στοιχεία Όπως με το υλικό, έτσι και με το λογισμικό του λειτουργικού συστήματος προσανατολιστήκαμε προς την open-source επιλογή του GNU/Linux, το οποίο είναι επίσης ελεύθερο λογισμικό, υπό την άδεια GNU General Public License. [29] Πολύς κόσμος καταχρηστικά χρησιμοποιεί τον όρο Linux για το παραπάνω λειτουργικό σύστημα, αγνοώντας ότι αυτό είναι το όνομα του πυρήνα μόνο του συστήματος. Ο πυρήνας αποτελεί το πιο σημαντικό στοιχείο βέβαια του λειτουργικού, αλλά συνεχίζει να παραμένει ένα τμήμα του μονάχα. Χωρίς τα προγράμματα, τις βιβλιοθήκες και τα λοιπά εργαλεία που το απαρτίζουν, θα ήταν αδύνατο να αποτελέσει ολοκληρωμένο λειτουργικό σύστημα. Η κυκλοφορία του πυρήνα ξεκίνησε στις 5 Οκτωβρίου του 1991 από τον Linus Torvalds σαν προσπάθεια για τη δημιουργία ενός δωρεάν λειτουργικού συστήματος για υπολογιστές αρχιτεκτονικής x86, έχοντας σαν πρότυπο το λειτουργικό σύστημα Minix το οποίο με τη σειρά του πατούσε στα χνάρια του Unix. [30][31] Αρκετά νωρίτερα, το έτος 1984, είχε ξεκινήσει μία παρόμοια προσπάθεια από τον Richard Stallman, υπό το όνομα The GNU Project, η οποία είχε τον ίδιο σκοπό και ολοκληρωνόταν τη στιγμή που κυκλοφορούσε ο πυρήνας Linux. Αυτό που έλειπε για να δημιουργηθεί το GNU λειτουργικό σύστημα ήταν στοιχεία χαμηλότερου επιπέδου, όπως οι οδηγοί συσκευών και ο πυρήνας. Έτσι, το GNU σύστημα υιοθέτησε τον πυρήνα Linux στη δομή του. [32] Για το λόγο αυτό, το πλήρες όνομα του λειτουργικού συστήματος είναι GNU/Linux. Το λειτουργικό σύστημα GNU/Linux καταλαμβάνει μεγάλο ρόλο πλέον σε υπολογιστικά συστήματα εξυπηρετητών (servers), υπερ-υπολογιστές, ενσωματωμένα συστήματα και τα τελευταία χρόνια έχει εισέλθει δυναμικά και στον κόσμο των προσωπικών υπολογιστών. [33] Σε αυτό έχουν συμβάλει η ταχύτητά του, η ασφάλεια που παρέχει στους χρήστες, και φυσικά η διάθεσή του ως δωρεάν λογισμικό. Εικόνα 2-3: Tux ο πιγκουίνος, η μασκότ του Linux

21 13 Κεφάλαιο 2 : Σχεδίαση Συστήματος Δομή Συστήματος Αρχείων Όλες οι διανομές λειτουργικών συστημάτων που βασίζονται στο Linux έχουν μία προκαθορισμένη δομή συστήματος αρχείων (file system structure). Αυτή βέβαια δεν είναι δεσμευτική, υπό την έννοια ότι ορισμένοι κατάλογοι μπορεί να απουσιάζουν ή να υπάρχουν χωρίς να χρησιμοποιούνται, αν δεν είναι απαραίτητοι για το εκάστοτε σύστημα. Παρακάτω γίνεται μία σύντομη περιγραφή των υποκαταλόγων που συναντάμε σε πρώτο επίπεδο, δηλαδή κάτω από τον κατάλογο ρίζας (root ή / ), που είναι ο βασικός κατάλογος του συστήματος. Ονομασία Καταλόγου Περιγραφή /bin Βασικά εκτελέσιμα αρχεία δυαδικής μορφής για περιβάλλοντα λειτουργίας ενός χρήστη, τα οποία είναι προσβάσιμα από όλους τους χρήστες του συστήματος. /boot Αρχεία του bootloader του συστήματος. /dev Αρχεία συσκευών και περιφερειακών /etc Αρχεία ρυθμίσεων που έχουν εμβέλεια σε όλο το σύστημα, όπως και shell scripts εκκίνησης και τερματισμού διεργασιών. /home Κατάλογος αποθήκευσης προσωπικών αρχείων χρηστών. /lib Βασικές κοινόχρηστες βιβλιοθήκες για τα εκτελέσιμα αρχεία του συστήματος υπό τους καταλόγους /bin και /sbin. /media Κατάλογος mounting για αφαιρούμενες συσκευές. /mnt Κατάλογος mounting εξωτερικού συστήματος αρχείων. /opt Πακέτα λογισμικού επιπλέον προαιρετικών εφαρμογών. /proc Εικονικό σύστημα αρχείων, το οποίο παρέχει πληροφορίες σχετικά με την κατάσταση του συστήματος, όπως πληροφορίες για διάφορες διεργασίες και για τον πυρήνα. /root Κατάλογος αποθήκευσης αρχείων χρήστη με δικαιώματα χρήστη root. /sbin Βασικά εκτελέσιμα αρχεία δυαδικής μορφής του συστήματος, περισσότερο για λειτουργίες συντήρησης. /srv Περιέχει αρχεία για εξυπηρέτηση υπηρεσιών που βασίζονται σε πρωτόκολλα όπως το HTTP και το FTP. /tmp Προσωρινά αρχεία που συνήθως διαγράφονται με την επανεκκίνηση του συστήματος. /usr Επιπλέον εφαρμογές και βιβλιοθήκες χρηστών. /var Αρχεία που το περιεχόμενό τους αλλάζει κατά τη λειτουργία του συστήματος, όπως αρχεία καταγραφής Η διανομή του E-book Reader Ως διανομή του συστήματός μας θα μπορούσαμε να έχουμε χρησιμοποιήσει κάποια από τις πάμπολλες διαθέσιμες που κυκλοφορούν τα τελευταία χρόνια και βασίζονται στον πυρήνα Linux.

22 14 Κεφάλαιο 2 : Σχεδίαση Συστήματος Αντί αυτού, προτιμήσαμε να δημιουργήσουμε μία εμείς, ρυθμίζοντας τον πυρήνα Linux με βάση τις ανάγκες του συστήματός μας και δημιουργώντας ένα κατάλληλο σύστημα αρχείων, με τη χρήση του εργαλείου Buildroot. Με αυτόν τον τρόπο μπορούμε να πούμε πως επιτύχαμε τη βέλτιστη απόδοση με βάση την τεχνολογία και τις δυνατότητες του υλικού που χρησιμοποιούμε, και ταυτοχρόνως αυξήσαμε στο μέγιστο το διαθέσιμο ελεύθερο χώρο στον οποίο μπορεί ο χρήστης να αποθηκεύσει τα e-books του. Η επιλογή του εργαλείου Buildroot για τη δημιουργία του συστήματος αρχείων βασίστηκε στη δημοτικότητά του, στην απλότητά του, στην ευρεία χρήση του από τους προγραμματιστές αναλόγων συστημάτων και βεβαίως στις δυνατότητες που προσφέρει. Άλλη εναλλακτική λύση προσφέρει το εργαλείο OpenEmbedded, που αναλαμβάνει τον ίδιο σκοπό και τυγχάνει παρόμοιας αναγνώρισης από την κοινότητα προγραμματιστών. Θα αναφερθούμε περισσότερο στο εργαλείο Buildroot και στη χρήση του στο κεφάλαιο Ο τρόπος υλοποίησης της εφαρμογής ανάγνωσης PDF Μέθοδος με χρήση του X Window System framework Η πλειονότητα των προσωπικών υπολογιστικών συστημάτων με διανομές βασισμένες στο Linux περιλαμβάνουν το X Window System framework (ή αλλιώς X11 framework). Το framework αυτό χρησιμοποιείται για το σχεδιασμό και τη μετακίνηση των παραθύρων σε ένα GUI περιβάλλον χρήστη, όπως και για την ενσωμάτωση του ποντικιού, του πληκτρολογίου ή της ενδεχόμενης οθόνης αφής σε αυτό. Πάνω στο X Windows System τρέχει κάποιο περιβάλλον επιφάνειας εργασίας χρήστη (desktop environment), το οποίο αποτελείται ως βάση από έναν διαχειριστή παραθύρων (window manager) και από άλλες υποστηρικτικές εφαρμογές διεπαφής με τον χρήστη. Μερικά δημοφιλή desktop environments για περιβάλλοντα Linux είναι το GNOME, το Xfce και το KDE SC. [34] Μία λογική πράξη θα ήταν να ενσωματώσουμε το X11 framework στη διανομή του λειτουργικού συστήματός μας, μαζί με κάποιο desktop environment. Έπειτα, θα μπορούσαμε να εγκαταστήσουμε οποιαδήποτε εφαρμογή προβολής PDF αρχείων που εκτελείται πάνω στο X11 framework και έτσι να έχουμε ένα ολοκληρωμένο και λειτουργικό σύστημα ανάγνωσης e-books, χωρίς πολύ κόπο. Αποφύγαμε όμως μία τέτοια προσέγγιση για τους εξής λόγους: Η χρήση του X Window System framework προσθέτει τεράστιο overhead σε ένα ενσωματωμένο σύστημα. Ακόμα και στην περίπτωση που το τελικό σύστημα είναι λειτουργικό, η κατανάλωση πόρων είναι κατά πολύ αυξημένη, όπως και ο χρόνος εκκίνησης. Επίσης, αυξάνεται ο χρόνος απόκρισης του συστήματος σε ενέργειες του χρήστη και φυσικά μειώνεται ο διαθέσιμος χώρος για αποθήκευση των PDF αρχείων. Γενικά το σύστημα γίνεται πιο αργό και βαρύ. Λόγω της πολυπλοκότητας του X Window System framework, με τη χρήση του αυξάνεται η πιθανότητα εμφάνισης κάποιου bug στο τελικό σύστημα. Χωρίς τη χρήση του X Window System framework, το λογισμικό που θα υλοποιήσουμε μπορεί να προσαρμοστεί και να λειτουργήσει σε πολύ περισσότερα ενσωματωμένα συστήματα, λόγω του πιο απλού σχεδιασμού του και της χρήσης λιγότερων πόρων. Άρα αυξάνεται η συμβατότητα με το εκάστοτε υλικό και επομένως η μεταφερσιμότητά του. Από την αρχή της παρούσας εργασίας θέσαμε ένα συγκεκριμένο στόχο, ο οποίος είναι η υλοποίηση ενός ενσωματωμένου συστήματος για την ανάγνωση e-book αρχείων. Έχοντας στο νου αυτόν τον στόχο καθ'όλη τη διάρκεια της εργασίας μας, πρέπει να ακολουθήσουμε τις αρχές σχεδίασης ενσωματωμένων συστημάτων, που μεταξύ άλλων απαιτούν να είμαστε συντηρητικοί στη χρήση των διαθέσιμων πόρων και να μη χρησιμοποιούνται αλόγιστα. Οπότε, από τη στιγμή που η χρήση του X11 framework όχι μόνο δεν απαιτείται, αλλά στην περίπτωσή μας δεν προσφέρει

23 15 Κεφάλαιο 2 : Σχεδίαση Συστήματος κάποιο πλεονέκτημα παρά μόνο επιβαρύνει το σύστημα, καταλήξαμε σε κάποια εναλλακτική και αποτελεσματικότερη μέθοδο Μέθοδος με άμεση χρήση του Linux framebuffer Η εναλλακτική μέθοδος που κάναμε λόγο στην προηγούμενη ενότητα είναι η απευθείας χρήση του Linux framebuffer. Με τον όρο framebuffer προσδιορίζεται ένα τμήμα μνήμης γραφικών, που περιέχει κάθε χρονική στιγμή ένα καρέ των γραφικών που επιθυμούμε να απεικονίσουμε στην οθόνη μας. Η έκφραση Linux framebuffer δηλώνει μία μέθοδο πρόσβασης στο framebuffer που βρίσκεται υπό τον πυρήνα Linux. Η χρησιμότητα του Linux framebuffer έγκειται στο γεγονός ότι προσφέρει ένα ενδιάμεσο στάδιο αφαιρετικότητας στην απεικόνιση γραφικών, μεταξύ του υλικού και του λογισμικού ενός συστήματος. Με άλλα λόγια, επιτρέπει στις εφαρμογές που τον χρησιμοποιούν, να αποκτούν πρόσβαση στο υλικό που διαχειρίζεται τα γραφικά του συστήματος, χωρίς αυτές να επικοινωνούν άμεσα με αυτό, αλλά μέσω της διεπαφής του Linux framebuffer. Έτσι, οι γραφικές εφαρμογές λειτουργούν ανεξαρτήτως υλικού της εκάστοτε πλατφόρμας. Υπάρχουν γενικά 3 εφαρμογές του Linux framebuffer: Η πρώτη έχει ήδη αναφερθεί στην ακριβώς προηγούμενη υποενότητα και πρόκειται για το X Window System framework. Το framework αυτό συνήθως χρησιμοποιεί τον Linux framebuffer για την απεικόνιση των γραφικών του, ώστε αυτή να γίνεται ανεξάρτητα από τους drivers γραφικών και το υλικό με το οποίο συνεργάζονται. Μία δεύτερη εφαρμογή του αποτελεί τη χρήση της συσκευής του Linux framebuffer (fbdev) για την υλοποίηση της κονσόλας του πυρήνα Linux. Για παράδειγμα, το λογότυπο εκκίνησης που θα απεικονίζει η συσκευή μας βασίζεται σε αυτήν ακριβώς τη λειτουργία. Η τρίτη και αυτή που θα χρησιμοποιήσουμε για την τελική εφαρμογή της προβολής PDF αρχείων, είναι η δημιουργία γραφικών προγραμμάτων που χρησιμοποιούν απευθείας τον Linux framebuffer, χωρίς τη μεσολάβηση του X Window System framework. Τον τρόπο που μπορεί αυτό να υλοποιηθεί πρακτικά, θα μελετήσουμε στη συνέχεια. Όπως αναφέραμε λοιπόν, καταλήξαμε στη χρήση της τρίτης επιλογής, αποφεύγοντας τα μειονεκτήματα του X Window System framework. Η κοινότητα του ελεύθερου λογισμικού περιλαμβάνει αρκετές προτάσεις υλοποίησής της. Υπάρχουν διάφορες επιλογές, από τις οποίες άλλες προσφέρουν διεπαφές επικοινωνίας με τον Linux framebuffer σε χαμηλό επίπεδο (low-level programming) και άλλες σε υψηλό (high-level). Στις επόμενες παραγράφους θα κάνουμε μία αναφορά στις πιο δημοφιλείς από αυτές, πριν καταλήξουμε σε αυτή που επιλέξαμε. Μία ευρέως διαδεδομένη λύση είναι η χρήση του DirectFB. Πρόκειται για μία χαμηλού επιπέδου βιβλιοθήκη γραφικών με πολύ μικρό αποτύπωμα μνήμης, που παρέχει ένα framework το οποίο υποστηρίζει μεταξύ άλλων επιτάχυνση υλικού (hardware acceleration) για τον Linux framebuffer. Παρέχει επίσης πολλαπλά επίπεδα απεικόνισης και διαχειρίζεται τις συσκευές εισόδου (οθόνη αφής, πληκτρολόγιο κ.τ.λ.), χωρίς καμία τροποποίηση του πυρήνα Linux. [35] Το μέγεθος ολόκληρης της βιβλιοθήκης μπορεί να περιοριστεί ακόμα και σε λιγότερο από 3MB. Συχνά χρησιμοποιείται ως ένα πρώτο επίπεδο, πάνω στο οποίο λειτουργούν βιβλιοθήκες γραφικών υψηλότερου επιπέδου. Μία άλλη λύση χαμηλού επιπέδου είναι η βιβλιοθήκη Simple DirectMedia Layer (SDL). Η βιβλιοθήκη αυτή σχεδιάστηκε αρχικά με στόχο την ανάπτυξη video games. Για το λόγο αυτό, εκτός της διαχείρισης των γραφικών, ενσωματώνει δυνατότητες όπως η διαχείριση του ήχου, των συσκευών εισόδου ή διαφόρων χρονομετρητών (timers) γενικού σκοπού του συστήματος. Μπορεί να λειτουργήσει πάνω από το X11 framework, απευθείας πάνω στον Linux framebuffer ή ακόμα και χρησιμοποιώντας τη βιβλιοθήκη DirectFB που αναφέρθηκε προηγουμένως. Η χρήση της ωστόσο σε ενσωματωμένα συστήματα είναι πιο σπάνια, εκτός και αν αυτά προορίζονται αποκλειστικά για video games. [36][37]

24 16 Κεφάλαιο 2 : Σχεδίαση Συστήματος Από τα πιο γνωστά και με ενεργή κοινότητα εργαλεία για τη δημιουργία γραφικών εφαρμογών είναι το GTK. Δημιουργήθηκε αρχικά για το GIMP (GNU Image Manipulation Program) και έπειτα ο κώδικάς του γράφτηκε ξανά, ώστε να υποστηρίζει αντικειμενοστρέφια. Προσφέρει μία υψηλού επιπέδου διεπαφή για την ανάπτυξη γραφικών εφαρμογών, κυρίως στοχεύοντας το X Window System. Μπορεί ωστόσο να χρησιμοποιηθεί και για τη σχεδίαση εφαρμογών για περιβάλλοντα Microsoft Windows, Mac OS X ή ακόμα και να χρησιμοποιηθεί πάνω στη βιβλιοθήκη DirectFB. Είναι τόσο δημοφιλές στην κοινότητα των προγραμματιστών, που αποτελεί το βασικό εργαλείο ανάπτυξης πολλών desktop environments, όπως το GNOME και το Xfce. H βασική διεπαφή προγραμματισμού εφαρμογών του GTK είναι σε C γλώσσα, αλλά πλέον υποστηρίζονται και άλλες δημοφιλείς γλώσσες προγραμματισμού, όπως η C++ και η Python. Το μέγεθός του μπορεί να περιοριστεί ακόμα και σε 9MB, συμπεριλαμβανόμενης της βιβλιοθήκης DirectFB. Σίγουρα το εν λόγω εργαλείο αποτελεί τη δεύτερη πρότασή μας, μετά από αυτή που επιλέξαμε. [38][39] Υπάρχει βεβαίως και ένα πλήθος λιγότερο διαδεδομένων λύσεων, όπως για παράδειγμα το έργο General Graphics Interface (GGI), το εργαλείο wxwidgets και το σύστημα minigui. Όλες αυτές οι εναλλακτικές μπορούν να χρησιμοποιηθούν χωρίς την ανάγκη του X Window System. [40] Το Qt Framework Έπειτα από την αξιολόγηση όλων των πιθανών επιλογών, καταλήξαμε στη χρήση του Qt Framework. Η ανάπτυξη αυτού του framework συντονίζεται από το ονομαζόμενο Qt Project, το οποίο ιδρύθηκε από την εταιρεία Nokia και πλέον καθοδηγείται από την εταιρεία Digia, από το έτος 2012 και έπειτα. [41] Κάνει χρήση κατά κύριο λόγο μία επεκταμένης έκδοσης της γλώσσας προγραμματισμού C++, ενώ μπορεί ο πιθανός προγραμματιστής να εκμεταλλευτεί και τη γλώσσα QML (Qt Modeling Language), η δομή της οποία βασίζεται στη γλώσσα Javascript και χρησιμεύει περισσότερο στη συγγραφή φορητών εφαρμογών. [42] Το Qt Framework δεν περιορίζεται μόνο σε ένα σύνηθες εργαλείο δημιουργίας γραφικών εφαρμογών, αλλά ενσωματώνει πολύ περισσότερες δυνατότητες, όπως η διαχείριση βάσεων δεδομένων, η προσπέλαση και επεξεργασία αρχείων γλώσσας XML και η διεπαφή προγραμματισμού εφαρμογών δικτύωσης. Επίσης, εκτός τα εξαιρετικά διαδικτυακά εγχειρίδια χρήσης (documentation) που προσφέρει, είναι πολύ εύκολη η φορητότητα των δημιουργούμενων εφαρμογών, λόγω του υψηλού βαθμού αφαιρετικότητας που χρησιμοποιεί. Όλοι αυτοί οι λόγοι μας οδήγησαν στην επιλογή του για ανάπτυξη της τελικής εφαρμογής, με τον τρόπο που θα μελετήσουμε στο κεφάλαιο 7. Το framework αυτό ενσωματώνει μερικά ιδιαίτερα χαρακτηριστικά, τα οποία ίσως είναι πρωτόγνωρα για έναν μέσο προγραμματιστή. Το πρώτο άξιο αναφοράς είναι η χρήση signals και slots, μίας δομής που χρησιμεύει στην εύκολη επικοινωνία μεταξύ των δημιουργημένων αντικειμένων. [43] Η λογική πίσω από το μηχανισμό αυτό είναι η δυνατότητα αποστολής σημάτων από τα γραφικά στοιχεία που περιέχουν πληροφορίες βάσει ενός συμβάντος, και οι οποίες μπορούν να ληφθούν από ειδικές συναρτήσεις άλλων στοιχείων, γνωστές ως slots. Ένα άλλο πολύ χρήσιμο χαρακτηριστικό του Qt Framework είναι η προσέγγιση Model/View που εισήχθηκε στην έκδοση 4 και βελτιστοποιεί τη σχέση μεταξύ των δεδομένων (Model) και της όψης (View). Αποτελεί εξέλιξη του προτύπου M-V-C (Model-View-Controller) το οποίο χρησιμοποιείται κατά κόρον ως κοινή τεχνική προγραμματισμού, ενοποιώντας τις συνιστώσες View και Controller σε μία. Με αυτή τη μέθοδο, υλοποιείται μία δομή αφαιρετικότητας, η οποία μας επιτρέπει την αλλαγή της απεικόνισης των δεδομένων, χωρίς να τροποποιήσουμε τις υφιστάμενες δομές δεδομένων. [44] Το τελευταίο ενδιαφέρον χαρακτηριστικό του framework είναι ο αποκαλούμενος MOC (MetaObject Compiler). Πρόκειται για έναν μεταγλωττιστή κώδικα, ο οποίος δέχεται ως είσοδο τα αρχεία πηγαίου κώδικα μίας εφαρμογής και διερμηνεύει ορισμένες μακροεντολές εντός αυτών, με στόχο τη δημιουργία επιπλέον κώδικα C++ ο οποίος περιέχει και μεταπληροφορίες. Αυτές οι

25 17 Κεφάλαιο 2 : Σχεδίαση Συστήματος μεταπληροφορίες παρέχουν δυνατότητες προγραμματισμού που δεν είναι διαθέσιμες εγγενώς στη C++ γλώσσα, όπως ο μηχανισμός των signals και slots που παρουσιάσαμε ή η ασύγχρονη κλήση συναρτήσεων (μη διαθέσιμη τουλάχιστον στις παλαιότερες εκδόσεις των C++ compilers). Γενικότερα, όπως θα παρατηρήσουμε στο κεφάλαιο 7, το Qt Framework παρέχει πάρα πολλά εργαλεία και δυνατότητες στην κοινότητα των προγραμματιστών. Επίσης, συνεργάζεται με ένα μεγάλο πλήθος επεκτάσεων και βιβλιοθηκών, όπως η βιβλιοθήκη Poppler, την οποία επιλέξαμε για τη φόρτωση και την προσπέλαση των PDF αρχείων. Δεν είναι τυχαία η χρήση του για την ανάπτυξη προγραμμάτων από πολλές εταιρείες και οργανώσεις, όπως από την πολύ γνωστή, διεθνή κοινότητα ελεύθερου λογισμικού KDE. [45] Επιλογή προτύπου e-book [63] Σε αυτό το σημείο καλούμαστε να επιλέξουμε το πρότυπο των ηλεκτρονικών βιβλίων το οποίο θα υποστηρίζει η συσκευή μας. Περιοριστήκαμε στην επιλογή ενός μόνο προτύπου για λόγους απλότητας, χωρίς αυτό να σημαίνει ότι σε μία μελλοντική επέκταση δε δύναται να υποστηριχθούν και άλλα. Επίσης, προτιμήσαμε να βασιστούμε σε κάποιο ευρέως διαδεδομένο και προϋπάρχον πρότυπο αντί να συντάξουμε ένα δικό μας, ώστε να είναι σταθερό, δοκιμασμένο και να υποστηρίζεται από πληθώρα συσκευών e-reader. Κυκλοφορούν πάρα πολλά είτε κλειστά, είτε ανοιχτά πρότυπα, με διαφορετικές δυνατότητες το καθένα, χωρίς κάποιο να είναι το επίσημα αναγνωρισμένο για συσκευές e-book reader. Αυτή η διάσπαση έχει δημιουργηθεί κυρίως λόγω των τεχνικών διαχείρισης ψηφιακών δικαιωμάτων (DRM). Πολλές εταιρείες για να προστατεύσουν τα πνευματικά δικαιώματα των συγγραφέων, έχουν οδηγηθεί στη δημιουργία ιδιόκτητων προτύπων για τις συσκευές τους, με σκοπό να περιορίσουν την πειρατεία στα ηλεκτρονικά βιβλία. Ακόμα και αν διαθέτουμε ένα e-book σε πρότυπο συμβατό με τη συσκευή μας, μπορεί να μην είναι εφικτή η ανάγνωσή του, αν δεν είμαστε εξουσιοδοτημένοι για μία τέτοια χρήση και αυτό ενσωματώνει κάποια τεχνολογία DRM. Αν έπρεπε να αναφέρουμε τα τρία δημοφιλέστερα πρότυπα e-book των τελευταίων χρόνων, αυτά θα ήταν με σιγουριά το Electronic Publication (.epub), το Mobipocket (.mobi) και το Portable Document Format (.pdf). Το καθένα παρουσιάζει τα δικά του πλεονεκτήματα και μειονεκτήματα. Το πρότυπο Electronic Publication αποτελεί εξέλιξη του Open ebook και έχει δημιουργηθεί από το International Digital Publishing Forum (IDPF). [46][47] Πρόκειται για ανοιχτό πρότυπο με συνήθως αναδιαμορφούμενο περιεχόμενο, που σημαίνει ότι η απεικόνισή του βελτιστοποιείται κάθε φορά, αναλόγως τη συσκευή που χρησιμοποιούμε. Αυτό συνήθως αντιμετωπίζεται σαν πλεονέκτημα, αν και μπορεί να θεωρηθεί αρνητικό χαρακτηριστικό σε περιπτώσεις που επιθυμούμε ομοιόμορφη απεικόνιση του e-book, μεταξύ διαφορετικών συστημάτων. Το Electronic Publication έχει πλησιάσει περισσότερο από κάθε άλλο τον ορισμό ως επίσημο πρότυπο για e-books και για αυτό το λόγο υποστηρίζεται σχεδόν από όλες τις συσκευές e-reader. Μερικά άλλα δημοφιλή πρότυπα, όπως το ibook (.ibooks) της εταιρείας Apple αποτελούν παραλλαγές αυτού. Το Mobipocket είχε δημιουργηθεί από την ομώνυμη εταιρεία, η οποία εξαγοράστηκε από την Amazon το [48] Είναι και αυτό βασισμένο σε μία παλαιότερη έκδοση του Open ebook και χρησιμοποιείται από το λογισμικό Mobipocket Reader, για την ανάγνωση e-books σε συσκευές PDA και Smartphones. Από τα τέλη όμως του 2011, η Amazon έπαυσε την έκδοση e-books σε μορφή.mobi, προς υποστήριξη του ιδιόκτητου προτύπου Kindle (.azw), το οποίο είναι σχεδόν πανομοιότυπο σε δομή με το Mobipocket, αλλά υποστηρίζεται μόνο από e-readers της εταιρείας. [49] Όπως και το.epub, έτσι και τα παραπάνω πρότυπα υποστηρίζουν αναδιαμορφούμενο και πλούσια μορφοποιημένο περιεχόμενο. Να σημειώσουμε ότι οι πιο πρόσφατες συσκευές Kindle της Amazon χρησιμοποιούν ως βασικό πρότυπο το Kindle Format 8 (.kf8) αντί του.azw, το οποίο παρέχει εν μέρει προς τα πίσω συμβατότητα με το πρότυπο Mobipocket, αφού μπορεί να ενσωματώσει έγγραφα με τέτοιας μορφής περιεχόμενο. [50][51][52]

26 18 Κεφάλαιο 2 : Σχεδίαση Συστήματος Το πρότυπο στο οποίο καταλήξαμε τελικά είναι το Portable Document Format της Adobe Systems. Η βασική του διαφορά από τα προηγούμενα είναι ότι έχει σχεδιαστεί με στόχο την απεικόνιση των σελίδων υπό προκαθορισμένη μορφή, ανεξαρτήτως οθόνης, αν και η δυνατότητα αναδιαμορφούμενου περιεχομένου έχει προστεθεί προσφάτως. Ως αποτέλεσμα, αρχεία τύπου.pdf που έχουν δημιουργηθεί για εκτύπωση σε κοινά μεγέθη χαρτιού, μπορεί να μην είναι εύκολο να αναγνωστούν σε μικρές ή χαμηλής ανάλυσης οθόνες. Όπως θα δούμε και στην τελική εφαρμογή, για να επιλυθεί το πρόβλημα αυτό είναι απαραίτητη η ενσωμάτωση της λειτουργίας μεγέθυνσης. Παρόλα αυτά, καθώς το πρότυπο αυτό είναι ευρέως διαδεδομένο και χρησιμοποιείται όχι αποκλειστικά για e-books, αλλά και για άλλους σκοπούς, το προτιμήσαμε. Υποστηρίζεται σχεδόν από κάθε δημοφιλή συσκευή e-reader. Περισσότερα σχετικά με αυτό θα αναφερθούν στην υποενότητα που ακολουθεί Το πρότυπο αρχείων PDF Εισαγωγή To Portable Document Format (ή εν συντομία PDF ) πρόκειται για ένα πρότυπο αρχείων το οποίο δημιουργήθηκε από την εταιρεία Adobe Systems με σκοπό την αναπαράσταση εγγράφων σε ένα υπολογιστικό σύστημα, ανεξαρτήτως από το λογισμικό της εφαρμογής που αναλαμβάνει τη διαδικασία, το υλικό και το λειτουργικό σύστημα. [53] Κάθε αρχείο τύπου PDF ενσωματώνει μία πλήρη περιγραφή μίας προκαθορισμένης διάταξης των περιεχομένων του εκάστοτε εγγράφου, συμπεριλαμβανομένων των κειμένων, των φόντων, των γραφικών και άλλων πληροφοριών που είναι απαραίτητες για την κατάλληλη απεικόνιση του εγγράφου. Εικόνα 2-4: Το εικονίδιο αρχείων τύπου Adobe PDF Ιστορικά στοιχεία Το 1991, ο συνιδρυτής της Adobe Systems John Warnock περιέγραψε ένα πρότυπο που ονομάστηκε Camelot και εν συνεχεία, εξελίχθηκε στο γνωστό μας PDF. Οι προδιαγραφές του έγιναν διαθέσιμες στο κοινό δωρεάν το 1993, με το ίδιο το πρότυπο όμως να παραμένει ιδιοκτησία της Adobe Systems (ως ιδιόκτητο πρότυπο ή αλλιώς proprietary format). Αυτό βέβαια έμελλε να αλλάξει στα μισά του έτους 2008, οπότε και αναδημοσιεύτηκε ως ανοιχτό πρότυπο open standard και εκδόθηκε από το Διεθνή Οργανισμό Τυποποιήσεων (ISO) ως πρότυπο ISO :2008. [54][55] Επίσης το 2008, η Adobe Systems δημοσίευσε ένα Δημόσιο Δίπλωμα Ευρεσιτεχνίας, με το οποίο οποιοσδήποτε ενδιαφερόμενος έχει το δικαίωμα να κάνει χρήση όλων των πατεντών που ανήκουν στην Adobe Systems και είναι απαραίτητες για τη δημιουργία, τη χρήση, την πώληση και τη διανομή υλοποιήσεων που συμφωνούν με το PDF πρότυπο. [56] Η αποδοχή και χρήση του προτύπου από το κοινό προχωρούσε με αργά βήματα τις πρώτες μέρες τις κυκλοφορίας του. [57] Σε αυτό συνέβαλε ο μεγάλος ανταγωνισμός εξαιτίας τις ύπαρξης πολλών παρόμοιων προτύπων εκείνη την εποχή, όπως το DjVu που αναπτύσσεται ακόμη -, το Envoy, το Common Ground Digital Paper, το Farallon Replica, ακόμα και το PostScript που ανήκε στην ίδια την Adobe Systems! Επιπλέον, η σουίτα δημιουργίας και ανάγνωσης PDF της Adobe Systems ονόματι Adobe Acrobat δεν κυκλοφορούσε δωρεάν. Ανάμεσα σε πολλά μειονεκτήματα των πρώτων εκδόσεων PDF συγκαταλέγονται η απουσία υποστήριξης υπερσυνδέσμων, το μεγάλο μέγεθος των εγγράφων PDF σε σχέση με τα αρχεία απλού κειμένου, που ήταν απαγορευτικό για λήψη με χρήση των απλών συνδέσεων στο internet μέσω αργών modems, καθώς και η μεγάλη

27 19 Κεφάλαιο 2 : Σχεδίαση Συστήματος απαίτηση σε υπολογιστικούς πόρους. Η Adobe Systems συνέχιζε μέχρι προσφάτως την ανάπτυξη των προδιαγραφών του PDF, παράλληλα με την εξέλιξη της σουίτας Adobe Acrobat, της οποίας το πρόγραμμα Adobe Reader διανέμει δωρεάν από την έκδοση 2.0 και έπειτα. [58] Ωστόσο, υποστήριξε ότι από την έκδοση PDF 1.8 και έπειτα, οι προδιαγραφές θα ορίζονται από τεχνικές επιτροπές του ISO. Η πιο πρόσφατη έκδοση PDF είναι η 1.7 και παρουσιάζει συμβατότητα με όλες τις προηγούμενες εκδόσεις, δηλαδή συμπεριλαμβάνει όλες τις λειτουργίες που έχουν αναπτυχθεί από την έκδοση 1.0 μέχρι και την 1.6. Παρόλα αυτά, τα τελευταία χρόνια μετά τον ορισμό του προτύπου ως ISO , έχουν δημιουργηθεί 3 επεκτάσεις της έκδοσης 1.7 από την ίδια την Adobe Systems. Η έκδοση PDF 2.0 αναπτύσσεται υπό το όνομα ISO/CD και θα ενσωματώνει ορισμένες από τις επεκτάσεις της Adobe Systems πάνω στην έκδοση 1.7. [59] Παρακάτω φαίνονται οι εξελίξεις του προτύπου και της σουίτας Adobe Acrobat με την πάροδο των ετών: Έκδοση PDF Έτος Έκδοση Acrobat Adobe Extension Level Adobe Extension Level Adobe Extension Level Χ (10) Δομή Αρχείου Ένα αρχείο PDF αποτελείται από αντικείμενα, τα οποία μπορεί να ανήκουν σε έναν από τους 8 παρακάτω τύπους: Τιμές Αληθείας (αληθής ή ψευδής) Αριθμούς Αλφαριθμητικά Ονόματα Πίνακες Λεξικά, που αποτελούν συλλογές αντικειμένων με δείκτες τύπου Ονομάτων Ροές, που συνήθως περιέχουν μεγάλες ποσότητες δεδομένων Κενό αντικείμενο Τα διάφορα αντικείμενα μπορεί να είναι άμεσα (τα οποία είναι ενσωματωμένα σε κάποιο άλλο αντικείμενο) ή έμμεσα. Τα έμμεσα αντικείμενα αριθμούνται με βάση έναν αριθμό αντικειμένου και έναν αριθμό δημιουργίας. Ένας πίνακας δεικτών που ονομάζεται xref πίνακας αναθέτει σε κάθε έμμεσο αντικείμενο ένα byte offset σύμφωνα με τη θέση του αντικειμένου σε σχέση με την αρχή του εγγράφου. [60] Με αυτόν τον τρόπο υλοποιείται η δυνατότητα για μετάβαση σε κάποιο τυχαία

28 20 Κεφάλαιο 2 : Σχεδίαση Συστήματος επιλεγμένο από τον χρήστη αντικείμενο μέσα στο έγγραφο και επιτρέπει την πραγματοποίηση μικρών αλλαγών στο έγγραφο, χωρίς την αναδημιουργία ολόκληρου του αρχείου. Ένα PDF μπορεί να έχει είτε γραμμική διάταξη - ή αλλιώς βελτιστοποιημένη -, είτε μη γραμμική - ή αντίστοιχα μη βελτιστοποιημένη. Τα PDF χωρίς γραμμική διάταξη καταλαμβάνουν μικρότερο χώρο από ότι αυτά με γραμμική, αλλά η πρόσβαση είναι πιο αργή, αφού τα δεδομένα βρίσκονται διάσπαρτα μέσα στο αρχείο. Για αυτό το λόγω τα γραμμικά PDF προτείνονται για χρήση στο διαδίκτυο, αφού δε χρειάζεται να κατεβάσουμε ολόκληρο το αρχείο για να προβάλουμε ένα τμήμα του μόνο. Η αναπαράσταση των γραφικών μέσα στο PDF γίνεται με παρόμοιο τρόπο σε σχέση με το πρότυπο PostScript, εκτός από τη δυνατότητα της διαφάνειας, η οποία προστέθηκε από την έκδοση 1.4 και έπειτα. Συγκεκριμένα, χρησιμοποιείται ένα καρτεσιανό σύστημα συντεταγμένων, το οποίο είναι ανεξάρτητο από το περιβάλλον στο οποίο βρίσκεται και απεικονίζεται το PDF και το οποίο περιγράφει την επιφάνεια της σελίδας. Η περιγραφή της εκάστοτε σελίδας μπορεί να χρησιμοποιήσει έναν πίνακα για την τροποποίηση των γραφικών αυτών, όπως παράδειγμα για την περιστροφή τους ή τη μεγέθυνσή τους. Μία σημαντική ιδιότητα που περιλαμβάνει το PDF για την περιγραφή των γραφικών είναι η κατάσταση γραφικών (ή αλλιώς graphics state ). Πρόκειται για μία συλλογή γραφικών παραμέτρων, όπως παραδείγματος χάριν ο χρωματικός χώρος και ο τρέχον πίνακας μετασχηματισμού (current transormation matrix ή CTM ), τα οποία χρησιμοποιούνται από την περιγραφή σελίδας, για την τροποποίηση και απεικόνιση των γραφικών αυτών. Σχεδόν πάντα ένα αρχείο PDF είναι ο συνδυασμός διανυσματικών γραφικών, κειμένου και γραφικών τύπου bitmap. Το κείμενο αποθηκεύεται σαν ροές περιεχομένου και όχι σαν καθαρό κείμενο. Τα διανυσματικά γραφικά χρησιμοποιούνται κυρίως για την αναπαράσταση σχεδίων που αποτελούνται από γεωμετρικά σχήματα και γραμμές, ενώ τα γραφικά τύπου bitmap (ή αλλιώς raster, όπως αποκαλούνται) για αναπαράσταση φωτογραφιών και κοινών εικόνων. Όσο εξελίσσονταν οι εκδόσεις, το PDF άρχισε να υποστηρίζει συνδέσμους - σαν αυτούς που συναντάμε και στην εργασία αυτή -, φόρμες, κώδικα Javascript και άλλου είδους ενσωματωμένο περιεχόμενο, με τη χρήση επεκτάσεων. Από την έκδοση 1.6 και έπειτα υποστηρίζονται και τα διαδραστικά αντικείμενα 3D. [61][62] Να σημειώσουμε σε αυτό το σημείο ότι 2 αρχεία PDF που σε μία οθόνη μπορεί να απεικονίζονται το ίδιο, μπορούν να διαφέρουν κατά πολύ στο μέγεθός τους. Αυτό συμβαίνει για διαφόρους λόγους, όπως η ενσωμάτωση στο μεγαλύτερο αρχείο επιπλέον φόντων, η μεγαλύτερη ανάλυση στις εικόνες που περιέχει, η οποία μπορεί να είναι εμφανής μόνο σε εκτυπωμένα έγγραφα ή ακόμα και η αποθήκευση κειμένου με τη μορφή γραφικών. Υπάρχουν πολλά τεχνικά και μη ζητήματα σχετικά με το πρότυπο PDF που δεν αναφέραμε και ούτε πρόκειται να καλυφθούν σε αυτήν εδώ την εργασία, καθώς είναι πέραν του πεδίου μελέτης, όπως θέματα ασφαλείας, κωδικοποίησης, περιορισμών κ.α.. Εξάλλου, ο σκοπός της παρούσας εργασίας απέχει μακράν από την πλήρη κατανόηση του προτύπου αυτού και η σύντομη μελέτη του έγινε στα πλαίσια κατανόησης των βασικών δομών του, ώστε να γίνει η χρήση των εργαλείων που θα αποκωδικοποιήσουν το εκάστοτε PDF πιο εύκολη και προσιτή.

29 21 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας 3.1 Εισαγωγή Όπως ήδη αναφέρθηκε στο κεφάλαιο 2, η αναπτυξιακή πλατφόρμα που επιλέχθηκε για την υλοποίηση του e-book reader είναι η A13-OlinuXino-MICRO της εταιρείας Olimex, η οποία είναι η πιο λιτή έκδοση της οικογένειας A13-OlinuXino. Οι λόγοι που μας οδήγησαν σε αυτή την επιλογή αναφέρθηκαν επίσης στο κεφάλαιο 2. Στην παρούσα ενότητα θα ακολουθήσει μία βασική περιγραφή του επεξεργαστή και των λοιπών υποσυστημάτων υλικού που απαρτίζουν την A13-OlinuXino-MICRO, όπως και της αρχιτεκτονικής του πυρήνα του. Στη συνέχεια, θα μελετήσουμε συνοπτικά καθένα από τα λοιπά υποσυστήματα της αναπτυξιακής πλατφόρμας. 3.2 Η αρχιτεκτονική ARM Γενικά Πριν προχωρήσουμε με την καθαυτό ανάλυση του υλικού της πλατφόρμας μας, θα κάνουμε μία σύντομη αναφορά στην αρχιτεκτονική ARM του συστήματός μας. Η αρχιτεκτονική αυτή έκανε την εμφάνισή της τον Απρίλιο του 1985 και πλέον αναπτύσσεται από τη βρετανική εταιρεία ARM Holdings, η οποία ιδρύθηκε το [64] Το ακρωνύμιο ARM σήμαινε αρχικά Acorn RISC Machine, με την παρούσα ερμηνεία να έχει εξελιχθεί πλέον σε Advanced RISC Machine. [65] Εικόνα 3-1: Το λογότυπο ARM Χαρακτηριστικό των επεξεργαστών με πυρήνα ARM είναι η αρχιτεκτονική συνόλου εντολών τύπου RISC (32-bit και 64-bit), λόγω της οποίας απαιτούνται λιγότερα transistors για την κατασκευή τους, σε σχέση με επεξεργαστές αντιστοίχων αρχιτεκτονικών τύπου CISC. Ως εκ τούτου, παρουσιάζουν μειωμένο κόστος, κατανάλωση ενέργειας και παραγωγή θερμότητας, γεγονός που τους καθιστά κατάλληλους και πολύ δημοφιλείς για χρήση σε ενσωματωμένα συστήματα. [66] Το σύνολο εντολών της αρχιτεκτονικής ARM των 32-bit υποστηρίζει μία πληθώρα από τα σημαντικότερα χαρακτηριστικά της RISC αρχιτεκτονικής όπως: Load/store αρχιτεκτονική. Αυτό σημαίνει ότι η μνήμη του συστήματος μπορεί να προσπελαστεί μόνο κατά τη χρήση εντολών load και store, σε αντίθεση με τη register memory αρχιτεκτονική, στην οποία επιτρέπεται σε εντολές ο ένας τελεστέος να είναι αποθηκευμένος στη μνήμη. [67] Περιλαμβάνει 16 βασικούς καταχωρητές των 32-bit. Κάνει σχεδόν αποκλειστική χρήση εντολών εκτέλεσης σε 1 κύκλο ρολογιού. Παρουσιάζει σταθερό μέγεθος εντολών 32-bit (εκτός και αν γίνεται χρήση του συνόλου εντολών Thumb, το οποίο θα παρουσιαστεί παρακάτω).[ 68] Στατιστικά στοιχεία αναφέρουν ότι περισσότερα από 75% CPUs 32-bit που συναντώνται σε ενσωματωμένα συστήματα, περιλαμβάνουν πυρήνες ARM, κάτι που δικαιολογεί και τις

30 22 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας εντυπωσιακές πωλήσεις της παρακάτω εικόνας 3-2. [69] Ωστόσο, προβλέπεται ότι λόγω της δημοτικότητας τους, θα αυξηθεί στο άμεσο μέλλον το ποσοστό που καταλαμβάνουν οι επεξεργαστές αυτής της αρχιτεκτονικής και στους προσωπικούς υπολογιστές, με ποσοστό που θα ανέρχεται μέχρι και στο 23%, πριν το [70] Εικόνα 3-2: Πωλήσεις πυρήνων ARM ανά έτος, για τα έτη Στο παρακάτω γράφημα υπ'αριθμόν 3-3, μπορούμε να παρατηρήσουμε την εξέλιξη των πυρήνων ARM μέσα στο χρόνο. Εικόνα 3-3. Εξέλιξη των πυρήνων τεχνολογίας ARM με την πάροδο του χρόνου

31 23 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Με την ανάπτυξη της αρχιτεκτονικής ARM και ξεκινώντας με την εμφάνιση της σειράς πυρήνων Cortex, πλέον όλα τα νέα σχέδια πυρήνων της εταιρείας ανήκουν σε μία εκ των τριών ακόλουθων κατηγοριών: Cortex-A: Application profile. Οι επεξεργαστές με πυρήνα της κατηγορίας αυτής προορίζονται για χρήση σε κινητά τηλέφωνα, PDAs, tablets, παιχνιδομηχανές κ.τ.λ.. Cortex-R: Real-time profile. Οι επεξεργαστές με πυρήνα της κατηγορίας Cortex-R προορίζονται για εφαρμογές σε συστήματα πραγματικού χρόνου. Cortex-M: Microcontroller profile. Οι επεξεργαστές με πυρήνα Cortex-M είναι κατασκευασμένοι για συστήματα που ελέγχονται από μικροελεγκτές. [71] Ο πυρήνας του SoC που περιέχει η αναπτυξιακή μας πλακέτα είναι ο Cortex-A8, που ανήκει στην πρώτη από τις προηγούμενες κατηγορίες και θα παρουσιαστεί σε επόμενη ενότητα, αφού πρώτα περιγράψουμε συνοπτικά ορισμένες σημαντικές τεχνολογίες που χρησιμοποιούν οι ARM πυρήνες, προς αύξηση των επιδόσεών τους Τεχνολογίες και Χαρακτηριστικά Ένα σημαντικό χαρακτηριστικό των ARM επεξεργαστών είναι η εκτέλεση εντολών υπό συνθήκη ονόματι predication. Σχεδόν κάθε εντολή παρουσιάζει αυτή τη δυνατότητα και υλοποιείται με την προσθήκη ενός επιλογέα κώδικα υπό συνθήκη, των 4 bit. Αν και με αυτό τον τρόπο 4 από τα 32 bits σε έναν κώδικα εντολής είναι πάντα κατειλημμένα, αποφεύγονται έτσι οι εντολές διακλάδωσης σε μικρές δομές επιλογής (if statements), κάτι αρκετά σύνηθες. Ένα άλλο χαρακτηριστικό της ARM αρχιτεκτονικής, ίσως αναμενόμενο, είναι η υποστήριξη της τεχνικής pipeline. Οι υπό-αρχιτεκτονικές μέχρι και την ARM7 είχαν υλοποιημένο υλικό υποστήριξης pipeline 3 σταδίων, ενώ με την εξέλιξη της τεχνολογίες, αυξήθηκαν και τα στάδια. Ο πυρήνας της παρούσας εργασίας Cortex-A8 υποστηρίζει pipeline 13 σταδίων. Επίσης, υπάρχει η δυνατότητα επέκτασης του συνόλου εντολών ενός επεξεργαστή, με τη χρήση συνεπεξεργαστών. Ένας εικονικός χώρος συνεπεξεργαστών διαιρείται λογικά σε 16 συνεπεξεργαστές, μέσω των οποίον μπορούμε να αποκτήσουμε πρόσβαση σε περιφερειακό υλικό που έχει αντιστοιχηθεί σε κάποιον συνεπεξεργαστή, αντί στο χώρο της μνήμης, με αποτέλεσμα μικρότερη καθυστέρηση κατά την διαδικασία πρόσβασης. Ακόμη, τα τελευταία χρόνια έχουν προστεθεί κοινές εντολές ψηφιακής επεξεργασίας σήματος, όπως εντολές προσημασμένου πολλαπλασιασμού, πρόσθεσης με κρατούμενο κ.τ.λ.. [72] Η αρχιτεκτονική συνόλου εντολών Thumb Μία σημαντική καινοτομία παρουσιάστηκε το 1994, με την είσοδο στην αγορά των επεξεργαστών ARM7TDMI (από την οποίαν προέκυψε και ο χαρακτήρας T στην ονομασία). [73] Οι προγραμματιστές είχαν για πρώτη φορά τη δυνατότητα να επιλέξουν μεταξύ του συνόλου εντολών ARM και του συνόλου Thumb στη συγγραφή κώδικα για τη συγκεκριμένη αρχιτεκτονική επεξεργαστών. Το σύνολο εντολών Thumb αποτελεί ένα υποσύνολο του συνόλου εντολών ARM, στο οποίο όμως κάθε εντολή έχει μέγεθος 16-bit. Αυτό επιτυγχάνεται θεωρώντας πως κάποιο τελεστέοι εννοούνται και δε δηλώνονται άμεσα και με τον περιορισμό των δυνατοτήτων των εντολών για παράδειγμα πολλές εντολές Thumb μπορούν να προσπελάσουν μόνο το 50% των καταχωρητών γενικού σκοπού. Έτσι, αυξάνεται η πυκνότητα μεταφρασμένου κώδικα, έστω και αν για κάποιες διαδικασίες απαιτούνται πρόσθετες εντολές σε σχέση με το σύνολο εντολών των 32-bit. Το πλεονέκτημα στη χρήση των εντολών Thumb είναι η βελτιστοποιημένη απόδοση σε συστήματα που έχουν δίαυλο επικοινωνίας με τη μνήμη μικρότερο των 32-bit, οπότε ο κώδικας του εκάστοτε προγράμματος φορτώνεται ταχύτερα στον επεξεργαστή. Πολλά ενσωματωμένα συστήματα έχουν δίαυλο επικοινωνίας με τη μνήμη 16-bit, όπως για παράδειγμα η παιχνιδομηχανή

32 24 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Game Boy Advance, στην οποία μόνο ένα μικρό τμήμα μνήμης είναι προσπελάσιμο από δίαυλο 32-bit. Σε αυτές τις περιπτώσεις, η χρήση εντολών Thumb προτείνεται. Από το 2003 έχει κάνει την εμφάνισή της η συνέχεια της παραπάνω τεχνολογίας, με το όνομα Thumb-2 και με πρώτη εμφάνιση στους πυρήνες ARM1156. Με την εξέλιξη αυτή, η τεχνολογία υποστηρίζει επιπλέον εντολές μήκους 32-bit και έχει ως σκοπό να επιτύχει πυκνότητα κώδικα ίδια με τη Thumb, αλλά με απόδοση παρόμοια που θα είχε ο πυρήνας με χρήση εντολών ARM και μνήμης 32-bit. Από τους πυρήνες της κατηγορίας ARMv7 και έπειτα, θεωρείται ότι αυτός ο στόχος επετεύχθη. Οι σύγχρονοι επεξεργαστές ARM της κατηγορίας Cortex υποστηρίζουν και τις 2 καταστάσεις συνόλου εντολών, ARM και Thumb [74][75]. Όπως θα δούμε στα επόμενα κεφάλαια, στην μετάφραση του κώδικά μας και στη δημιουργία των εργαλείων που αναλαμβάνουν αυτή την εργασία, έχουμε εκμεταλλευτεί τη Thumb αρχιτεκτονική εντολών όπου υπήρχε η ανάλογη δυνατότητα, λόγω του διαύλου επικοινωνίας 16-bit του επεξεργαστή με τη μνήμη του συστήματος Η τεχνολογία Vector Floating Point (VFP) Η τεχνολογία Vector Floating Point αποτελεί μία επέκταση της τεχνολογίας ARM, με την προσθήκη ενός συνεπεξεργαστή που αναλαμβάνει την επεξεργασία δεδομένων κινητής υποδιαστολής, απλής και διπλής ακρίβειας, σε επίπεδο επιτάχυνσης υλικού (hardware accelerated). Είναι πλήρως συμβατή με το πρότυπο ANSI/IEEE Std , το οποίο ορίζει την επίσημη δυαδική αριθμητική κινητής υποδιαστολής. [76] Η τεχνολογία αυτή υποστηρίζει τον υπολογισμό δεδομένων κινητής υποδιαστολής σε ένα εύρος εφαρμογών, όπως η συμπίεση και η αποσυμπίεση δεδομένων φωνής, τα τρισδιάστατα γραφικά, οι εφαρμογές εκτύπωσης εγγράφων κ.τ.λ.. Ένας άλλος στόχος της VFP τεχνολογίας ήταν η δυνατότητα εκτέλεσης εντολών διανυσμάτων όπως ονομάζονταν, αλλά καθώς αυτές επενεργούσαν ακολουθιακά πάνω σε κάθε στοιχείο δυανύσματος και όχι παράλληλα, δεν προσέφεραν την αναμενόμενη ταχύτητα. Έτσι, αυτή η λειτουργία αφαιρέθηκε στη συνέχεια και μάλιστα αντικαταστάθηκε από την επέκταση NEON που θα παρουσιάσουμε στη συνέχεια. Κάποιοι πυρήνες, όπως και στην περίπτωσή μας ο Cortex-A8, ενσωματώνουν ένα VFPLite συνεπεξεργαστή, στον οποίον οι εντολές κινητής υποδιαστολής απαιτούν 10 φορές περισσότερους κύκλους ρολογιού σε σχέση με τον VFP. Οι διάφορες εξελίξεις της τεχνολογίας VFP φαίνονται παρακάτω: VFPv1 είναι πλέον απαρχαιωμένη και δε χρησιμοποιείται. VFPv2 είναι προαιρετική επέκταση που απαντάται στις αρχιτεκτονικές ARMv5TE, ARMv5TEJ και ARMv6. VFPv3-D32 είναι συμβατή με την έκδοση VFPv2 και προσθέτει ορισμένες βελτιώσεις, όπως η ύπαρξη 32 FPU καταχωρητών των 64-bit, η δυνατότητα για απευθείας φόρτωση σταθερών σε αυτούς κ.α.. VFPv3-D16 είναι ίδια με την προηγούμενη, αλλά με μόνο 16 καταχωρητές FPU. VFPv3-F16 συναντάται σπανίως και η βασική διαφορά της με τις προηγούμενες είναι η υποστήριξη του προτύπου IEEE [77] κινητής υποδιαστολής μισής ακρίβειας (16-bit). VFPv4 υποστηρίζεται από τους πυρήνες Cortex-A5 και είναι ικανή να εκτελέσει πράξη πολλαπλασιασμού και πρόσθεσης κινητής υποδιαστολής σε 1 μόνο βήμα. Όπως προαναφέραμε, ο επεξεργαστής της πλατφόρμας μας περιλαμβάνει ένα VFPLite συνεπεξεργαστή, τον οποίο όμως δεν χρησιμοποιήσαμε, λόγω της δυνατότητας χρήσης της τεχνολογίας NEON, η οποία προσφέρει καλύτερες αποδόσεις και παρουσιάζουμε στη συνέχεια.

33 25 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Η τεχνολογία Advanced SIMD (NEON) Η Advanced SIMD (αλλιώς NEON ή Media Processing Engine - MPE ) είναι μία τεχνολογία συνδυασμού συνόλου εντολών SIMD των 64-bit και 128-bit, που προσφέρει επιτάχυνση στη γενική επεξεργασία σήματος και ειδικά στην επεξεργασία γραφικών, βίντεο και δεδομένων βιντεοπαιχνιδιών σε επεξεργαστές ARM. Με τη χρήση αυτής της τεχνολογίας, γίνεται δυνατή η αποσυμπίεση και αναπαραγωγή αρχείων ήχου MP3, ακόμα και σε συχνότητες πυρήνα των 10MHz μόλις. Η τεχνολογία αυτή υποστηρίζει μέχρι και 16 ταυτόχρονες, παράλληλες πράξεις δεδομένων τύπου 8, 16, 32 ή 64-bit ακεραίων, καθώς και πράξεις απλής ακρίβειας (32-bit), δεδομένων κινητής υποδιαστολής. Το υλικό χρησιμοποιεί τους ίδιους καταχωρητές με τη VFP τεχνολογίας, στο σύνολό του όμως υποστηρίζεται από ξεχωριστά, αυτόνομα κυκλώματα. Η τεχνολογία NEON στους πυρήνες Cortex-A8 υποστηρίζει διανύσματα μέχρι και 128-bit, αλλά εκτελώντας πράξεις μέχρι 64-bit κάθε φορά. [78] Γενικά προτιμάται η χρήση της τεχνολογίας Advanced SIMD εις βάρος της VFP, ειδικά όταν απαιτούνται από μία εφαρμογή πολλές διανυσματικές πράξεις. Έτσι και στην περίπτωσή μας και συγκεκριμένα εξαιτίας της φύσης της τελικής εφαρμογής απεικόνιση γραφικών μερικά από τα οποία είναι διανυσματικού τύπου - φροντίσαμε ώστε το λογισμικό μας στο σύνολό του να κάνει χρήση της τεχνολογίας NEON, όπως θα περιγράψουμε στη συνέχεια της εργασίας. 3.3 Το SoC Allwinner A13 Η καρδιά της πλατφόρμας A13-OlinuXino-MICRO αποτελείται από το SoC Allwinner A13 όπως υποδηλώνει άλλωστε και το όνομά της που κατασκευάζεται από την κινέζικη εταιρεία Allwinner. Το Α13 ανήκει στην κατηγορία SoC A1X της Allwinner, ή αλλιώς sunxi όπως είναι πιο γνωστή υπό την κοινότητα του Linux. Είναι βασισμένο στον πυρήνα Cortex-A8 αρχιτεκτονικής 32-bit RISC ARMv7, η οποία είναι η δημοφιλέστερη της κατηγορίας ARM αυτή τη στιγμή. Είναι διαθέσιμο σε συσκευασία elqfp176, πράγμα που σημαίνει ότι μπορεί να κολληθεί πάνω στην πλακέτα χωρίς την ανάγκη ειδικού υλικού, ακόμα και με το χέρι, όπως και σχεδόν όλα τα υπόλοιπα ηλεκτρονικά στοιχεία της πλακέτας εκτός από το ολοκληρωμένο κύκλωμα της μνήμης. Αυτό, σε συνδυασμό με την πολύ χαμηλή τιμή του - περίπου 5 ευρώ/τεμάχιο σε μεγάλες ποσότητες -, μας δίνει τη δυνατότητα για άμεση αντικατάστασή του σε περίπτωση βλάβης και μειώνει σημαντικά το κόστος κατασκευής. Ο πυρήνας Cortex-A8 είναι ο πρώτος της κατηγορίας Cortex που υιοθετήθηκε από διάφορες εταιρείες για σε συσκευές κοινής χρήσης από τελικούς καταναλωτές. [79] Λειτουργεί με μέγιστη συχνότητα λειτουργίας από 600MHz μέχρι και πάνω από 1GHz και παρουσιάζει επιδόσεις 2.0 DMIPS/MHz. Είναι σχεδιασμένος να κάνει χρήση των περισσοτέρων τεχνολογιών που παρουσιάσαμε στην προηγούμενη ενότητα, όπως η τεχνολογία NEON, VFPv3 κ.α. και ενσωματώνει μνήμη cache επιπέδου 1 και 2. Παρουσιάζει συμβατότητα μεταφρασμένου κώδικα με τους πυρήνες τεχνολογίας ARM926, ARM1136 και ARM1176 και φυσικά περιέχει μονάδα διαχείρισης μνήμης (MMU), ώστε να έχει τη δυνατότητα να τρέχει λειτουργικό σύστημα με πυρήνα Linux. [80]

34 26 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εικόνα 3-4: Συνοπτική απεικόνιση των σημαντικότερων τεχνολογιών του Cortex-A8 Στη συγκεκριμένη υλοποίηση που περιλαμβάνεται στο A13, ο Cortex-A8 προορίζεται για χρήση σε μέγιστη συχνότητα 1GHz, ενώ περιλαμβάνει 32KB ξεχωριστή cache μνήμη 1ου επιπέδου για εντολές (I-cache) και 32KB cache μνήμη 1ου επιπέδου για δεδομένα (D-cache). Η cache μνήμη 2ου επιπέδου ανέρχεται στα 256KB. Εν συνεχεία, αναφέρονται επιγραμματικά τα χαρακτηριστικά και η υποστήριξη περιφερειακών του Α13 SoC πέρα από τον πυρήνα Cortex-A8: [81][82][83] Χαρακτηριστικά και Υποστήριξη Περιφερειακών του A13 SoC 55nm ARM Mali-400 με υποστήριξη Open GL ES 1.1/ 2.0 και Open VG 1.1 CedarX με υποστήριξη όλων των δημοφιλών τύπων συμπίεσης βίντεο και ανάλυση μέχρι 1920*1080@30fps Υποστήριξη εξόδου εικόνας CPU/RGB LCD Υποστήριξη εισόδου εικόνας CMOS sensor interface (CSI) 16-bit DDR2/DDR3 SDRAM με χωρητικότητα έως 512MB και συχνότητα μέχρι 533Mhz 8-bit NAND Flash με υποστήριξη MLC/TLC/SLC/EF-NAND Τεχνολογία Ολοκλήρωσης GPU VPU Υποστήριξη μνήμης Υποστήριξη διεπαφών συσκευών εκκίνησης NAND Flash SPI NOR Flash SD Card USB Touch panel 4-wire Resistive Touch Panel (RPT) Αναγνώριση κινήσεων gesture Ταυτόχρονη αναγνώριση αφής 2 σημείων

35 27 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας 1 Ελεγκτής USB 2.0 OTG 1 Ελεγκτής USB EHCI/OHCI Host 3 Ελεγκτές μνήμης SD 3.0 και emmc 4.3 υψηλής ταχύτητας 1 UART με σήματα μόνο RX/TX 1 UART με σηματα RX/TX/RTS/CTS 3 Ελεγκτές SPI 3 Ελεγκτές I2C 1 Ελεγκτής IR 1 Analog-to-Digital Converter χαμηλής ανάλυσης (LR) Ενσωματωμένος codec 24-bit για υποστήριξη ακουστικών 2 καναλιών και μικροφώνου 1 καναλιού 1 Ελεγκτής PWM Ελεγκτής DMA 48 ΚΒ μνήμης SRAM 6 ασύγχρονοι timers 2 σύγχρονοι timers 1 watchdog 2 AVS μετρητές Διεπαφές περιφερειακών Λοιπά ενσωματωμένα περιφερειακά συστήματος Εικόνα 3-5: Απεικόνιση των υποσυστημάτων που απαρτίζουν το A13 SoC Να σημειώσουμε σε αυτό το σημείο πως το A13 προορίζεται από την εταιρεία κατασκευής του για χρήση σε συστήματα που τρέχουν το λειτουργικό σύστημα Android (κυρίως tablets και e-book readers) και μάλιστα λόγω της σχέσης απόδοσης/τιμής, είναι πολύ δημοφιλές στην κατηγορία αυτή. [84] Για αυτό το λόγο πρώτον και δεύτερον λόγω της ελλιπής υποστήριξης του Α13 στην αγγλική γλώσσα από την Allwinner, οι περισσότεροι drivers που έχουν αναπτυχθεί από

36 28 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας την κοινότητα sunxi για την υποστήριξη των περιφερειακών σε περιβάλλον πυρήνα Linux, έχουν γίνει με τη μέθοδο του reverse engineering. Όπως θα δούμε και στη συνέχεια της εργασίας, αυτό αποτέλεσε τροχοπέδη πολλές φορές στη χρήση ορισμένων περιφερειακών, με ορισμένα από αυτά να μην είναι πλήρως λειτουργικά ακόμη και με το πέρας της συγγραφής της εργασίας. 3.4 Περιφερειακά Υποσυστήματα Εισαγωγή Πέρα από το SoC A13, για τη σωστή λειτουργία της αναπτυξιακής πλατφόρμας απαιτείται μία πληθώρα από υποστηρικτικά περιφερειακά υποσυστήματα, όπως ολοκληρωμένα κυκλώματα, παθητικά και ενεργά ηλεκτρονικά στοιχεία. Στη συνέχεια θα γίνει μία σύντομη περιγραφή αυτών, απλά και μόνο για την καλύτερη κατανόηση της λειτουργίας της πλακέτας, χωρίς εις βάθος ανάλυση καθενός στοιχείου Η μνήμη RAM [85] Το ολοκληρωμένο κύκλωμα της μνήμης είναι το H5TQ2G63BFR της εταιρείας Hynix. Πρόκειται για μία υλοποίηση της τεχνολογίας μνημών CMOS DDR3 SDRAM, μεγέθους 256MB. Η συσκευασία του ολοκληρωμένου είναι τύπου 96 ball FBGA, οπότε είναι αδύνατον να κολληθεί στην πλακέτα με το χέρι, ενώ ο δίαυλος επικοινωνίας δεδομένων με τον επεξεργαστή έχει εύρος 16-bit. Πριν δούμε πώς είναι οργανωμένη η μνήμη εσωτερικά του ολοκληρωμένου κυκλώματος, ας κάνουμε μία σύντομη περιγραφή της γενικότερης οργάνωσης μνήμης τύπου SDRAM. Πρωταρχική δομή στην ιεραρχία της οργάνωσης μνήμης τύπου SDRAM, είναι τα λεγόμενα memory banks. Η κάθε μνήμη χωρίζεται συνήθως σε 2,4 ή 8 memory banks, κάτι το οποίο βοηθάει στην επίτευξη μίας μορφής pipelining, αφού μπορούν να εκτελούνται διαφορετικές εντολές παράλληλα, σε διαφορετικά memory banks. Κάθε memory bank αποτελείται από ισάριθμο αριθμό θέσεων μνήμης, κάθε μία από τις οποίες έχει μέγεθος ίσο με το εύρος του διαύλου δεδομένων. Οι θέσεις μνήμης σε κάθε memory bank είναι οργανωμένες σε διάταξη δισδιάστατου πίνακα. Για να προσπελάσουμε μία συγκεκριμένη θέση μνήμης, είτε για ανάγνωση, είτε για εγγραφή, πρέπει πρώτα να ενεργοποιήσουμε το κατάλληλο memory bank και ταυτοχρόνως να επιλέξουμε μία σειρά θέσεων μνήμης. Αυτή η διαδικασία εκτελείται με την εντολή ACTIVE και τα δεδομένα που είναι διαθέσιμα για προσπέλαση μετά την εντολή αυτή, αποτελούν μία σελίδα μνήμης. Έπειτα, χρησιμοποιώντας τα ίδια pins που χρησιμοποιήσαμε προηγουμένως για επιλογή της σειράς, επιλέγουμε τη στήλη που επιθυμούμε και έτσι επικοινωνούμε με μία συγκεκριμένη θέση μνήμης μέσω του διαύλου δεδομένων. Η διαδικασία αυτή συμβάλει στη μείωση του αριθμού των εξωτερικών pins.

37 29 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εικόνα 3-6: Οργάνωση μνήμης εντός των memory banks Στην περίπτωσή μας, το chip της μνήμης περιλαμβάνει 128M ( ) θέσεις μνήμης, οργανωμένες σε 8 memory banks. Για την προσπέλαση κάθε memory bank χρησιμοποιούνται 3 εξωτερικά σήματα, τα BA0, BA1, BA2. Άρα, κάθε memory bank αποτελείται από 16Μ ( ) θέσεις μνήμης, που συνεπάγεται ότι απαιτούνται 2^24 bits για διευθυνσιοδότηση της καθεμίας. Αυτό γίνεται από τα pins A0-A13, τα οποία αρχικά δίνουν τη διεύθυνση της γραμμής και έπειτα τα 10 πρώτα από αυτά (Α0-Α9), δίνουν στο ολοκληρωμένο κύκλωμα της μνήμης τη διεύθυνση της εκάστοτε στήλης. Με αυτόν τον τρόπο επιτυγχάνεται η διευθυνσιοδότηση της μνήμης RAM και η προσπέλαση των δεδομένων μέσω του διαύλου δεδομένων DQL0-DQL7, DQH0-DQH7. Τα pins VDD και VSS συμβάλλουν στην τροφοδοσία του κυκλώματος μνήμης, ενώ τα pins VDDQ και VSSQ στην τροφοδοσία των σημάτων του διαύλου δεδομένων DQ. Οι εξωτερικοί πυκνωτές είναι απαραίτητοι για τη σταθερή λειτουργία του κυκλώματος, σύμφωνα με τον κατασκευαστή. Τα υπόλοιπα pins δέχονται σήματα ελέγχου, για τη δημιουργία των εντολών ελέγχου της μνήμης.

38 30 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εικόνα 3-7: Το ολοκληρωμένο κύκλωμα της μνήμης RAM του συστήματος και η διασύνδεσή του με το υπόλοιπο σύστημα Το κύκλωμα τροφοδοσίας Η πλακέτα Α13-OlinuXino-MICRO ενσωματώνει ένα σχετικά απλό κύκλωμα τροφοδοσίας, το οποίο αναλαμβάνει τη σταθερή παροχή ισχύος και την κατάλληλη μετατροπή της τάσης εισόδου, σε στάθμες τάσεων που απαιτούν τα διάφορα υποσυστήματα. Θα επεξηγήσουμε συνοπτικά το ρόλο των στοιχείων του κυκλώματος γενικά, χωρίς να μπούμε σε λεπτομέρειες, όπως παράδειγμα η μελέτη του ρόλου πυκνωτών εξομάλυνσης τάσεως, αντιστάσεων προστασίας ή παρόμοιων στοιχείων. Θα κάνουμε αναφορά μόνο στα στοιχεία που θεωρήσαμε μείζονος σημασίας. Το πρώτο κύκλωμα που συναντάμε, χρησιμοποιείται για την επιλογή της πηγής τάσεως που τροφοδοτεί ολόκληρο το σύστημα. Παρατηρούμε ότι το σύστημα μπορεί να τροφοδοτηθεί με τάση 5V είτε από τον κονέκτορα στα αριστερά, είτε από την παροχή του USB OTG στα δεξιά του σχήματος. Το FET3, το οποίο είναι ένα P-MOSFET, χρησιμοποιείται για την επιλογή αυτή με τον ακόλουθο τρόπο: Όταν υπάρχει τάση 5V στον κονέκτορα στα αριστερά, τότε μέσω της pull-up αντίστασης R43, το FET3 βρίσκεται στην περιοχή cut-off, και λειτουργεί πρακτικά σαν ανοιχτοκύκλωμα. Όταν όμως στον κονέκτορα δεν υπάρχει τάση, τότε μέσω της αντίστασης R45, το FET3 ενεργοποιείται και επιτρέπει να περάσει ρεύμα από μέσα του. Ως αποτέλεσμα, το κύκλωμα στη 2η περίπτωση μπορεί να τροφοδοτηθεί από την παροχή USB OTG. Το κύκλωμα περιλαμβάνει επιπλέον μία δίοδο προστασίας (D8), για περίπτωση που γίνει λάθος στη σύνδεση του κονέκτορα στα αριστερά, ένα LED ένδειξης λειτουργίας (PWR_LED) και μία επαφή NC (5V_E) για ενεργοποίηση/απενεργοποίηση της παροχής τάσης από τον κονέκτορα.

39 31 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εικόνα 3-8. Το κύκλωμα παροχής τροφοδοσίας τάσης 5V. Το επόμενο κύκλωμα έχει ως βάση το ολοκληρωμένο κύκλωμα MCP130T, το οποίο αναλαμβάνει ρόλο επόπτη για το σύστημα, σε περίπτωση που πατήσουμε το διακόπτη RESET που είναι συνδεδεμένος σε αυτό. Ο ρόλος του είναι να διατηρήσει το A13 SoC σε κατάσταση reset, μέχρι να σταθεροποιηθεί η τάση τροφοδοσίας του κυκλώματος σε αποδεκτά επίπεδα. Επίσης, λειτουργεί ως κύκλωμα προστασίας, όταν η τάση τροφοδοσίας πέφτει κάτω από τα αποδεκτά επίπεδα για οποιονδήποτε λόγο. [86] Εικόνα 3-9. Το κύκλωμα επαναφοράς (reset) του συστήματος. Τα τελευταία 3 κυκλώματα αυτής της υποενότητας θα τα μελετήσουμε μαζί, καθώς είναι παρόμοια, επιτελούν τον ίδιο σκοπό και είναι χτισμένα γύρω από το ίδιο ολοκληρωμένο κύκλωμα, το SY8008C. Το chip αυτό είναι ένας DC-DC σύγχρονος step-down μετατροπέας τάσης. Σκοπός του είναι η μετατροπή της τάσεως εισόδου των 5V σε χαμηλότερη τάση εξόδου (3.3V,1.5V και 1.4V σε κάθε περίπτωση), η οποία απαιτείται για τη λειτουργία του A13 SoC και των περιφερειακών του συστήματος. Καθένα από τα SY8008C μπορεί να παρέχει ρεύμα εξόδου μέχρι και 1.2Α, ενώ η συχνότητα λειτουργίας του είναι το 1.5MHz, η οποία επιλέχτηκε από την εταιρεία κατασκευής του για τη μέγιστη αποδοτικότητα και την ελαχιστοποίηση του μεγέθους των αναγκαίων εξωτερικών στοιχείων. Η αρχή λειτουργίας του ολοκληρωμένου κυκλώματος δε θα παρουσιαστεί εδώ, καθώς είναι σχεδόν ίδια με την αρχή λειτουργίας του DC-DC step-up μετατροπέα τάσεως που θα περιγράψουμε στο επόμενο κεφάλαιο. Θα παρατηρήσουμε όμως ότι θα μπορούσε να είχε χρησιμοποιηθεί για την ίδια μετατροπή της τάσης κάποιος απλούστερος, γραμμικός ρυθμιστής τάσεως, αλλά σε αυτή την περίπτωση θα υπήρχαν μεγάλες απώλειες ισχύος με τη μορφή θερμότητας από το σύστημα. Αντί αυτού, με τη χρήση ενός αποκαλούμενου switched-mode μετατροπέα, η αποδοτικότητα συχνά φτάνει μέχρι και 95%. Τα στοιχεία L2, L4 και L5 είναι βασικά και απαραίτητα για τη λειτουργία του step-down μετατροπέα, όπως και τα ζεύγη αντιστάσεων R17/R21, R37/R41, R42/R46, τα οποία είναι

40 32 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Ra ). Όλοι οι Rb πυκνωτές που έχουν χρησιμοποιηθεί έχουν ως σκοπό την σταθεροποίηση της τάσεως κατά τη διάρκεια μεταβατικών αποκρίσεων του συστήματος, και οι περισσότεροι μάλιστα συνίστανται και από τον κατασκευαστή του SY8008C. [87] Τον ίδιο ρόλο έχει και το πηνίο L3 που είναι συνδεδεμένο εν σειρά στο κύκλωμα. Η schottky δίοδος D7 έχει χρησιμοποιηθεί για τη δημιουργία της τάσεως των 3V. υπεύθυνα για τη ρύθμιση της τάσης εξόδου μέσω της εξίσωσης V out =0.6 (1+ Εικόνα 3-10: Τα 3 κυκλώματα υποβιβασμού της τάσης των 5V Τα υποσυστήματα υλοποίησης των διεπαφών USB επικοινωνίας Το A13-OlinuXino-MICRO περιλαμβάνει 2 θύρες USB επικοινωνίας, με την πρώτη να υλοποιεί το πρωτόκολλο USB-HOST και τη δεύτερη το πρωτόκολλο USB-OTG. Σχετικά με τη διεπαφή USB-HOST, παρατηρούμε πως οι 2 ακροδέκτες που μεταφέρουν τα σήματα δεδομένων από και προς το A13 SoC, συνδέονται απευθείας με αυτό. Αντιθέτως, ο ακροδέκτης που είναι υπεύθυνος για την παροχή τάσης 5V στο τυχόν περιφερειακό σύστημα που επικοινωνεί με την πλατφόρμα μας, συνδέεται με το A13 SoC μέσω ενός κυκλώματος περιορισμού ρεύματος. Το κύκλωμα αυτό χρησιμοποιεί το IC SY6280, το οποίο βασίζεται σε ένα P-MOSFET, για να περιορίσει το ρεύμα που μπορεί να παρέχει η πλακέτα μας στην περιφερειακή συσκευή USB, σύμφωνα με τα πρότυπα του πρωτοκόλλου. Το ρεύμα εξόδου του SY6280 περιορίζεται με βάση την αντίσταση που συνδέουμε μεταξύ του pin ISET και της γείωσης, και με βάση την εξίσωση 6800 Ι set =. Η εξίσωση αυτή μας δίνει στην προκειμένη περίπτωση για R59 = 13KΩ ένα R59 μέγιστο ρεύμα εξόδου 523mA, που είναι πολύ κοντά σε αυτό που ορίζεται από το πρότυπο USB (500mA). Επιπλέον, το SY6280 παρέχει προστασία στο σύστημα σε περίπτωση βραχυκυκλώματος στην έξοδο. Παρατηρούμε πως η τροφοδοσία της εκάστοτε περιφερειακής συσκευής είναι πάντα

41 33 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας ενεργοποιημένη μέσω της pull-up αντίστασης R60, ενώ μπορεί να ελεγχθεί από το λογισμικό, αν κλείσουμε τη NO επαφή HOST_EN. [88] Ο πυκνωτής εισόδου χρησιμοποιείται για να περιορίσουμε την πτώση τάσεως τη στιγμή που συνδέεται κάποια περιφερειακή συσκευή στη USB θύρα, ενώ τα παθητικά στοιχεία στην έξοδο βοηθούν στη σταθεροποίηση της τάσεως και του ρεύματος κατά τα μεταβατικά φαινόμενα. Το πηνίο L6 είναι απαραίτητο για τον εξής λόγο: Το περίβλημα των περισσοτέρων καλωδίων USB λειτουργεί αποτρεπτικά προς τη δημιουργία ηλεκτρομαγνητικών παρεμβολών από και προς τα σήματα δεδομένων του καλωδίου, μέσω της αρχής του κλωβού του Faraday. Για να εφαρμόσουμε την αρχή αυτή, πρέπει το περίβλημα να είναι γειωμένο. Αν το συνδέσουμε όμως στη γείωση του συστήματος απευθείας, έχουμε δημιουργήσει μία κεραία μεγάλου μήκους, η οποία ενισχύει τον υψίσυχνο θόρυβο του περιβάλλοντος και τον μεταφέρει στο σύστημά μας μέσω της γείωσης! Έτσι, με την παρεμβολή του πηνίου L6, τα υψίσυχνα σήματα δεν μεταβαίνουν στο σύστημά μας. Εικόνα Το κύκλωμα υλοποίησης της διεπαφής επικοινωνίας USB-HOST Η διεπαφή USB-OTG υλοποιείται σχεδόν με την ίδια λογική και τα ίδια εξαρτήματα με τη διεπαφή USB-HOST, όπως παρατηρούμε από το παρακάτω σχήμα, με μικρές μόνο διαφοροποιήσεις λόγω του πρωτοκόλλου, όπως η ύπαρξη του επιπλέον pin ID στον κονέκτορα. Εικόνα Το κύκλωμα υλοποίησης της διεπαφής επικοινωνίας USB-OTG Λοιπά υποσυστήματα Το πιο πολύπλοκο από τα υπόλοιπα υποσυστήματα που συναντάμε πάνω στην πλακέτα είναι με διαφορά το κύκλωμα που αναλαμβάνει τη μετατροπή των σημάτων οδήγησης LCD που δημιουργεί το A13 SoC, σε σήματα διεπαφής VGA. Αποτελείται κυρίως από ένα δίκτυο buffers, το οποίο υλοποιείται με τη χρήση των ολοκληρωμένων κυκλωμάτων SN74ALVC244 (U4, U5, U6), καθένα από τα οποία περιλαμβάνει 8 από αυτούς. Επίσης, χρησιμοποιούνται 3 FETs καναλιού-n (FET1, FET2, FET4), τα οποία λειτουργούν ως αντιστροφείς των σημάτων LCD_DE, LCD_VSYNC και LCD_HSYNC. Περαιτέρω μελέτη του κυκλώματος αυτού προϋποθέτει και αντίστοιχη ανάλυση της λειτουργίας του προτύπου VGA, κάτι το οποίο δεν είναι σχετικό με τη διπλωματική εργασία, μιας και δε χρησιμοποιήθηκε τελικώς η εν λόγω διεπαφή.

42 34 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας Εικόνα 3-13: Το κύκλωμα μετατροπής των σημάτων διεπαφής LCD σε VGA. Η διεπαφή MicroSD αποτελείται από τα αναγκαία σήματα τροφοδοσίας και δεδομένων για υλοποίηση της SPI επικοινωνίας και το μόνο άξιο παρατήρησης είναι η ύπαρξη των pull-up αντιστάσεων, όπως και στις υπόλοιπες 2 διεπαφές SPI του συστήματος. Εικόνα 3-14: Το κύκλωμα υλοποίησης της διεπαφής επικοινωνίας με τη MicroSD κάρτα μνήμης. Η επέκταση GPIO χωρίζεται σε 2 θύρες επικοινωνίας, τη GPIO-1 και τη GPIO-2. Η 1η περιλαμβάνει τις διεπαφές των σημάτων RESET και NMI, ενώ η 2η που μας ενδιαφέρει περισσότερο, περιλαμβάνει διεπαφές για όλα τα υπόλοιπα pins τύπου GPIO του συστήματος. Μερικά από αυτά είναι πολυπλεγμένα εσωτερικά του A13 SoC με άλλες διεπαφές, όπως τύπου I2C και PWM, ενώ το PIN37 ελέγχει τη λυχνία LED της εικόνας Εικόνα 3-15: Οι θύρες επικοινωνίας GPIO-1 και GPIO-2. Τα υπόλοιπα κυκλώματα είναι αρκετά απλά στο σχεδιασμό και τη λειτουργία τους και δεν χρήζουν ιδιαίτερης ανάλυσης, οπότε παραθέτουμε μόνο τους σχεδιασμούς τους. Αποτελούνται κυρίως από θύρες που συγκεντρώνουν σήματα ορισμένων διεπαφών. Η διεπαφή της επέκτασης

43 35 Κεφάλαιο 3 : Υλικό Αναπτυξιακής Πλατφόρμας LCD θα αναλυθεί στο επόμενο κεφάλαιο. Εικόνα 3-16: Τα υπόλοιπα υποστηρικτικά κυκλώματα της A13-OlinuXino-MICRO.

44 36 Κεφάλαιο 4 : Περιφερειακό υλικό Κεφάλαιο 4 : Περιφερειακό υλικό 4.1 Εισαγωγή Στο κεφάλαιο 4 θα γίνει μία εκτεταμένη περιγραφή του σχεδιασμού του περιφερειακού υλικού του συστήματος. Με την έκφραση περιφερειακό υλικό εννοούμε το υλικό που υποστηρίζει την τελική συσκευή, πέραν της αναπτυξιακής πλατφόρμας A13-OlinuXino-MICRO. Με άλλα λόγια, αυτό απαρτίζεται από την οθόνη και το κύκλωμα φορητής τροφοδοσίας, συμπεριλαμβανομένων των απαραιτήτων στοιχείων που υποβοηθούν τη διασύνδεση αυτών με την αναπτυξιακή πλατφόρμα. 4.2 Η οθόνη TFT/LCD FriendlyARM 7'' Περιγραφή υλικού και τεχνικά χαρακτηριστικά Στο κεφάλαιο 2 καταλήξαμε στη χρήση της οθόνης 7'' της εταιρείας FriendlyARM, με βάση τις προϋποθέσεις που θέσαμε και πρέπει εκείνη να καλύπτει. Η οθόνη αυτή βασίζεται στο TFT/LCD πάνελ AT070TN83 της εταιρείας Innolux, το οποίο όμως δεν μπορέσαμε να προμηθευτούμε ως είναι, οπότε αναγκαστικά επιλέξαμε μία υλοποίηση άλλης εταιρείας που το έχει ως βάση. Πριν προβούμε στην ανάλυση των χαρακτηριστικών του πάνελ αυτού, θα περιγράψουμε σύντομα το υπόλοιπο υποστηρικτικό υλικό της οθόνης μας. Μία πλήρη απεικόνιση του υλικού μπορούμε να δούμε στο Παράρτημα Α της εργασίας, όπου έχουμε συμπεριλάβει τα σχετικά σχηματικά αρχεία. Εικόνα 4-1: Η εμπρόσθια και η οπίσθια όψη της οθόνης μας. Το λιγότερο σημαντικό υποσύστημα στην περίπτωσή μας, είναι ο μικροελεγκτής STC12LE4052. Ο ρόλος του στην παρούσα υλοποίηση της οθόνης είναι ένας μερικός έλεγχός της, όπως για παράδειγμα η ρύθμιση της φωτεινότητας και η υλοποίηση διεπαφής επικοινωνίας με το πάνελ αφής. Καθώς όλες αυτές τις διεργασίες θα τις αναλάβει η πλατφόρμα μας A13-OlinuXino-MICRO, ο μικροελεγκτής θα μείνει αχρησιμοποίητος, οπότε μας είναι αδιάφορος στα πλαίσια αυτής της εργασίας. Το πάνελ AT070TN83 για να λειτουργήσει σωστά, απαιτεί διπλή τροφοδοσία συνεχούς τάσεως. Η μία τάση τροφοδοσίας πρέπει να είναι 3.3V, ενώ η δεύτερη 5V. Η τάση των 5V χρησιμοποιείται για τη λειτουργία του οπίσθιου φωτισμού (backlight) της οθόνης, ενώ η τάση των 3.3V για όλο το υπόλοιπο ψηφιακό κύκλωμα. Ευτυχώς, η εταιρεία FriendlyARM έχει συμπεριλάβει στην

45 37 Κεφάλαιο 4 : Περιφερειακό υλικό υλοποίησή της το γραμμικό ρυθμιστή τάσεως LM , ο οποίος μετατρέπει την τάση εισόδου των 5V σε τάση εξόδου 3.3V. Έτσι, αρκεί η τροφοδοσία της οθόνης μόνο με μία τάση των 5V. Εικόνα 4-2: Το κύκλωμα του υποσυστήματος μετατροπής τάσεως από 5V σε 3.3V. Το επόμενο υποσύστημα της οθόνης μας είναι το αντιστασιακό πάνελ αφής τεσσάρων καλωδίων (4-wire resistive touch panel). Σε σχέση με τα χωρητικά πάνελ αφής (capacitive touch panels), τα αντιστασιακά προσφέρουν το πλεονέκτημα ότι μπορεί να τα χειριστεί κάποιος χρησιμοποιώντας οποιοδήποτε μέσο ως δείκτη, ενώ στα χωρητικά πρέπει αναγκαστικά το υλικό που εφάπτεται με το πάνελ στο σημείο που δείχνουμε, να είναι ηλεκτρικά αγώγιμο. Έτσι, για παράδειγμα το πάνελ αφής της οθόνης μας μπορεί να χρησιμοποιηθεί ακόμη και με γάντια. Παρόλα αυτά, η πλειοψηφία των σύγχρονων πάνελ αφής είναι χωρητικού τύπου, καθώς αποκρίνονται κατά πολύ καλύτερα, αναγνωρίζοντας ακόμα και αγγίγματα πολύ μικρής πίεσης. [89] Η τιμή όμως των χωρητικών πάνελ αφής σε μικρές ποσότητες είναι συνήθως πολύ υψηλή, με αποτέλεσμα να είναι δυσεύρετα για εφαρμογές μικρής κλίμακας όπως η εργασία αυτή. Επίσης, η διασύνδεσή τους με το υπόλοιπο σύστημα είναι πιο περίπλοκη από τα αντιστασιακά. Για αυτούς τους λόγους, γνωρίζαμε από την αρχή της παρούσας εργασίας ότι το πάνελ αφής του τελικού συστήματος θα είναι αντιστασιακού τύπου, ανεξαρτήτως της οθόνης που θα επιλέγαμε. Τα αντιστασιακά πάνελ αφής τεσσάρων καλωδίων αποτελούνται από 2 διάφανα επίπεδα που είναι επικαλυμμένα με αγώγιμο υλικό. Το ένα επίπεδο αντιπροσωπεύει τον άξονα Y, ενώ το άλλο τον άξονα Χ. Σε κάθε επίπεδο αντιστοιχούν 2 από τα 4 καλώδια του πάνελ, με ονομασίες Y+, Y-, X+, X-. Όταν δεν αγγίζουμε το πάνελ, συνήθως εφαρμόζεται ένα θετικό δυναμικό στο καλώδιο Y+ μέσω μίας pull-up ανίστασης και ένα δυναμικό ίσο με τη γείωση του συστήματος, στο καλώδιο X-. Έτσι, το καλώδιο Y+ είναι συνεχώς σε υψηλό δυναμικό όσο δεν αγγίζουμε την οθόνη αφής, ενώ μόλις την αγγίξουμε και υπάρξει επαφή μεταξύ των 2 επιπέδων, το δυναμικό του ισούται με αυτό της γείωσης. Με αυτόν τον τρόπο δύναται να δημιουργηθεί μία διακοπή (interrupt) στο σύστημα, ώστε να αναγνωριστεί το σημείο αφής. Εικόνα 4-3: Ανίχνευση συμβάντος αφής από το αντίστοιχο πάνελ.

46 38 Κεφάλαιο 4 : Περιφερειακό υλικό Η ανάγνωση των συντεταγμένων του σημείου αφής γίνεται σε 2 στάδια. Στο πρώτο στάδιο εφαρμόζεται ένα θετικό δυναμικό στο καλώδιο Y+ και ένα δυναμικό ίσο με τη γείωση στο καλώδιο Y-, ενώ μετράμε την τάση του καλωδίου X+ (για παράδειγμα χρησιμοποιώντας έναν ADC). Ο λόγος της τάσης που μετρήθηκε προς την τάση του καλωδίου Y+ ισούται με το λόγο της συντεταγμένης y προς το συνολικό ύψος της οθόνης αφής, δηλαδή y= V X+ height screen V Y+. Αυτό οφείλεται στο διαιρέτη τάσης που δημιουργήσαμε κατά μήκος του άξονα y στο επίπεδο των καλωδίων Y+ και Y-, παρεμβάλλοντας το καλώδιο X+ στο σημείο αφής. Με αντίστοιχο τρόπο, η συντεταγμένη x υπολογίζεται από τον τύπο x= V Y+ width screen V X+. [90] Εικόνα 4-4: Εύρεση συντεταγμένων σημείου αφής Οι απαραίτητοι drivers για την οδήγηση του πάνελ αφής θα ενσωματωθούν στο σύστημα στο κεφάλαιο 6. Δε θα χρειαστεί κάποια αλλαγή σε αυτούς που είναι ήδη διαθέσιμοι μαζί με τον πυρήνα Linux, παρά μόνο ο ορισμός της διαγωνίου της οθόνης μας, καθώς ο τρόπος λειτουργίας των 4-wire resistive touch panels είναι ίδιος, ανεξαρτήτως κατασκευής. Τελευταίο και κυριότερο υποσύστημα του κυκλώματος οθόνης είναι το πάνελ TFT/LCD AT070TN83 που αναφέραμε προηγουμένως. Τα γενικά χαρακτηριστικά του φαίνονται στον πίνακα της επόμενης εικόνας, χωρίς κάποιο από αυτά να χρήζει ιδιαίτερης ανάλυσης. Η οδήγηση των LCD κρυστάλλων γίνεται με Thin-Field Transistors (TFT), που είναι και ο συνηθέστερος τρόπος πλέον. Η διαγώνιός του όπως βλέπουμε είναι 7'', με την ανάλυση της οθόνης να είναι 800x480 εικονοστοιχεία (pixels). Η ανάλυση αυτή είναι πολύ κοινή στις οθόνες των 7'' και παρέχει αρκετά καλή ευκρίνεια για τις ανάγκες της εργασίας. Ο συνδυασμός της διαγωνίου με την ανάλυση, μας δίνει μία πυκνότητα ~ εικονοστοιχείων ανά ίντσα (ppi) - προκύπτει από το πυθαγόρειο 2 2 θεώρημα ως εξής: ( )

47 39 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-5: Γενικές προδιαγραφές του πάνελ AT070TN83 της εταιρείας Innolux. Η χρωματική απόχρωση καθενός εικονοστοιχείου κατά τη λειτουργία της οθόνης, είναι το αποτέλεσμα του συνδυασμού του κόκκινου, του πράσινου και του μπλε χρώματος (RGB). Αυτά τα χρώματα χρησιμοποιούνται πλέον ως βάση σχεδόν σε όλες τις οθόνες, καθώς έχει αποδειχτεί ότι μεγιστοποιούν τις διαφορές στην απόκριση των φωτοευαίσθητων κυττάρων του οφθαλμού, σε διαφορετικά μήκη κύματος φωτός. Έτσι, δημιουργείται το μέγιστο δυνατό χρωματικό τρίγωνο που μπορεί να υπάρξει με μίξη τριών βασικών χρωμάτων. [91] Αν και δεν είναι εμφανές στην εικόνα 4-5, θα δούμε στην επόμενη ενότητα ότι το κάθε χρώμα από τα 3 παραπάνω έχει βάθος 6 bits. Οπότε, το φάσμα χρωμάτων της οθόνης αποτελείται από 218= διαφορετικά χρώματα. Σύμφωνα με τον πίνακα που παραθέσαμε παραπάνω, το πάνελ AT070TN83 καταναλώνει =3.325W σε τυπικές συνθήκες λειτουργίας, πράγμα που σημαίνει ότι η ανάλογη απαίτηση ρεύματος κυμαίνεται περί τα 3.325W 5V=0.665A, αν λάβουμε υπόψη μας ότι το τροφοδοτούμε από μία μόνο τροφοδοσία των 5V. Ωστόσο, δεν προσδιορίζεται στο datasheet αν η κατανάλωση αυτή προκύπτει υπό συνθήκες πλήρους ή μειωμένης φωτεινότητας της οθόνης, οπότε είναι πιο χρήσιμος ο υπολογισμός της μέγιστης κατανάλωσης. Επίσης, ο αριθμός αυτός είναι ενδεικτικός, αφού μεταβάλλεται εξαρτώμενος και από τα υπόλοιπα υποσυστήματα της οθόνης. Η μέγιστη κατανάλωση μπορεί να υπολογιστεί από τον επόμενο πίνακα σε (3.3V 0.3A)+(5V 0.55A)=3.74W. Και αυτή η κατανάλωση είναι προσεγγιστική, καθώς η αντίστοιχη πραγματική αναμένεται λίγο μεγαλύτερη, κυρίως λόγω της καταναλισκόμενης θερμότητας στον γραμμικό μετατροπέα τάσεως LM , αλλά και λόγο των υπολοίπων κυκλωμάτων στη συγκεκριμένη υλοποίηση της οθόνης μας.

48 40 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-6. Συνθήκες λειτουργίας του πάνελ AT070TN83 της εταιρείας Innolux. Στην πράξη, το τελικό σύστημα καταναλώνει 180mA ρεύματος, χωρίς την παρουσία της οθόνης. Όταν συνδέσουμε σε αυτό την οθόνη, οι απαιτήσεις ρεύματος που μετρήσαμε κυμαίνονται από 350mA έως και 950mA, όπως φαίνεται στις παρακάτω εικόνες. Αυτό μας δίνει μία μέγιστη κατανάλωση της οθόνης ίση με ( ) ma 5V=3850 mw =3.85W, η οποία είναι ελαφρώς μεγαλύτερη από αυτή που υπολογίσαμε στην προηγούμενη παράγραφο, όπως ήταν αναμενόμενο για τους λόγους που προαναφέρθηκαν. Αντιστοίχως, η κατανάλωση της οθόνης όταν αυτή λειτουργεί με τη φωτεινότητα στο ελάχιστο είναι ( ) ma 5V=850 mw =0.85W, ενώ για φωτεινότητα στο 50% της μεγίστης τιμής, η κατανάλωση υπολογίζεται σε ( ) ma 5V=2350mW=2.35W. Περισσότερα όμως σχετικά με την κατανάλωση του συστήματος, θα δούμε σε επόμενη ενότητα. Εικόνα 4-7: (Αριστερά) Μέτρηση ελάχιστης κατανάλωσης τελικού συστήματος. (Δεξιά) Μέτρηση μέγιστης κατανάλωση τελικού συστήματος Διασύνδεση με την αναπτυξιακή πλατφόρμα Πρώτα από όλα, ας μελετήσουμε τη διεπαφή επικοινωνίας του πάνελ AT070TN83 με το περιβάλλον του, δηλαδή με τα υπόλοιπα υποσυστήματα της οθόνης. Οι λειτουργίες των διαφόρων pins φαίνονται στην εικόνα 4-8, ενώ η διασύνδεσή τους με τα υπόλοιπα περιφερειακά του

49 41 Κεφάλαιο 4 : Περιφερειακό υλικό συστήματος της οθόνης 7'' όπως έχει υλοποιηθεί από την FriendlyARM, φαίνεται στην εικόνα 4-9. Τα pins αυτά όπως παρατηρούμε καταλήγουν ως επί το πλείστον είτε σε κάποια τροφοδοσία, είτε στον κονέκτορα LCD1 που θα παρουσιάσουμε παρακάτω. Ας δούμε όμως τη λειτουργία του κάθε pin ξεχωριστά. Τα pins 1 και 2 χρησιμοποιούνται για την τροφοδοσία του οπίσθιου φωτισμού της οθόνης μας με 5V και όπως παρατηρούμε συνδέονται απευθείας με την αντίστοιχη τάση. Ομοίως, τα pins 4 και 5 συνδέονται με τη γείωση της τροφοδοσίας των 5V, αν και πρακτικά η γείωση είναι κοινή για ολόκληρο το σύστημα. Το pin 3 συνδέεται μέσω μίας αντίστασης 10KΩ με τον κονέκτορα LCD1 και θα χρησιμοποιηθεί όπως θα δούμε παρακάτω για τη ρύθμιση της φωτεινότητας του οπίσθιου φωτισμού της οθόνης. Τα pins 6 και 7 συνδέονται με την έξοδο του LM , για τροφοδοσία του πάνελ με 3.3V. Τα pins 12, 16, 20, 24, 28, 32, 36 και 38 συνδέονται με τη γείωση της τροφοδοσίας των 3.3V, αν και όπως είπαμε πρακτικά δεν αποτελεί ξεχωριστή γείωση. Τα pins 8 έως 11 χρησιμοποιούνται για την επιλογή και τη λειτουργία της οθόνης είτε σε DE mode, είτε σε HV mode. Όπως παρατηρούμε από την εικόνα 4-9, το pin 8 είναι συνδεδεμένο μέσω της αντίστασης R14 των 10KΩ με την τάση τροφοδοσίας των 3.3V. Σύμφωνα με το datasheet, αυτό σημαίνει ότι το πάνελ μας θα λειτουργεί σε DE mode, αλλά περισσότερα σχετικά με αυτό θα αναφέρουμε στην επόμενη υποενότητα. Τα pins και καταλήγουν στον κονέκτορα LCD1 και αποτελούν τα 6 bits που ορίζουν το βάθος του μπλε χρώματος του κάθε εικονοστοιχείου της οθόνης. Αντιστοίχως, τα pins και ορίζουν το βάθος του πράσινου χρώματος, ενώ τα pins και είναι υπεύθυνα για το κόκκινο χρώμα και όλα αυτά καταλήγουν επίσης στον LCD1. To pin 37 αποτελεί το ρολόι συγχρονισμού των λειτουργιών της οθόνης. Καταλήγει και αυτό στον κονέκτορα LCD1 και η συχνότητα λειτουργίας του ελέγχεται από τους drivers οδήγησης της οθόνης μας. Τα pin 39 και 40 συνδέονται αντίστοιχα με την τάση των 3.3V και με τη γείωση, με χρήση αντιστάσεων 10KΩ. Χρησιμεύουν στην επιλογή του scanning mode, δηλαδή του τρόπου με τον οποίο θα εκτελείται η ανανέωση της απεικόνισης του καθενός εικονοστοιχείου της οθόνης. Σύμφωνα με τον πίνακα της εικόνας 4-10, με την παρούσα διάταξη η ανανέωση θα γίνεται με κατεύθυνση από πάνω προς τα κάτω και από τα αριστερά προς τα δεξιά, το οποίο έρχεται σε συμφωνία και με τους drivers του framebuffer του τελικού συστήματος, αφού αυτός είναι ο συνηθέστερος τρόπος. Οπότε, δε χρειάζεται να αλλάξουμε κάτι στη διάταξη αυτή, αφού μας βολεύει ως έχει.

50 42 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-8: Περιγραφή λειτουργίας καθενός pin του πάνελ AT070TN83 Εικόνα 4-9: Διασύνδεση πάνελ AT070TN83 με λοιπά υποσυστήματα της οθόνης 7''.

51 43 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-10: Πίνακας επιλογής scanning mode. Ο έλεγχος της φωτεινότητας του οπίσθιου φωτισμού είδαμε ότι γίνεται από το pin3 του AT070TN83, το οποίο συνδέεται στο pin 30 του κονέκτορα LCD1 όπως θα δούμε παρακάτω. Η ακριβής ρύθμιση της φωτεινότητας μπορεί να επιτευχθεί με τη χρήση της τεχνικής διαμόρφωσης πλάτους παλμού (PWM). Σύμφωνα με το δεξί τμήμα της εικόνας 4-11, αρκεί να εφαρμόσουμε έναν παλμό μεγίστου πλάτους 3.3V και συχνότητας από 100Hz έως 300hz, και αυξομειώνοντας το duty cycle, ρυθμίζεται αναλόγως η φωτεινότητα. Αυτό συμβαίνει καθώς με τη μεταβολή του duty cycle, μεταβάλλεται και η μέση τιμή της τάσεως του παλμού. Στο γράφημα αριστερά της εικόνας 4-11 φαίνεται η γραμμικότητα στη σχέση μεταξύ φωτεινότητας και duty cycle του παλμού PWM. Πάνω σε αυτή τη γραμμική σχέση θα στηριχτούμε όπως θα δούμε στο κεφάλαιο 7, για τη σωστή υλοποίηση του ελέγχου της φωτεινότητας στην εφαρμογή μας. Εικόνα 4-11: (Αριστερά) Γράφημα σχέσης φωτεινότητας οπίσθιου φωτισμού και duty cycle. (Δεξιά) Χαρακτηριστικά παλμού PWM για ρύθμιση της φωτεινότητας. Έπειτα από όλα τα ανωτέρω και έχοντας κατανοήσει τουλάχιστον τις βασικές αρχές λειτουργίας της οθόνης μας, ας συνεχίσουμε με την υλοποίηση της διασύνδεσής της με την πλατφόρμα A13-OlinuXino-MICRO. Ο κονέκτορας LCD1 της οθόνης που έχουμε αναφέρει προηγουμένως, αποτελείται από 40 pins, χωρίς όμως να χρησιμοποιούνται όλα. Επίσης από 40 pins αποτελείται και ο κονέκτορας της διεπαφής επικοινωνίας LCD της πλατφόρμας A13-OlinuXino-MICRO, χωρίς όμως να υφίσταται κάποια 1 προς 1 αντιστοιχία με τα pins του κονέκτορα LCD1. Επισημαίνουμε ότι οι 2 αυτοί κονέκτορες είναι εντελώς διαφορετικής μορφής μεταξύ τους. Όλα τα ανωτέρω μας οδήγησαν στην ανάγκη σχεδίασης και κατασκευής ενός breakout board, για την επίτευξη της διασύνδεσης των 2 υποσυστημάτων. Η διάταξη των pins κάθε διεπαφής φαίνεται στην εικόνα 4-12.

52 44 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-12: (Αριστερά) Ο 40-pin κονέκτορας της οθόνης 7'' FriendlyARM. (Δεξιά) Ο 40-pin κονέκτορας της LCD διεπαφής της A13-OlinuXino-MICRO. Για τη σχεδίαση του breakout board χρησιμοποιήθηκε η δωρεάν έκδοση του εργαλείου Eagle της εταιρείας CadSoft. Τα σχηματικά σχέδια σύνδεσης των pins φαίνονται στην εικόνα Όπως παρατηρούμε, έχουν συνδεθεί μόνο όσα pins απαιτούνται. Τα pins HSYNC και VSYNC και στις 2 μεριές έμειναν ασύνδετα, όπως ορίζεται και από το datasheet σε περίπτωση που χρησιμοποιείται το DE mode λειτουργίας. Ομοίως και τα pins L/R και U/D της διεπαφής LCD_CON που ορίζουν το scanning mode, αφού είδαμε ότι αυτό έχει ήδη ρυθμιστεί εντός της οθόνης. Και το pin 3 της διεπαφής LCD_CON είναι ασύνδετο, γιατί όπως είπαμε η τάση 3.3V δημιουργείται εσωτερικά στην οθόνη. Αξίζει να παρατηρήσουμε ότι στη διεπαφή LCD_CON, τα 3 λιγότερο σημαντικά bits κάθε χρώματος είναι βραχυκυκλωμένα. Αυτό σημαίνει ότι ακόμα και σε περίπτωση οδήγησης οθόνης με μεγαλύτερο βάθος χρώματος, τα 3 χαμηλότερα bits από κάθε χρώμα θα έχουν πάντα την ίδια τιμή. Έτσι, πρακτικά το μέγιστο βάθος χρώματος που υποστηρίζει και η πλατφόρμα A13-OlinuXino-MICRO είναι 6 bits, για καθένα από τα 3 βασικά χρώματα. Εικόνα 4-13: Σχηματικό σχέδιο του breakout board που σχεδιάσαμε για τη διασύνδεσης της οθόνης.

53 45 Κεφάλαιο 4 : Περιφερειακό υλικό Στη σχεδίαση της πλακέτας χρησιμοποιήθηκαν 2 επίπεδα, με αποτέλεσμα τη δημιουργία μίας πλακέτας διπλής όψεως. Θα μπορούσε το ίδιο κύκλωμα να υλοποιηθεί και σε μία πλακέτα μονής όψεως, αλλά κάτι τέτοιο δεν ήταν εφικτό στα πλαίσια αυτής της εργασίας, λόγω περιορισμών της διαθέσιμης τεχνολογίας του ηλεκτροτεχνείου της πολυτεχνικής σχολής του Πανεπιστημίου Πατρών, όπου και έγινε η κατασκευή. Η μόνη επισήμανση που πρέπει να γίνει στο τελικό κύκλωμα της εικόνας 4-14 είναι η προσοχή που πρέπει να δώσουμε στη διασύνδεση των pins που σχετίζονται με την τροφοδοσία της οθόνης με τάση 5V. Πρέπει τόσο το μονοπάτι των 5V όσο και το μονοπάτι της γείωσης να έχουν επαρκές πλάτος, για να υποστηρίξουν ρεύμα το οποίο μπορεί να φτάσει μέχρι και τα 770mA, όπως είδαμε παραπάνω. Για το λόγο αυτό, σχεδιάσαμε το μονοπάτι των 5V με πλάτος περίπου 8.1mm, ενώ για τη γείωση φροντίσαμε να αποτελείται από πολλαπλά μονοπάτια, με συνολικό πλάτος αρκετά μεγαλύτερο των 8mm. Εικόνα 4-14: (Αριστερά) Η επάνω όψη της πλακέτας breakout. (Δεξιά) Η κάτω όψη της πλακέτας breakout. Όπως εικονίζεται η πλακέτα, στις 2 σειρές από πίστες που βρίσκονται προς το πάνω μέρος της συνδέσαμε θηλυκές κεφαλές βήματος 2.54mm, με σκοπό να εφαρμόσουν στις αντίστοιχες αρσενικές κεφαλές του 40-pin LCD_CON κονέκτορα. Στις 2 κάτω σειρές πιστών, κολλήσαμε αρσενικές κεφαλές βήματος 2.54mm, οι οποίες στο άλλο άκρο τους έχουν κολληθεί με ένα άλλο, μικρότερο breakout board το οποίο δεν έχουμε αναφέρει μέχρι τώρα. Το board αυτό είναι το μοντέλο NHD-FFC40 και λειτουργεί ως ενός είδους αντάπτορας. Ο ρόλος του είναι η σύνδεση του κονέκτορα της οθόνης που είναι τύπου FFC με βήμα 0.5mm, με τον κονέκτορα που σχηματίστηκε από τις αρσενικές κεφαλές βήματος 2.54mm που αναφέραμε πριν λίγο. Ο σχεδιασμός του NHD-FFC40 είναι πολύ απλός και υπό διαφορετικές συνθήκες θα μπορούσαμε να το είχαμε κατασκευάσει εμείς, ή ακόμα και να είχαμε παραλείψει τη χρήση του, με χρήση κατευθείαν ενός FFC κονέκτορα στο breakout board που σχεδιάσαμε. Δυστυχώς, ο περιορισμός λόγω τεχνολογίας που αναφέραμε και προηγουμένως δεν μας επέτρεψε μία τέτοια υλοποίηση.

54 46 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-15: Το NHD-FFC40 breakout-adaptor board Η ολοκληρωμένη διασύνδεση της οθόνης με την αναπτυξιακή πλατφόρμα A13-OlinuXino-MICRO Συγχρονισμός οθόνης [92] Σε αυτό το σημείο θεωρήσαμε χρήσιμο να γίνει μία σύντομη αναφορά στην επακριβή μέθοδο οδήγησης της οθόνης και συγκεκριμένα στο συγχρονισμό της ανανέωσης απεικόνισης. Αν και στην περίπτωσή μας σταθήκαμε τυχεροί, καθώς οι video drivers του συστήματος λειτουργούν σωστά με την οθόνη μας όπως θα φανεί στα επόμενα κεφάλαια, υπό διαφορετικές συνθήκες θα έπρεπε να τροποποιήσουμε τους σχετικούς χρονισμούς κατά περίπτωση. Η αλήθεια είναι ότι η τύχη μας αυτή οφείλεται περισσότερο στο γεγονός πως οι οθόνες TFT/LCD ψηφιακής (TTL) παράλληλης διεπαφής RGB και ανάλυσης 800x480 pixels είναι ευρέως διαδεδομένες και με χρονισμούς που διαφέρουν ελάχιστα μεταξύ τους. Οπότε, θα σταθούμε μόνο στη θεωρητική μελέτη της ανανέωσης της απεικόνισης, χωρίς να προβούμε σε πρακτικούς υπολογισμούς ή να παρέμβουμε στους drivers του συστήματος. Οι οθόνες αυτού του τύπου οδηγούνται απευθείας από τον κύριο επεξεργαστή (ή τον συνεπεξεργαστή γραφικών, όταν αυτός υπάρχει), χωρίς κάποια ενδιάμεση μετατροπή σήματος (όπως γίνεται για παράδειγμα σε περίπτωση που μεσολαβεί διεπαφή τύπου VGA, DVI κ.τ.λ.). Η παράλληλη ψηφιακή διεπαφή RGB αποτελείται τουλάχιστον από τα σήματα που ορίζουν τη χρωματική απόχρωση καθενός εικονοστοιχείου και ποικίλουν στον αριθμό - 18 στην περίπτωσή μας, όπως έχουμε ήδη αναφέρει και εξηγήσει - και από 3 σήματα συγχρονισμού. Τα σήματα συγχρονισμού είναι το Vsync, το Hsync και το DCLK. Ο παλμός Hsync (thw), δηλαδή Horizontal Synchronization, ενημερώνει πως ακολουθεί

55 47 Κεφάλαιο 4 : Περιφερειακό υλικό ανανέωση μίας σειράς εικονοστοιχείων της οθόνης. Αυτό σημαίνει πως η χρονική περίοδος μέχρι την έλευση νέου παλμού Hsync, θα έπρεπε να ισούται με 800 περιόδους ρολογιού (t CLK), όσα και τα pixels κάθε σειράς, αφού το καθένα ανανεώνεται σε έναν παλμό ρολογιού DCLK. Στην πραγματικότητα όμως, στον χρόνο των 800 t CLK (ονόματι Horizontal Valid Data Width ή t HV) προστίθενται οι χρόνοι Horizontal Back Porch (thbp) και Horizontal Front Porch (thfp), οι οποίοι μαζί με τον χρονική διάρκεια του παλμού Hsync ορίζουν το διάστημα Horizontal Blank (t HBK). Το χρονικό αυτό διάστημα είναι κατάλοιπο της τεχνολογίας CRT οθονών και διατηρείται για λόγους συμβατότητας. Κατά τη διάρκειά του, δε συμβαίνει καμία απολύτως ανανέωση εικονοστοιχείων. Κατά αντιστοιχία, ο παλμός Vsync (t VW), δηλαδή Vertical Synchronization, ενημερώνει την οθόνη πως ακολουθεί νέο καρέ προς απεικόνιση, μόνο που για λόγους απλότητας, οι μονάδες μέτρησης της διάρκειας των σχετικών χρονισμών είναι σε περιόδους Hsync. Έτσι, από τη στιγμή που το πλήθος των γραμμών της οθόνης είναι 480, τόσους παλμούς Hsync θα διαρκεί και η χρονική περίοδος Vertical Valid Data Width (t W). Αναλόγως και εδώ υπάρχουν χρόνοι Vertical Back Porch (tvbp) και Vertical Front Porch (tvfp), που μαζί με τη χρονική διάρκεια του παλμού Vsync αποτελούν το διάστημα Vertical Blank (tvbk). Όλοι οι παραπάνω χρονισμοί είναι εμφανείς στην εικόνα Η διαφορά στην περίπτωση μας είναι ότι η οθόνη μας χρησιμοποιεί το σήμα Data Enable (DE), το οποίο αντικαθιστά τα σήματα Vsync και Hsync. Αυτός ο τρόπος συγχρονισμού εμφανίζεται σε οθόνες TFT/LCD νεότερης τεχνολογίας και μειώνει τα σήματα ελέγχου της οθόνης κατά 1. Όταν ο δίαυλος DE είναι σε κατάσταση High, η οθόνη αναγνωρίζει έγκυρα δεδομένα στην είσοδό της, οπότε ανανεώνει τη χρωματική απόχρωση των εικονοστοιχείων μίας σειράς με διαδοχικούς παλμούς DCLK. Με τον επόμενο παλμό DE, συμβαίνει το ίδιο για την επόμενη σειρά pixels. Άρα σε αυτή την περίπτωση, κάθε παλμός DE πρέπει να διαρκεί ακριβώς όσο το διάστημα Horizontal Valid Data Width, δηλαδή 800 tclk. Για να ενημερωθεί η οθόνη πως ακολουθεί νέο καρέ, παρεμβάλλεται μία περίοδος χρονικής διάρκειας tvbk μεταξύ δύο διαδοχικών παλμών DE που ανήκουν σε διαφορετικά καρέ. H περίοδος αυτή εμφανίζεται, όπως είναι λογικό, κάθε 480 παλμούς DE, αφού έχει ανανεωθεί πλήρως ένα καρέ. Εικόνα 4-17: Τα διαγράμματα χρονισμού του πάνελ AT070TN83.

56 48 Κεφάλαιο 4 : Περιφερειακό υλικό 4.3 Το κύκλωμα φορητής τροφοδοσίας [97] Εισαγωγή Για τις ανάγκες της φορητότητας του τελικού συστήματος, σχεδιάσαμε ένα κύκλωμα φορητής τροφοδοσίας. Για να την καλύτερη δυνατή μελέτη του, θα το αντιμετωπίσουμε ως 3 ξεχωριστά υποσυστήματα, καθένα από τα οποία θα μελετηθεί σε διαφορετική υποενότητα. Να σημειώσουμε ότι θα γίνει ειδική αναφορά σχετικά με την μπαταρία που επιλέχθηκε, πριν την ανάλυση των τριών υποσυστημάτων, καθώς τα 2 πρώτα από αυτά σχεδιάστηκαν με βάση την επιλογή αυτή. Το πρώτο υποσύστημα αποτελείται από το κύκλωμα φόρτισης της μπαταρίας μας. Στο δεύτερο υποσύστημα μελετάμε το κύκλωμα που χρησιμοποιήθηκε για προσαρμογή της τάσεως της μπαταρίας μας, στα απαιτούμενα επίπεδα τροφοδοσίας της πλατφόρμας A13-OlinuXino-MICRO. Το τρίτο υποσύστημα είναι ένα απλό κύκλωμα που σχεδιάσαμε, το οποίο επιτρέπει την έναρξη της λειτουργίας του συστήματός μας με το πάτημα ενός κουμπιού και τον τερματισμό αυτής μέσω της τελικής εφαρμογής της προβολής PDF αρχείων. Δυστυχώς δεν καταφέραμε να ολοκληρώσουμε την κατασκευή του συνολικού κυκλώματος φορητής τροφοδοσίας, παρά μόνο ορισμένα δοκιμαστικά κυκλώματα, ώστε να επιβεβαιώσουμε την ορθότητα του σχεδιασμού μας. Ο λόγος ήταν η δυσκολία στην εύρεση και απόκτηση των απαιτούμενων υλικών, όλα εκ των οποίων παραγγέλθηκαν από το εξωτερικό, μηδενός εξαιρουμένου. Ακόμα και την ώρα της συγγραφής αυτών εδώ των γραμμών, ορισμένα από αυτά δεν έχουν παραληφθεί ακόμα, με την καθυστέρηση στην παράδοσή τους να ξεπερνάει τους 3.5 μήνες. Ωστόσο, προσπαθήσαμε να μην αφήσουμε ελλείψεις ή αμφιλεγόμενα σημεία, όντας συντηρητικοί στη σχεδίασή μας, ώστε το αποτέλεσμα να είναι ένα λειτουργικό σύστημα, ακόμα και αν δεν πρόκειται για το βέλτιστο δυνατό Η μπαταρία του συστήματος [98] Γενικά [99] Το πρώτο υλικό του κυκλώματος που μας ενδιαφέρει είναι η μπαταρία. Πρόκειται για το εξάρτημα που μεσολαβεί στην ουσία μεταξύ του πρώτου και του δεύτερου υποσυστήματος του κυκλώματος φορητής τροφοδοσίας. Καθώς και τα δύο αυτά υποσυστήματα θα σχεδιαστούν με βάση τα τεχνικά χαρακτηριστικά της μπαταρίας, πρέπει να είμαστε προσεκτικοί στην επιλογή που θα κάνουμε. Έπειτα από μία έρευνα αγοράς, καταλήξαμε στην επιλογή μπαταρίας τεχνολογίας ιόντων λιθίου (Li-Ion) και συγκεκριμένα πολυμερών λιθίου (Li-Po). Η τεχνολογία Li-Ion χρησιμοποιείται κατά κόρων στις σύγχρονες επαναφορτιζόμενες μπαταρίες, καθώς σε σχέση με παλαιότερες τεχνολογίες, φέρει πολλά πλεονεκτήματα, τα σημαντικότερα εκ των οποίων είναι: Πολύ υψηλή πυκνότητα ενέργειας. Αυτό σημαίνει ότι σε μικρό όγκο, μπορούμε να έχουμε αποθηκευμένη μεγάλη ποσότητα ενέργειας. Ως αποτέλεσμα της υψηλής ενεργειακής πυκνότητας, αλλά και της κατασκευής τους, το βάρος τους είναι μειωμένο σε σχέση με μπαταρίες παλαιότερων τεχνολογιών. Μικρό ποσοστό αποφόρτισης, όταν δε γίνεται χρήση της μπαταρίας (μικρότερο του 8%/μήνα στην περίπτωσή μας). Απουσία φαινομένου μνήμης, κατά το οποίο οι μπαταρίες φαίνεται να απομνημονεύουν τη μικρότερη χωρητικότητα που εμφανίζουν, όταν η αποφόρτισή τους δεν είναι πλήρης (για αυτό το λόγο ονομάζεται κιόλας φαινόμενο μνήμης ). Ικανότητα παροχής υψηλών ρευμάτων. [93] Οι μπαταρίες Li-Po προσφέρουν το επιπλέον πλεονέκτημα ότι είναι διαθέσιμες σε πολλά σχήματα και ακόμα πιο ελαφριές, παρουσιάζοντας όμως αυξημένο λόγο κόστους/ενέργειας, σε

57 49 Κεφάλαιο 4 : Περιφερειακό υλικό σχέση με τις Li-Ion μπαταρίες. Ένα κατάλληλο σχήμα μπαταρίας όμως με μικρό πάχος, είναι μείζον ζήτημα σε μία φορητή συσκευή, οπότε και η τελική μας επιλογή ήταν μία μπαταρία τύπου Li-Po. Το πρόβλημα που αντιμετωπίσαμε σε αυτό το στάδιο της εργασίας, ήταν ότι η μπαταρία μας ανήκει στην κατηγορία των υλικών που μέχρι και τη στιγμή που γραφόντουσαν αυτές οι γραμμές, δεν είχαν παραληφθεί. Ως αποτέλεσμα, όλοι οι σχετικοί υπολογισμοί που έγιναν είναι μόνο θεωρητικοί, εν απουσία δυνατότητας να εκτελέσουμε τις απαιτούμενες μετρήσεις. Αυτό σε συνδυασμό με το ελλιπές datasheet της μπαταρίας (π.χ. απουσία χαρακτηριστικής καμπύλης εκφόρτισης), δυσκόλεψε αρκετά τη διαδικασία της σχεδίασης Τεχνικά χαρακτηριστικά Για να μη γενικολογούμε όμως, η συγκεκριμένη μπαταρία που επιλέξαμε είναι το μοντέλο μίας κυψέλης (1-cell) και χωρητικότητας 2000mAh της εταιρείας UNIONFORTUNE, που μεταπωλείται από την εταιρεία Sparkfun, ως ολοκληρωμένη λύση. Με τον όρο ολοκληρωμένη λύση, εννοούμε ότι συνοδεύεται από το κύκλωμα προστασίας της, τα απαραίτητα καλώδια και τους κονέκτορες διασύνδεσης, όπως φαίνεται στην εικόνα Η ονομαστική της τάση είναι 3.7V, όπως στην πληθώρα των μπαταριών αυτού του τύπου. [94] Η τάση αυτή υποδεικνύει τη μέση τιμή της καμπύλης εκφόρτισης. Η τάση αποκοπής κατά τη φόρτιση ορίζεται στα 4.2V και είναι η μέγιστη διαφορά τάσης που μπορεί και επιτρέπεται να εμφανιστεί στους ακροδέκτες της μπαταρίας. Η ελάχιστη τάση που επιτρέπεται να φτάσει η μπαταρία μας ορίζεται στα 2.75V, ώστε να μην υποστεί κάποια ανεπανόρθωτη βλάβη. Το προτεινόμενο ρεύμα φόρτισης είναι 0.2C και το μέγιστο 1C, ενώ το μέγιστο ρεύμα εκφόρτισης ισούται με 2C. Η μονάδα C χρησιμοποιείται για να είναι δυνατή η σύγκριση μεταξύ μπαταριών διαφορετικών χωρητικοτήτων, και αρκεί να γνωρίζουμε ότι ρεύμα 1C ισούται με τόσα ma, όσα είναι σε απόλυτο αριθμό και τα mah της χωρητικότητας της μπαταρίας μας. Στην περίπτωσή μας δηλαδή, ρεύμα 1C ισούται με 2000mA, ρεύμα 0.2C ισούται με 400mA κ.ο.κ.. [95] Εικόνα 4-18: Η μπαταρία Li-Po χωρητικότητας 2000mAh, όπως πωλείται από την εταιρεία Sparkfun. Όπως αναφέραμε, η μπαταρία μας συνοδεύεται από ένα κύκλωμα προστασίας όπως όλες σχεδόν οι μπαταρίες αυτής της τεχνολογίας, καθώς η λανθασμένη χρήση μπορεί να οδηγήσει ακόμα και σε έκρηξη. Το κύκλωμα αυτό είναι το P-1S5045BC της εταιρείας Great Power Battery. Παρέχει προστασία από υπερφόρτιση πέρα των 4.280V και υπερεκφόρτιση (ή κοινώς under-voltage lockout, σε συντομογραφία UVLO) σε τάση χαμηλότερη των 2.9V. Οπότε, παρατηρούμε ότι η πραγματική ελάχιστη τάση που επιτρέπεται να φτάσει η μπαταρία μας είναι τα 2.9V και όχι τα 2.75V. Στην πράξη, είναι καλό οι μπαταρίες Li-Po και γενικότερα οι μπαταρίες τύπου Li-Ion να μην εκφορτίζονται ποτέ περισσότερο από 90%. Με βάση χαρακτηριστικές καμπύλες παρόμοιων μπαταριών με τη δική μας, μπορούμε να πούμε με βεβαιότητα ότι σε εκφόρτιση μέχρι 90%, η τάση της μπαταρίας μας προβλέπεται μεγαλύτερη των 3V και ίσως κοντά στα 3.4V. Επαναλαμβάνουμε όμως ότι μέχρι να παραλάβουμε την μπαταρία, δεν υπάρχει τρόπος να επιβεβαιώσουμε τον ισχυρισμό μας, άρα θεωρούμε ως ελάχιστη τάση κανονικής λειτουργίας της μπαταρίας τα 2.9V, τα οποία και θα χρησιμοποιήσουμε για τους υπολογισμούς μας. Μία άλλη προστασία που παρέχει το

58 50 Κεφάλαιο 4 : Περιφερειακό υλικό κύκλωμα αυτό είναι από παρατεταμένα ρεύματα φόρτισης και εκφόρτισης μεγαλύτερα των 2.5A. Επίσης, δεν επιτρέπει στιγμιαία ρεύματα εκφόρτισης μεγαλύτερα των 4.5A. [96] Υπολογισμός αυτονομίας του τελικού συστήματος. Με βάση όλα τα ανωτέρω, μπορούμε να κάνουμε έναν προσεγγιστικό υπολογισμό της ελάχιστης αυτονομίας του τελικού συστήματος. Θεωρούμε καταρχάς ως δεδομένο ότι η μέγιστη κατανάλωση ισχύος, όπως αναφέραμε ήδη στην ενότητα περιγραφής της οθόνης, είναι P max =5V 0.95A=4.75W. Σε μία όμως συντηρητική σχεδίαση, συνυπολογίζουμε ένα περιθώριο πρόσθετων απωλειών της τάξεως του 5%, το οποίο μεταφράζεται σε μέγιστη κατανάλωση ίση με P max new =4.75W W. Θα θεωρήσουμε επίσης ότι το υποσύστημα προσαρμογής της τάσεως εξόδου της μπαταρίας μας παρουσιάζει μία απόδοση τουλάχιστον 80% - η οποία στην πραγματικότητα είναι αρκετά υψηλότερη, όπως θα δούμε στη σχετική υποενότητα. Με βάση τα δεδομένα αυτά και για την ονομαστική τιμή των 3.7V, μπορούμε να υπολογίσουμε μία μέση 4.99W 1.69A. Αυτό σημαίνει μία αυτονομία κατανάλωση ρεύματος ίση με I BAT = 3.7V mAh h. Ο παράγοντας συστήματος διάρκειας το λιγότερο t discharge = οφείλεται mA 8 στην υπόθεση ότι καθώς η μπαταρία εκφορτίζεται και η τάση της μειώνεται, αυξάνεται η κατανάλωση ρεύματος, ώστε η αποδιδόμενη ισχύς να παραμείνει σταθερή. Ως αποτέλεσμα, και 1 συγκριτικά πάντα με αποκρίσεις παρόμοιων μπαταριών, το εναπομένον της χωρητικότητας δεν 8 είναι ικανό να προσφέρει το ζητούμενο ρεύμα. Τα παραπάνω νούμερα βέβαια είναι πολύ προσεγγιστικά και αφορούν όπως είπαμε μία θεωρητική, συντηρητική σχεδίαση, στην οποία μάλιστα η φωτεινότητα της οθόνης είναι πάντα στο μέγιστο της κλίμακας. Ένας ρεαλιστικότερος υπολογισμός θα οδηγούσε σε μία αυτονομία περίπου ίση με 1.23h, ενώ μειώνοντας την φωτεινότητα στο 50%, η αυτονομία δύναται να φτάσει τις 1.8h. Όμως όλα αυτά παραμένουν στη θεωρία και μόνο, έως ότου παραλάβουμε την μπαταρία για να τα επιβεβαιώσουμε στην πράξη. Σε αυτό το σημείο, να παραθέσουμε πως το μέγιστο ρεύμα που υπάρχει περίπτωση να ζητηθεί 4.99W 2.15A. Όπως παρατηρούμε, η ζήτηση από τη μπαταρία υπολογίζεται σε I BAT max = 2.9V 0.8 αυτή δεν αντιπαρέρχεται με κανέναν από τους περιορισμούς που θέτει είτε η μπαταρία, είτε το κύκλωμα προστασίας της. Ωστόσο, μία σημαντική λεπτομέρεια που παραλείψαμε να αναφέρουμε μέχρι τώρα, είναι η υποχρεωτική αντικατάσταση των εξωτερικών καλωδίων και των κονέκτορων της μπαταρίας μας, με βάση τους παραπάνω υπολογισμούς. Αυτό κρίνεται απαραίτητο, εξαιτίας της αντοχής τους σε ρεύματα μέχρι 1A. Η διαδικασία της αντικατάστασης δεν παρουσιάζει κάποια ιδιαίτερη δυσκολία τεχνικής ή άλλης φύσεως. Είναι εμφανές ότι η χωρητικότητα της μπαταρίας δε στάθηκε βασικό κριτήριο στην επιλογή της, αφού εφόσον είναι σωστός ο σχεδιασμός του γενικού κυκλώματος, εύκολα μπορεί να αντικατασταθεί με μία μεγαλύτερη ιδίων προδιαγραφών. Μας ενδιαφέρει η λειτουργικότητα του συστήματος, ανεξαρτήτως αυτονομίας. Στις επόμενες υποενότητες θα βασιστούμε στα όσα αναφέρθηκαν περί των χαρακτηριστικών της μπαταρίας και στους σχετικούς υπολογισμούς που έλαβαν χώρα, ώστε να σχεδιάσουμε όσο το δυνατόν πληρέστερα και αποδοτικότερα τα επόμενα κυκλώματα Το κύκλωμα φόρτισης της μπαταρίας Εισαγωγή Έχοντας μελετήσει τις προδιαγραφές της μπαταρίας μας, μπορούμε να σχεδιάσουμε τώρα ένα κατάλληλο κύκλωμα φόρτισης. Το κύκλωμα αυτό πρέπει να είναι ικανό να φορτίζει την μπαταρία που επιλέξαμε μέχρι το 100% της χωρητικότητάς της, ανεξάρτητα από την τάση και την

59 51 Κεφάλαιο 4 : Περιφερειακό υλικό εναπομένουσα ενέργειά της κάθε χρονική στιγμή. Επίσης, πρέπει αυτό να γίνεται μέσα σε πλαίσια ασφαλείας, σε λογικό χρόνο και ενώ η μπαταρία παραμένει συνδεδεμένη στο κύκλωμα. Για όλους αυτούς τους λόγους, στραφήκαμε στην επιλογή ενός ολοκληρωμένου κυκλώματος ελέγχου του κύκλου φόρτισης. Το κύκλωμα αυτό είναι το MCP73831 της εταιρείας Microchip Το ολοκληρωμένο κύκλωμα MCP73831 [100] Το IC αυτό είναι ένας προηγμένος γραμμικός ελεγκτής φόρτισης, με στόχο εφαρμογές περιορισμένου χώρου και με μικρό κόστος. Μπορεί να αναλάβει τη φόρτιση μπαταριών Li-Ion και Li-Po, εφόσον συμπίπτουν οι τεχνικές προδιαγραφές. Είναι διαθέσιμο σε συσκευασία είτε DFN των 8 pins, είτε SOT-23 των 5 pins. Εμείς επιλέξαμε τον δεύτερο τύπο, καθώς είναι ευκολότερη η κόλληση στην πλακέτα με τα μέσα που διαθέτουμε. Η πλήρης ονομασία του ολοκληρωμένου κυκλώματος είναι MCP73831T-2ACI/OT. Το τμήμα MCP73831 της ονομασίας υποδηλώνει το μοντέλο της συσκευής, ενώ στη συνέχεια παρατίθενται ορισμένα ιδιαίτερα, πιο συγκεκριμένα χαρακτηριστικά. Ο χαρακτήρας Τ αναφέρεται στο tape and reel πακετάρισμα πολλαπλών μονάδων. Ο επόμενος αριθμός 2 σχετίζεται με τη μέγιστη τάση φόρτισης της μπαταρίας, δηλαδή τα 4.2V. Άλλες διαθέσιμες επιλογές είναι τα 4.35V, 4.4V, 4.5V, που δεν είναι κατάλληλες όμως για την περίπτωσή μας. Οι χαρακτήρες AC ορίζουν τις τιμές μίας πληθώρας χαρακτηριστικών που θα δούμε αναλυτικά παρακάτω. Τέλος, το γράμμα I δηλώνει την αντοχή σε θερμοκρασίες βιομηχανικού περιβάλλοντος, ενώ η κατάληξη OT τη συσκευασία SOT-23. Εικόνα 4-19: Η διάταξη των pins στο MCP73831 συσκευασίας SOT-23. Όπως είναι εμφανές και στην εικόνα 4-19, το MCP73831T-2ACI/OT έχει μία διεπαφή επικοινωνίας με το περιβάλλον του, των 5 pins. Ας περιγράψουμε τη λειτουργία του καθενός: 1. STAT : Είναι pin τριών καταστάσεων (Low, High και Hi-Z). Θα δούμε πότε βρίσκεται στην κάθε κατάσταση στη συνέχεια. Στο μοντέλο MCP73832 το pin αυτό είναι δύο καταστάσεων (Low και Hi-Z), αφού καταλήγει στην ανοιχτοκυκλωμένη καταβόθρα (open-drain) ενός FET transistor και αποτελεί τη μόνη διαφορά μεταξύ των δύο μοντέλων. 2. VSS : Το pin αυτό συνδέεται στη γείωση του συστήματος. 3. VBAT : Το pin VBAT συνδέεται με τον θετικό ακροδέκτη της μπαταρίας μας. Θα συνδέσουμε ακόμη μεταξύ του pin αυτού και της γείωσης έναν πυκνωτή παράκαμψης (bypass capacitor) 10uF, για αύξηση της σταθερότητας του κυκλώματος. Είναι χρήσιμος κυρίως στο στάδιο της σταθερής τάσης (constant voltage) που θα δούμε παρακάτω, για την εξάλειψη φαινομένων AC. Πρακτικά οποιουδήποτε είδους πυκνωτής καλής ποιότητας μπορεί να χρησιμοποιηθεί σε αυτό το σημείο, αλλά μία γενικά καλή λογική είναι η χρήση κεραμικών πυκνωτών χαμηλής ισοδύναμης αντίστασης σειράς (ESR). 4. VDD : Το pin αυτό συνδέεται σε έναν αντάπτορα τύπου DC barrel jack, στον οποίο θα συνδέουμε το τροφοδοτικό που θα αναλαμβάνει τη φόρτιση της μπαταρίας. Το τροφοδοτικό αυτό πρέπει να είναι ικανό να παρέχει τάση DC μεταξύ 4.5V και 6V, και μέγιστο ρεύμα περίπου 1.5A (ή και λιγότερο, αναλόγως της τάσης τροφοδοσίας), σε περίπτωση που επιθυμούμε την ταυτόχρονη και πλήρη λειτουργία του τελικού συστήματος, ενώ η μπαταρία μας συνεχίζει τη φόρτισή της. Μεταξύ αυτού του pin και της γείωσης πρέπει επίσης να

60 52 Κεφάλαιο 4 : Περιφερειακό υλικό συνδεθεί ένας bypass πυκνωτής μεγέθους 10uF, για εξομάλυνση της τάσεως κατά τα μεταβατικά φαινόμενα και απόσβεση των AC συνιστωσών. 5. PROG : Το τελευταίο pin μας δίνει τη δυνατότητα να προγραμματίσουμε το ρεύμα φόρτισης, συνδέοντας μία αντίσταση μεταξύ αυτού και της γείωσης. Για την μπαταρία μας προτείνεται ένα ρεύμα φόρτισης ίσο με 0.2C, δηλαδή 400mA. Η αντίσταση 1000V 1000V = =2.5KΩ, με την προγραμματισμού υπολογίζεται τότε σε R PROG = I PROG 0.4A εξίσωση αυτή να προέρχεται από το σχετικό datasheet. Εικόνα 4-20: Χαρακτηριστική καμπύλη ρεύματος φόρτισης και αντίστασης προγραμματισμού του. Ας συνεχίσουμε με την περιγραφή του κύκλου φόρτισης. Ο κύκλος φόρτισης της μπαταρίας αποτελείται συνολικά από 5 διαφορετικές καταστάσεις λειτουργίας του MCP Στην περίπτωσή μας θα συναντήσουμε μόνο τις 4 από αυτές: 1. Shutdown Mode : Το MCP73831 έχει ενσωματωμένο ένα under-voltage lockout (UVLO) κύκλωμα. Όταν η τάση στο pin VDD είναι μικρότερη από περίπου 3.38V ή από την τάση της μπαταρίας προσαυξημένη κατά 50mV, το ολοκληρωμένο κύκλωμα παύει να λειτουργεί, έως ότου η τάση γίνει μεγαλύτερη των 3.45V ή της τάσεως της μπαταρίας προσαυξημένης κατά 150mV. Παρατηρούμε ότι και στις δύο περιπτώσεις, δημιουργείται ένας βρόχος υστέρησης, ο οποίος έχει εύρος μέχρι 100mV. Στην κατάσταση αυτή δεν υφίσταται φόρτιση της μπαταρίας και το ρεύμα διαρροής από την μπαταρία προς το MCP73831 είναι ελάχιστο μικρότερο των 2uA. Το pin STAT βρίσκεται σε κατάσταση υψηλής αντίστασης (Hi-Z). 2. Preconditioning Mode : Για να εισέλθει ο φορτιστής σε αυτήν τη λειτουργία, πρέπει η τάση στο VDD να καλύπτει τις προϋποθέσεις της προηγούμενης παραγράφου και η τάση της μπαταρίας να είναι μικρότερη του 66% της μέγιστης τιμής της, δηλαδή των 2.77V περίπου. Καθώς όμως στην περίπτωσή μας η τάση της μπαταρίας δεν είναι δυνατόν να μειωθεί σε τιμή μικρότερη των 2.9V, αποκλείεται να βρεθούμε σε αυτή την κατάσταση. Το preconditioning προετοιμάζει ουσιαστικά μπαταρίες που έχουν εκφορτιστεί περισσότερο από όσο πρέπει, φορτίζοντάς τες μόνο με το 10% του ρεύματος Ι PROG (τα προηγούμενα ποσοστά μπορεί να διαφέρουν, αν στην ονομασία MCP73831T-2ACI/OT υπάρχουν άλλοι χαρακτήρες αντί των AC ). Το pin STAT σε αυτήν την περίπτωση έχει χαμηλή στάθμη (Low). 3. Fast Charge/Constant-Current Mode : Μετά το preconditioning και μόλις η τάση του VBAT pin ξεπεράσει τα 2.77V, η φόρτιση συνεχίζεται με το ρεύμα I PROG. Και σε αυτή την περίπτωση η τιμή του STAT pin είναι Low. 4. Constant-Voltage Mode : Μόλις η τάση της μπαταρίας φτάσει στη μέγιστη τιμή της (με μία ανοχή 0.75%), παύει η φόρτιση σταθερού ρεύματος και το pin V BAT τροφοδοτεί με

61 53 Κεφάλαιο 4 : Περιφερειακό υλικό σταθερή τάση 4.2V. Επίσης, το pin STAT έχει στάθμη Low. 5. Charge Complete Mode : Η έξοδος από την προηγούμενη κατάσταση επέρχεται μόνο όταν το μέσο ρεύμα που ρέει από τον φορτιστή προς την μπαταρία γίνει μικρότερο του 7.5% του IREG, το οποίο μεταφράζεται σε I TERM =0.075 I REG = mA=30mA. Το γεγονός αυτό υποδεικνύει ότι η φόρτιση ολοκληρώθηκε και το pin STAT γίνεται High. Για να αρχίσει ένας νέος κύκλος φόρτισης, πρέπει η τάση της μπαταρίας να μειωθεί σε λιγότερο από το 94% της μέγιστης τιμής, που ισούται με V RTH = V 3.95V. Τότε θα βρεθούμε πάλι στο Fast Charge Mode, εκτός και αν κάποια άλλη συνθήκη μας έχει ήδη οδηγήσει το κύκλωμα σε Shutdown Mode. Όλα τα παραπάνω αρκούν για να προβούμε στο σχεδιασμό μίας πρώτης έκδοσης του κυκλώματος φόρτισης, όπως αυτό φαίνεται στην εικόνα Κάνουμε λόγο για πρώτη έκδοση, καθώς θα δούμε ότι η τελική περιλαμβάνει επιπλέον ένα μικρό κύκλωμα διαμοιρασμού φορτίου. Με τον παρόν σχεδιασμό, συναντάμε πρόβλημα όταν η φόρτιση της μπαταρίας γίνεται ταυτοχρόνως με την πλήρη λειτουργία της συσκευής. Σε αυτήν την περίπτωση, το ρεύμα του Fast Charge Mode που προορίζεται για τη φόρτιση της μπαταρίας, καταναλώνεται άμεσα για τη λειτουργία του e-book reader. Έτσι, όχι μόνο η μπαταρία δεν φορτίζεται, αλλά λόγω των υψηλών απαιτήσεων ισχύος του e-book reader, πρέπει να καλύψει τις επιπλέον ανάγκες ρεύματος, με αποτέλεσμα την περαιτέρω εκφόρτισής της. Σε περίπτωση που η μπαταρία έχει ήδη αδειάσει, η εύρυθμη λειτουργία του συστήματος δεν μπορεί να συνεχιστεί. Ένα άλλο γενικότερο πρόβλημα του σχεδιασμού αυτού εντοπίζεται κατά το Constant-Voltage Mode. Για να τελειώσει η φόρτιση της μπαταρίας όπως αναφέραμε, ο ελεγκτής φόρτισης αναμένει τη μείωση του ρεύματος φόρτισης σε λιγότερο από το I TERM. Όσο όμως υπάρχει παρουσία φορτίου συνδεδεμένου στο κύκλωμα το οποίο καταναλώνει ρεύμα τουλάχιστον ίσο με το I TERM, η φόρτιση δεν ολοκληρώνεται. Βέβαια στην περίπτωσή μας και λόγω της υψηλής απαίτησης ρεύματος, το κύκλωμα μεταβαίνει πάλι στην κατάσταση Fast Charge αντί να παραμείνει μόνιμα σε Constant-Voltage Mode, λόγω εκφόρτισης της μπαταρίας, οπότε το πρόβλημα ανάγεται στο προηγούμενο. Εικόνα 4-21: Ο αρχικός σχεδιασμός του κυκλώματος φόρτισης της μπαταρίας Το κύκλωμα διαμοιρασμού φορτίου (load sharing) Για την επίλυση των 2 προβλημάτων που εμφανίζονται στο προηγούμενο κύκλωμα, επεκτείναμε τον σχεδιασμό μας με τις προσθήκες της εικόνας Για το διαμοιρασμό του φορτίου απαιτούνται μόνο 3 επιπλέον ηλεκτρονικά στοιχεία. Το πρώτο στοιχείο και βασικότερο, είναι το P-MOSFET ισχύος FDD6685 (Q1). Όπως φαίνεται και από το σχεδιάγραμμα, με την προσθήκη της pull-down αντίστασης R3 και όταν το τροφοδοτικό δεν είναι συνδεδεμένο στο barrel jack J1, η τάση πύλης του Q1 ισούται με

62 54 Κεφάλαιο 4 : Περιφερειακό υλικό V G (Q1)=0V. Τότε, εξαιτίας της παρασιτικής διόδου του Q1, η ελάχιστη τάση πηγής του θα είναι V S (Q1 )min =V BAT min V DS par (Q1)=2.9V 0.8V=2.1V. Άρα, V GS (Q1)=0V 2.1V= 2.1V οπότε το Q1 αρχίζει να άγει, παρακάμπτοντας την παρασιτική δίοδο. Ως αποτέλεσμα, το φορτίο του συστήματος τροφοδοτείται με την τάση της μπαταρίας μας, όπως ακριβώς θα συνέβαινε και στον αρχικό σχεδιασμό (θεωρούμε αμελητέα την πτώση τάσης VDS κατά μήκος του Q1). Να σημειώσουμε ότι η τάση VGS(th) του επιλεγμένου transistor δεν πρέπει είναι μικρότερη των 2.1V κατά απόλυτη τιμή, διαφορετικά αυτό δε θα άγει όταν η τάση VBAT είναι η ελάχιστη. Πρέπει να προσέξουμε ώστε η τιμή της αντίστασης R DS(on) του Q1 να είναι χαμηλή, για να ελαχιστοποιηθούν οι απώλειες ισχύος και η πτώση τάσεως κατά μήκος της. Για το MOSFET που επιλέξαμε, η μέγιστη RDS(on) είναι μόλις 0.03Ω, οπότε η μέγιστη απώλεια ισχύος υπολογίζεται σε I 2BAT max R DS (on)=(2.15α)2 0.03Ω 0.14W, το οποίο συμπεριλήφθηκε στο 5% των πρόσθετων απωλειών κατά τον υπολογισμό της αυτονομίας. Σε περίπτωση που συνδέσουμε στο J1 το τροφοδοτικό μας, η τάση V GS(Q1) ισούται με την πτώση τάσης της διόδου D1 που είναι πάντα θετική τιμή, οπότε το Q1 δεν άγει. Άρα η μπαταρία μας αποσυνδέεται από το φορτίο και η φόρτισή της δεν επηρεάζεται από τη λειτουργία του υπολοίπου συστήματος. Το φορτίο σε αυτή την περίπτωση τροφοδοτείται μέσω της διόδου D1, απευθείας από το τροφοδοτικό, χωρίς να περιορίζεται από το μέγιστο ρεύμα φόρτισης του MCP73831, όπως στον αρχικό σχεδιασμό. Η δίοδος SB330-T (D1) χρησιμεύει στο να αποτρέψει τη ροή ρεύματος από τη μπαταρία προς το pin VDD, όταν το τροφοδοτικό δεν είναι συνδεδεμένο. Η D1 μπορεί να υποστηρίξει μέγιστο ρεύμα κανονικής πόλωσης μέχρι και 3A, το οποίο αρκεί για τις απαιτήσεις του φορτίου. Επιλέξαμε μία δίοδο τύπου Schottky, για να ελαχιστοποιηθούν οι απώλειες ισχύος, λόγω της μικρότερης πτώσης τάσεως που παρουσιάζει (η οποία είναι 0.5V στην περίπτωσή μας). Η επιλογή αυτή δεν είναι δεσμευτική βέβαια, αν και η μέγιστη πτώση τάσεως δεν πρέπει να ξεπερνά μία ορισμένη τιμή, έπειτα από την οποία ενδέχεται να υπάρχει πρόβλημα με την εσωτερική, παρασιτική δίοδο του Q1. Η ελάχιστη τάση τροφοδοσίας που μπορεί να δώσει το τροφοδοτικό στο pin V DD ώστε να λειτουργεί ο ελεγκτής φόρτισης, είναι 4.5V. Η παρασιτική δίοδος του Q1 σύμφωνα με το σχετικό datasheet, ενεργοποιείται όταν η τάση V DS par (Q1) 0.8V. Αν υποθέσουμε ότι η μπαταρία μας έχει φορτιστεί στη μέγιστη τάση 4.2V, τότε η μέγιστη πτώση τάσεως της D1 επιτρέπεται να είναι V D1(on)=V DD (V BAT V DS par (Q1) )=4.5V (4.2V 0.8V)=1.1V. Στην περίπτωση που επιλέγαμε δίοδο D1 με μεγαλύτερη πτώση τάσεως και υπό τις παραπάνω συνθήκες, η παρασιτική δίοδος του Q1 θα ενεργοποιούνταν, επαναφέροντας τα προβλήματα που λύνει το κύκλωμα του load sharing. Εικόνα 4-22: Ο τελικός σχεδιασμός του κυκλώματος φόρτισης της μπαταρίας, συμπεριλαμβανομένου του κυκλώματος διαμοιρασμού φορτίου.

63 55 Κεφάλαιο 4 : Περιφερειακό υλικό Το κύκλωμα προσαρμογής τάσεως Εισαγωγή Έχοντας ολοκληρώσει το σχεδιασμό του κυκλώματος φόρτισης της μπαταρίας, το επόμενο βήμα είναι η κατάλληλη προσαρμογή της μεταβλητής τάσεως που εμφανίζεται στην πηγή (source) του transistor Q1, πριν αυτή εφαρμοστεί στην πλατφόρμα A13-OlinuXino-MICRO. Η τάση αυτή μπορεί να προέρχεται είτε από την μπαταρία, είτε από το τροφοδοτικό, όταν αυτό είναι συνδεδεμένο στο barrel jack J1. Είναι μεταβλητή, γιατί στην πρώτη περίπτωση εξαρτάται από το επίπεδο φόρτισης της μπαταρίας και στη δεύτερη από το τροφοδοτικό που χρησιμοποιούμε. Σε κάθε περίπτωση όμως, επιθυμούμε τη μετατροπή της σε μία υψηλότερη DC τάση των 5V, όπως απαιτεί η πλατφόρμα A13-OlinuXino-MICRO. Μόνη εξαίρεση αποτελεί όταν η τάση V DD είναι μεταξύ 5.5V και 6V, οπότε και η τάση V S (Q1 )=V DD V D1(on) θα είναι μεταξύ 5V και 5.5V, άρα πρέπει να μετατραπεί σε χαμηλότερη. Μπορούμε ωστόσο να παραβλέψουμε την εξαίρεση αυτή όπως θα δούμε, σχεδιάζοντας το κύκλωμά προσαρμογής τάσεως ως κύκλωμα μόνο ανώθησης (boost ή αλλιώς step-up) Αρχή λειτουργίας του μετατροπέα ανώθησης τάσεως (boost converter) [101] Η καρδία του κυκλώματος προσαρμογής τάσεως είναι το ολοκληρωμένο κύκλωμα του μετατροπέα ανώθησης τάσεως (boost ή step-up converter). Πριν ασχοληθούμε με τον σχεδιασμό του κυκλώματος, θα περιγράψουμε τη γενική αρχή λειτουργίας ενός step-up converter, ώστε να κατανοήσουμε τη χρησιμότητα των ηλεκτρονικών στοιχείων που συνοδεύουν τον μετατροπέα. Αρχικά να σημειώσουμε ότι το έργο που αναλαμβάνει ένας step-up converter, είναι η μετατροπή μίας DC τάσεως εισόδου σε μία επίσης DC αλλά υψηλότερη, τάση εξόδου. Λόγω της αρχής διατήρησης της ισχύος, προκύπτει εύκολα ότι το ρεύμα εξόδου θα είναι χαμηλότερο από το ρεύμα εισόδου. Το γεγονός αυτό μας δυσκόλεψε αρκετά στην εύρεση του κατάλληλου μετατροπέα, αφού η A13-OlinuXino-MICRO καταναλώνει όπως είδαμε ένα σχετικά μεγάλο ρεύμα. Τα πράγματα δυσκολεύουν ακόμα περισσότερο, αν συνυπολογίσουμε τη μείωση της τάσεως της μπαταρίας ενώ αυτή εκφορτίζεται, αφού όσο μικρότερη είναι η τάση εισόδου του μετατροπέα, τόσο μικρότερο είναι το μέγιστο ρεύμα εξόδου. Αυτό όμως θα μας απασχολήσει στην επόμενη ενότητα. Ένα σύνηθες κύκλωμα ανώθησης τάσεως περιλαμβάνει τουλάχιστον δύο διακοπτικά, ημιαγωγικά στοιχεία μία δίοδο και ένα transistor και τουλάχιστον ένα στοιχείο αποθήκευσης ενέργειας ένα πηνίο, έναν πυκνωτή ή και τα δύο σε συνδυασμό τις περισσότερες φορές. Επίσης, σχεδόν πάντα συμπεριλαμβάνονται επιπλέον πυκνωτές εξομάλυνσης στην έξοδο. Για να μετατρέψουμε μία DC τάση σε υψηλότερη, θα εκμεταλλευτούμε την ιδιότητα του πηνίου να αντιτίθεται σε απότομες αλλαγές του ρεύματος που το διαρρέει. Στην εικόνα 4-23 φαίνεται το σχηματικό διάγραμμα που απεικονίζει τη λειτουργία ενός απλού boost converter. Ο διακόπτης υλοποιείται με ένα transistor. Όταν είναι κλειστός, ρέει ρεύμα στο κύκλωμα σε ωρολογιακή φορά, με την τάση στα αριστερά του πηνίου να είναι μεγαλύτερη από αυτή στα δεξιά του. Με αυτόν τον τρόπο, το πηνίο αποθηκεύει ενέργεια. Μόλις ανοίξει ο διακόπτης, η ισοδύναμη αντίσταση που βλέπει η πηγή τάσεως αυξάνεται, με αποτέλεσμα τη μείωση του ρεύματος που ρέει στο πηνίο. Το πηνίο σε μία προσπάθεια να αντισταθμίσει τη μείωση αυτή, αντιστρέφει την πολικότητά του και δρα παρέχοντας την αποθηκευμένη ενέργεια στο κύκλωμα. Αν ο διακόπτης ανοιγοκλείνει με αρκετά υψηλή συχνότητα ώστε το πηνίο να μην εκφορτίζεται ποτέ πλήρως, το φορτίο θα τροφοδοτείται πάντα με τάση υψηλότερη από αυτή της πηγής. Όσο ο διακόπτης είναι ανοιχτός, παράλληλα με την τροφοδοσία του φορτίου, φορτίζεται και ο πυκνωτής με την ίδια τάση. Την αποθηκευμένη ενέργειά του χρησιμοποιεί το φορτίο μας για να τροφοδοτηθεί, στο διάστημα που ο διακόπτης παραμένει κλειστός. Σε αυτό συμβάλει η δίοδος, ώστε να μην εκφορτίζεται ο πυκνωτής κατά το διάστημα αυτό μέσω του κλειστού διακόπτη. Είναι σημαντικό ο διακόπτης να ανοίξει πάλι έγκαιρα, πριν η τάση του πυκνωτή μειωθεί περισσότερο από όσο επιτρέπεται για την καλή λειτουργία του φορτίου.

64 56 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-23: Η λειτουργία ενός απλού κυκλώματος ανώθησης DC τάσεως. Εάν θελήσουμε να υπολογίσουμε το duty cycle του μετατροπέα, θα πρέπει να βασιστούμε στη ΔI βασική εξίσωση τάσεως του πηνίου: V ΙΝ = L L Βάσει της εξίσωσης αυτής, το ρεύμα ΔΙL on που Δt είναι η ποσότητα κατά την οποία αυξάνεται το ρεύμα του πηνίου όσο ο διακόπτης είναι κλειστός, υπολογίζεται ως: V ΙΝ = L DT ΔI L on 1 DT ΔI Lon = V ΙΝ dt= V Δt L 0 L ΙΝ όπου D το duty cycle, το οποίο αντιπροσωπεύει το κλάσμα της περιόδου T κατά το οποίο ο διακόπτης είναι κλειστός. Αν θεωρήσουμε μηδενική πτώση τάσης στη δίοδο και ότι ο πυκνωτής είναι αρκετά μεγάλος για να διατηρήσει σταθερή την τάση του, στο τέλος μίας περιόδου λειτουργίας του μετατροπέα έχουμε αντίστοιχα με πριν: T ΔI L off (V V OUT )(1 D)T 1 V ΙΝ V OUT = L ΔI Loff = ( V ΙΝ V OUT ) dt= ΙΝ Δt L DT L Θεωρώντας για τις ανάγκες των υπολογισμών ότι ο μετατροπέας βρίσκεται σε σταθερή κατάσταση, το ρεύμα του πηνίου πρέπει να είναι το ίδιο στην αρχή κάθε περιόδου. Οπότε, η συνολική μεταβολή του πρέπει να είναι μηδενική: ΔI Lon + ΔI L off =0 (V V OUT )(1 D)T DT V ΙΝ + ΙΝ =0 L L V OUT V 1 = D=1 ΙΝ V ΙΝ 1 D V OUT

65 57 Κεφάλαιο 4 : Περιφερειακό υλικό Το ολοκληρωμένο κύκλωμα TPS61032 [102] Δυσκολευτήκαμε αρκετά στην επιλογή του μετατροπέα ανώθησης τάσεως, λόγω των ιδιαίτερων απαιτήσεων που έπρεπε να ικανοποιεί. Εκτός της σταθερής και συνεχούς τάσης εξόδου των 5V, γνωρίζουμε ήδη ότι πρέπει να είναι ικανός να παρέχει μέγιστο ρεύμα κοντά στο 1A. Αυτή η λειτουργία πρέπει να υλοποιείται ακόμα και αν η τάση εισόδου είναι η ελάχιστη δυνατή, δηλαδή περίπου 2.9V (θεωρώντας αμελητέα από εδώ και στη συνέχεια την πτώση τάσης του V DS(Q1) on). Επίσης, ας μην ξεχνάμε ότι λόγω της μεγάλης κατανάλωσης ισχύος του φορτίου μας, είναι εξίσου σημαντική και η απόδοση του μετατροπέα, με μία ελάχιστη αποδεκτή τιμή περίπου 80%. Καταλήξαμε τελικώς στον synchronous step-up converter με κωδικό TPS61032 της εταιρείας Texas Instruments. Το ολοκληρωμένο αυτό παρουσιάζει μερικά εντυπωσιακά χαρακτηριστικά. Παρέχει σταθερή τάση εξόδου 5V, ενώ τα συγγενή μοντέλα TPS61031 και TPS61030 έχουν τάση εξόδου 3.3V και ρυθμιζόμενη αντίστοιχα. Η τάση στην είσοδο επιτρέπεται να μεταβάλλεται ελεύθερα μεταξύ 1.8V και 5.5V, χωρίς να επηρεάζεται η έξοδος. Αυτό επιτρέπει απρόσκοπτη λειτουργία για οποιαδήποτε τάση της μπαταρίας ( V S (Q1 ) [2.9V, 4.2V] ), αλλά και του τροφοδοτικού ( V S (Q1 ) [5V, 5.5V] ). Το μέγιστο ρεύμα εξόδου περιορίζεται αναλόγως την είσοδο, αλλά όπως φαίνεται και στην εικόνα 4-24 στα αριστερά, σε μία ελάχιστη τάση εισόδου V S (Q1 )=2.9V, αυτό μπορεί να πάρει τιμή έως και I OUT 1.7A, που είναι παραπάνω από αρκετό για την περίπτωσή μας. Όσον αφορά την απόδοση, παρατηρούμε στην παρακάτω γραφική παράσταση ότι για ρεύμα εξόδου I OUT =1A και για τις παραπάνω τάσεις εισόδου, η τιμή της δεν μειώνεται ποτέ κάτω από το 92%. Για αυτό και κάναμε λόγο στην υποενότητα της μπαταρίας για μία ρεαλιστική αυτονομία κοντά στη 1.23h, αντί στη 1.04h. Εικόνα 4-24: (Αριστερά) Χαρακτηριστική καμπύλη μεγίστου ρεύματος εξόδου, σε σχέση με την τάση εισόδου του TPS (Δεξιά) Χαρακτηριστικές καμπύλες απόδοσης, σε σχέση με την τάση εισόδου του TPS61032, για 3 διαφορετικές τιμές ρεύματος εξόδου. Γενικά η οικογένεια TPS6103x είναι ειδικά σχεδιασμένη για εφαρμογή σε συσκευές τροφοδοσίας από μπαταρίες Li-Ion ή Li-Po μίας κυψέλης και αλκαλικές, NiCd ή NiMH δύο ή τριών κυψελών. Οι μετατροπείς αυτοί ακολουθούν τη βασική αρχή λειτουργίας της προηγούμενης υποενότητας, αλλά την εφαρμόζουν σε πιο προηγμένο επίπεδο με καλύτερα αποτελέσματα. Ένα απλοποιημένο διάγραμμα λειτουργίας του εσωτερικού του TPS6103x φαίνεται στην εικόνα Το pin VBAT δέχεται την τάση εισόδου, ενώ μεταξύ αυτού και του pin SW θα συνδεθεί το εξωτερικό πηνίο. Στο pin VOUT δημιουργείται η τάση εξόδου και μεταξύ αυτού και του PGND θα συνδεθεί ο εξωτερικός πυκνωτής του κυκλώματος ανώθησης τάσεως. Επιπλέον bypass πυκνωτές θα συνδεθούν τόσο στην είσοδο, όσο και στην έξοδο. Το N-MOSFET transistor υλοποιεί το

66 58 Κεφάλαιο 4 : Περιφερειακό υλικό διακόπτη της εικόνας 4-23, ενώ για το ρόλο της διόδου έχει χρησιμοποιηθεί ένα P-MOSFET transistor, με χαμηλή αντίσταση R DS(on) για μείωση των απωλειών και αύξηση της απόδοσης. Και τα δύο αυτά transistor ελέγχονται από το Gate Control υποσύστημα. Το συνολικό κύκλωμα ελέγχου βασίζεται σε μία σταθερή συχνότητα των 600kHz, η οποία δημιουργείται από έναν εσωτερικό ταλαντωτή του συστήματος (oscillator). Με βάση αυτή τη συχνότητα, ένας ελεγκτής διαμόρφωσης πλάτους παλμού (PWM) που περιλαμβάνεται στο υποσύστημα του ρυθμιστή (regulator) ελέγχει το Gate Control υποσύστημα, μεταβάλλοντας το duty cycle του παλμού που εφαρμόζεται στις πύλες των 2 transistors. Το υποκύκλωμα του ρυθμιστή παρακολουθεί διαρκώς την τάση εισόδου, την τάση εξόδου και την πτώση τάσης του N-MOSFET, ώστε απότομες αλλαγές των συνθηκών λειτουργίας να επηρεάσουν άμεσα το duty cycle, αποφεύγοντας την έμμεση και πιο αργή διαδρομή μέσω του βρόχου της λογικής ελέγχου (control logic) και του ενισχυτή σφάλματος (error amplifier). Έτσι ο βρόχος ανάδρασης που δημιουργείται μέσω του ενισχυτή σφάλματος, αναλαμβάνει τη διόρθωση μόνο μικρών σφαλμάτων της τάσεως εξόδου. Η είσοδος της ανάδρασης προέρχεται από το pin FB στο ολοκληρωμένο TPS61030 για ακριβή ρύθμιση της τάσης εξόδου, ενώ στις εκδόσεις που η τάση αυτή είναι σταθερή, ολόκληρος ο βρόχος ανάδρασης είναι εσωτερικός και το pin αυτό απουσιάζει. Σε περίπτωση που επιθυμούμε, μπορούμε να αντικαταστήσουμε την εσωτερικά δημιουργούμενη συχνότητα των 600kHz, εξαναγκάζοντας τον μετατροπέα να λειτουργήσει στη συχνότητα που εφαρμόζουμε στο pin SYNC. Οι προϋποθέσεις καλής λειτουργίας απαιτούν η εξωτερική συχνότητα να μη διαφέρει περισσότερο από 20% της ονομαστικής τιμής της εσωτερικής και το ποσοστό του duty cycle να βρίσκεται μεταξύ του 30% και του 70%. Διαφορετικά, για να λειτουργήσει ο converter με την εσωτερική συχνότητα, το pin SYNC πρέπει να δέχεται σταθερή τάση ίση με τη VBAT ή ίση με τη γείωση. Αν η τάση στο pin SYNC ισοδυναμεί με την τάση του pin V BAT, αυτό ωθεί τον μετατροπέα να λειτουργήσει σε continuous mode, το οποίο βασίζεται στη λειτουργία που περιγράψαμε στην προηγούμενη υποενότητα και η συχνότητα λειτουργίας του κυκλώματος είναι σταθερή. Αν το pin SYNC όμως συνδεθεί με τη γείωση, αυτό επιτρέπει στον converter να λειτουργήσει σε power-save mode. Η λειτουργία αυτή είναι χρήσιμη όταν το φορτίο εξόδου είναι συγκριτικά μικρό. Τότε δεν απαιτείται συνεχής λειτουργία του μετατροπέα, καθώς η απαιτούμενη ενέργεια μεταφέρεται στο φορτίο πολύ σύντομα, σε ένα μικρό χρονικά διάστημα της περιόδου. Οπότε, ο μετατροπέας απενεργοποιείται για την υπόλοιπη περίοδο, έως ότου η τάση εξόδου μειωθεί κάτω από ένα κατώφλι, όπου και ξεκινάει πάλι η φόρτιση του πηνίου. Με τη λειτουργία power-save αυξάνεται σημαντικά η απόδοση του μετατροπέα σε ελαφριά φορτία, αλλά ταυτοχρόνως αυξάνεται και η κυμάτωση του ρεύματος του φορτίου, αφού το ρεύμα του πηνίου μπορεί να μηδενιστεί, σε αντίθεση με το continuous mode. Στο κύκλωμά μας, λόγω του μεγάλου φορτίου εξόδου, δεν έχει ιδιαίτερο νόημα το power-save mode αφού δε χρησιμοποιείται, οπότε θα το απενεργοποιήσουμε. Αναλόγως την τιμή της τάσεως στο pin ΕΝ, ο μετατροπέας μας μπορεί είτε να βρίσκεται σε κατάσταση κανονικής λειτουργίας, είτε σε shutdown mode. Στο shutdown mode, κανένα από τα εσωτερικά κυκλώματα δε λειτουργεί και το φορτίο εξόδου είναι πλήρως αποσυζευγμένο από την είσοδο, για να αποφευχθεί η εκφόρτιση της μπαταρίας. Θα δούμε πως ελέγχουμε την κατάσταση του pin EN από το τρίτο και τελευταίο υποσύστημα του κυκλώματος φορητής τροφοδοσίας, για την έναρξη και τον τερματισμό της λειτουργίας του τελικού συστήματος. Τα τελευταία δύο pins του μετατροπέα είναι το LBI και το LBO. Αυτά τα pins σχετίζονται με έναν εσωτερικό συγκριτή τάσης του TPS61032, ο οποίος μπορεί προαιρετικά να χρησιμοποιηθεί για να εντοπίζει μέσω του pin LBI, πότε η τάση της μπαταρίας μας μειώνεται κάτω από μία ρυθμιζόμενη τιμή. Υπό κανονικές συνθήκες λειτουργίας, το pin LBO βρίσκεται σε κατάσταση υψηλής αντίστασης. Μόλις όμως η τάση στο pin LBI μειωθεί κάτω από 0.5V, η κατάσταση του pin LBO αλλάζει σε Low. Με αυτόν τον τρόπο, δύναται να δημιουργηθεί για παράδειγμα μία διακοπή (interrupt) στο λειτουργικό μας σύστημα, ειδοποιώντας τον χρήστη ότι η μπαταρία πλησιάζει την πλήρη εκφόρτισή της. Προτιμήσαμε όμως αντί αυτού, να συνδέσουμε μία δίοδο LED στο pin LBO,

67 59 Κεφάλαιο 4 : Περιφερειακό υλικό ώστε να είναι πιο εύκολα αντιληπτή η ειδοποίηση χαμηλής μπαταρίας στον χρήστη, ακόμη και αν αυτός δεν κοιτάει την οθόνη. Φυσικά για να υλοποιηθεί σωστά η παραπάνω λειτουργία απαιτείται ένας διαιρέτης τάσεως, ο οποίος θα προγραμματίσει την τάση αλλαγής κατάστασης του LED, κάνοντας το κατάλληλο scaling στην τάση της μπαταρίας μας, ως προς την τάση 0.5V που χρησιμοποιεί ο συγκριτής ως αναφορά. Επίσης, πρέπει να χρησιμοποιηθεί μία pull-up αντίσταση μεταξύ των pins LBO και VOUT, για να έχει μόνιμη τιμή High η κάθοδος του LED σε συνθήκες κανονικής λειτουργίας. Εικόνα 4-25: Διάγραμμα λειτουργίας του ολοκληρωμένου κυκλώματος TPS61032 Το ολοκληρωμένο κύκλωμα TPS61032 είναι διαθέσιμο σε δύο διαφορετικές συσκευασίες, σε QFN των 16 pins και σε TSSOP, επίσης των 16 pins. Εμείς παραγγείλαμε τη δεύτερη, καθώς είναι πιο εύκολη η κόλλησή της σε πλακέτα. Σε κυκλώματα τροφοδοσίας ισχύος που λειτουργούν μάλιστα σε υψηλές συχνότητες, ο σχεδιασμός της πλακέτας είναι ιδιαίτερα σημαντικός. Αν δε γίνει προσεκτικά, μπορεί το κύκλωμα να δυσλειτουργήσει, παρουσιάζοντας προβλήματα αστάθειας και ενισχύοντας τις ηλεκτρομαγνητικές παρεμβολές στο υπόλοιπο σύστημα. Καίρια σημεία είναι η τοποθέτηση όλων των παθητικών στοιχείων κοντά στο ολοκληρωμένο κύκλωμα και η χρήση διαδρομών μικρού μήκους και μεγάλου πλάτους, όταν αυτές διαρρέονται από μεγάλα ρεύματα. Ειδικά για τη γείωση, είναι προτεινόμενο να χρησιμοποιηθούν 2 διαφορετικοί κόμβοι, ένας για τη γείωση των υποσυστημάτων ελέγχου (GND) και ένας για τα υπόλοιπα υποσυστήματα ισχύος (PGND). Έτσι αποφεύγεται η μετατόπιση της τάσεως γείωσης, που μπορεί να συμβεί εξαιτίας θορύβου από την υπέρθεση του υψηλού ρεύματος που καταλήγει στο pin PGND και του ρεύματος που προέρχεται από τα κυκλώματα ελέγχου. Οι 2 γειώσεις πρέπει να συνδεθούν μεταξύ τους μόνο σε ένα σημείο, κοντά στο pin GND. Σε περίπτωση που προχωρούσαμε ένα βήμα πιο πέρα από τη σχεδίαση και κατασκευάζαμε την πλακέτα, θα έπρεπε να λάβουμε υπόψη μας και τη σωστή απαγωγή θερμότητας από το ολοκληρωμένο κύκλωμα του μετατροπέα. Το IC TPS61032 περιλαμβάνει ένα Power Pad για την απαγωγή της θερμότητας, το οποίο συνίσταται να κολληθεί στη γείωση της πλακέτας. Με αυτόν τον τρόπο, η μεγάλη επιφάνεια της γείωσης λειτουργεί ταυτοχρόνως και ως ψύκτρα. Στην περίπτωσή μας αυτό αρκεί για την απαγωγή της θερμότητας, χωρίς να απαιτείται επιπλέον εξωτερική ψύκτρα. Σε κάθε περίπτωση βέβαια, ο μετατροπέας περιλαμβάνει εσωτερικό κύκλωμα

68 60 Κεφάλαιο 4 : Περιφερειακό υλικό προστασίας που ενεργοποιείται σε ακραίες θερμοκρασίες (κοντά στους 140οC) Υπολογισμός τιμών των παθητικών στοιχείων [103][104] Έχοντας περιγράψει τη λειτουργία του boost converter TPS61032 και τις απαραίτητες λεπτομέρειες που απαιτούνται για το σχεδιασμό του υποσυστήματος προσαρμογής τάσεως, βλέπουμε μία ολοκληρωμένη εικόνα του κυκλώματος στο τέλος της παρούσας υποενότητας. Ωστόσο πριν φτάσουμε εκεί, μένει να περιγράψουμε την επιλογή των τιμών των παθητικών στοιχείων του κυκλώματος αυτού. Όπως αναφέραμε στη σχετική υποενότητα, ένας boost converter απαιτεί σχεδόν πάντα την ύπαρξη ενός πηνίου και ενός πυκνωτή για την αποθήκευση ενέργειας κατά τα στάδια της ανώθησης τάσης. Πρώτα θα ασχοληθούμε με την επιλογή του πηνίου. Το πρώτο χαρακτηριστικό του πηνίου που μας ενδιαφέρει είναι το μέγιστο ρεύμα που το διαρρέει. Αυτό έχει ήδη υπολογιστεί στην υποενότητα της αυτονομίας και είναι ίσο με I L max =I BAT max =2.15A. Είναι αρκετά μικρότερο από το μέγιστο ρεύμα που μπορεί να διαρρεύσει το N-MOSFET transistor του TPS61032, το οποίο ορίζεται σε 4.5A, οπότε δε θα προκαλέσει κάποιο πρόβλημα στον μετατροπέα. Το δεύτερο χαρακτηριστικό επιλογής του πηνίου είναι ο συντελεστής αυτεπαγωγής L, ο οποίος προκύπτει βάσει της επιθυμητής κυμάτωσης του ρεύματος που το διαρρέει. Είναι γενικά προτεινόμενο η τιμή της κυμάτωσης ΔI L να μην ξεπερνάει το 20% του μέσου ρεύματος του πηνίου IL avg. Μία μικρότερη κυμάτωση μειώνει τις απώλειες υστέρησης του πηνίου, την αντίστοιχη κυμάτωση της τάσεως εξόδου και τις ηλεκτρομαγνητικές παρεμβολές στο γενικότερο σύστημα. Από την άλλη όμως, αυξάνεται ο χρόνος προσαρμογής του μετατροπέα σε μεταβολές του φορτίου εξόδου, ενώ μεγαλώνει ταυτόχρονα το κόστος και ο όγκος του πηνίου. Για την εφαρμογή μας, μία κυμάτωση περί του 15% του μέσου ρεύματος του πηνίου είναι ιδανική: ΔΙ L =0.15 I L avg =0.15 I OUT avg V OUT 0.16A V BAT avg 0.8 Πρέπει να δώσουμε επίσης προσοχή στην επιλογή αυτή, ώστε αν το φορτίο μας είναι τόσο μικρό που η παραπάνω κυμάτωση μπορεί να μηδενίσει το ρεύμα του πηνίου, να ενεργοποιήσουμε το power-save mode. Για την περίπτωσή μας κάτι τέτοιο δεν απαιτείται, αφού το ελάχιστο φορτίο εξόδου απαιτεί ρεύμα I OUT min =0.35A, όπως έχουμε αναφέρει σε προηγούμενο τμήμα της εργασίας. Σύμφωνα τώρα με τη βασική εξίσωση τάσης του πηνίου και για όσο χρονικό διάστημα άγει το N-MOSFET, ισχύει : DT ΔI L 1 DT V BAT = L ΔI L = V BAT dt= V BAT Δt L 0 L Το διάστημα DT αντιπροσωπεύει τον χρόνο που είναι κλειστός ο διακόπτης του μετατροπέα και φορτίζεται το πηνίο. T είναι ο χρόνος που διαρκεί μία περίοδος λειτουργίας του μετατροπέα και 1 1 = sec, ενώ D είναι το duty cycle όπως το έχουμε ισούται με T = = f 600kHz 0.8 V BAT V OUT 0.8 V BAT υπολογίσει προηγουμένως: D=1, όπου ο όρος 0.8 εκφράζει την = V OUT V OUT απόδοση του μετατροπέα και προστέθηκε λόγω της μη ιδανικότητας. Συνοψίζοντας τα παραπάνω, συνεπάγεται για την ελάχιστη αυτεπαγωγή του πηνίου: ΔI L = V BAT (V OUT 0.8 V BAT ) 0.16A L f V OUT

69 61 Κεφάλαιο 4 : Περιφερειακό υλικό L V BAT (V OUT 0.8 V BAT ) =[10.4 V BAT 1.7 V 2BAT ] 10 6 uh 0.16A f V OUT Παρατηρούμε ότι η ελάχιστη αυτεπαγωγή εξαρτάται τελικώς από την τάση εισόδου. Στην εικόνα 4-26 φαίνεται η συσχέτιση αυτή, όπου είναι ορατό ότι η μέγιστη τιμή της ελάχιστης αυτεπαγωγής είναι ίση με L uh για τάση εισόδου ίση με V BAT 3.06V. Άρα, ένα πηνίο μεγέθους 16uH είναι ασφαλής επιλογή, για να επιτύχουμε υπό οποιαδήποτε περίπτωση την επιθυμητή κυμάτωση. Φαίνεται ακόμη από την εξίσωση της κυμάτωσης, ότι αυτή δεν εξαρτάται από το ρεύμα του φορτίου, άρα για σταθερές τάσεις VBAT και VOUT είναι και αυτή σταθερή. Πρακτικά θα μπορούσαμε να είχαμε επιλέξει οποιαδήποτε τάση της μπαταρίας μας ως τάση εισόδου για τον υπολογισμό της αυτεπαγωγής, αφού το αποτέλεσμα L μπορεί να έχει μεγάλη ανοχή, δίχως να απαιτείται μεγάλη ακρίβεια. Εικόνα 4-26: Γραφική παράσταση απεικόνισης της ελάχιστης αυτεπαγωγής L του πηνίου (σε μονάδες uh), σε σχέση με την τάση VBAT (σε μονάδες V). Στη συνέχεια πρέπει να υπολογιστεί η τιμή του πυκνωτή αποθήκευσης ενέργειας, που βρίσκεται συνδεδεμένος στην έξοδο του μετατροπέα. Ο υπολογισμός αυτός γίνεται βάσει της μέγιστης επιτρεπτής τάσης κυμάτωσης της εξόδου. Η κυμάτωση αυτή εξαρτάται από δύο παραμέτρους: από τη χωρητικότητα του πυκνωτή και από την ισοδύναμη αντίσταση σειράς που παρουσιάζει (ESR). Για να υπολογίσουμε την ελάχιστη χωρητικότητα για μία τιμή κυμάτωσης περίπου ΔV OUT 10mV, θα χρησιμοποιήσουμε την εξίσωση ρεύματος του πυκνωτή, κατά το μέγιστο χρονικό διάστημα που τροφοδοτεί το φορτίο με ρεύμα I OUT max, δηλαδή το χρονικό κλάσμα DmaxT της συνολικής περιόδου T: I OUT max =C min C min = ΔV OUT 1 C min = Δt ΔV OUT Dmax T I OUT max dt 0 D max T (V 0.8 V BAT min ) I OUT max I OUT max = OUT 90 uf ΔV OUT V OUT f ΔV OUT Στον παραπάνω υπολογισμό θεωρήσαμε την αντίσταση ESR του πυκνωτή μηδενική. Αν τη συμπεριλάβουμε στον υπολογισμό, τότε η επιπρόσθετη κυμάτωση της τάσεως, για μία τυπική τιμή I ΔI ESR=50mΩ υπολογίζεται περίπου σε: ΔV ESR =ESR ( OUT max + L ) 0.110V η οποία είναι 1 Dmax 2

70 62 Κεφάλαιο 4 : Περιφερειακό υλικό αρκετά μεγάλη και αυξάνεται ακόμα περισσότερο κατά τις μεταβολές του φορτίου εξόδου. Αυτό σημαίνει ότι η χωρητικότητα του πυκνωτή που υπολογίσαμε παραπάνω πρέπει να είναι αρκετά μεγαλύτερη. Ο πυκνωτής εξόδου πρέπει να παρέχει την απαιτούμενη ισχύ στο φορτίο καθ' όλη τη διάρκεια φόρτισης του πηνίου. Με βάση την υπολογισμένη ελάχιστη τιμή της χωρητικότητας C min 90uF και τα μεταβατικά φαινόμενα του φορτίου, μία προτεινόμενη και ασφαλής τιμή της χωρητικότητας εξόδου είναι περί τα 220uF (C4). Μία καλή και οικονομική λύση είναι οι πυκνωτές τανταλίου, καθώς προσφέρουν χαμηλές αντιστάσεις ESR και υψηλό λόγο χωρητικότητας/όγκου. Ωστόσο, δεν πρέπει να επιλεγεί κάποιος με πολύ μικρή ισοδύναμε αντίσταση σειράς, καθώς ο βρόχος ελέγχου έχει βελτιστοποιηθεί για χρήση πυκνωτών εξόδου με ESR 30mΩ. Παράλληλα με τον πυκνωτή τανταλίου θα συνδέσουμε και έναν κεραμικό πυκνωτή μεγέθους 2.2uF (C5), ο οποίος λόγω κατασκευής και μικρής χωρητικότητας, θα αναλάβει να φιλτράρει τις υψηλές συχνότητες. Τέλος, χρησιμοποιήσαμε και έναν bypass πυκνωτή μεγέθους 10uF στην είσοδο του μετατροπέα, για σταθεροποίηση της τάσεως VBAT κατά τα μεταβατικά φαινόμενα. Απομένει ο υπολογισμός των δύο αντιστάσεων του διαιρέτη τάσης, ώστε να προγραμματιστεί η τιμή ένδειξης χαμηλής τάσεως της μπαταρίας. Η αντίσταση R5 υπολογίζεται βάσει του ρεύματος που πρέπει να τη διαρρέει και το οποίο οφείλει να είναι περίπου 100 φορές μεγαλύτερο από το ρεύμα που ρέει στο pin LBI, σύμφωνα με το σχετικό datasheet. Το μέσο ρεύμα του pin LBI είναι 0.01uA, άρα θέλουμε I R5=1uA. Επίσης, η πτώση τάσεως της αντίστασης R5 κυμαίνεται στην περιοχή των 500mV, καθώς πρέπει να είναι συγκρίσιμη με την εσωτερική τάση αναφοράς του V 0.5V κυκλώματος σύγκρισης. Αυτό μας οδηγεί σε μία τιμή R5= R5 = =500KΩ. Η I R5 1uA πλησιέστερη πραγματική τιμή αντίστασης σε αυτή που υπολογίσαμε μόλις, είναι τα 510KΩ. Έπειτα πρέπει να υπολογίσουμε την τιμή της αντίστασης R4, βάσει της παραπάνω τιμής της R5. Το πρόβλημα είναι ότι μην έχοντας παραλάβει τη μπαταρία και λόγω ελλειπούς datasheet όπως προείπαμε στην αντίστοιχη υποενότητα, δε μπορούμε να επιλέξουμε μία αντιπροσωπευτική τιμή τάσεως, η οποία να υποδεικνύει ότι η μπαταρία μας έχει σχεδόν εκφορτιστεί. Διεξάγοντας μία έρευνα σε μπαταρίες Li-Po παρόμοιων χαρακτηριστικών με τη δική μας, παρατηρήσαμε βάσει των χαρακτηριστικών καμπυλών εκφόρτισης, ότι κατά τον περισσότερο χρόνο εκφόρτισης, οι μπαταρίες αυτές απέδιδαν τάση πολύ κοντά στην ονομαστική τους τιμή (με απόκλιση ±0.1V ). Όταν η αποθηκευμένη ενέργεια πλησίαζε στο 10% της πλήρους κλίμακας, τότε μόνο η τάση μειωνόταν με ταχείς ρυθμούς. Επιπλέον, η μέση τάση εκφόρτισης των μπαταριών ήταν αντιστρόφως ανάλογη του μέσου ρεύματος εκφόρτισης. Από τα προηγούμενα συμπεραίνουμε πως χωρίς την εκτέλεση μετρήσεων ακριβείας, είναι αδύνατο να προβλέψουμε την τιμή της R4. Μπορούμε όμως με σιγουριά να δηλώσουμε ότι η τιμή της τάσεως ένδειξης χαμηλής μπαταρίας V BAT (low ) [3.2V, 3.6V], άρα για τον διαιρέτη τάσης ισχύει: V LBI (th)= V BAT (low ) V BAT(low ) R5 V BAT (low) R4=R5 ( 1)=510KΩ ( 1) R4+ R5 V LBI (th) 500mV Η τελευταία εξίσωση μας δίνει ένα εύρος πιθανόν τιμών R4 [2.75MΩ,3.16MΩ ]. Όταν γίνει η παραλαβή της μπαταρίας, θα μπορούμε να θέσουμε επακριβώς την τιμή της R4.

71 63 Κεφάλαιο 4 : Περιφερειακό υλικό Εικόνα 4-27: Το κύκλωμα φόρτισης μπαταρίας και μετατροπής τάσεως Το κύκλωμα ενεργοποίησης/απενεργοποίησης λειτουργίας της συσκευής Στο κεφάλαιο 3 μελετήσαμε μεταξύ άλλων το υποσύστημα τροφοδοσίας της πλατφόρμας A13-OlinuXino-MICRO. Είδαμε ότι είναι πολύ απλοϊκό, σε βαθμό που δε διαθέτει κάποιον υλοποιημένο τρόπο αποσύζευξης της πλατφόρμας και των περιφερειακών της από την μπαταρία. Ως αποτέλεσμα, μετά τον τερματισμό της λειτουργίας του λογισμικού, συνεχίζει να υφίσταται κάποια ελάχιστη κατανάλωση εξαιτίας των υπολειπόμενων ενεργών υποσυστημάτων, των ρευμάτων διαρροής κ.α.. Σκοπός του τρίτου υποσυστήματος του κυκλώματος φορητής τροφοδοσίας είναι να εκμεταλλευτούμε τη δυνατότητα που προσφέρει ο boost converter TPS61032 του δευτέρου υποσυστήματος, για πλήρη διακοπή της παροχής ενέργειας στην έξοδό του, όταν το ολοκληρωμένο κύκλωμα απενεργοποιείται. Για να υλοποιήσουμε αυτή τη λειτουργία σχεδιάσαμε ένα απλό κύκλωμα που αποτελείται από 3 διπολικά transistor ένωσης (BJT) ένα PNP τύπου και δύο NPN -, έναν πυκνωτή και μερικές αντιστάσεις, όπως αυτό φαίνεται στην εικόνα Η λειτουργία του έχει ως εξής: Ο εκπομπός του PNP transistor Q2 τροφοδοτείται πάντα με την τάση V BAT, ανεξαρτήτως συνθήκης. Αρχικά η βάση του Q2 λαμβάνει την ίδια τιμή με τον εκπομπό, μέσω των αντιστάσεων R8 και R9, οπότε το Q2 είναι σε κατάσταση αποκοπής ( V BE (Q2 )=0V ). Ομοίως και τα transistors Q3 και Q4. Κλείνοντας στιγμιαία (που μεταφράζεται σε μερικά milliseconds πραγματικού χρόνου) τον διακόπτη S1, το transistor Q2 αρχίζει να άγει, καθώς V BE (Q2 )=V BE (Q2)on= 0.6V και υπάρχει ροή ρεύματος δια μέσω του S1 προς τη γη. Συνεπώς, ο συλλέκτης του Q2 αποκτά τάση V C (Q2) V BAT (θεωρώντας αμελητέα την πτώση τάσεως κατά μήκος του transistor). Με αυτόν τον τρόπο, το pin EN του TPS61032 μεταβαίνει σε κατάσταση High και το ολοκληρωμένο κύκλωμα εκκινεί το σύστημά μας. Ταυτόχρονα όμως, μέσω της pull-up αντίστασης R10 ενεργοποιείται το transistor Q3, το οποίο ήταν επίσης σε αποκοπή μέχρι τώρα, λόγω της αντίστασης R11. Η βάση του λαμβάνει τιμή περίπου V B (Q3) =V BE (Q3)on 0.6V και το Q3 μανδαλώνει το κύκλωμα σε αυτή την κατάσταση, υποκαθιστώντας τον ρόλο του κλειστού διακόπτη S1, όταν σταματήσουμε να τον πιέζουμε. Το κύκλωμα δεν αλλάζει κατάσταση μέχρι να ενεργοποιηθεί το transistor Q4. Για να συμβεί αυτό, πρέπει το GPIO pin 3 της θύρας B του Α13 SoC (PB3) να λάβει τιμή High, κάτι το οποίο γίνεται μόνο από το λογισμικό και μέσω της τελικής εφαρμογής, με τρόπο που θα δούμε στο κεφάλαιο 7. Τότε, αρχίζει η φόρτιση του πυκνωτή C6 διαμέσου της αντίστασης R12. Όταν ο πυκνωτής έχει φορτιστεί σε τάση περίπου V B (Q4 )=V BE (Q4)on 0.6V, αρχίζει να άγει το Q4, με αποτέλεσμα να γίνει η τάση V B (Q3) =V BE (Q3) =0V και το Q3 οδηγείται πάλι στην αποκοπή, όπως και το Q2 ακολούθως. Άρα το σύστημα τερματίζει με αυτόν τον τρόπο τη λειτουργία του. Έπειτα ο πυκνωτής εκφορτίζεται ξανά, μέσω της R12.

72 64 Κεφάλαιο 4 : Περιφερειακό υλικό Πρέπει ωστόσο να προσέξουμε ορισμένες λεπτομέρειες για την καλή λειτουργία του παραπάνω κυκλώματος. Η σταθερά τ C6 =R12 C6 πρέπει να είναι αρκετά μεγάλη, ώστε να έχει γίνει ο σωστός τερματισμός του λογισμικού, πριν διακοπεί η παροχή ενέργειας στην A13-OlinuXino-MICRO. Από την εξίσωση φόρτισης του πυκνωτή C6 προκύπτει ότι για R12=1MΩ και C6=33uF, ο χρόνος φόρτισής του μέχρι τα 0.6V από μία τάση τροφοδοσίας t V R12 C6 V =V =V (1 e ) t= R12 C6 ln( 1 C6 ) 6.6sec, V PB3 =3.3V είναι B (Q4 ) C6 PB3 V PB3 θεωρώντας αμελητέα τη χωρητικότητα της βάσης του Q4. Ο χρόνος αυτός είναι αρκετός για τον πλήρη τερματισμό του λογισμικού. Διαφορετικά, κατά τη λειτουργία του συστήματος η τάση εξόδου στο pin PB3 είναι ίση με 0V και το Q4 διατηρείται σε αποκοπή (η αρχική κατάσταση του pin PB3 ορίζεται κατά την εκκίνηση του συστήματος από σχετικούς drivers, όπως θα δούμε στο κεφάλαιο 6). Οι αντιστάσεις R8 και R11 αναλαμβάνουν ρόλο pull-up και pull-down αντίστοιχα. Θα μπορούσε να είχε αποφευχθεί η χρήση τους, καθώς τα διπολικά transistors απαιτούν ροή ρεύματος στον ακροδέκτη της βάσης για να λειτουργήσουν. Παρόλα αυτά, είναι σωστή πρακτική για διάφορους λόγους, η βάση των BJTs να μη βρίσκεται ποτέ σε κατάσταση υψηλής αντίστασης. Επίσης, η αντίσταση R11 σε σειρά με την R10 λειτουργεί ως pull-down και για το pin EN, όταν αυτό απαιτείται. Για το παραπάνω κύκλωμα και λόγω της ευκολίας εύρεσης των ηλεκτρονικών στοιχείων του, ήταν εφικτή η κατασκευή και ο έλεγχος καλής λειτουργίας. Θα μπορούσαμε αντί για BJT να είχαμε χρησιμοποιήσει MOSFET ώστε να μειωθεί η συνολική κατανάλωση, όμως κάτι τέτοιο δεν έγινε εξαιτίας έλλειψης διαθεσιμότητας των τελευταίων στο εργαστήριο. Παρόλα αυτά δε θα πρέπει να μας απασχολεί αυτό, γιατί ούτως ή άλλως η κατανάλωση είναι πάρα πολύ μικρή. Επίσης, θα μπορούσε ο τερματισμός της λειτουργίας να γίνεται όπως και η έναρξη, δηλαδή με την πίεση ενός κουμπιού. Επιλέχθηκε να γίνεται μέσω του λογισμικού βάσει αντιστοιχίας με εμπορικές συσκευές. Εικόνα 4-28: Το τελικό και ολοκληρωμένο κύκλωμα φορητής τροφοδοσίας Πιθανές βελτιώσεις Με το τελικό κύκλωμα της εικόνας 4-28 έχουμε εξυπηρετήσει τους στόχους που θέσαμε σχετικά με τη φορητότητα του συστήματος. Οι βασικές λειτουργίες της φόρτισης της μπαταρίας, της μετατροπής της τάσης της και της έναρξης/τερματισμού του συστήματος υλοποιούνται στην πιο απλή τους ίσως μορφή.

73 65 Κεφάλαιο 4 : Περιφερειακό υλικό Το κύκλωμα αυτό βέβαια, αν και πλήρως λειτουργικό στην παρούσα κατάσταση, δύναται να βελτιωθεί σε μελλοντικές εκδόσεις. Τη σημαντικότερη έλλειψη αποτελεί ένα επιπλέον υποσύστημα ένδειξης της εναπομένουσας ποσοστιαίας αποθηκευμένης ενέργειας της μπαταρίας, προς ενημέρωση του χρήστη. Θα ήταν εφικτό επίσης όταν η μπαταρία μας πλησιάζει την πλήρη εκφόρτισή της, να ενημερώνεται το A13 SoC με μία διακοπή υλικού (hardware interrupt), ώστε να τερματίσει αυτόματα τη λειτουργία του συστήματος, χωρίς τη μεσολάβηση του χρήστη. Τέλος, να σημειώσουμε ότι οι δύο λυχνίες LED είναι δυνατόν και κατά προτίμηση, να αντικατασταθούν από μία λυχνία LED δύο χρωμάτων, η οποία θα υποδεικνύει τις ανάλογες καταστάσεις της μπαταρίας, όπως συμβαίνει στις περισσότερες σύγχρονες φορητές συσκευές.

74 66 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού 5.1 Εισαγωγή Στο κεφάλαιο αυτό θα κάνουμε μία σύντομη περιγραφή του περιβάλλοντος ανάπτυξης του τελικού λογισμικού που χρησιμοποιήθηκε στην παρούσα διπλωματική εργασία, όσον αφορά το λογισμικό κυρίως, την προετοιμασία αυτού, αλλά και το υλικό του host συστήματος. Εκτός από την αναφορά στο λειτουργικό σύστημα, θα γίνει μία εισαγωγή στη χρήση των command-line shells. Στη συνέχεια περιγράφουμε την επικοινωνία μεταξύ host και target συστήματος, τόσο κατά τη διαδικασία της ανάπτυξης του λογισμικού όσο και της αποσφαλμάτωσής του. Τελικώς, μελετάται αναλυτικά η διαδικασία δημιουργίας του cross-toolchain, το οποίο θα χρησιμοποιηθεί στα επόμενα κεφάλαια της εργασίας. 5.2 Υπολογιστικό σύστημα ανάπτυξης τελικού λογισμικού Το host σύστημα που χρησιμοποιήθηκε είναι ένα laptop με CPU 2 πυρήνων Intel Core 2 Duo T5500 χρονισμένη στα 1.66 GHz και 2 GB εγκατεστημένης μνήμης RAM. Όπου κρίθηκε απαραίτητο, για την επιτάχυνση της διαδικασίας μετάφρασης του απαραίτητου λογισμικού, χρησιμοποιήθηκε η υπηρεσία Cyclades του συστήματος Okeanos, η οποία παρέχεται δωρεάν στους φοιτητές και ερευνητές του ελληνικού πανεπιστημίου από το Greek Research and Technology Network (GRNET). Στην παραπάνω υπηρεσία δημιουργήθηκε και χρησιμοποιήθηκε μία virtual machine με λειτουργικό σύστημα Debian GNU/Linux, CPU 8 πυρήνων και 8 GB διαθέσιμης μνήμης RAM, στην οποία συνδεόμαστε με το πρωτόκολλο SSH, από οποιονδήποτε υπολογιστή. 5.3 Το λειτουργικό σύστημα Debian GNU/Linux Σαν λειτουργικό σύστημα του host συστήματος καταλήξαμε στην επιλογή της διανομής Debian GNU/Linux. Πρόκειται για ένα από τα πιο δημοφιλή δωρεάν λειτουργικά συστήματα, το οποίο ιδρύθηκε από τον Ian Murdock τον Αύγουστο του 1993 και πλέον συντηρείται από μια διαδικτυακή συνεργασία εθελοντών, υπό το όνομα The Debian Project. Η δημοτικότητά του φαίνεται από το γεγονός ότι κυκλοφορούν περισσότερες από 140 διανομές που έχουν ως βάση τη Debian, οι οποίες είναι ακόμα ενεργές και υπό ανάπτυξη. [105] Όπως αναφέρθηκε και στο κεφάλαιο 2 το κάθε λειτουργικό σύστημα αποτελείται από ένα σύνολο βασικών προγραμμάτων, utilities και βιβλιοθηκών που επιτρέπουν στο υπολογιστικό σύστημα να λειτουργεί σωστά. Στην προκειμένη περίπτωση, πολλά από αυτά προέρχονται από το GNU project, ενώ ο πυρήνας του λειτουργικού συστήματος είναι ο πυρήνας Linux, για αυτό το λόγο και προτιμάται η αναφορά στο λειτουργικό σύστημα με το πλήρες όνομα Debian GNU/Linux. Πέρα από τον πυρήνα Linux, το Debian υποστηρίζει τους πυρήνες FreeBSD και Hurd η υποστήριξη του τελευταίου βρίσκεται ακόμα σε πειραματικό στάδιο. Οι λόγοι που προτιμήσαμε να χρησιμοποιήσουμε το Debian GNU/Linux λειτουργικό σύστημα για την ανάπτυξη του λογισμικού του τελικού συστήματος είναι πολλοί: Πρώτον και κυριότερο είναι ελεύθερο λογισμικό, δηλαδή επιτρέπεται η δωρεάν και σχεδόν άνευ περιορισμών χρήση του. Δεύτερον, υποστηρίζεται από μία παγκόσμια κοινότητα περισσοτέρων των 1000 ενεργών προγραμματιστών που διαρκώς διορθώνουν και βελτιώνουν το λειτουργικό σύστημα, ενώ αυτή τη στιγμή είναι ένα από τα πιο σταθερά λειτουργικά συστήματα και με καλή διαχείριση πόρων. Τρίτον, παρέχει περισσότερα από ελεύθερα πακέτα λογισμικού (packages) στους χρήστες του. [106] Τέταρτον και τελευταίο, υποστηρίζει το λεγόμενο multi-architecture setup, το οποίο παρέχει τη δυνατότητα για εγκατάσταση στο host σύστημα, πακέτων λογισμικού δημιουργημένα για άλλες αρχιτεκτονικές, πέρα της x86, μέσα στις οποίες βρίσκεται και η ARM,

75 67 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού κάτι πολύ χρήσιμο στην περίπτωσή μίας cross-compilation διαδικασίας. Εικόνα 5-1: Το λογότυπο του Debian GNU/Linux 5.4 Το shell γραμμής εντολών Ένα shell (ή αλλιώς κέλυφος) πρόκειται για το λογισμικό το οποίο παρέχει μία διεπαφή επικοινωνίας μεταξύ των χρηστών και του λειτουργικού συστήματος. Αποκαλείται κέλυφος, καθώς αποτελεί το εξωτερικό επίπεδο διεπαφής μεταξύ του χρήστη και του πυρήνα του συστήματος. Γενικά τα shells των λειτουργικών συστημάτων εμπίπτουν σε μία από τις δύο ακόλουθες κατηγορίες: shells γραμμής εντολών και shells γραφικών. Τα shells γραμμής εντολών παρέχουν την απαιτούμενη διεπαφή γραμμής εντολών (Command Line Interface ή CLI), ενώ τα shells γραφικών, όπως το shell Windows, την υποκαθιστούν μέσω μίας γραφικής διεπαφής χρήστη (Graphical User Interface ή GUI). Σε οποιαδήποτε από τις 2 περιπτώσεις, ο βασικός ρόλος του κελύφους παραμένει η διαδικασία έναρξης ενός προγράμματος με εντολή του χρήστη. Παρόλα αυτά, συχνά τα shells παρέχουν επιπλέον ενσωματωμένες δυνατότητες, όπως παραδείγματος χάριν, την εμφάνιση των περιεχομένων ενός καταλόγου. Τα CLI shells έχουν το πλεονέκτημα ότι οι περισσότερες διαδικασίες που αναλαμβάνουν, διενεργούνται πολύ πιο γρήγορα από τις αντίστοιχες σε GUI shells, λόγω του μειωμένου overhead των γραφικών στοιχείων. Από την άλλη πλευρά, τα τελευταία παρέχουν στους χρήστες μεγαλύτερη χρηστικότητα και απλότητα. Για αυτό το λόγο δεν μπορούμε να πούμε ότι κάποια κατηγορία υπερισχύει έναντι της άλλης, καθώς αυτό εξαρτάται από το σκοπό για τον οποίον θα χρησιμοποιηθεί στο εκάστοτε σύστημα. Στην περίπτωσή μας κάναμε χρήση κυρίως του CLI shell του συστήματός μας το οποίο θα παρουσιάσουμε στη συνέχεια, αλλά μόνο όπου αυτό προσέφερε ταχύτητα και όχι εις βάρος της προσωπικής μας διευκόλυνσης. Ένα από τα πιο δημοφιλή CLI shells που επηρέασαν σε μεγάλο βαθμό τη δομή και μορφή των σύγχρονων διαδόχων του, είναι το Bourne shell ( sh ) του Unix. Κάθε σύγχρονο λειτουργικό που έχει προέλθει από το Unix, όπως και το GNU/Linux δηλαδή, ενσωματώνει τουλάχιστον ένα shell συμβατό με το Bourne shell. Στην περίπτωση του Debian GNU/Linux, χρησιμοποιήσαμε το Bourne-Again shell ( bash ), το οποίο έχει γραφτεί ως τμήμα του GNU Project, ενώ στο τελικό σύστημα χρησιμοποιήσαμε το ενσωματωμένο shell (Almquist shell ή ash ) του εκτελέσιμου αρχείου busybox, που θα συναντήσουμε στο επόμενο κεφάλαιο. Για να κατανοήσουμε καλύτερα τη χρηστικότητα ενός CLI shell, αλλά και λόγω της χρησιμότητας που μας προσέφεραν οι εντολές του στη συνολική διαδικασία της ανάπτυξης, κάνουμε μία αναφορά στις συνηθέστερες από αυτές: Κατηγορία Επεξεργασία Κειμένου Όνομα Περιγραφή awk Γλώσσα αναζήτησης και επεξεργασίας προτύπων cut Αποκοπή επιλεγμένων πεδίων σε κάθε γραμμή ενός αρχείου diff Σύγκριση 2 αρχείων head Αντιγραφή του πρώτου τμήματος αρχείων

76 68 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Προγραμματισμός Shell Σύστημα Αρχείων Διαχείριση Διεργασιών more Προβολή αρχείων σελίδα-σελίδα sed Επεξεργαστής ροής για φιλτράρισμα και μετατροπή κειμένου sort Ταξινόμηση και ένωση αρχείων κειμένου tail Αντιγραφή του τελευταίου τμήματος αρχείων vim Vi Improved Επεξεργαστής κειμένου wc Απαρίθμηση γραμμών, bytes ή χαρακτήρων echo Εγγραφή ορισμάτων στη standar έξοδο printf Εγγραφή μορφοποιημένων ορισμάτων στην έξοδο sleep Καθυστέρηση για δεδομένη χρονική περίοδο tee Αντιγραφή της standar εισόδου test Λογικός έλεγχος μίας δεδομένης έκφρασης cat Συνένωση και εκτύπωση αρχείων cd Αλλαγή του καταλόγου εργασίας chmod Αλλαγή των αδειών ενός αρχείου chown Αλλαγή της ιδιοκτησίας ενός αρχείου cmp Σύγκριση δύο αρχείων cp Αντιγραφή αρχείων ή καταλόγων dd Μετατροπή και αντιγραφή αρχείου df Αναφορά ελεύθερου χώρου δίσκου du Εκτίμηση της χρήσης χώρου των αρχείων file Προσδιορισμός του τύπου ενός αρχείου find Εύρεση αρχείων (μέσω αναζήτησης στον αποθηκευτικό χώρο) ln Σύνδεση αρχείων ls Προβολή περιεχομένων καταλόγου mkdir Δημιουργία καταλόγου mount Εκτέλεση λειτουργίας mount ενός συστήματος αρχείων mv Μετακίνηση ή μετονομασία αρχείων pwd Εκτύπωση ονόματος καταλόγου εργασίας rm Διαγραφή αρχείων ή καταλόγων touch Αλλαγή ώρας πρόσβασης και τροποποίησης αρχείου umount Εκτέλεση λειτουργίας unmount ενός συστήματος αρχείων bg Εκτέλεση διεργασιών στο background fg Εκτέλεση διεργασιών στο foreground kill/killall Αποστολή σημάτων τερματισμού στις διεργασίες των ορισμάτων

77 69 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Περιβάλλον Χρήστη Αρχειοθέτηση και Συμπίεση Δικτύωση Πληροφορίες Συστήματος Διαχείριση Συστήματος Πακέτων Διάφορες ps Αναφορά κατάστασης διεργασιών time Χρονομέτρηση της διάρκειας εκτέλεσης μίας εντολής wait Αναμονή για ολοκλήρωση μίας διαδικασίας clear Καθαρισμός της τρέχουσας οθόνης τερματικού exit Έξοδος από το τρέχον πρόγραμμα ή τη σύνοδο shell history Εκτύπωση του ιστορικού εντολών su Εκτέλεση ενός shell με αντικατάσταση της ταυτότητας του χρήστη και του group με τα αντίστοιχα των ορισμάτων sudo Εκτέλεση μίας εντολής ως διαφορετικός χρήστης uptime Εμφάνιση χρόνου λειτουργίας του συστήματος who Ένδειξη χρηστών που είναι συνδεδεμένοι στο σύστημα tar Αρχειοθέτηση αρχείων zip Πακετάρισμα και συμπίεση αρχείων unzip Αποσυμπίεση αρχείων από ένα αρχείο τύπου ZIP ifconfig Ρύθμιση μίας διεπαφής δικτύου iwconfig Ρύθμιση μίας διεπαφής ασύρματου δικτύου netstat Εμφάνιση χαρακτηριστικών δικτύου, όπως οι συνδέσεις δικτύου και οι πίνακες δρομολόγησης ping Αποστολή αιτήματος ping στους hosts του δικτύου ssh Πρόγραμμα-πελάτης για δημιουργία συνεδρίας πρωτοκόλλου SSH scp Ασφαλής αντιγραφή αρχείων free Εμφάνιση πληροφοριών ελεύθερης/χρησιμοποιούμενης μνήμης lspci Εμφάνιση λίστας συσκευών PCI lsusb Εμφάνιση λίστας συσκευών USB apt-cache Εργαλείο διαχείρισης πακέτων APT Διαχείριση μνήμης cache apt-file Εργαλείο διαχείρισης πακέτων APT Εύρεση αρχείων apt-get Εργαλείο διαχείρισης πακέτων APT Διεπαφή γραμμής εντολών dpkg Διαχειριστής πακέτων για το Debian GNU/Linux OS chroot Εκτέλεση εντολής ή shell με ειδικό κατάλογο ως root date Εκτύπωση ή ρύθμιση της ώρας και ημερομηνίας του συστήματος grep Εμφάνιση γραμμών που περιέχουν μία ορισμένη έκφραση halt Παύση λειτουργίας του συστήματος locate Εύρεση αρχείων (μέσω αναζήτησης σε βάση δεδομένων)

78 70 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού man Μορφοποίηση και προβολή των σελίδων του εγχειριδίου χρήσεως προγραμμάτων poweroff Απενεργοποίηση του συστήματος (ίδια με τη halt -p) reboot Επανεκκίνηση του συστήματος (ίδια με τη shutdown -r) shutdown Τερματισμός του συστήματος Για να εκτελέσουμε κάποια από τις παραπάνω εντολές αρκεί να τρέξουμε ένα νέο τερματικό εξομοιωτή (terminal emulator) στο host σύστημά μας και να πληκτρολογήσουμε το όνομά της. Βεβαία, οι περισσότερες των εντολών λειτουργούν δεχόμενες ορίσματα, όπως θα δούμε ήδη κιόλας από την τελευταία ενότητα του παρόντος κεφαλαίου, με τη μορφή εντολή --[επιλογές] [αρχείο/κατάλογος]. Η προαναφερθείσα αποτελεί μία γενική δομή των εντολών του κελύφους, χωρίς να είναι δεδομένη, οπότε σε πολλές από αυτές διαφέρει. Η παραπάνω συνοπτική περιγραφή της κάθε εντολής δεν είναι αρκετή για να κατανοήσουμε πλήρως τη χρήση της. Για αυτό το λόγο, σχεδόν καθεμία από αυτές περιλαμβάνει την επιλογή help, που εκτυπώνει μία σύντομη περίληψη του τρόπου χρήσης της εντολής. Να επισημάνουμε ότι πολύ χρήσιμη εντολή για κάθε αρχάριο αλλά και έμπειρο χρήστη ενός συστήματος με πυρήνα Linux, είναι η προαναφερθείσα εντολή man [page], η οποία εμφανίζει ένα εγχειρίδιο χρήσης του προγράμματος που ορίστηκε στο [page]. 5.5 Τύποι Host/Target διάταξης [113] Διάταξη αφαιρουμένου αποθηκευτικού μέσου Σχετικά με τη διαδικασία ανάπτυξης του λογισμικού ενός ενσωματωμένου συστήματος, 3 είναι οι επικρατέστερες μέθοδοι που ακολουθούνται συνήθως. Η πρώτη και αυτή που επιλέξαμε εμείς είναι η διάταξη με χρήση αφαιρουμένου μέσου αποθήκευσης για την ενημέρωση του λογισμικού του target συστήματος. Αυτό σημαίνει ότι οποιαδήποτε προσθήκη ή αλλαγή κάνουμε στο λογισμικό του συστήματος-στόχου, αυτή μεταφέρεται στο τελικό σύστημα από το host σύστημα μέσω ενός αφαιρουμένου μέσου αποθήκευσης, που στην περίπτωσή μας είναι η microsd κάρτα μνήμης. Τα πλεονεκτήματα αυτής της μεθόδου είναι η εκμετάλλευση της ταχύτητας επεξεργασίας του host συστήματος στην ανάπτυξη του λογισμικού και η δυνατότητα χρήσης αυτής της μεθόδου ήδη από τα πρώτα στάδια ανάπτυξης, που είναι και ο κύριος λόγος που την προτιμήσαμε. Το μειονέκτημα είναι ότι απαιτείται φυσική πρόσβαση στο target σύστημα. Εικόνα 5-2: Διάταξη αφαιρουμένου αποθηκευτικού μέσου Διασυνδεδεμένη διάταξη Η δεύτερη μέθοδος που χρησιμοποιείται ειδικά στα μετέπειτα στάδια της ανάπτυξης, είναι αυτή της διασυνδεδεμένης διάταξης, στην οποία το host σύστημα και το target σύστημα είναι συνδεδεμένα μεταξύ τους καθ' όλη τη διαδικασία της ανάπτυξης, είτε με ενσύρματο, είτε με ασύρματο μέσο. Για να είναι προσβάσιμο το σύστημα αρχείων του τελικού συστήματος διαρκώς σε αυτή τη διάταξη, πολλές φορές χρησιμοποιείται η τεχνική του NFS-mount, στην οποία το σύστημα

79 71 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού αρχείων του στόχου παραμένει διαρκώς στο host σύστημα και γίνεται mounted από το σύστημα-στόχο όταν αυτό απαιτείται. Τα πλεονεκτήματα αυτής της μεθόδου είναι ότι δεν απαιτείται φυσική πρόσβαση στο target σύστημα, η μεταφορά των αρχείων είναι τάχιστη, ενώ εκμεταλλευόμαστε ταυτόχρονα την ταχύτητα επεξεργασίας του host συστήματος, όπως και στην προηγούμενη περίπτωση. Στην παρούσα διπλωματική η σύνδεση host-target συστήματος χρησιμοποιήθηκε εν μέρει μόνο και σε περιπτώσεις που επιθυμούσαμε την ταχύτερη δυνατή μεταφορά αρχείων μεταξύ των 2 συστημάτων, όπως στη μεταφορά του εκτελέσιμου αρχείου της τελικής εφαρμογής. Αυτό επιτεύχθηκε μέσω της ασύρματης ad-hoc (αποκεντρωμένου τύπου) σύνδεσης των 2 συστημάτων, κάνοντας χρήση ενός ασύρματου USB αντάπτορα στο target σύστημα και της ενσωματωμένης κάρτας επέκτασης ασύρματης δικτύωσης του host συστήματος. Εικόνα 5-3: Διασυνδεδεμένη διάταξη host/target Αυτοτελής διάταξη Η τρίτη μέθοδος είναι η αυτοτελής διάταξη, στην οποία το target σύστημα περιλαμβάνει το απαραίτητο λογισμικό για την έναρξη της λειτουργίας του, τη λειτουργία του καθώς και την ανάπτυξη επιπλέον λογισμικού, δηλαδή το ίδιο αποτελεί το περιβάλλον ανάπτυξης. Τα πλεονεκτήματα αυτής της μεθόδου είναι ότι πρώτον δεν απαιτεί δημιουργία cross-platform περιβάλλοντος ανάπτυξης, αφού όλα τα εργαλεία ανάπτυξης «τρέχουν» στο target σύστημα και δεύτερον δεν απαιτεί μεταφορά αρχείων, αφού τα δημιουργηθέντα αρχεία βρίσκονται κατευθείαν στο τελικό σύστημα, μετά τη δημιουργία τους. Το μειονέκτημα είναι η κατά πολύ περιορισμένη διάθεση πόρων, λόγω των περιορισμένων δυνατοτήτων συνήθως των ενσωματωμένων συστημάτων, οπότε η διαδικασία ανάπτυξης είναι πιο χρονοβόρα. Εικόνα 5-4: Αυτοτελής διάταξη 5.6 Τύποι επικοινωνίας Host/Target στη διαδικασία αποσφαλμάτωσης Εισαγωγή Υπάρχουν 3 βασικοί τύποι διεπαφών που χρησιμοποιούνται από τους προγραμματιστές στην αποσφαλμάτωση ενός αναπτυσσόμενου ενσωματωμένου συστήματος: η ενσύρματη σειριακή επικοινωνία, η επικοινωνία μέσω δικτύου και η επικοινωνία με χρήση ειδικού υλικού. Κάθε τύπος διεπαφής παρουσιάζει τα δικά του πλεονεκτήματα και μειονεκτήματα στη διαδικασία της αποσφαλμάτωσης, η οποία είναι εξίσου σημαντική με τη διαδικασία της ανάπτυξης του λογισμικού. Εμείς κάναμε χρήση των 2 πρώτων τύπων και κυρίως του πρώτου από αυτούς.

80 72 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Ενσύρματη σειριακή επικοινωνία Ο απλούστερος τρόπος για το debugging του τελικού συστήματος από το host σύστημα είναι η χρήση της ενσύρματης σειριακής επικοινωνίας, καθώς το υλικό που απαιτείται για τη διασύνδεση των 2 συστημάτων είναι πολύ απλό και το πρωτόκολλο της σειριακής επικοινωνίας υλοποιείται σχεδόν σε κάθε ενσωματωμένο σύστημα με κάποια μορφή. Ωστόσο, υπάρχουν 2 μειονεκτήματα στην επιλογή αυτή: Πρώτον η ταχύτητα του σειριακού συνδέσμου είναι αρκετά περιορισμένη. Στην περίπτωσή μας, η σειριακή επικοινωνία μεταξύ host και target έχει ταχύτητα bit/s, που θεωρείται μάλιστα αρκετά γρήγορη για το πρωτόκολλο αυτό. Το δεύτερο μειονέκτημα είναι η κατάληψη μίας διεπαφής σειριακής επικοινωνίας του τελικού συστήματος για σκοπούς αποσφαλμάτωσης, καθώς δεν είναι δυνατόν να γίνει χρήση της ταυτοχρόνως για άλλους σκοπούς, γεγονός το οποίο όμως δεν αποτελεί εμπόδιο στην περίπτωσή μας. Για να υλοποιήσουμε τον παραπάνω τρόπο επικοινωνίας μεταξύ των 2 συστημάτων, κάναμε χρήση ενός USB-to-Serial μετατροπέα, καθώς το host σύστημα δεν ενσωματώνει σειριακή θύρα. Σε σειρά με τον παραπάνω μετατροπέα συνδέσαμε τη spare RS232 θύρα του STK-500 Starter Kit που έχουμε αναφέρει στο κεφάλαιο 2 και έπειτα τη σειριακή διεπαφή UART1 του A13-OlinuXino-MICRO, όπως φαίνεται στην εικόνα 5-5. Η μεσολάβηση του STK-500 Starter Kit ήταν απαραίτητη, για την κατάλληλη μετατροπή της στάθμης σημάτων πάνω στο σειριακό δίαυλο επικοινωνίας μεταξύ των 2 συστημάτων. Θα μπορούσε όμως στη θέση του να είχε χρησιμοποιηθεί οποιοδήποτε αντίστοιχο κύκλωμα, όπως κάποιο ολοκληρωμένο κύκλωμα της δημοφιλούς σειράς MAX της εταιρείας Maxim Integrated Products (π.χ. MAX232). [107] Εικόνα 5-5: Φωτογραφία διασύνδεσης μεταξύ STK-500 και A13-OlinuXino-MICRO Η αναγκαιότητα χρήσης ενός τέτοιου κυκλώματος μετατροπής, οφείλεται στη συνήθως διαφορετική ερμηνεία του λογικού '1' και λογικού '0' στα ενσωματωμένα συστήματα κατά τη UART επικοινωνία, σε σχέση με το διεθνές πρότυπο επικοινωνίας RS232. [108] Το πρότυπο RS232 ορίζει το λογικό '1' ως μία αρνητική τάση μεταξύ -3V και -25V, ενώ το λογικό '0' ως μία θετική τάση μεταξύ +3V και +25V. Στα ενσωματωμένα συστήματα όμως, χρησιμοποιείται σχεδόν πάντα η λογική της TTL σειριακής επικοινωνίας, κατά την οποία το λογικό '1' αντιστοιχεί σε τάση 5V ή 3.3V (συνήθως στην τάση τροφοδοσίας), ενώ το λογικό '0' σε τάση 0V. [109] Αυτό συμβαίνει καθώς είναι πολύ πιο εύκολη η δημιουργία αυτών των σημάτων τάσης σε ένα ενσωματωμένο σύστημα, σε σχέση με αυτά που ορίζει το πρότυπο RS232.

81 73 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Εικόνα 5-6: Μετατροπή του byte δεδομένων 0b από σήμα προτύπου RS232 σε TTL σειριακής επικοινωνίας. Εικόνα 5-7: Σχηματικό διάγραμμα του κυκλώματος μετατροπής σημάτων σειριακής επικοινωνίας του STK-500 Starter Kit Επικοινωνία μέσω δικτύου Ο δεύτερο τύπος επικοινωνίας μεταξύ host και target συστήματος κατά τη διαδικασία αποσφαλμάτωσης του λογισμικού υλοποιείται με τη δημιουργία ενός δικτύου. Για παράδειγμα, μπορεί να χρησιμοποιηθεί το πρωτόκολλο TCP/IP πάνω από το Ethernet πρωτόκολλο, ώστε να δημιουργηθεί ένα τοπικό δίκτυο μεταξύ host και τελικού συστήματος. Αυτός ο τρόπος επικοινωνίας παρέχει κατά πολύ μεγαλύτερες ταχύτητες επικοινωνίας σε σχέση με τον προηγούμενο τρόπο της απλής ενσύρματης σειριακής επικοινωνίας και επιπλέον επιτρέπει την ύπαρξη πολλαπλών ενεργών συνδέσεων ταυτοχρόνως, πάνω στο ίδιο φυσικό κανάλι επικοινωνίας. Έτσι, δεν παρουσιάζει τα μειονεκτήματα του προηγούμενου τύπου επικοινωνίας. Παρουσιάζει όμως το μειονέκτημα πως προϋποθέτει για τη λειτουργία του την ύπαρξη μίας στοίβας πρωτοκόλλων δικτύου χαμηλότερου επιπέδου, τα οποία εκκινούν μαζί με τον πυρήνα Linux, οπότε δεν μπορεί να χρησιμοποιηθεί για την αποσφαλμάτωση του ίδιου του πυρήνα του λειτουργικού. Στην περίπτωσή μας, χρησιμοποιήθηκε το ασύρματο δίκτυο ad-hoc που αναφέρθηκε στην ενότητα 5.5.2, μόνο σε ορισμένες περιπτώσεις και κυρίως όταν επιθυμούσαμε πολλαπλές ταυτόχρονες συνδέσεις μεταξύ host και target συστήματος. Η επικοινωνία με το τελικό σύστημα έγινε μέσω του πρωτοκόλλου SSH, το οποίο χρησιμοποιήθηκε πάνω στο ασύρματο κανάλι επικοινωνίας Επικοινωνία με χρήση ειδικού υλικού Ο τελευταίος τύπος επικοινωνίας υλοποιείται με χρήση ειδικού υλικού, όπως ενός JTAG ή BDM debugger. Αυτός ο τύπος επικοινωνίας προαπαιτεί την ύπαρξη αντίστοιχης ενσωματωμένης διεπαφής στο υλικό της αναπτυξιακής πλατφόρμας και συνήθως χρησιμοποιείται κατά το στάδιο του σχεδιασμού του υλικού μίας νέας αναπτυξιακής πλατφόρμας ή κατά τη μεταφορά ενός λειτουργικού συστήματος σε μία νέα πλατφόρμα. Το πλεονέκτημα είναι ότι με αυτόν τον τρόπο,

82 74 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού αποκτάμε πλήρη έλεγχο στη συμπεριφορά του μικροεπεξεργαστή, με το μειονέκτημα όμως ότι απαιτείται η αγορά επιπλέον υλικού, το οποίο συχνά μπορεί να έχει υψηλό κόστος. Στην περίπτωσή μας δεν κάναμε χρήση του συγκεκριμένου τύπου επικοινωνίας καθώς δεν κρίθηκε αναγκαίο, αν και η πλατφόρμα A13-OlinuXino-MICRO παρέχει την υποστήριξη JTAG διεπαφής. 5.7 Cross-Toolchain Εισαγωγή Με τον όρο toolchain στον κόσμο των ηλεκτρονικών υπολογιστών ορίζουμε ένα σύνολο εργαλείων ανάπτυξης λογισμικού, που συνδέονται μεταξύ τους κατά τα διάφορα στάδια της ανάπτυξης. Συνήθως τα βασικά δομικά στοιχεία ενός toolchain είναι ο compiler (μεταφραστής του κώδικα), τα binary utilities (διάφορα απαραίτητα εργαλεία όπως ο linker - συνδέτης - και ο assembler - συμβολομεταφραστής - ) και μία βιβλιοθήκη (η οποία στην ουσία αποτελεί μία συλλογή από έτοιμα υποπρογράμματα). [110] Το toolchain που χρησιμοποιείται για την ανάπτυξη του λογισμικού ενός ενσωματωμένου συστήματος από ένα σύστημα διαφορετικής αρχιτεκτονικής, ονομάζεται cross-toolchain ή καταχρηστικά cross-compiler Τύποι toolchain Υπάρχουν 4 πιθανές κατηγορίες στις οποίες μπορεί να ανήκει ένα toolchain: Native toolchain: Πρόκειται για ένα toolchain το οποίο έχει δημιουργηθεί και λειτουργεί στην ίδια αρχιτεκτονική για την οποία και παράγει κώδικα. Είναι η πιο κοινή περίπτωση. Cross-compilation toolchain: Σε αυτή την περίπτωση, που είναι και αυτή που μας ενδιαφέρει περισσότερο, το toolchain έχει δημιουργηθεί και τρέχει σε ένα σύστημα κάποιας αρχιτεκτονικής, αλλά δημιουργεί εκτελέσιμο κώδικα για ένα σύστημα διαφορετικής αρχιτεκτονικής. Cross-native toolchain: Έτσι ονομάζεται ένα toolchain όταν αυτό έχει δημιουργηθεί σε σύστημα μίας αρχιτεκτονικής, αλλά τρέχει και παράγει κώδικα σε σύστημα διαφορετικής αρχιτεκτονικής από την αρχική. Χρησιμοποιείται συνήθως όταν θέλουμε να χρησιμοποιήσουμε ένα toolchain του πρώτου τύπου σε κάποιο ενσωματωμένο σύστημα, επιθυμούμε όμως να αποφύγουμε τη χρονοβόρα διαδικασία να το δημιουργήσουμε στο τελικό σύστημα. Canadian build: Αυτή η περίπτωση δεν περιγράφει κάποιου είδους toolchain, αλλά περισσότερο τη διαδικασία δημιουργίας ενός σε μία Α αρχιτεκτονική, με σκοπό να λειτουργεί σε μία Β αρχιτεκτονική και να δημιουργεί κώδικα για μία Γ αρχιτεκτονική. Είναι αρκετά σπάνια περίπτωση. Εμείς θα κάνουμε χρήση ενός cross-compilation toolchain για τη δημιουργία του απαραίτητου λογισμικού. [111] Απόκτηση Toolchain Υπάρχουν 3 δυνατοί τρόποι για να αποκτήσουμε ένα toolchain: Ο πρώτος τρόπος και ο πιο εύκολος, είναι η απόκτηση ενός προ-δημιουργημένου (pre-built) toolchain. Αν και φαντάζει ιδανικός, αυτή η επιλογή εισαγάγει πολλούς περιορισμούς, καθώς δεν έχουμε την ευελιξία για τροποποίησή του (π.χ. επιλογή της βιβλιοθήκης που θα χρησιμοποιηθεί, εκμετάλλευση επιπλέον δυνατοτήτων του συγκεκριμένου μοντέλου του επεξεργαστή μας κ.τ.λ.) ώστε να πετύχουμε το βέλτιστο αποτέλεσμα.

83 75 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Ο δεύτερος τρόπος είναι η δημιουργία δικού μας toolchain. Ωστόσο, αυτός ο τρόπος δε συστήνεται, καθώς το πιθανότερο είναι να προκύψουν σφάλματα κατά τη δημιουργία του, λόγω ασυμβατότητας των εκδόσεων των διαφόρων εργαλείων, λόγω της απαίτησης patches ώστε να λειτουργήσουν σωστά κ.τ.λ.. Ο τρίτος τρόπος και αυτός που επιλέξαμε, είναι η δημιουργία ενός toolchain χρησιμοποιώντας κάποιο πακέτο λογισμικού το οποίο αυτοματοποιεί την όλη διαδικασία. Έτσι, ελαχιστοποιούνται τα σφάλματα κατά το χτίσιμο του toolchain και ταυτοχρόνως η παραμετροποίησή του είναι εφικτή με τρόπο φιλικό προς τον προγραμματιστή Crosstool-ng Το crosstool-ng είναι ένα δωρεάν εργαλείο ανοιχτού κώδικα που προτείνεται για τη δημιουργία toolchains, καθώς επιτρέπει στο χρήστη να εκμεταλλευτεί στο έπακρο τις δυνατότητες της αρχιτεκτονικής για την οποία δημιουργείται το εκάστοτε toolchain. Στη συνέχεια ακολουθεί η διαδικασία εγκατάστασης και χρήσης του παραπάνω λογισμικού. Αρχικά, αφού κατεβάσουμε τον πηγαίο κώδικα του crosstool-ng, τον κάνουμε compile και τον εγκαθιστούμε στο host σύστημα με τις ακόλουθες εντολές (στο εξής και καθ' όλη τη διάρκεια της παρούσας εργασίας, θα θεωρούμε ότι όλες οι εντολές μας εκτελούνται υπό τη διαδρομή /home/dimitris/thesis/final, αν δεν αναφέρεται διαφορετικά): cd /home/dimitris/thesis/final wget tar -xvjf crosstool-ng tar.bz2 cd crosstool-ng /configure prefix=$pwd make make install Στη συνέχεια, με την εντολή./ct-ng arm-unknown-linux-gnueabi δημιουργείται ένα αρχείο configuration το οποίο είναι κατάλληλο για τη δημιουργία ενός cross-toolchain για την αρχιτεκτονική ARM, που όμως επιθυμούμε να τροποποιήσουμε περαιτέρω. Αυτό γίνεται με την εντολή./ct-ng menuconfig, η οποία εμφανίζει ένα γραφικό μενού, ανάλογο με αυτό που θα συναντήσουμε όταν ασχοληθούμε με το compilation του kernel. Παρακάτω περιγράφονται οι επιλογές που πρέπει να κάνουμε στο μενού αυτό για τη βέλτιστη ρύθμιση του toolchain, με τον απαραίτητο σχολιασμό δίπλα τους, όπου είναι αναγκαίο. Για όσες επιλογές δε γίνεται αναφορά, διατηρούμε την προκαθορισμένη τιμή.

84 76 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού Εικόνα 5-8: Μενού ρύθμισης παραμέτρων toolchain Επιλογή Επεξήγηση Paths and misc options Ο κατάλογος που θα αποθηκευτούν τα αρχεία.tar που θα χρειαστεί και θα κατεβάσει το εργαλείο. Local tarballs directory: ${HOME/tarballs Target options Use the MMU: Y Βεβαιωνόμαστε ότι είναι ενεργοποιημένη αυτή η επιλογή, καθώς ο πυρήνας Linux προϋποθέτει την ύπαρξη MMU. Architecture level: armv7-a Η ακριβής αρχιτεκτονική του A13 SoC. Emit assembly for CPU: cortex-a8 Ορίζουμε τον πυρήνα του A13 SoC, για τη δημιουργία του βέλτιστου, σωστού κώδικα assembly. Tune for CPU: cortex-a8 Παρομοίως, βελτιστοποιούμε το toolchain με στόχο τον πυρήνα cortex-a8. Use specific FPU: neon Εκμετάλλευση της αρχιτεκτονικής NEON που υποστηρίζεται από τον επεξεργαστή μας και περιγράφηκε στο κεφάλαιο 3. Floating point: hardware (FPU) Εκμετάλλευση του FPU του υλικού για μεγαλύτερη ταχύτητα επεξεργασίας δεδομένων. Default instruction set mode: thumb Επιλογή για χρήση του σετ εντολών thumb αντί του arm, για μείωση του μεγέθους κώδικα. Toolchain options Build Static Toolchain: Y Δεν είναι υποχρεωτική η ενεργοποίηση της παρούσας εντολής, αλλά μας επιτρέπει τη

85 77 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού μεταφορά του δημιουργηθέντος toolchain σε σύστημα ίδιας αρχιτεκτονικής με το host. Tuple's vendor string: cortex_a8 Επίσης προαιρετική επιλογή που συμβάλει στην τελική ονομασία του toolchain. Tuple's alias: arm-linux-gnueabi Ονομασία συντόμευσης του toolchain. Operating System Επιλογή της έκδοσης που βρίσκεται πιο κοντά σε αυτή του πυρήνα του τελικού συστήματος. Linux Kernel Version: Binary utilities Επιλέγουμε την πιο πρόσφατη έκδοση των binary utilities. binutils version: 2.22 C Compiler Show Linaro versions: Y Linaro ονομάζεται ένας ανοιχτός οργανισμός, που δημιουργεί τροποποιημένες εκδόσεις του gcc compiler, εξειδικευμένες για ARM αρχιτεκτονική. [112] gcc version: linaro Η πιο πρόσφατη έκδοση του compiler linaro. Fortran: X Δε μας χρειάζεται η υποστήριξη γλώσσας προγραμματισμού Fortran. Java: X Ομοίως, απενεργοποιούμε την υποστήριξη γλώσσας προγραμματισμού Java. Core gcc extra config: with-float=hard Χρήση του FPU του υλικού στην παραμετροποίηση του core GCC compiler. Ο core GCC compiler χρησιμοποιείται για τη δημιουργία της βιβλιοθήκης C. gcc extra config: with-float=hard Ομοίως με την προηγούμενη επιλογή, αλλά για τον κανονικό GCC compiler. Do not build PCH: Υ Αναγκαία επιλογή στην οποία καταλήξαμε με τη μέθοδο trial-and-error, μετά από εμφάνιση σχετικών σφαλμάτων κατά τη δημιουργία του toolchain. C-library C library: eglibc Τροποποιημένη έκδοση της βιβλιοθήκης GNU glibc, σχεδιασμένη για ενσωματωμένα συστήματα (μικρότερο μέγεθος, καλύτερη συμβατότητα με cross-compilers κ.τ.λ.). eglibc version: 2_13 Δεν είναι η πιο πρόσφατη έκδοση της eglibc, αλλά επιλέχθηκε για θέματα συμβατότητας με τον cross-compiler. extra target CFLAGS: -U_FORTIFY_SOURCE -mfloat-abi=hard -mfpu=neon Χρήση της τεχνολογίας NEON του υλικού για τη βελτιστοποίηση της βιβλιοθήκης eglibc. Force unwind support: Y Αναγκαστική επιλογή, λόγω του σφάλματος

86 78 Κεφάλαιο 5 : Περιβάλλον και Τεχνικές Ανάπτυξης Λογισμικού error: forced unwind support is required που εμφανίζεται κατά το compilation του toolchain. Μετά τις παραπάνω επιλογές, επιλέγουμε exit και αποθηκεύουμε τις ρυθμίσεις μας. Ολόκληρο το αρχείο.config των ρυθμίσεων βρίσκεται στο παράρτημα. Το επόμενο βήμα είναι να θέσουμε την environment variable ΗΟΜΕ=/home/dimitris/Thesis/final και να τρέξουμε την εντολή./ct-ng build, ώστε να δημιουργηθεί στη διαδρομή /home/dimitris/thesis/final/x-tools το toolchain. Το compilation του toolchain πρόκειται για μία αρκετά χρονοβόρα διαδικασία, η οποία στο host σύστημα διήρκεσε 162 λεπτά. Να τονίσουμε σε αυτό το σημείο ότι όταν έγινε χρήση της virtual machine της υπηρεσίας Cyclades που αναφέραμε στην ενότητα 5.2, η όλη διαδικασία του compilation ολοκληρώθηκε σε μόλις περίπου 1 το του παραπάνω χρόνου, καθώς το crosstool-ng επωφελείται της ύπαρξης πολλαπλών 4 πυρήνων στο υπολογιστικό σύστημα. Εικόνα 5-9: Ολοκλήρωση διαδικασίας compilation του toolchain

87 79 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος 6.1 Εισαγωγή Στο κεφάλαιο 6 θα συνοψίσουμε τα βασικά βήματα που ακολουθήσαμε, ώστε να δημιουργήσουμε το συνολικό λογισμικό του τελικού συστήματος, εκτός της εφαρμογής απεικόνισης των PDFs, η οποία παρουσιάζεται στο κεφάλαιο 7. Οι διαδικασίες που θα παρουσιάσουμε αναφέρονται στη δημιουργία του συστήματος αρχείων που χρησιμοποιεί το λειτουργικό σύστημα, του πυρήνα Linux, του προγράμματος φόρτωσης του λειτουργικού συστήματος (bootloader) και των αναγκαίων υποστηρικτικών αρχείων. Επίσης, θα δούμε πώς πρέπει να διαμορφωθεί κατάλληλα η MicroSD κάρτα που θα φέρει το παραπάνω λογισμικό, με όλες βέβαια τις διαδικασίες να λαμβάνουν χώρα στο αναπτυξιακό περιβάλλον που περιγράψαμε στο προηγούμενο κεφάλαιο. Όπως και προηδουμένως, θεωρούμε δεδομένο ότι εργαζόμαστε στον κατάλογο /home/dimitris/thesis/final, εκτός και αν υπάρχει υπόδειξη για μετάβαση σε κάποιο διαφορετικό. Να υπενθυμίσουμε πως ανά πάσα στιγμή μπορούμε να τυπώσουμε την πλήρη διαδρομή στην οποία εργαζόμαστε, μέσω της εντολής pwd. 6.2 Διαμόρφωση της κάρτας μνήμης MicroSD Η διαμόρφωση της κάρτας μνήμης είναι το πρώτο βήμα που πρέπει να εκτελέσουμε, καθώς όλα τα αρχεία που θα δημιουργήσουμε παρακάτω, θα μεταφέρονται σταδιακά σε αυτή. Για να γίνει η διαμόρφωση, θα χρησιμοποιήσουμε το πρόγραμμα fdisk, ώστε να χωρίσουμε τον αποθηκευτικό χώρο της κάρτας μνήμης σε 3 partitions. Το 1ο από αυτά θα το ονομάσουμε boot partition, καθώς θα περιλαμβάνει το αρχείο-εικόνα του πυρήνα Linux και όποια άλλα πιθανά αρχεία χρειάζεται το bootloader πρόγραμμα για την εκκίνηση του συστήματος. Το 2ο partition θα αποτελείται από το root filesystem που θα δημιουργήσουμε με το εργαλείο buildroot, και μαζί με τον πυρήνα Linux θα αποτελέσουν το λειτουργικό σύστημα της πλατφόρμας. Το 3ο partition θα είναι το μεγαλύτερο σε χωρητικότητα και θα έχει αποθηκευμένα τα e-book αρχεία. Το 1ο partition δεν έχει μεγάλη σημασία τι τύπου θα είναι, αφού χρησιμοποιείται μόνο για μερικά κλάσματα του δευτερολέπτου κατά την εκκίνηση του συστήματος-στόχου. Θα προτιμήσουμε να μην αποτελείται από κάποιο σύστημα αρχείων ορατό σε περιβάλλον λειτουργικού συστήματος Microsoft Windows, που έχει η πληθώρα των χρηστών, καθαρά για λόγους ασφαλείας. Μπορούμε λοιπόν να επιλέξουμε το σύστημα αρχείων ext2 για το partition αυτό, αφού είναι αρκετά δημοφιλές σε περιβάλλοντα με πυρήνα Linux και σταθερό, χωρίς ωστόσο να περιλαμβάνει δυνατότητες που δεν μας χρειάζονται στην παρούσα φάση. Για το 2ο partition, θα επιλέξουμε το σύστημα αρχείων ext4, το οποίο αποτελεί διάδοχο του συστήματος αρχείων ext3, που με τη σειρά του έχει διαδεχτεί το σύστημα αρχείων ext2. Η μεγαλύτερη διαφορά που παρουσιάζουν τα συστήματα αρχείων ext3 και ext4 από το ext2, είναι η υποστήριξη του journaling. Με τη λειτουργία αυτή, το σύστημα αρχείων καταγράφει τις αλλαγές που έχει υποστεί, ώστε σε περίπτωση μη προβλεπόμενου τερματισμού λειτουργίας του συστήματος (π.χ. διακοπή της τροφοδοσίας ρεύματος) να είναι ευκολότερη η επαναφορά του. [114] Το σύστημα αρχείων ext4 εισήγαγε μικρές βελτιώσεις απόδοσης σε σχέση με το σύστημα αρχείων ext3, καθώς και υποστήριξη μεγαλυτέρων αποθηκευτικών μέσων. [115] Για το 3ο partition, οι επιλογές είναι περιορισμένες. Πρέπει το σύστημα αρχείων του να είναι ορατό σε όσα το δυνατόν περισσότερα λειτουργικά συστήματα, χωρίς την ανάγκη χρήσης ειδικού λογισμικού, αφού θα αποθηκεύει ο χρήστης σε αυτό τα επιθυμητά αρχεία PDF. Αυτός ο περιορισμός μας οδήγησε στη χρήση του VFAT συστήματος αρχείων. Μία εναλλακτική λύση θα ήταν το πιο πρόσφατο σύστημα αρχείων NTFS, η υποστήριξη του οποίου όμως από τον πυρήνα Linux δεν είναι η βέλτιστη, ειδικά όταν απαιτούνται διαδικασίες εγγραφής. Αφού έχουμε λοιπόν συνδέσει στο host σύστημα τη MicroSD κάρτα μνήμης, δίνουμε την

88 80 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος εντολή sudo fdisk /dev/mmcblk0, για να τρέξουμε το πρόγραμμα fdisk ως χρήστης root. Το όρισμα της εντολής που υποδεικνύει τη συσκευή της κάρτας μνήμης, μπορεί να διαφέρει αναλόγως το λειτουργικό σύστημα (για παράδειγμα, σε λειτουργικό σύστημα Ubuntu, η ίδια κάρτα μνήμης εμφανίζεται ως συσκευή /dev/sdb). Δίνοντας έπειτα στο πρόγραμμα την εντολή p, μπορούμε να δούμε μία σύνοψη της γεωμετρίας της κάρτας μνήμης, όπως και τα διαθέσιμα partitions. Για να διαγράψουμε τα υπάρχοντα partitions, μπορούμε να δώσουμε την εντολή d. Εικόνα 6-1: Χαρακτηριστικά της κάρτας MicroSD και διαθέσιμα partitions Όπως βλέπουμε στην εικόνα 6-1, στην κάρτα μνήμης που διαθέτουμε δεν υπάρχουν partitions. Αυτό που μας ενδιαφέρει κυρίως από τη γεωμετρία της είναι ο αριθμός των sectors και το μέγεθός τους, το οποίο είναι 512 bytes έκαστος. Για να δημιουργήσουμε το 1ο partition, δίνουμε διαδοχικά τις εντολές: n: Δημιουργία partition. P: Επιλογή τύπου πρωτεύοντος partition. 1: Επιλογή αρίθμησης partition. 2048: Επιλογή του sector έναρξης του partition ή +8Μ: Επιλογή του sector τερματισμού του partition Έτσι, έχουμε δημιουργήσει το 1ο partion, το οποίο αποτελείται από sectors των 512B, άρα έχει μέγεθος 8MB, που είναι υπεραρκετά για το boot partition. Με αντίστοιχες ενέργειες δημιουργούμε και το 2ο partition: n p

89 81 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος ή +50Μ To 2o partition έχει μέγεθος ( ) 512B=50MB, αρκετά μεγαλύτερο όπως θα δούμε από το συνολικό μέγεθος του root filesystem συμπεριλαμβανόμενης και της εφαρμογής που θα δημιουργήσουμε (το οποίο υπολογίζεται σε λιγότερο από 35MB). Προτείνεται όμως σε σχεδιασμούς συστημάτων λογισμικού, να υπάρχει αρκετός διαθέσιμος χώρος στο partition του root filesystem, για λόγους σταθερότητας του συστήματος (για παράδειγμα, πρέπει να υπάρχει αρκετός ελεύθερος χώρος για δημιουργία προσωρινών αρχείων του λειτουργικού συστήματος στον κατάλογο /tmp). Είναι προτιμότερο φυσικά να μειωθεί ο διαθέσιμος χώρος αποθήκευσης των e-books κατά μερικά megabytes, παρά να παρουσιαστεί μελλοντικά κάποια αστάθεια του συστήματος, αφού αυτό το partition δε θα είναι προσβάσιμο από τον τελικό χρήστη. Για τη δημιουργία του τελευταίου partition δίνουμε τις ανάλογες εντολές, αναθέτοντάς του τον υπολειπόμενο διαθέσιμο χώρο: n p Να τονίσουμε σε αυτό το σημείο ότι οι παραπάνω αριθμοί που σχετίζονται με τα sectors προκύπτουν από τη γεωμετρία και τη χωρητικότητα της κάρτας μνήμης, οπότε ενδέχεται να διαφέρουν κατά περίπτωση. Επόμενη εντολή είναι η εντολή w, με την οποία γίνεται εγγραφή του πίνακα με τις πληροφορίες των partitions στην MicroSD και τερματίζεται το πρόγραμμα fdisk. Στη συνέχεια πρέπει να δημιουργήσουμε το κατάλληλο σύστημα αρχείων για κάθε partition, σύμφωνα με τα όσα αναφέραμε παραπάνω. Για το πρώτο partition δίνουμε την εντολή sudo mkfs.ext2 /dev/mmcblk0p1. Για το δεύτερο και το τρίτο partion, δίνουμε αντιστοίχως τις εντολές sudo mkfs.ext4 /dev/mmcblk0p2 και sudo mkfs.vfat /dev/mmcblk0p3. Αν ολοκληρώθηκαν επιτυχώς και οι 3 εντολές, έχουμε στη διάθεσή μας μία διαμορφωμένη κάρτα μνήμης με 3 διαφορετικά partitions. Παρατηρούμε ότι το 1ο partition δεν ξεκινάει από το πρώτο sector, αλλά από το υπ' αριθμόν Αυτό συμβαίνει καθώς το πρώτο B=1ΜΒ της κάρτας μνήμης θα περιέχει το bootloader πρόγραμμα και εκτός αυτού, περιέχει ήδη τον πίνακα με τις πληροφορίες των partitions που δημιουργήσαμε (partition table). Την αναλυτική κατανομή του χώρου των 1024 πρώτων KB της κάρτας μνήμης θα δούμε παρακάτω, στην ενότητα σχετικά με το πρόγραμμα bootloader. 6.3 Δημιουργία του root filesystem Εισαγωγή Όπως είδαμε στο κεφάλαιο 2, τα λειτουργικά συστήματα με πυρήνα Linux παρουσιάζουν μία συγκεκριμένη δομή συστήματος αρχείων, την οποίαν εμείς θα δημιουργήσουμε χρησιμοποιώντας το εργαλείο Buildroot που έχουμε αναφέρει στο κεφάλαιο του σχεδιασμού. Να επισημάνουμε ότι θα ασχοληθούμε κυρίως με τη χρήση του εργαλείου αυτού και όχι τόσο με τον τρόπο λειτουργίας του, καθώς αυτό μας ενδιαφέρει κυρίως στην παρούσα φάση. Το εργαλείο Buildroot αποτελείται κυρίως από μία συλλογή Makefiles και patches, τα οποία εκτελούνται μέσω μίας σχεδόν αυτοματοποιημένης διαδικασίας, με σκοπό να δημιουργήσουν ένα ολοκληρωμένο και μικρό σε μέγεθος σύστημα αρχείων. [116] Αν και οι δυνατότητες δεν

90 82 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος περιορίζονται εκεί, εμείς θα το χρησιμοποιήσουμε μόνο για αυτόν τον σκοπό. Προσφέρεται όμως η δυνατότητα να δημιουργήσουμε με αυτόν τον τρόπο και τον πυρήνα Linux, όπως επίσης το bootloader πρόγραμμα, ακόμα και το cross-compilation toolchain που μελετήσαμε στο προηγούμενο κεφάλαιο. Προτιμήσαμε να ακολουθήσουμε όμως ξεχωριστές διαδικασίες για την κατασκευή των λογισμικών αυτών, τις οποίες θα παρουσιάσουμε στις επόμενες ενότητες, καθώς αυτό μας δίνει μεγαλύτερο βαθμό ευελιξίας (για παράδειγμα, το ενσωματωμένο toolchain χρειάζεται να δημιουργηθεί πάλι κάθε φορά που δημιουργούμε το σύστημα αρχείων από το μηδέν) Διαδικασίας χρήσης του εργαλείου Buildroot Μπορούμε να λάβουμε την πιο πρόσφατη σταθερή έκδοση του Buildroot από τη διεύθυνση ή χρησιμοποιώντας το σύστημα Git, με την εντολή git clone git://git.buildroot.net/buildroot. Κατά τη συγγραφή της εργασίας μας, η τελευταία έκδοση ήταν η Έπειτα, μεταβαίνουμε στο κατάλογο που κατέβηκε το Buildroot με την εντολή cd buildroot και τρέχουμε την εντολή make menuconfig. Θα εμφανιστεί στη συνέχεια ένα μενού γραφικών, το οποίο θα χρησιμοποιήσουμε για να ρυθμίσουμε κατάλληλα το Buildroot και που είναι παρόμοιο στην όψη με το μενού που χρησιμοποιήσαμε στη ρύθμιση του crosstool-ng στο προηγούμενο κεφάλαιο. Θα περιγράψουμε παρακάτω τις επιλογές που πρέπει να κάνουμε σε κάθε ένα από τα εμφανιζόμενα υπομενού για τη βέλτιστη ρύθμιση του δημιουργούμενου συστήματος αρχείων, μαζί με μία μικρή σχετική επεξήγηση. Σε όσες επιλογές προσπεράσουμε δίχως συγκεκριμένη αναφορά, θα θεωρήσουμε πως έχουμε διαλέξει την προκαθορισμένη τιμή. Εικόνα 6-2: Μενού ρύθμισης του εργαλείου Buildroot Επιλογή Επεξήγηση Target options Target Architecture (ARM (little endian)) Γενική αρχιτεκτονική του target συστήματος. Target Architecture Variant (cortex-a8) Ακριβής επιλογή της αρχιτεκτονικής του πυρήνα του επεξεργαστή. Target ABI (EABIhf) Επιλογή EABI, που χρησιμοποιεί τη μονάδα κινητής υποδιαστολής του υλικού μας.

91 83 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Floating point strategy (NEON) Ενεργοποίηση της τεχνολογίας NEON που παρουσιάσαμε στο κεφάλαιο 3. ARM instruction set (Thumb2) Εκμετάλλευση της 2ης έκδοσης του συνόλου εντολών Thumb, για τους λόγους που περιγράψαμε στο κεφάλαιο 3. Build options [*] Enable compiler cache Ενεργοποιούμε τη χρήση του ccache προγράμματος, το οποίο αποθηκεύει σε έναν κατάλογο τμήματα μεταφρασμένου κώδικα, για χρήση τους όταν ζητηθεί η ίδια διαδικασία. Η διαδικασία της μετάφρασης κώδικα επισπεύδεται έτσι 5 με 10 φορές. Μπορούμε να επιλέξουμε διαφορετικό κατάλογο στην επιλογή Compiler cache location. [117] (3) Number of jobs to run simultaneously (0 for auto) Επιλογή των παράλληλων διεργασιών που θα τρέχουν κατά τη δημιουργία του συστήματος αρχείων. Συνήθης πρακτική είναι να θέτουμε την τιμή αυτή ίση με n+1, όπου n ο αριθμός των πυρήνων του host συστήματος. Με την επιλογή 0, το Buildroot αποφασίζει αντί για εμάς. Toolchain Toolchain type (External toolchain) Επιλογή εξωτερικού cross-toolchain. Toolchain (Custom toolchain) Επιλογή toolchain διαφορετικού από τα προκαθορισμένα. (/home/dimitris/thesis/final/x-tools/ Πλήρης διαδρομή του καταλόγου που βρίσκεται arm-cortex_a8-linux-gnueabi) το toolchain. Toolchain path ($(ARCH)-linux-gnueabi) Toolchain prefix Πρόθεμα του toolchain μας. External toolchain C library (glibc/eglibc) Επιλογή της βιβλιοθήκης που χρησιμοποιεί το toolchain. [*] Toolchain has C++ support? Ενημέρωση του Buildroot ότι το toolchain υποστηρίζει κώδικα C++. System configuration (E_reader) System hostname Η ονομασία του τελικού συστήματος, η οποία θα αποθηκευτεί στο αρχείο /etc/hostname του target system. Φυσικά είμαστε ελεύθεροι να επιλέξουμε όποια επιθυμούμε. (Welcome to E-book Reader) System banner Το μήνυμα που θα εμφανίζεται όταν κάποιος χρήστης συνδεθεί στο τελικό σύστημα. Όπως και προηγουμένως, έτσι και εδώ μπορούμε να το αλλάξουμε κατά προτίμηση, χωρίς κάποιο πρόβλημα. /dev management (Static using device table) Επιλογή του τρόπου με τον οποίον ο πυρήνας

92 84 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Linux θα διαχειρίζεται τις πιθανές συσκευές που συνδέουμε στο σύστημα. Με την επιλογή στα αριστερά, τα αρχεία των συσκευών αποθηκεύονται μόνιμα στο σύστημα αρχείων, και διατηρούνται κατά τις επανεκκινήσεις. Το πλεονέκτημα είναι ο μειωμένος χρόνος εκκίνησης, αφού δε δημιουργούνται κατά απαίτηση, αλλά είναι στατικά. [118] Επιλογή του προγράμματος init, το οποίο είναι το πρώτο πρόγραμμα που εκκινεί ο πυρήνας στο χώρο του χρήστη. Επιλέγουμε το ενσωματωμένο του προγράμματος Busybox. Init system (Busybox) Kernel Σε περίπτωση που επιθυμούσαμε το Buildroot να αναλάβει και τη δημιουργία του πυρήνα Linux, θα έπρεπε να ενεργοποιήσουμε αυτήν την επιλογή. [ ] Linux Kernel Target packages BusyBox Version (BusyBox 1.21.x) Επιλογή της πιο πρόσφατης έκδοσης του προγράμματος Busybox Επιλογή του αρχείου ρυθμίσεων του Busybox. Μπορούμε να επεξεργαστούμε απευθείας το (package/busybox/busybox-1.21.x.confi αρχείο αυτό, ή μέσω ενός μενού με την εντολή g) BusyBox configuration file to use make busybox-menuconfig. Για την περίπτωσή μας, οι προκαθορισμένες επιλογές δε χρειάζονται αλλαγή. Target packages --> Graphic libraries and applications (graphic/text) [*] Qt Ενεργοποίηση της βιβλιοθήκης γραφικών Qt, την οποία χρησιμοποιήσαμε για την ανάπτυξη της εφαρμογής προβολής PDF. Ακολουθούν οι αναλυτικές ρυθμίσεις της. Target packages --> Graphic libraries and applications (graphic/text) --> Qt [*] Approve free license Ενεργοποίηση της δωρεάν άδειας χρήσης της βιβλιοθήκης Qt. [*] Gui Module Βασική επιλογή, που ενεργοποιεί την υποστήριξη GUI εφαρμογών από τη βιβλιοθήκη Qt. Fonts ---> [*] micro,[*] fixed, [*] helvetica,[*] unicode Ενεργοποίηση υποστήριξης των βασικότερων φόντων κειμένου. freetype2 support (Qt freetype2) Η βιβλιοθήκη freetype είναι απαραίτητη για τη δημιουργία των διαφόρων φόντων κειμένου στις GUI εφαρμογές Qt. [*] Enable GIF support Ενεργοποίηση υποστήριξης εικόνων τύπου GIF.

93 85 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος JPEG support (Use Qt bundled libjpeg) Υποστήριξη εικόνων τύπου JPEG. PNG support (Use Qt bundled libpng) Υποστήριξη εικόνων τύπου PNG. TIFF support (Use Qt bundled libtiff) Υποστήριξη εικόνων τύπου TIFF. zlib support (Qt zlib) Υποστήριξη της βιβλιοθήκης συμπίεσης / αποσυμπίεσης zlib που παρέχεται από το Qt framework, η οποία μας είναι ήδη γνωστή από το κεφάλαιο 2. [*] SQL Module Ενεργοποίηση της υποστήριξης βάσεων δεδομένων SQL. Απαιτείται από την τελική εφαρμογή. [*] XML Module Ενεργοποίηση υποστήριξης της γλώσσας XML. Χρησιμοποιείται από κάποια άλλα modules του Qt Framework, όπως το SVG Module. [*] XML Patterns Module Απαιτείται ως συμπληρωματικό στοιχείο της γλώσσας XML. [*] SVG Module Ενεργοποίηση υποστήριξης δισδιάστατων διανυσματικών γραφικών. Απαιτείται για την απεικόνιση ορισμένων γραφικών της τελικής εφαρμογής. Graphics drivers ---> [*] Linux Framebuffer, [*] Transformed Ενεργοποίηση υποστήριξης του Linux Framebuffer καθώς και του driver Transformed, τον οποίον χρησιμοποιούμε για να περιστρέψουμε κατά 90ο το GUI της εφαρμογής μας στην οθόνη του τελικού συστήματος. Mouse drivers ---> [*] tslib, [*] Hide the mouse cursor Network Module Προαπαιτείται για τη δημιουργία του Declarative Module. Script Module Επίσης προαπαιτείται για τη δημιουργία του Declarative Module. Declarative module Υποστήριξη της γλώσσας προγραμματισμού qml, την οποία θα χρησιμοποιήσουμε στην ανάπτυξη της τελικής εφαρμογής. [*] [*] [*] Ενεργοποίηση υποστήριξης της βιβλιοθήκης tslib με σκοπό τη χρήση της οθόνης αφής ως εισόδου για την εφαρμογή μας. Η δεύτερη επιλογή όπως είναι προφανές, αποκρύπτει τον κέρσορα. Target packages --> Hardware handling Υποστήριξη του συστήματος μηνυμάτων dbus, το οποίο προαπαιτείται από μία πληθώρα επιλογών, και επιτρέπει την επικοινωνία μεταξύ διεργασιών που τρέχουν παράλληλα. [*] dbus Target packages --> Hardware handling --> Libraries Compression and decompression [*] zlib ---> Δημιουργία της βιβλιοθήκης zlib για το τελικό

94 86 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος σύστημα. Graphics --->[*]fontconfig, [*]freetype, [*]jpeg support, [*] lcms2, [*] libpng, [*] libsvg, [*] poppler, [*] tiff Hardware handling ---> [*] tslib Text and terminal handling ncurses Text and terminal handling readline ---> [*] ---> [*] Ενσωμάτωση διαφόρων βιβλιοθηκών γραφικών στο τελικό σύστημα. Η βιβλιοθήκη poppler είναι αυτή που μας ενδιαφέρει περισσότερο, καθώς είναι αυτή που αναλαμβάνει το rendering των αρχείων PDF. Δημιουργία της βιβλιοθήκης tslib για το τελικό σύστημα. Απαραίτητη βιβλιοθήκη για τη δημιουργία GUIs, τα οποία τρέχουν σε εξομοιωτές τερματικών, όπως αυτό που δημιουργείται με την εντολή make menuconfig. Βιβλιοθήκη συναρτήσεων που προσφέρουν ευελιξία σε χρήστες CLI περιβάλλοντος (όπως για παράδειγμα μετακίνηση του κέρσορα). Επίσης απαραίτητη. Μετά τις παραπάνω επιλογές, επιλέγουμε exit και αποθηκεύουμε τις ρυθμίσεις μας. Όπως παρατηρήσαμε, υπάρχει ένα μεγάλο πλήθος δυνατών επιλογών, που μας επιτρέπουν να ρυθμίσουμε πλήρως το τελικό σύστημα αρχείων και να το φέρουμε στα μέτρα μας. Βεβαίως, παραπάνω ενεργοποιήσαμε μόνο τις απολύτως απαραίτητες για να λειτουργήσει το τελικό σύστημά μας, με σκοπό να διαθέτει το μέγιστο ελεύθερο χώρο. Αυτό σημαίνει πώς μπορούν να ενεργοποιηθούν επιπλέον επιλογές, αναλόγως με τις ανάγκες και τη χρήση του ενσωματωμένου συστήματος κάθε φορά. Για να μην υπάρξει σύγχυση, έχουμε παραθέσει το αρχείο με τις παραπάνω ρυθμίσεις στο παράρτημα της εργασίας μας. Βέβαια, λόγω του μεγάλου μεγέθους του, επιλέξαμε να το συμπυκνώσουμε, συμπεριλαμβάνοντας μόνο τις επιλογές που διαφέρουν από τις προκαθορισμένες, δηλαδή όσες αναφέραμε προηγουμένως. Για να γίνει αυτό, αρκεί να τρέξουμε την εντολή make savedefconfig BR2_DEFCONFIG=configs/a13om_defconfig, η οποία δημιουργεί στον υποκατάλογο configs το εν λόγω αρχείο. Για να φορτώσουμε τις ρυθμίσεις του, αρκεί να τρέξουμε την εντολή make a13om_defconfig. Ένα βήμα το οποίο υπό διαφορετικές συνθήκες θα μπορούσαμε να παραλείψουμε, είναι η χρήση ενός patch σε ένα από τα πακέτα λογισμικού που χρησιμοποιεί το Buildroot και συγκεκριμένα σε αυτό της βιβλιοθήκης tslib. Είναι απαραίτητη η χρήση του όμως στην περίπτωσή μας, εξαιτίας ενός bug που παρουσιάζει η συγκεκριμένη βιβλιοθήκη όταν χρησιμοποιείται σε ορισμένες αναπτυξιακές πλατφόρμες με SoC της κοινότητας sunxi, μεταξύ των οποίων είναι και η A13-OlinuXino-MICRO. Ευτυχώς, η εταιρεία κατασκευής της πλατφόρμας μας Olimex, έχει φροντίσει για την παροχή του patch. Οπότε μεταβαίνουμε στον κατάλογο tslib με την εντολή cd package/tslib και έπειτα κατεβάζουμε το κατάλληλο patch με την εντολή wget ib.patch. Από τη στιγμή που το Buildroot εντοπίσει ένα αρχείο με κατάλληξη.patch στον κατάλογο ενός package, θα αναλάβει να το εφαρμόσει πριν το compilation του συγκεκριμένου πακέτου λογισμικού. Έπειτα, δίνουμε την εντολή cd../.. για να μεταβούμε στον κατάλογο που βρισκόμασταν προηγουμένως και τέλος με την εντολή make ξεκινάει η διαδικασία δημιουργίας του συστήματος αρχείων του target συστήματος. Το Buildroot θα αναλάβει από εδώ και πέρα όλες τις υπόλοιπες ενέργειες, και αφού κάνει λήψη των απαραίτητων αρχείων, θα αρχίσει τη διαδικασία του cross-compilation. Η διαδικασία ολοκληρώνεται όταν καταλήξουμε σε μία εικόνα παρόμοια με την

95 87 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος 6-3. Το αποτέλεσμα θα είναι ένα συμπιεσμένο αρχείο με ονομασία rootfs.tar, στον υποκατάλογο output/images της τρέχουσας διαδρομής, και το οποίο αποσυμπιέζουμε στο 2ο partition της MicroSD κάρτας. Το συνολικό μέγεθος των αποσυμπιεσμένων αρχείων αναμένεται να είναι περίπου 27MB. Εικόνα 6-3: Επιτυχής ολοκλήρωση της δημιουργίας του συστήματος αρχείων με το Buildroot. 6.4 Δημιουργία του πυρήνα Linux Το επόμενο βήμα είναι η δημιουργία του αρχείου που θα περιέχει τον πυρήνα Linux. Η κοινότητα sunxi συντηρεί, μεταξύ άλλων, την ανάπτυξη του πυρήνα Linux για πλατφόρμες βασισμένες σε διάφορα SoC της Allwinner, στα οποία συμπεριλαμβάνεται και το A13. Οπότε, αντί να χρησιμοποιήσουμε κάποιο γενικότερο πηγαίο κώδικα για τη δημιουργία του πυρήνα, θα χρησιμοποιήσουμε ένα παρακλάδι αυτού, με σκοπό να εκμεταλλευτούμε εξειδικευμένες δυνατότητες της πλατφόρμας μας, όπως για παράδειγμα ορισμένους drivers που ενεργοποιούν υποσυστήματά της. Αφού βεβαιωθούμε πως βρισκόμαστε στον κατάλογο /home/dimitris/thesis/final, κάνουμε λήψη του πηγαίου κώδικα με τις εντολές: git clone kernel cd kernel git checkout stage/sunxi-3.4 Όπως παρατηρούμε, χρησιμοποιούμε το παρακλάδι stage/sunxi-3.4, το οποίο μας προσφέρει μερικές χρήσιμες λειτουργίες, οι οποίες τη στιγμή που γράφεται αυτή η εργασία, δεν έχουν συμπεριληφθεί στη σταθερή έκδοση του πυρήνα, αλλά παρόλα αυτά δεν είναι προβληματικές όπως διαπιστώσαμε. Επόμενο βήμα είναι η δήλωση 2 μεταβλητών περιβάλλοντος, με τις οποίες ορίζουμε την αρχιτεκτονική του συστήματος-στόχου και την τοποθεσία του cross-compiler του host συστήματος. Με αυτόν τον τρόπο, κατά τη ρύθμιση του πυρήνα ενεργοποιούνται ορισμένες επιλογές διαθέσιμες μόνο για τη συγκεκριμένη αρχιτεκτονική. Επίσης, κατά το cross-compilation, το σύστημα θα είναι ενημερωμένο σχετικά με τη θέση του cross-toolchain που πρέπει να χρησιμοποιήσει. Αυτές οι εντολές είναι οι εξής:

96 88 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος ARCH=arm CROSS_COMPILE=/home/dimitris/Thesis/final/x-tools/arm-cortex_a8-linux-gnue abi/bin/arm-linux-gnueabi- Όπως και με το εργαλείο Buildroot, έτσι και εδώ θα ρυθμίσουμε τον πυρήνα μας μέσω ενός μενού γραφικών για λόγους ευκολίας. Λόγω του μεγάλου πλήθους των διαθέσιμων επιλογών, στον παρακάτω πίνακα θα κάνουμε αναφορά μόνο στις σημαντικότερες από αυτές, οι οποίες είναι κρίσιμες για τη λειτουργία και τη βέλτιστη ρύθμιση του συστήματος. Το πλήρες αρχείο ρυθμίσεων μπορεί να βρεθεί στο παράρτημα της εργασίας. Για να εμφανίσουμε το μενού ρυθμίσεων, εκτελούμε την εντολή make ARCH=${ ARCH menuconfig, ενώ έχοντας δώσει προηγουμένως την εντολή make ARCH=${ ARCH sun5i_defconfig, μπορούμε να προετοιμάσουμε μία σχεδόν λειτουργική ρύθμιση του πυρήνα, την οποία θα τροποποιήσουμε καταλλήλως. Επιλογή Επεξήγηση General setup [ ] Prompt for development and/or incomplete code/drivers Φροντίζουμε να μην είναι ενεργή η επιλογή, ώστε να μην εμφανίζονται drivers και επιλογές που βρίσκονται σε alpha test stage. Kernel compression mode (Gzip) Επιλογή αλγορίθμου συμπίεσης του kernel. Η επιλογή Gzip είναι σταθερή και προσφέρει ισορροπία μεταξύ του μεγέθους του συμπιεσμένου πυρήνα και της ταχύτητας αποσυμπίεσης. (E-Book_Reader) Default hostname Το προκαθορισμένο όνομα του συστήματος (hostname). Μπορούμε να το αλλάξουμε κατά προτίμηση. [ ] Support for paging of anonymous memory (swap) Ενεργοποίηση της πρόσθετης εικονικής μνήμης swap. Δε μας χρειάζεται, καθώς η μνήμη RAM του συστήματός μας είναι υπεραρκετή. < > Kernel.config support Με αυτή την επιλογή μπορούμε να αποθηκεύσουμε το αρχείο ρυθμίσεων του πυρήνα στον ίδιο τον πυρήνα. Την απενεργοποιούμε για εξοικονόμηση πόρων. (19) Kernel log buffer size Το μέγεθος του αποθηκευτικού χώρου καταγραφής συμβάντων του πυρήνα (εμφανίζεται με την εντολή dmesg). Μία τιμή μεταξύ 17 και 19 είναι ικανοποιητική για σκοπούς debugging. [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support Ενεργοποίηση του αρχικού συστήματος αρχείων της RAM, το οποίο φορτώνεται πριν την κανονική διαδικασίας εκκίνησης και συνήθως για τη φόρτωση μερικών απαραιτήτων modules. Στην περίπτωσή μας μπορούμε να απενεργοποιήσουμε με ασφάλεια την επιλογή,

97 89 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος για ταχύτερη έναρξη του συστήματος. [119] [*] Optimize for size Ο compiler θα αναλάβει να βελτιστοποιήσει το δημιουργημένο αρχείο για μικρότερο μέγεθος. [*] Configure standard kernel features (expert users) Ενεργοποίηση επιπλέον ρυθμίσεων. Απενεργοποίηση ειδικών συμβόλων που Configure standard kernel features (expert users) χρησιμοποιούνται κατά το debugging, με σκοπό --> [ ]Include all symbols in kallsyms τη μείωση του μεγέθους του πυρήνα. Configure standard kernel features (expert users) --> [*] Enable support for printk Απενεργοποίηση των περισσοτέρων μηνυμάτων debugging της εικόνας του πυρήνα, για γρηγορότερη εκκίνησή του.. [*] Embedded system Ενεργοποίηση ειδικών επιλογών διαθεσίμων για ενσωματωμένα συστήματα. [ ] Enable SLUB debugging support Απενεργοποίηση της υποστήριξης debugging για το σύστημα διαχείρισης μνήμης SLUB, με σκοπό την εξοικονόμηση χώρου. [*] Optimize very unlikely/likely branches Με αυτή την επιλογή αυξάνεται η ταχύτητα σε εντολές συνθήκης του πυρήνα, στις οποίες μία συγκεκριμένη συνθήκη επιλέγεται σχεδόν πάντα ή σχεδόν ποτέ, μέσω βελτιστοποίησης του αντίστοιχου κώδικα. [*] Enable loadable module support (Ενεργοποίηση της δυνατότητας για χρήση modules από τον πυρήνα.) Ενεργοποίηση της δυνατότητας αφαίρεση modules αφού φορτωθούν. [*] Module unloading [*] Enable the block layer Partition Types ---> [ ] Advanced partition selection Καθώς δεν κάνουμε χρήση ειδικού τύπου partitions, αυτή η επιλογή δε μας χρειάζεται System Type ARM system type (AllWinner SUN5I (A10s/A13 SoC) Platform) Βεβαιωνόμαστε ότι είναι επιλεγμένη η αρχιτεκτονική του συστήματός μας, όπως και πρέπει, αν έχουμε ακολουθήσει τα προηγούμενα βήματα. [*] Support Thumb user binaries Υποστήριξη αρχείων με κώδικα εντολών Thumb, που έχουμε περιγράψει σε προηγούμενο κεφάλαιο. Kernel Features [*] Use the ARM EABI to compile the kernel Χρήση του Embedded Application Binary Interface, που πρόκειται για ειδική έκδοση της διεπαφής προγραμμάτων-λειτουργικού ABI, κατάλληλη για ενσωματωμένα συστήματα. [120] [ ] High Memory Support Απενεργοποίηση υποστήριξη μνήμης

98 90 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος μεγαλύτερης των 4GB, προς μικρή αύξηση της ταχύτητας. Καθαρισμός της κονσόλας κατά την επανεκκίνηση, για να μη διατηρηθούν τυχόν δεδομένα στον αντίστοιχο buffer. [*] Force flush the console on restart Boot options (mem=256m@ console=ttys0,115200) Default kernel command string Δεν είναι υποχρεωτικός ο ορισμός αυτής της ρύθμισης, καθώς τα απαραίτητα ορίσματα δίνονται στον kernel από τον bootloader, όπως θα δούμε παρακάτω. Σε διαφορετική περίπτωση όμως άλλης αρχιτεκτονικής, ίσως να μην μπορούσαμε να χρησιμοποιήσουμε τον bootloader για αυτή τη διαδικασία. Τότε τα ορίσματα εκκίνησης του πυρήνα ορίζονται εδώ. Floating point emulation [*] VFP-format floating point maths Υποστήριξη της μονάδας υλικού VFP που παρουσιάσαμε στο κεφάλαιο 3. [*] Advanced SIMD (NEON) Extension support Υποστήριξη της τεχνολογίας NEON που παρουσιάσαμε επίσης στο κεφάλαιο 3. [*] Networking support (Η δυνατότητα δικτύωσης απαιτείται από μερικές διεργασίες του πυρήνα, ακόμα και αν η συσκευή δεν είναι συνδεδεμένη σε κάποιο δίκτυο.) Απενεργοποίηση της δυνατότητας χρήσης ασύρματης δικτύωσης, με αποτέλεσμα τη μείωση του μεγέθους του πυρήνα. [ ] Wireless Device Drivers [*] Block devices Ενεργοποίηση υποστήριξης συσκευών τύπου block, καθώς αποτελεί βασικό χαρακτηριστικό, που απαιτείται από άλλους drivers. Device Drivers --> Misc devices <*> An ugly sun4i gpio driver Driver που μας επιτρέπει τη χρήση των GPIO pins της πλατφόρμας μας. <*> Sunxi PWM Driver (pwm-sunxi) Driver που μας επιτρέπει τη χρήση του ελεγκτή PWM της πλατφόρμας μας. [ ] Network device support Απενεργοποιούμε τη δυνατότητα για δικτύωση, εξοικονομώντας πόρους. Device Drivers --> Input device support [*] Generic input layer (needed for keyboard, mouse,...) Γενική υποστήριξη συσκευών εισόδου <*> Event interface Υποστήριξη διεπαφής γεγονότων εισόδου, όπως απαιτείται από διάφορες συσκευές εισόδου, μεταξύ των οποίων και του πάνελ αφής. [*] Touchscreens ---> <*> sun4i-ts Ενεργοποίηση του driver για οθόνες αφής σε

99 91 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος touchscreen driver πλατφόρμες sunxi. Device Drivers --> Character devices [*] Virtual terminal Υποστήριξη πολλαπλών εικονικών τερματικών, χωρίς την οποία το σύστημά μας έχει πρακτικά σχεδόν μηδενική λειτουργικότητα. [*] Support for console on virtual terminal Υποστήριξη κονσόλας πυρήνα σε ένα εικονικό τερματικό, ώστε να είναι δυνατή η επικοινωνία μέσω μηνυμάτων αυτής με τον πυρήνα. Serial drivers ---> <*> 8250/16550 and compatible serial support Ενεργοποίηση των θυρών σειριακής επικοινωνίας. Serial drivers ---> [*] Console on 8250/16550 and compatible serial port Ενεργοποίηση της κονσόλας πυρήνα πάνω σε θύρες σειριακής επικοινωνίας. Device Drivers --> <*> I2C support (Ενεργοποίηση διεπαφών επικοινωνίας I2C, λόγω απαιτήσεων από άλλους drivers.) Device Drivers --> [ ] SPI support (Απενεργοποίηση διεπαφών SPI επικοινωνίας, καθώς ούτε χρησιμοποιούνται, ούτε απαιτούνται από άλλους drivers.) Device Drivers --> [*] GPIO Support (Ενεργοποίηση γενικής υποστήριξης GPIO pins, καθώς απαιτείται για το σωστό compilation άλλων drivers, όπως αυτοί της διεπαφής USB.) Device Drivers --> <*> Power supply class support (Υποστήριξη παρακολούθησης της παροχής τροφοδοσίας, καθώς απαιτείται κατά το compilation των USB drivers.) [*] AXP Power drivers Ενεργοποίηση των drivers υποστήριξης των ολοκληρωμένων κυκλωμάτων διαχείρισης τροφοδοσίας της κατηγορίας AXP. Αν και δε χρησιμοποιούμε τέτοιο IC, απαιτούνται οι drivers αυτοί για τη σωστή λειτουργία των USB θυρών. Device Drivers --> [*] Voltage and Current Regulator Support (Απαιτείται για την ενεργοποίηση της I2C διεπαφής.) Device Drivers --> Graphics support Device Drivers --> Graphics support --> <*> Support for frame buffer devices (Ενεργοποίηση του framebuffer που παρουσιάσαμε στο κεφάλαιο 2.) <*> DISP Driver Support(sunxi) Ενεργοποίηση του driver για υποστήριξη της συσκευής framebuffer σε πλατφόρμες sunxi. [ ] Reserve memory block for sunxi/fb Απενεργοποιούμε τη μόνιμη δέσμευση μνήμης αποκλειστικά για τη συσκευή framebuffer. Έτσι δεσμεύεται κάθε στιγμή μόνο όση μνήμη απαιτείται, αλλά πρέπει να έχουμε υπόψη μας να είναι προηγουμένως διαθέσιμη. <*> LCD Driver Support(sunxi) Υποστήριξη διεπαφής επικοινωνίας με LCD οθόνη σε πλατφόρμες sunxi.

100 92 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Device Drivers --> Graphics support --> [*] Bootup logo (Ενεργοποίηση υποστήριξης λογοτύπου εκκίνησης από τη framebuffer συσκευή. Αν ακολουθήσουμε τα βήματα που παρουσιάζονται παρακάτω, θα εμφανιστεί μία επιπλέον επιλογή στο υπομενού, με την ονομασία Custom E-book Logo.) [*] Standard 224-color Linux logo Υποστήριξη του προκαθορισμένου λογοτύπου εκκίνησης 244 χρωμάτων από τον framebuffer. (Αν δημιουργήσουμε το δικό μας λογότυπο, δε χρειάζεται η ενεργοποίηση της επιλογής αυτής.) Device Drivers --> [*] USB support (Υποστήριξη διεπαφής επικοινωνίας USB.) <*> Support for Host-side USB Υποστήριξη λειτουργίας των USB θυρών της πλατφόρμας σε Host mode, δηλαδή ως δέκτες περιφερειακών συσκευών. Είναι απαραίτητη η επιλογή αυτή για την υποστήριξη της προδιαγραφής USB OTG που θα επιλέξουμε παρακάτω. [*] SoftWinner SUNXI USB Host Controller0 (OTG) Υποστήριξη ελεγκτή για χρήση της θύρας USB OTG σε Host mode. Επίσης χρειάζεται για την προδιαγραφή USB OTG. Device Drivers --> [*] USB support --> <*> USB Gadget Support (Ενεργοποίηση της λειτουργίας Gadget της θύρας USB, ώστε να λειτουργήσει η πλατφόρμα μας σαν περιφερειακό σύστημα στον υπολογιστή που ενδεχομένως θα συνδεθεί.) <*> USB Peripheral Controller (SoftWinner SUNXI USB Peripheral Controller) Επιλογή του ελεγκτή τον οποίο χρησιμοποιεί η πλατφόρμας μας για την επικοινωνία με το host σύστημα, μέσω της θύρας USB OTG. Επιλέγουμε τον ελεγκτή sunxi που περιλαμβάνεται στο σύστημά μας. <M> USB Gadget Drivers Ενεργοποίηση υποστήριξης Gadget drivers, οι οποίοι θα αναλάβουν την επικοινωνία του συστήματος με τον ελεγκτή της προηγούμενης επιλογής. <M> Mass Storage Gadget Επιλογή του κατάλληλου Gadget driver, ώστε να εμφανίζεται η πλατφόρμα μας ως περιφερειακή μονάδα αποθήκευσης δεδομένων στο σύστημα που συνδέεται. Ο driver αυτός θα δημιουργηθεί ως module, καθώς η χρήση του θα γίνεται μόνο κατά απαίτηση του χρήστη. Device Drivers --> [*] USB support --> [*] SUNXI USB2.0 Dual Role Controller support (Υπορτήριξη ελεγκτή USB 2.0 σε πλατφόρμα sunxi, ο οποίος μπορεί να λειτουργήσει είτε ως host, είτε ως ελεγκτής περιφερειακής συσκευής.) USB0 Controller support (otg support) Χρήση του ελεγκτή USB0 σε USB OTG mode, ώστε να μπορεί το σύστημά μας να δεχτεί περιφερειακές συσκευές USB, αλλά και να λειτουργήσει ως μία. Μας ενδιαφέρει το 2ο, αλλά αν επιλέξουμε μόνο αυτή τη χρήση, οι αντίστοιχοι drivers δε λειτουργούν σωστά προς

101 93 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος το παρόν. Η λύση είναι η επιλογή USB OTG, προσθέτοντας ένα αμελητέο overhead. Device Drivers --> <*> MMC/SD/SDIO card support (Ενεργοποίηση υποστήριξης SD κάρτας μνήμης.) <*> MMC block device driver Υποστήριξη driver για διαχείριση καρτών μνήμης MMC και SD. <*> SUNXI MMC Card Interface support (new driver) Υποστήριξη ελεγκτή για διαχείριση καρτών μνήμης MMC και SD σε πλατφόρμες sunxi. File systems < > Second extended fs support Απενεργοποιούμε την υποστήριξη του ext2 filesystem, για δημιουργία μικρότερης εικόνας πυρήνα. < > Ext3 journalling file system support Απενεργοποιούμε την υποστήριξη του ext3 filesystem, για δημιουργία μικρότερης εικόνας πυρήνα. <*> The Extended 4 (ext4) filesystem Ενεργοποιουμε την υποστήριξη ext4 filesystem, που είναι το σύστημα αρχείων το οποίο χρησιμοποιεί το λειτουργικό μας σύστημα, όπως θα δούμε. [*] Enable POSIX file locking API Επιλογή που ενεργοποιεί το κλείδωμα αρχείων, το οποίο απαιτείται από την τελική μας εφαρμογή. DOS/FAT/NT Filesystems ---> <*> VFAT (Windows-95) fs support Υποστήριξη του συστήματος αρχείων VFAT, το οποίο όπως θα δούμε απαιτείται στη συνέχεια. Kernel hacking [ ] Debug Filesystem, [ ] Collect scheduler debugging info, [ ] Collect scheduler statistics, [ ] Collect kernel timers statistics, [ ] Debug Απενεργοποίηση επιλογών που χρησιμεύουν preemptible kernel, [ ] Verbose BUG() reporting κυρίως για debugging διαδικασίες, με σκοπό την (adds 70K), [ ] Compile the kernel with debug εξοικονόμηση χώρου. info, [ ] Debug linked list manipulation, [ ] Kernel low-level debugging functions Security options [ ] Enable the securityfs filesystem Απενεργοποίηση της επιλογής επίσης για εξοικονόμηση χώρου. Cryptographic API [ ] Cryptographic algorithm manager, < > GF(2^128) multiplication functions, < > Sequence Number IV Generator, [ ] CBC support, [ ] EBC support, < > HMAC support, < > MD4 digest algorithm, < > MD5 digest algorithm, < > SHA1 digest algorithm, < > AES cipher algorithms, < > ARC4 cipher algorithm, < > DES and Triple DES EDE Απενεργοποίηση επιλογών σχετικών με διεπαφές και αλγορίθμους κρυπτογραφίας, πάλι για εξοικονόμηση χώρου.

102 94 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος cipher algorithms, < > Zlib compression algorithm, < > LZO compression algorithm Library routines [*] CRC16 functions, [*] CRC32/CRC32c functions Είναι οι μόνες βασικές συναρτήσεις που θέλουμε ενεργοποιημένες, λόγω απαιτήσεων ορισμένων drivers. Να σημειώσουμε σε αυτό το σημείο ότι δοκιμάσαμε να ενεργοποιήσουμε και να χρησιμοποιήσουμε τους drivers της GPU Mali400, ώστε με τη χρήση της να επιτύχουμε βελτιωμένη ταχύτητα στην απεικόνιση των γραφικών του συστήματος. Δυστυχώς όμως, η GPU του A13 SoC δεσμεύει θέσεις μνήμης RAM κατά τη χρήση της, που βρίσκονται υψηλότερα από τη συνολική διαθέσιμη μνήμη του συστήματός μας, με αποτέλεσμα να μη δύναται να λειτουργήσει σωστά. Θα χρειαζόμασταν τουλάχιστον 512MB μνήμης για τη σωστή λειτουργία της Mali400. Παρόλα αυτά, δεν αλλάζει κάτι στον τρόπο που σχεδιάσαμε αρχικά το σύστημά μας, αφού τα γραφικά θα είναι soft-rendered, δηλαδή θα δημιουργούνται από το λογισμικό του συστήματος, αντί με υποστήριξη υλικού της GPU, με μειωμένη ταχύτητα όμως. Ακόμα και έτσι, η απόκριση του συστήματος παραμένει άκρως ικανοποιητική. Ένα προαιρετικό βήμα είναι η αλλαγή του λογοτύπου εκκίνησης του συστήματός μας, το οποίο είναι ορατό στην οθόνη κατά τη φόρτωση του Linux kernel και μέχρι την ενημέρωση της οθόνης με διαφορετική απεικόνιση. Για να κάνουμε αυτή την αλλαγή, αρχικά δημιουργήσαμε με το δωρεάν πρόγραμμα επεξεργασίας GIMP μία εικόνα μεγέθους 800x480px, όσα pixels δηλαδή είναι η ανάλυση της οθόνης μας. Έπειτα, αποθηκεύσαμε την εικόνα με μορφή ASCII.ppm και με μέγιστο αριθμό χρωμάτων 244, όπως απαιτούν οι προδιαγραφές του πυρήνα για τη συγκεκριμένη εικόνα. Εικόνα 6-4: Το λογότυπο εκκίνησης της συσκευής μας

103 95 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Η εικόνα αυτή πρέπει να αντιγραφεί στον υποκατάλογο drivers/video/logo και με όνομα logo_custom_clut244.ppm, όπως θα προκύψει από τη συνέχεια. Μετά, πρέπει να κάνουμε μία πρώτη αλλαγή στο αρχείο drivers/video/logo/makefile, προσθέτοντας τον κώδικα: obj-$(config_logo_custom_clut224) += logo_custom_clut224.o στη σειρά 19 του αρχείου, ώστε αυτό να έχει τη μορφή της εικόνας που φαίνεται παρακάτω (εικόνα 6-5). Με αυτό τον τρόπο, ο compiler θα φροντίσει τη δημιουργία του κατάλληλου αντικείμενου αρχείου (object file), το οποίο θα χρησιμοποιηθεί στη δημιουργία του πυρήνα, για την ενσωμάτωση και εμφάνιση της εικόνα μας. Εικόνα 6-5: Το επεξεργασμένο αρχείο Makefile που σχετίζεται με το λογότυπο εκκίνησης. Θέλουμε επίσης να επεξεργαστούμε το αρχείο drivers/video/logo/logo.c, προσθέτοντας τον κώδικα: ifdef CONFIG_LOGO_CUSTOM_CLUT224 /* E-book Custom logo */ logo = &logo_custom_clut224; endif στη σειρά 103 και εντός του κώδικα υπό τη συνθήκη if (depth >= 8). Επίσης, προσθέτουμε στο αντίστοιχο αρχείο κεφαλίδα (header file) include/linux/linux_logo.h τον κώδικα: extern const struct linux_logo logo_custom_clut224 στη σειρά 51, όπως ακριβώς φαίνεται στις εικόνες παρακάτω. Έτσι, όταν ενεργοποιηθεί η αντίστοιχη επιλογή κατά τη ρύθμιση του πυρήνα, ο compiler θα γνωρίζει πιο αρχείο πρέπει να χρησιμοποιήσει ως λογότυπο.

104 96 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Εικόνα 6-6: Το επεξεργασμένο αρχείο logo.c. Εικόνα 6-6: Το επεξεργασμένο αρχείο linux_logo.h. Τελευταίο βήμα για την αλλαγή του λογοτύπου, είναι η προσθήκη της επιλογής που αναφέραμε παραπάνω στο μενού ρυθμίσεων του πυρήνα, για χρήση της εικόνας που έχουμε δημιουργήσει. Αυτό γίνεται με αλλαγή του αρχείου drivers/video/logo/kconfig, προσθέτοντας στη σειρά 85 τον κώδικα: config LOGO_CUSTOM_CLUT224 bool "Custom E-book Logo" depends on LOGO default y και πριν από τον κώδικα endif LOGO.

105 97 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Εικόνα 6-7: Το επεξεργασμένο αρχείο ρυθμίσεων Kconfig του λογοτύπου. Τώρα πλέον, στη ρύθμιση του πυρήνα με την εντολή make ARCH=${ ARCH CROSS_COMPILE=${ CROSS_COMPILE menuconfig και συγκεκριμένα στο υπομενού Device Drivers --> Graphics support --> Bootup logo θα εμφανίζεται η επιλογή για χρήση του δικού μας λογοτύπου, με ονομασία Custom E-book Logo. Οπότε αρκεί να την ενεργοποιήσουμε αν το επιθυμούμε. Τη διαδικασία αυτή την περιγράψαμε με απώτερο σκοπό όχι την αλλαγή του λογοτύπου εκκίνησης, αλλά για να παρατηρήσουμε πώς μπορούμε με μία απλή μέθοδο, να τροποποιήσουμε τον πυρήνα Linux, προσθέτοντας επιπλέον δικές μας επιλογές ή drivers που επεκτείνουν τις δυνατότητές του. Επόμενο βήμα είναι να γίνει cross-compile ο πυρήνας Linux. Για να δημιουργήσουμε το αρχείο-εικόνα που περιέχει τον πυρήνα, δίνουμε εν συνεχεία των ανωτέρω την εντολή make -j3 ARCH=${ ARCH CROSS_COMPILE=${ CROSS_COMPILE uimage. Στο όρισμα -jn, θέτουμε το N ίσο με τον αριθμό των πυρήνων του host συστήματος, αυξημένο κατά 1, για λόγους που έχουμε αναφέρει και προηγουμένως. Σε λίγα λεπτά, το αρχείο που περιέχει τον πυρήνα Linux πρέπει να έχει δημιουργηθεί στον υποκατάλογο arch/arm/boot με όνομα uimage και μέγεθος μόλις 1.6MB. Το αρχείο αυτό αντιγράφουμε στο πρώτο partition της MicroSD κάρτας μνήμης. Πέρα από τον πυρήνα Linux όμως, πρέπει να εγκαταστήσουμε στο τελικό σύστημα τα απαραίτητα modules και firmwares που απαιτούνται για τη σωστή λειτουργία των περιφερειακών υποσυστημάτων. Το μόνο module που επιλέξαμε για δημιουργία κατά τη ρύθμιση του πυρήνα, είναι αυτό που σχετίζεται με το Mass Storage Gadget. Με αυτόν τον τρόπο, μπορούμε να το καλέσουμε κατά απαίτηση όταν το χρειαστούμε, δηλαδή πριν συνδέσουμε το σύστημά μας με έναν υπολογιστή μέσω της USB θύρας. Για τη δημιουργία και εγκατάσταση του module αυτού και των απαραιτήτων firmwares στο τελικό σύστημα, δίνουμε τις εντολές: make ARCH=${ ARCH CROSS_COMPILE=${ CROSS_COMPILE modules make ARCH=${ ARCH CROSS_COMPILE=${ CROSS_COMPILE modules_install INSTALL_MOD_PATH=/media/dimitris/529579e b5-ae28-647a0e5fe0e2/ make ARCH=${ ARCH CROSS_COMPILE=${ CROSS_COMPILE firmware_install INSTALL_FW_PATH=/media/dimitris/529579e b5-ae28-647a0e5fe0e2/ \ lib/firmware Η διαδρομή υπό την οποία έχει γίνει mount το δεύτερο partition της MicroSD κάρτας μνήμης

106 98 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος μπορεί να διαφέρει αναλόγως το σύστημα. Με τις παραπάνω εντολές ολοκληρώνουμε την παρούσα ενότητα δημιουργίας του πυρήνα Linux. Όπως θα δούμε στη συνέχεια, βρισκόμαστε λίγες μόνο ενέργειες μακριά από ένα ολοκληρωμένο και λειτουργικό υπολογιστικό σύστημα. 6.5 Το πρόγραμμα bootloader Das U-Boot Εισαγωγή Το πρόγραμμα bootloader αναλαμβάνει την εκκίνηση του συστήματος και είναι το πρώτο πρόγραμμα του τρέχει σε κάθε υπολογιστικό σύστημα. Αν και υπάρχει μία πληθώρα διαθέσιμων bootloaders, θα χρησιμοποιήσουμε το Das U-Boot, το οποίο είναι πολύ δημοφιλές στα ενσωματωμένα συστήματα, εξαιτίας κυρίως της ευελιξίας που προσφέρει, των πολλών δυνατοτήτων του και της συνεχούς ανάπτυξής του. Όπως θα δούμε και παρακάτω, το Das U-Boot χωρίζεται σε 2 υποπρογράμματα. Το πρόγραμμα του πρώτου σταδίου (SPL), αναλαμβάνει να εκκινήσει το δεύτερο πρόγραμμα, το οποίο με τη σειρά του εκκινεί τον πυρήνα Linux. Αυτό συμβαίνει καθώς η όλη διαδικασία εκκινείται με βάση κάποιον κώδικα που είναι αποθηκευμένος σε μία πολύ μικρή μνήμη ROM, πάνω στο A13 SoC. Αυτός ο κώδικας εισάγει κάποιους περιορισμούς ως προς το μέγεθος του προγράμματος bootloader που μπορεί να εκκινήσει, για αυτό τον λόγο χρησιμοποιούμε bootloaders σε 2 στάδια της διαδικασίας εκκίνησης ή για να είμαστε πιο σαφείς, έναν bootloader 2 σταδίων. Στη συνέχεια περιγράφουμε τη διαδικασία δημιουργίας του Das U-Boot ώστε να είναι συμβατός με την πλατφόρμα μας και την εγκατάστασή του στη MicroSD κάρτα μνήμης Δημιουργία και εγκατάσταση του bootloader Όπως με τον πυρήνα Linux, έτσι και με το Das U-Boot bootloader, η κοινότητα sunxi διατηρεί μία δική της έκδοση, την οποία έχει τροποποιήσει κατάλληλα με στόχο τις πλατφόρμες sunxi. Για να λάβουμε αυτή την έκδοση, δίνουμε την εντολή git clone git://github.com/linux-sunxi/u-boot-sunxi/ και μεταβαίνουμε στον κατάλογο που δημιουργήθηκε με την εντολή cd u-boot-sunxi. Η τρέχουσα έκδοση τη στιγμή που γράφονται οι γραμμές αυτές είναι η v sunxi.4. Μεταξύ των άλλων πλατφορμών sunxi που υποστηρίζονται άμεσα, είναι και η A13-OlinuXino-MICRO, ενώ την πλήρη λίστα υποστήριξης μαζί με τις ανάλογες επιλογές για κάθε πλατφόρμα μπορούμε να δούμε ανοίγοντας το αρχείο boards.cfg. Επόμενο βήμα είναι η εντολή make a13-olinuxinom CROSS_COMPILE=/home/\ dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linux-gnue abi-, με την οποία ο bootloader Das U-Boot ρυθμίζεται κατάλληλα για την πλατφόρμα μας και γίνεται cross-compile, με χρήση του γνωστού πλέον toolchain από το κεφάλαιο 5. Για να τον εγκαταστήσουμε στην κάρτα μνήμης MicroSD θα χρησιμοποιήσουμε την εντολή dd, η οποία αντιγράφει byte προς byte τα περιεχόμενα των 2 αρχείων που αποτελούν τον bootloader στην κάρτα μνήμης: sudo dd if=spl/sunxi-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 sudo dd if=u-boot.img of=/dev/mmcblk0 bs=1024 seek=40 Με την πρώτη από τις 2 προηγούμενες εντολές εγκαθιστούμε το πρόγραμμα SPL που περιγράψαμε παραπάνω, ενώ με τη δεύτερη εγκαθίστανται τα αρχεία του δευτέρου σταδίου του bootloader Das U-Boot. Η εικόνα 6-8 μας δείχνει πώς χρησιμοποιείται ο αποθηκευτικός χώρος της MicroSD κάρτας μνήμης. Η πρώτη στήλη χωρίζει τον αποθηκευτικό χώρο αναλόγως με τα sectors που αναφέραμε στην αρχή του κεφαλαίου, ενώ η δεύτερη στήλη με βάση blocks δεδομένων 1KB το καθένα. Για να εγγραφούν τα δεδομένα στη σωστή θέση, χρησιμοποιήσαμε τα ορίσματα bs και

107 99 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος seek της εντολής dd. Με το όρισμα bs ορίζουμε το μέγιστο αριθμό bytes που μπορεί να διαβάσει ή να γράψει η εντολή dd στιγμιαία, ενώ με το όρισμα seek ορίζεται το σημείο από το οποίο θα αρχίσει η εγγραφή στη συσκευή εξόδου και μετριέται σε μονάδες μεγέθους όσο είναι το bs. Εικόνα 6-8: Χάρτης οργάνωσης του αποθηκευτικού χώρου της MicroSD κάρτας μνήμης. Παρατηρώντας την παραπάνω εικόνα πρέπει να γίνεται κατανοητός ο λόγος που επιλέξαμε τη δημιουργία των partitions μετά το πρώτο 1MB, κατά τη διαμόρφωση της κάρτας μνήμης στην αρχή του κεφαλαίου. Ο χώρος που αναφέρεται ως environment χρησιμοποιείται από τον bootloader για αποθήκευση διαφόρων ρυθμίσεων σχετικά με την εκκίνηση του συστήματος, όπως θα δούμε και παρακάτω. Ο χώρος που δεσμεύεται σχετικά με την επιλογή Falcon mode δε μας ενδιαφέρει στην παρούσα εργασία, καθώς δε χρησιμοποιείται. Αν προσπαθήσουμε να εκκινήσουμε τώρα το σύστημά μας, θα δούμε ότι εμφανίζονται ορισμένα σφάλματα. Αυτά οφείλονται πρώτον σε κάποιες προκαθορισμένες ρυθμίσεις του bootloader, οι οποίες είναι αποθηκευμένες στο χώρο του environment και χρήζουν αλλαγής, και δεύτερον σε κάποιες επιπλέον αναγκαίες ρυθμίσεις του λειτουργικού συστήματος που δεν έχουμε ολοκληρώσει ακόμα και θα δούμε στην επόμενη και τελευταία για το κεφάλαιο αυτό ενότητα. 6.6 Δημιουργία επιπλέον υποστηρικτικών αρχείων και ρυθμίσεων Ένα σημαντικό και απαραίτητο αρχείο που χρησιμοποιείται σε πλατφόρμες sunxi είναι το αρχείο script.bin. Το script.bin είναι αρχείο δυαδικής μορφής και χρησιμοποιείται από drivers της Allwinner ενσωματωμένους στον πυρήνα Linux. Περιέχει πληροφορίες για τη ρύθμιση διαφόρων περιφερειακών συσκευών και I/O pins που βρίσκονται ενσωματωμένα στην πλατφόρμα μας. Το μεγάλο πλεονέκτημα που παρουσιάζει η χρήση του αρχείου αυτού είναι η δυνατότητα που προσφέρει για τροποποίηση ρυθμίσεων των drivers του υλικού, χωρίς να απαιτείται να δημιουργηθεί ξανά ο Linux kernel. Καθώς κάθε αρχείο script.bin είναι σε δυαδική μορφή, δεν μπορούμε να επέμβουμε σε αυτό και να το τροποποιήσουμε απευθείας. Μπορούμε όμως να φτιάξουμε ένα αρχείο κειμένου με κατάληξη.fex και αφού γράψουμε σε αυτό τις απαραίτητες ρυθμίσεις, να δημιουργήσουμε από αυτό, το αρχείο script.bin. Ευτυχώς, η εταιρεία Olimex έχει φροντίσει να δημιουργήσει αρχεία μορφής fex, τα οποία περιέχουν τις κατάλληλες ρυθμίσεις για κάθε πλατφόρμα που κατασκευάζει. Για να λάβουμε αυτό που αντιστοιχεί στην πλατφόρμα A13-OlinuXino-MICRO και να το τροποποιήσουμε σύμφωνα με τις ανάγκες μας, κατεβάζουμε από τη διεύθυνση το κατάλληλο συμπιεσμένο αρχείο. Μετά την αποσυμπίεση του αρχείου αυτού, θα δούμε ότι έχουν δημιουργηθεί μερικοί φάκελοι στο σύστημά μας. Αυτός που μας ενδιαφέρει ονομάζεται script_gpio_lcd_800x480. Ο φάκελος αυτός θα δούμε ότι περιέχει ένα αρχείο script.bin και το αρχείο script_gpio_lcd_800x480.fex, με βάση το οποίο δημιουργήθηκε το script.bin. Μας ενδιαφέρει σε αυτό το σημείο η τροποποίηση του παραπάνω αρχείου με κατάληξη.fex. Χρησιμοποιώντας κάποιον επεξεργαστή κειμένου, προβαίνουμε στις ακόλουθες αλλαγές και προσθήκες:

108 100 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Απενεργοποιούμε όλες τις διεπαφές επικοινωνίας I2C του συστήματος, καθώς δε χρησιμοποιούνται. Αυτό γίνεται αντικαθιστώντας τις γραμμές: twi0_used = 1 twi1_used = 1 twi2_used = 1 με τις γραμμές: twi0_used = 0 twi1_used = 0 twi2_used = 0 μία προς μία, όπου εντοπίζουμε την καθεμία μέσα στο αρχείο ρυθμίσεων. Έπειτα, θέτουμε τη διαγώνιο σε ίντσες του πάνελ αφής της οθόνης μας, με αντικατάσταση της γραμμής: rtp_screen_size = 5 με τη γραμμή: rtp_screen_size = 7 Επόμενο βήμα είναι η απενεργοποίηση υποστήριξης της τεχνικής PWM από τους drivers της οθόνης, καθώς ο έλεγχος της φωτεινότητάς της θα γίνεται από εξειδικευμένο driver για τη δημιουργία PWM σήματος, όπως θα φανεί λίγο πιο κάτω και μέσω της εφαρμογής του 7ου κεφαλαίου. Άρα οι γραμμές: lcd_pwm_not_used = 0 lcd_pwm_used = 1 υποκαθίστανται από τις: lcd_pwm_not_used = 1 lcd_pwm_used = 0 Απενεργοποιούμε ακόμη ορισμένα υποσυστήματα που δεν απαιτούνται για την επίτευξη του σκοπού μας. Οι σειρές: dac_used = 1 csi_used = 1 usb_wifi_used = 1 ls_used = 1 audio_used = 1 rtc_used = 1 pmu_used = 1

109 101 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος γίνονται: dac_used = 0 csi_used = 0 usb_wifi_used = 0 ls_used = 0 audio_used = 0 rtc_used = 0 pmu_used = 0 Έτσι, ενημερώνουμε τους drivers του συστήματος ότι δε χρησιμοποιούνται υποσυστήματα όπως ο DAC μετατροπέας για τη δημιουργία αναλογικών σημάτων για οθόνες απεικόνισης, η διεπαφή της κάμερας, κάποιος USB αντάπτορας για ασύρματη δικτύωση, ένας αισθητήρας φωτός, συσκευές ήχου, συσκευές ρολογιού πραγματικού χρόνου (RTC) ή ενσωματωμένα ολοκληρωμένα κυκλώματα διαχείρισης ισχύος (PMU). Πρέπει να αντικαταστήσουμε επίσης τη γραμμή: gpio_pin_1 = port:pb03<1><default><default><default> με τη γραμμή: gpio_pin_1 = port:pb03<1><default><default><0> ώστε το GPIO pin PB3 να έχει στάθμη Low ως προκαθορισμένη, διαφορετικά όπως είδαμε στο κεφάλαιο 4, το σύστημα θα τερματίζει τη λειτουργία του αμέσως μόλις εκκινήσει. Πέρα από τις παραπάνω αλλαγές, αναγκαία είναι και η προσθήκη των σειρών: [pwm0_para] pwm_used = 1 ώστε να ενεργοποιηθεί ο άμεσος έλεγχος της διεπαφής PWM, για τη δημιουργία του κατάλληλου παλμού από το σχετικό driver, όπως αναφέρθηκε προηγουμένως. Η δημιουργία ενός αρχείου ρυθμίσεων fex εκ του μηδενός θα ήταν μία πολύπλοκη διαδικασία, αλλά ευτυχώς όχι μόνο μας δόθηκε η δυνατότητα να χρησιμοποιήσουμε ένα πρότυπο, αλλά οι περισσότερες από τις ρυθμίσεις του προτύπου αυτού είναι ιδανικές και για την περίπτωσή μας. Για το λόγο αυτό, είδαμε ότι οι αλλαγές που κάναμε ήταν ελάχιστες. Το πλήρες αρχείο script_gpio_lcd_800x480.fex μπορεί να βρεθεί στο παράρτημα της εργασίας. Έπειτα από τη διαμόρφωση του αρχείου script_gpio_lcd_800x480.fex σύμφωνα με τις ανάγκες μας, χρειάζεται να κάνουμε λήψη και compile τα εργαλεία sunxi-tools. Μεταξύ άλλων, τα εργαλεία αυτά περιλαμβάνουν ένα πρόγραμμα για τη μετατροπή των αρχείων κειμένου fex σε δυαδικά αρχεία τύπου bin. Για να λάβουμε τα sunxi-tools δίνουμε την εντολή git clone Έπειτα, μεταβαίνουμε στον κατάλογο που δημιουργήθηκε και αντιγράφουμε σε αυτόν το αρχείο script_gpio_lcd_800x480.fex που τροποποιήσαμε προηγουμένως. Επόμενο βήμα, η διαδικασία του compilation των εργαλείων με την εντολή make. Τρέχοντας τώρα την εντολή./fex2bin script_gpio_lcd_800x480.fex script.bin, δημιουργείται ένα νέο αρχείο script.bin, που περιλαμβάνει τις επιθυμητές

110 102 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος ρυθμίσεις και το οποίο αντιγράφουμε στο πρώτο partition της MicroSD κάρτας μνήμης. Το δεύτερο σημαντικό αρχείο που πρέπει να δημιουργήσουμε και να αποθηκεύσουμε στο πρώτο partition, είναι το αρχείο boot.scr. Το αρχείο αυτό περιλαμβάνει μία αλληλουχία εντολών, οι οποίες πρέπει να εκτελεστούν διαδοχικά από τον bootloader για να εκκινήσει σωστά το σύστημά μας. Όπως αναφέραμε και στην προηγούμενη ενότητα, ο bootloader έχει αποθηκευμένες ορισμένες ρυθμίσεις στον χώρο του environment. Μεταξύ άλλων, περιλαμβάνεται και η εξής προκαθορισμένη εντολή εκκίνησης: fatload mmc 0 0x script.bin && fatload mmc 0 0x ${kernel && watchdog 0 && bootm 0x Η εντολή αυτή εκτελείται σε περίπτωση που δεν εντοπιστεί το αρχείο boot.scr στο πρώτο partition. Όπως είναι εύκολα κατανοητό, επιχειρεί να φορτώσει στη μνήμη του συστήματος το αρχείο script.bin που δημιουργήσαμε προηγουμένως και έπειτα την εικόνα του πυρήνα Linux. Αφού φορτωθούν επιτυχώς, εκκινεί το σύστημα από τη διεύθυνση μνήμης στην οποία φορτώθηκε ο πυρήνας Linux. Η μεταβλητή ${kernel για την περίπτωση αυτή έχει την προκαθορισμένη τιμή kernel=uimage. [121] Το πρόβλημα με την παραπάνω εντολή είναι ότι λειτουργεί μόνο αν το πρώτο partition είναι της μορφής VFAT. Στην περίπτωσή μας, πρέπει να χρησιμοποιήσουμε τις αντίστοιχες εντολές που υποστηρίζουν το σύστημα αρχείων ext2. Οπότε, δημιουργούμε ένα νέο αρχείο κειμένου με όνομα boot.cmd και γράφουμε σε αυτό τις ακόλουθες εντολές: setenv bootargs console=ttys0,115200n8 root=/dev/mmcblk0p2 rootwait panic=10 ext2load mmc 0 0x script.bin ext2load mmc 0 0x uimage bootm 0x Η πρώτη από τις παραπάνω εντολές ορίζει τη μεταβλητή περιβάλλοντος bootargs του Das U-boot, η οποία περιλαμβάνει τα ορίσματα που θα περάσει ο bootloader στον πυρήνα, όταν αυτός εκκινηθεί. Τα ορίσματα αποτελούνται από: Τη διεπαφή της κονσόλας την οποία πλέον θα ελέγχει ο πυρήνας Linux αντί του bootloader. Ορίζουμε για κονσόλα αποσφαλμάτωσης τον τερματικό εξομοιωτή που χρησιμοποιεί τη σειριακή θύρα επικοινωνίας UART1 (δηλαδή τον /dev/ttys0), με ταχύτητα bit/s, χωρίς bit ισοτιμίας (parity) και 8 data bits. Ακριβώς δηλαδή τις ίδιες ρυθμίσεις που χρησιμοποιεί και ο bootloader. Η αντιστοίχηση της θύρας UART1 με τη συσκευή ttys0 γίνεται στο αρχείο script_gpio_lcd_800x480.fex Την πλήρη διαδρομή της συσκευής στην οποία βρίσκεται το root filesystem που θα χρησιμοποιήσει ο Linux kernel. Εδώ δίνουμε ως όρισμα την τοποθεσία του δεύτερου partition της κάρτας μνήμης. Το όρισμα rootwait, το οποίο μας εξασφαλίζει ότι το root filesystem θα είναι σίγουρα ορατό τη στιγμή που θα προσπαθήσει ο πυρήνας Linux να το κάνει mount. Με το όρισμα αυτό, ο πυρήνας αναμένει έως ότου η MicroSD είναι έτοιμη για πλήρη χρήση. [122] Το όρισμα panic=10, το οποίο σημαίνει ότι σε περίπτωση αποτυχίας εκκίνησης του πυρήνα λόγω κάποιου σφάλματος στο υλικό ή το λογισμικό, το σύστημα θα επανεκκινήσει μετά από 10 δευτερόλεπτα. [123] Οι υπόλοιπες εντολές του αρχείου, εκτελούν τα ίδια βήματα με την προκαθορισμένη εντολή εκκίνησης, αλλά ενεργώντας πάνω στο πρώτο partition ως πρέπει, δηλαδή αναγνωρίζοντάς το σαν ext2 τύπου.

111 103 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Έπειτα της δημιουργίας του αρχείου boot.cmd, εκτελούμε την εντολή mkimage -C none -A arm -T script -d boot.cmd boot.scr, με την οποία θα δημιουργηθεί το επιθυμητό αρχείο boot.scr με βάση τις εντολές που εγγράψαμε στο αρχείο boot.cmd. Όπως και με το αρχείο script.bin, αντιγράφουμε το αρχείο boot.scr στο πρώτο partition της κάρτας μνήμης μας. Σε περίπτωση που προσπαθήσουμε τώρα να εκκινήσουμε το τελικό σύστημά μας, θα εμφανιστεί το σφάλμα no init found και το σύστημα θα προβεί σε επανεκκίνηση. Το πρόγραμμα init όπως έχουμε αναφέρει, είναι η πρώτη διεργασία που τρέχει με την εκκίνηση του συστήματος και στην περίπτωσή μας είναι ενσωματωμένο στο πρόγραμμα busybox. Για να εντοπίσουμε τι φταίει, μεταβαίνουμε στο δεύτερο partition της MicroSD κάρτας μνήμης και τρέχουμε την εντολή readelf -l bin/busybox. Θα λάβουμε ως αποτέλεσμα μεταξύ άλλων την γραμμή [Requesting program interpreter: /lib/ld-linux-armhf.so.3]. Αυτό σημαίνει πως το πρόγραμμα busybox και συνεπώς το πρόγραμμα init, χρησιμοποιεί κατά την εκτέλεσή του τη βιβλιοθήκη ld-linux-armhf.so.3, η οποία εκ πρώτης όψεος, φαίνεται να απουσιάζει από το τελικό σύστημα, όπως μπορούμε να δούμε στον υποκατάλογο / lib. Η αλήθεια είναι ότι υφίσταται, αλλά με το όνομα ld-linux.so.3. Αυτή η ασυμβατότητα δημιουργήθηκε κατά το cross-compilation των packages από το buildroot, εξαιτίας του cross-toolchain που χρησιμοποιήθηκε. Η λύση είναι απλή, καθώς αρκεί να μεταβούμε στον υποκατάλογο / lib και να εκτελέσουμε την εντολή ln -s ld-linux.so.3 ld-linux-armhf.so.3. Με αυτόν τον τρόπο, δημιουργούμε το αρχείο-αναφορά ld-linux.so.3, το οποίο ανακατευθύνει όποιο πρόγραμμα το καλέσει στο πραγματικό αρχείο, δηλαδή αποτελεί ένα συμβολικό σύνδεσμο προς το αρχείο ld-linux-armhf.so.3. Επόμενο βήμα είναι η επεξεργασία του αρχείου /etc/fstab που βρίσκεται στο δεύτερο partition της MicroSD. Το αρχείο αυτό περιλαμβάνει ρυθμίσεις σχετικά με το mounting των διαφόρων partitions, κυρίως κατά τη διαδικασία εκκίνησης του συστήματος. [124] Η πρώτη αλλαγή που πρέπει να κάνουμε έχει να κάνει με τον τύπο του συστήματος αρχείων της συσκευής /dev/root, τον οποίον αλλάζουμε από ext2 σε ext4, αφού η συσκευή αυτή αντιπροσωπεύει το δεύτερο partition της κάρτας μνήμης. Η δεύτερη αλλαγή είναι η προσθήκη της εξής σειράς στο τέλος του αρχείου: /dev/mmcblk0p3 /mnt vfat defaults 0 0 Με αυτή την προσθήκη, κατά την εκκίνηση του τελικού συστήματος, το τρίτο partition της MicroSD θα γίνει mount υπό τον κατάλογο /mnt. Έτσι, τα PDF αρχεία που βρίσκονται σε αυτό θα είναι προσπελάσιμα από την τελική εφαρμογή. Η τελική μορφή του αρχείου /etc/fstab πρέπει να είναι αυτή της εικόνας 6-9.

112 104 Κεφάλαιο 6 : Υλοποίηση Λειτουργικού Συστήματος Εικόνα 6-9: Η τελική μορφή του αρχείου etc/fstab, μετά την τροποποίησή του. Πλέον μπορούμε να κάνουμε λόγο για ένα λειτουργικό target σύστημα. Το επόμενο βήμα είναι η εισαγωγή της MicroSD κάρτας μνήμης στην κατάλληλη υποδοχή της πλατφόρμας A13-OlinuXino-MICRO και η σύνδεση του τελικού συστήματος με την τροφοδοσία. Να μην ξεχάσουμε σε αυτό το σημείο πως για να μπορέσουμε να αλληλεπιδράσουμε με το τελικό σύστημα, πρέπει να το έχουμε συνδέσει προηγουμένως ενσύρματα με το host σύστημα, με βάση τη διάταξη της ενσύρματης σειριακής επικοινωνίας που περιγράφεται στην ενότητα Μετά τη σωστή σύνδεση του υλικού των δύο συστημάτων, μπορούμε να δημιουργήσουμε μία διεπαφή σειριακής επικοινωνίας μεταξύ τους, εκτελώντας την εντολή screen /dev/ttyusb στο host σύστημα. Η εντολή screen βέβαια είναι μόνο μία από τις πολλές εντολές που μπορούν να χρησιμοποιηθούν για τη χρήση της συσκευής /dev/ttyusb0, δηλαδή του USB-to-Serial αντάπτορα που έχουμε αναφέρει στο κεφάλαιο 5. Αφού εκκινήσει ο Das U-Boot bootloader και ολοκληρώσει ορισμένους βασικούς ελέγχους πάνω στο υλικό της πλατφόρμας μας, θα εμφανιστεί στη σειριακή κονσόλα μία αντίστροφη μέτρηση τριών δευτερολέπτων. Πιέζοντας οποιοδήποτε πλήκτρο, μπορούμε να διακόψουμε τη μέτρηση αυτή. Ως αποτέλεσμα, ο bootloader δε θα εκτελέσει τις εντολές που περιέχονται στο αρχείο boot.scr, αλλά θα εμφανίσει μία γραμμή διαδραστικών εντολών. Μας ενδιαφέρει να εισαγάγουμε τις ακόλουθες εντολές τώρα: setenv bootdelay 0 saveenv reset Με τις παραπάνω εντολές, καταργούμε την αντίστροφη μέτρηση των τριών δευτερολέπτων και έτσι το σύστημά μας εκκινεί ταχύτερα.

113 105 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων 7.1 Εισαγωγή Σε αυτό το προτελευταίο κεφάλαιο θα δούμε τι ενέργειες πρέπει να ακολουθήσουμε ώστε να δημιουργήσουμε την εφαρμογή ανάγνωσης e-book, που θα τρέχει πάνω στο λειτουργικό σύστημα της πλατφόρμας A13-OlinuXino-MICRO. Βέβαια, οι οδηγίες που θα παραθέσουμε στη συνέχεια μπορούν να χρησιμοποιηθούν ως οδηγός για την ανάπτυξη εφαρμογών με γραφική διεπαφή χρήστη (GUI) για οποιοδήποτε ενσωματωμένο σύστημα που χρησιμοποιεί πυρήνα Linux. Βασικός σκοπός μας είναι η περιγραφή της διαδικασίας ρύθμισης και εγκατάστασης του Qt Framework στο host σύστημα, όπως και του IDE που το συνοδεύει (Qt Creator), ώστε ο κώδικας που δημιουργεί να είναι συμβατός με το target σύστημα. Στη συνέχεια θα κάνουμε μία σύντομη περιγραφή του πηγαίου κώδικα της εφαρμογής που κατασκευάσαμε και της λειτουργίας της, όπως και της διαδικασίας εγκατάστασής της στο target σύστημα. Να υπενθυμίσουμε σε αυτό το σημείο ότι θέλουμε να δώσουμε βάση κυρίως στον γενικότερο τρόπο δημιουργίας και cross-compilation μίας GUI εφαρμογής, όπως και στην επικοινωνία του χρήστη με το υλικό της πλατφόρμας, μέσω αυτής. Για αυτό τον λόγο, δεν είναι στόχος μας να κατασκευάσουμε μία ολοκληρωμένη εφαρμογή ανάγνωσης e-book με πλήρεις δυνατότητες, αντίστοιχες κάποιου δημοφιλούς προγράμματος. Αντί αυτού, η εφαρμογή που θα δούμε στη συνέχεια σχεδιάστηκε ως ενδεικτική, για να παρουσιαστούν οι δυνατότητες του Qt Framework και ο τρόπος που μπορούμε να χρησιμοποιήσουμε γραφικά στοιχεία σε ένα ενσωματωμένο σύστημα. Για παράδειγμα, θα μπορούσαν κάλλιστα τα παρακάτω να χρησιμοποιηθούν ως βάση για τη δημιουργία μίας GUI εφαρμογής για έλεγχο μηχανημάτων σε ένα βιομηχανικό περιβάλλον, με χρήση της A13-OlinuXino-MICRO. 7.2 Ρύθμιση και εγκατάσταση του Qt Framework Πρώτο μέλημά μας είναι η διαδικασία ρύθμισης και εγκατάστασης του Qt Framework στο host σύστημα. Για να γίνει αυτό, πρέπει να κατεβάσουμε πρώτα τον πηγαίο κώδικα των απαραίτητων βιβλιοθηκών από την ιστοσελίδα Να σημειώσουμε σε αυτό το σημείο ότι για την ανάπτυξη της διπλωματικής αυτής, χρησιμοποιήθηκε η έκδοση των βιβλιοθηκών Qt, η οποία ήταν η τελευταία της σειράς 4, όταν γράφαμε τις γραμμές αυτές. Αν και αυτή τη στιγμή η πιο πρόσφατη έκδοση είναι η 5.1.1, την περίοδο που ξεκίνησε η ανάπτυξη της εφαρμογής δεν υπήρχε ακόμα διαθέσιμη σταθερή έκδοση της σειράς 5. Επίσης, στη σειρά 5 αλλάζει εντελώς ο τρόπος επικοινωνίας των εφαρμογών με τον framebuffer του λειτουργικού συστήματος. Αυτό σε συνδυασμό με τη σταθερότητα της έκδοσης 4.8.5, μας οδήγησε στην επιλογή να μη μεταβούμε σε εκδόσεις της σειράς 5, αφού στην περίπτωσή μας δεν προσφέρουν κάποιο σημαντικό πλεονέκτημα. Για να κατεβάσουμε και να αποσυμπιέσουμε τις βιβλιοθήκες Qt, θεωρώντας ότι όπως πάντα εργαζόμαστε στον κατάλογο /home/dimitris/thesis/final, δίνουμε τις εντολές: wget \ qt-everywhere-opensource-src tar.gz tar -xvzf \ qt-everywhere-opensource-src tar.gz cd qt-everywhere-opensource-src Ευρισκόμενοι πλέον στον κατάλογο με τον πηγαίο κώδικα των βιβλιοθηκών, θα χρειαστεί να ρυθμίσουμε και να εγκαταστήσουμε τις βιβλιοθήκες Qt δύο φορές. Την πρώτη φορά, οι βιβλιοθήκες

114 106 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων θα ρυθμιστούν έτσι ώστε να είναι συμβατές με την αρχιτεκτονική του host συστήματος, δηλαδή για να μπορούμε να κάνουμε compile την εφαρμογή μας στο host σύστημα ώστε να ελέγξουμε τη λειτουργία της. Τη δεύτερη φορά, θα εγκαταστήσουμε τις βιβλιοθήκες που θα χρησιμοποιηθούν για το cross-compilation της εφαρμογής μας, οι οποίες θα δημιουργηθούν με το toolchain που φτιάξαμε στο κεφάλαιο 5. Το ίδιο θα χρησιμοποιηθεί φυσικά και για το compilation της εφαρμογής για το τελικό σύστημα. Για να ρυθμίσουμε λοιπόν κατάλληλα τις βιβλιοθήκες για το host σύστημα, δίνουμε την εντολή:./configure -prefix /usr/local/qt-host -opensource -no-accessibility -no-qt3support -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-pch -no-webkit -confirm-license -qt-mouse-qvfb -qt-mouse-pc -qt-kbd-qvfb -qt-gfx-qvfb -no-largefile -depths 18 -nomake examples -nomake demos -qvfb -embedded generic -qt-mouse-linuxinput -qt-kbd-linuxinput -no-multimedia Επεξήγηση των ορισμάτων: [125][126] -prefix /usr/local/qt-host: Με το όρισμα αυτό, επιλέγουμε τον κατάλογο εγκατάστασης των βιβλιοθηκών. -opensource: Δημιουργούμε τις βιβλιοθήκες υπό την opensource άδεια χρήσης αντί της commercial. Αυτό βέβαια δε σημαίνει ότι δεν μπορούμε να δημιουργήσουμε κλειστού κώδικα εφαρμογές, καθώς πλέον υποστηρίζεται από τις βιβλιοθήκες Qt το LGPL license που επιτρέπει κάτι τέτοιο. [127] -no-accessibility: Είναι επιλογή σχετικά με την υποστήριξη του Active Accessibility των Microsoft Windows. Αφού η εφαρμογή μας δε στοχεύει κάποια πλατφόρμα με αυτό το λειτουργικό, δεν μας χρειάζεται. -no-qt3support: Απενεργοποίηση υποστήριξης των εκδόσεων της σειράς Qt 3. -qt-zlib,-qt-libpng,-qt-libmng,-qt-libtiff,-qt-libjpeg: Χρησιμοποιούμε τις αντίστοιχες βιβλιοθήκες που παρέχονται από το Qt Framework, αντί αυτές του συστήματος. Αυτή η επιλογή έχει ως στόχο την καλύτερη συμβατότητα της δοκιμαστικής εφαρμογής που θα τρέχει στο host σύστημα, με αυτή που θα τρέχει στο τελικό σύστημα, αφού θα χρησιμοποιηθούν ακριβώς οι ίδιες εκδόσεις βιβλιοθηκών και στα 2 συστήματα. -no-pch: Αποφυγή χρήσης precompiled headers από τον compiler του host συστήματος, καθώς διαφορετικά εμφανίζονται σχετικά σφάλματα κατά το compilation. αρνητικό είναι η αύξηση του χρόνου compilation. [128] Το μόνο -no-webkit: Καθώς δε χρειαζόμαστε στο webkit module του Qt Framework, αυτή η επιλογή μειώνει κατά πολύ το χρόνο του compilation. -confirm-license: Με αυτή την επιλογή επιλέγονται αυτόματα οι καταφατικές απαντήσεις κατά της διάρκεια του compilation, σε ερωτήματα σχετικά με τις άδειες χρήσης. -qt-mouse-qvfb: Υποστήριξη drivers που επιτρέπουν τη χρήση του κέρσορα στο εργαλείο qvfb, τη χρησιμότητα του οποίου θα δούμε παρακάτω. -qt-mouse-pc: Υποστήριξη drivers για χρήση του mouse σε GUI εφαρμογές.

115 107 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων -qt-kbd-qvfb: Υποστήριξη του πληκτρολογίου στο πρόγραμμα qvfb. -qt-gfx-qvfb: Υποστήριξη drivers για απεικόνιση γραφικών στο εργαλείο qvfb. -no-largefile: Απενεργοποίηση δημιουργίας και χρήσης αρχείων μεγαλύτερων των 4GB, αφού στοχεύουμε στη δημιουργία εφαρμογής για ενσωματωμένα συστήματα. -depths 18: Υποστήριξη βάθους χρωμάτων μόνο 18 bits, ώστε η απεικόνιση της εφαρμογής στο host σύστημα να είναι παρόμοια με αυτή του τελικού συστήματος, στο οποίο τα 18 bits είναι το μέγιστο βάθος χρωμάτων. -nomake examples,-nomake demos: Επιλογή να μη δημιουργηθούν ενδεικτικές εφαρμογές, ώστε να ολοκληρωθεί το compilation γρηγορότερα. -qvfb: Ενεργοποίηση υποστήριξης του εργαλείου qvfb. Ενεργοποίηση επιπλέον δυνατοτήτων του Qt Framework, συγκεκριμένα για ενσωματωμένα συστήματα (όπως το σύστημα παραθύρων QWS που θα χρησιμοποιήσουμε στη συνέχεια). -embedded generic: -qt-mouse-linuxinput: Υποστήριξη εισόδου mouse σε περιβάλλον Linux, για τη βιβλιοθήκη QtGui. -qt-kbd-linuxinput: Υποστήριξη εισόδου πληκτρολογίου σε περιβάλλον Linux, για τη βιβλιοθήκη QtGui. -no-multimedia: Δεν συμπεριλαμβάνουμε το multimedia module, για μείωση του χρόνου compilation. Είναι πολύ σημαντική η σωστή επιλογή των ορισμάτων, καθώς λανθασμένες ρυθμίσεις μπορούν αφενός να κάνουν την εφαρμογή μας μη λειτουργική, αφετέρου μεγαλώνουν κατά πολύ το χρόνο του compilation των βιβλιοθηκών χωρίς να χρειάζεται. Μετά τις παραπάνω ρυθμίσεις, αρκεί να δώσουμε την εντολή make -j3 (ή αντί για 3, όσος είναι ο αριθμός των πυρήνων του υπολογιστή μας +1), ώστε να αρχίσει η διαδικασία του compilation των Qt βιβλιοθηκών. Η διαδικασία αυτή είναι αρκετά χρονοβόρα, και στο host σύστημά μας διαρκεί περίπου 1 ώρα και 30 λεπτά μέχρι να ολοκληρωθεί.

116 108 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων Εικόνα 7-1: Ολοκλήρωση διαδικασίας compilation των Qt βιβλιοθηκών. Επόμενο βήμα είναι η εγκατάσταση των βιβλιοθηκών με την εντολή make install. Η διαδικασία αυτή είναι σαφώς πιο σύντομη και με το πέρας της πρέπει να έχουμε εγκατεστημένες τις βιβλιοθήκες Qt για τη δημιουργία εφαρμογών που θα τρέχουν στο host σύστημα, στον κατάλογο /usr/local/qt-host. Παραπάνω αναφέραμε τη χρήση του εργαλείου qvfb. Το εργαλείο αυτό δεν είναι τίποτα άλλο από μία εικονική συσκευή framebuffer, η οποία μας επιτρέπει να τρέχουμε εφαρμογές που χρησιμοποιούν απευθείας το Linux framebuffer, μέσα στο γραφικό περιβάλλον της επιφάνειες εργασίας μας (desktop environment). Χωρίς αυτό το εργαλείο, θα έπρεπε όταν θέλουμε να δοκιμάσουμε τη λειτουργία της εφαρμογής μας, να εξερχόμαστε από το γραφικό περιβάλλον της επιφάνειας εργασίας, και να τρέχουμε την εφαρμογή από μία κονσόλα. [129] Για να εγκαταστήσουμε το εργαλείο qvfb, δίνουμε τις παρακάτω εντολές: cd tools/qvfb make make install cd../.. Το εργαλείο qvfb θα εγκατασταθεί στον ίδιο κατάλογο που εγκαταστάθηκαν προηγουμένως οι βιβλιοθήκες. Για να το τρέξουμε, αρκεί να εκτελέσουμε το αντίστοιχο αρχείο, που βρίσκεται στον κατάλογο /usr/local/qt-host/bin. Επόμενο βήμα είναι μία παρόμοια με την παραπάνω διαδικασία, για την εγκατάσταση των Qt βιβλιοθηκών οι οποίες θα χρησιμοποιηθούν κατά το cross-compilation της εφαρμογής μας. Αρχικά πρέπει να γίνει εκτέλεση της εντολής make confclean, ώστε να επανέλθει ο πηγαίος κώδικας του Qt Framework στην αρχική του μορφή, διαγράφοντας όσα αρχεία δημιουργήθηκαν κατά τις παραπάνω διαδικασίες (όπως αντικείμενα αρχεία, αρχεία ρυθμίσεων κ.τ.λ.). Η σημαντικότερη διαφορά σε σχέση με τα βήματα που ακολουθήσαμε παραπάνω, είναι η προσθήκη ενός επιπλέον σταδίου, κατά το οποίο θα ρυθμίσουμε κατάλληλα το εργαλείο qmake. Το εργαλείο αυτό χρησιμοποιείται για τη δημιουργία Makefile αρχείων, με βάση πληροφορίες που συλλέγει από αρχεία project (.pro). Ένα τέτοιο αρχείο project θα δούμε πως έχουμε χρησιμοποιήσει και στη δημιουργία της εφαρμογής μας, καθώς προσφέρει ευελιξία κατά το compilation (για

117 109 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων παράδειγμα, μπορεί να μεταγλωττίζει διαφορετικά αρχεία, αναλόγως την πλατφόρμα με στόχο την οποία γίνεται το cross-compilation κάθε φορά). Για τη ρύθμιση λοιπόν του qmake, μεταβαίνουμε στον αντίστοιχο κατάλογο που περιέχει τα αρχεία ρυθμίσεων, για περιπτώσεις που το qmake χρησιμοποιείται με στόχο εφαρμογές που τρέχουν πάνω στον framebuffer: cd mkspecs/qws. Εδώ δημιουργούμε έναν φάκελο με τις δικές μας ρυθμίσεις, αντιγράφοντας έναν προϋπάρχων: cp -avx linux-arm-g++ linux-arm-gnueabi-g++. Μέσα σε αυτόν τον φάκελο, παρατηρούμε ότι υπάρχει ένα αρχείο με όνομα qmake.conf, το οποίο και μας ενδιαφέρει. Το ανοίγουμε για επεξεργασία και προβαίνουμε στις ακόλουθες αλλαγές και προσθήκες: QMAKE_CC = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-gcc QMAKE_CXX = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-g++ QMAKE_LINK = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-g++ QMAKE_LINK_SHLIB = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-g++ Με τις παραπάνω αλλαγές, ενημερώνουμε το εργαλείο qmake για το toolchain που θα χρησιμοποιηθεί κατά το cross-compilation. Προσέχουμε να χρησιμοποιήσουμε την πλήρη διαδρομή, διαφορετικά θα υπάρξει σφάλμα μελλοντικά, αφού το σύστημα δε θα είναι ενημερωμένο με τη σωστή τοποθεσία του toolchain. QMAKE_CFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard Με τις 2 αυτές προσθήκες, το qmake ενημερώνεται ώστε να περάσει τα κατάλληλα flags στο toolchain, τα οποία θα ενεργοποιήσουν δυνατότητες που ενσωματώσαμε σε αυτό στο κεφάλαιο 5, κατά τη δημιουργία του και είναι ήδη γνωστές. Το όρισμα -O3 ορίζει βελτιστοποίηση από τον compiler με στόχο την ταχύτητα. QMAKE_CXXFLAGS += -std=c++0x Με την προσθήκη αυτή, ενημερώνουμε τον compiler να χρησιμοποιήσει το πιο πρόσφατο πρότυπο που ορίζει τις προδιαγραφές της C++ γλώσσας. Το αμέσως προηγούμενο είναι C++03, αλλά είδαμε ότι αν χρησιμοποιήσουμε αυτό, εμφανίζονται σφάλματα κατά το compilation των βιβλιοθηκών. QMAKE_AR = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-ar cqs

118 110 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων QMAKE_OBJCOPY = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-objcopy QMAKE_STRIP = /home/dimitris/thesis/final/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-linu x-gnueabi-strip Όπως και παραπάνω, ενημερώνουμε το εργαλείο qmake για την τοποθεσία μερικών εργαλείων που ανήκουν στο toolchain και χρησιμοποιούνται στο cross-compilation. QMAKE_INCDIR += /home/dimitris/thesis/final/buildroot/output/host/usr/arm-buildroot-linux-gn ueabihf/sysroot/usr/include QMAKE_LIBDIR += /home/dimitris/thesis/final/buildroot/output/host/usr/arm-buildroot-linux-gn ueabihf/sysroot/usr/lib/ Ενημερώνουμε το qmake σχετικά με τη θέση βιβλιοθηκών που θα χρειαστεί κατά το cross-compilation. Για να υπάρχει συμβατότητα με το τελικό σύστημα, χρησιμοποιούμε τις βιβλιοθήκες που δημιούργησε το εργαλείο buildroot στο προηγούμενο κεφάλαιο για το σύστημα-στόχο. Το σύστημα αρχείων που βρίσκεται στον κατάλογο /home/dimitris/thesis/final/buildroot/output/host/usr/arm-buildroot-linux-gn ueabihf/sysroot/ έχει δημιουργηθεί ακριβώς για αυτόν τον σκοπό, δηλαδή για να λειτουργήσει ως αναφορά σε περιπτώσεις που ο κώδικας που δημιουργούμε εξαρτάται από βιβλιοθήκες και πακέτα λογισμικού του target συστήματος. Μετά από τις παραπάνω αλλαγές, αποθηκεύουμε το αρχείο qmake.conf και μεταβαίνουμε στον κατάλογο /home/dimitris/thesis/final/qt-everywhere-opensource-src Εικόνα 7-2: Η τελική μορφή του αρχείου qmake.conf, μετά τις αλλαγές. Από εδώ και στο εξής, δεν υπάρχουν μεγάλες διαφορές σε σχέση με την προηγούμενη

119 111 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων εγκατάσταση των βιβλιοθηκών. Το επόμενο βήμα είναι η παραμετροποίησή τους, όπως και προηγουμένως:./configure -prefix /usr/local/qt-target -opensource -no-accessibility -no-qt3support -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-pch -no-webkit -confirm-license -qt-mouse-tslib -qt-gfx-linuxfb -qt-gfx-transformed -no-largefile -depths 18 -nomake examples -nomake demos -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-multimedia -no-opengl Είναι λογικό μερικά ορίσματα να είναι διαφορετικά αυτή τη φορά. Θα αρκεστούμε στην επεξήγηση μόνο αυτών, ενώ θα παραλείψουμε όσα είναι ίδια με προηγουμένως: -qt-mouse-tslib: Ενεργοποίηση drivers για υποστήριξη της βιβλιοθήκης tslib, ώστε να χρησιμοποιήσουμε στην εφαρμογή την οθόνη αφής ως κέρσορα. -qt-gfx-linuxfb: Ενεργοποίηση των drivers που απαιτούνται για απεικόνιση της εφαρμογής με χρήση απευθείας του Linux framebuffer. -qt-gfx-transformed: Υποστήριξη drivers που επιτρέπουν μετατροπή της απεικόνισης της εφαρμογής, όπως για παράδειγμα περιστροφή κατά 90ο. Ενεργοποίηση δυνατοτήτων για ενσωματωμένα συγκεκριμένα με αρχιτεκτονική arm, όπως το σύστημα-στόχος. -embedded arm: συστήματων, -xplatform qws/linux-arm-gnueabi-g++: Ορισμός του καταλόγου που περιλαμβάνει πληροφορίες σχετικά με το περιβάλλον cross-compilation. -no-opengl: Δεν συμπεριλαμβάνουμε υποστήριξη opengl για επιτάχυνση των γραφικών της εφαρμογής μέσω υλικού, αφού απαιτούν χρήση της Mali GPU της πλατφόρμας A13-OlinuXino-MICRO, πράγμα μη εφικτό για λόγους που έχουμε ήδη εξηγήσει σε προηγούμενο κεφάλαιο. Όπως και προηγουμένως, μόλις τελειώσει η ρύθμιση των βιβλιοθηκών δίνουμε την εντολή make -j3 και αναμένουμε να τελειώσει το compilation. Έπειτα, εγκαθιστούμε τις βιβλιοθήκες με την εντολή make install. Μετά από όλα τα παραπάνω, έχουμε ολοκληρώσει επιτυχώς τη διαδικασία εγκατάστασης των απαραίτητων βιβλιοθηκών Qt, οι οποίες απαιτούνται για τη δημιουργία εφαρμογών για το host σύστημα, αλλά και για το target σύστημα. Να σημειώσουμε σε αυτό το σημείο ότι θα μπορούσαμε να είχαμε αποφύγει ολόκληρη την πρώτη εγκατάσταση των Qt βιβλιοθηκών, με το κόστος ότι δε θα είχαμε τη δυνατότητα να δοκιμάσουμε τη λειτουργία της εφαρμογής μας στο host σύστημα, παρά μόνο στο target σύστημα. Επίσης, οι βιβλιοθήκες που δημιουργήσαμε για χρήση στο cross-compilation της εφαρμογής μας, δηλαδή τη δεύτερη φορά, θα έπρεπε υπό άλλες συνθήκες να αντιγραφούν στο target σύστημα, αφού η εφαρμογή μας συνδέεται δυναμικά με αυτές κατά την εκτέλεσή της. Ευτυχώς, λόγω της κατάλληλης ρύθμισης του εργαλείου buildroot, έχουμε ήδη συμπεριλάβει όλα τα απαραίτητα αρχεία βιβλιοθηκών που χρειάζεται το τελικό σύστημα στο σύστημα αρχείων του, μαζί και τις βιβλιοθήκες Qt. 7.3 Εγκατάσταση και ρύθμιση του Qt-Creator IDE Στην προηγούμενη ενότητα παρουσιάσαμε τον τρόπο ρύθμισης και εγκατάστασης του Qt Framework, αλλά χωρίς να διαθέτουμε κάποιο εξειδικευμένο πρόγραμμα που λειτουργεί ως

120 112 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων περιβάλλον ανάπτυξης της εφαρμογής, οι βιβλιοθήκες είναι δύσχρηστες. Το πρόγραμμα που πρόκειται να χρησιμοποιήσουμε ως περιβάλλον ανάπτυξης εφαρμογών βασισμένων στο Qt Framework ονομάζεται Qt-Creator και μπορούμε να κατεβάσουμε δωρεάν την τελευταία έκδοση αυτή τη στιγμή από την ιστοσελίδα Αφού τρέξουμε" το αρχείο που κατέβηκε και εγκαταστήσουμε το πρόγραμμα, παρουσιάζουμε στη συνέχεια τη ρύθμισή του για χρήση των παραπάνω βιβλιοθηκών. Η πρώτη ενέργεια που πρέπει να ακολουθήσουμε μετά την εκκίνηση του Qt-Creator είναι να εμφανίσουμε το μενού επιλογών, επιλέγοντας Tools->Options από το κυρίως μενού στο πάνω μέρος του προγράμματος. Το μενού επιλογών μας προσφέρει τη δυνατότητα να πραγματοποιήσουμε μία πληθώρα παραμετροποιήσεων, ώστε να φέρουμε στα μέτρα μας το πρόγραμμα. Για παράδειγμα, μπορούμε μεταξύ άλλων να τροποποιήσουμε την εμφάνιση του επεξεργαστή κειμένου του Qt-Creator ή να προσθέσουμε σε αυτό ένα πρόγραμμα ελέγχου εκδόσεων. Εμείς θα πραγματοποιήσουμε μόνο τις απαιτούμενες ρυθμίσεις για το cross-compilation, της κατηγορίας Build & Run. Επιλέγοντας την κατηγορία αυτή, μεταβαίνουμε πρωτίστως στην καρτέλα Compilers. Από εδώ προσθέτουμε τον compiler που θα αναλάβει το cross-compilation για το target σύστημα (Add->GCC). Του δίνουμε μία ονομασία της αρεσκείας μας -π.χ. arm-gcc- και συμπληρώνουμε το πεδίο Compiler path με τη διαδρομή στην οποία έχουμε εγκαταστήσει τον C++ cross-compiler, δηλαδή για την περίπτωσή μας: /home/dimitris/thesis/final/x-tools/ arm-cortex_a8-linux-gnueabi/bin/arm-linux-gnueabi-g++. Σε περίπτωση που δεν έχει αναγνωριστεί ήδη αυτόματα ο x86 compiler του host συστήματος, ακολουθούμε την ίδια μεθοδολογία για την προσθήκη του στο περιβάλλον ανάπτυξης. Επόμενο βήμα είναι η ενημέρωση του IDE για τις διαθέσιμες, εγκατεστημένες εκδόσεις του Qt Framework. Για να γίνει αυτό, μεταβαίνουμε στην καρτέλα Qt Versions και από το πλήκτρο Add... εντοπίζουμε τη διαδρομή καθενός εκτελέσιμου αρχείου qmake. Αυτή η ενέργεια πρέπει προφανώς να γίνει δύο φορές: Την πρώτη φορά επιλέγουμε τη διαδρομή: /usr/local/qt-host/ bin/qmake, ενώ τη δεύτερη τη διαδρομή: /usr/local/qt-target/bin/qmake. Το πεδίο Version name το συμπληρώνουμε και τις δύο φορές με όποια επιθυμητή ονομασία. Τελευταίο βήμα ρυθμίσεων και σημαντικότερο, είναι η δημιουργία των καταλλήλων kits, στην ομώνυμη καρτέλα. Το Qt Creator ομαδοποιεί τις ρυθμίσεις που απαιτούνται για την ανάπτυξη και την εκτέλεση κάθε project. Κάθε kit αποτελείται από ένα σύνολο τιμών, που προέρχονται από τις ρυθμίσεις στις οποίες προβήκαμε στις προηγούμενες καρτέλες και το οποίο ορίζει ένα περιβάλλον ανάπτυξης. [130] Στόχος μας είναι να ορίσουμε δύο διαφορετικά αναπτυξιακά περιβάλλοντα, ένα για το compilation της εφαρμογής μας με σκοπό να εκτελείται στο host σύστημα και άλλο ένα με σκοπό να δημιουργείται το εκτελέσιμο πρόγραμμα που θα τρέχει στο τελικό σύστημα. Στο πρώτο kit που θα δημιουργήσουμε, θα επιλέξουμε ως Device type την τιμή Desktop, ως Compiler τον x86 compiler του host συστήματος και ως Qt version την έκδοση του Qt Framework που αναλαμβάνει το compile των εφαρμογών με στόχο το ίδιο το host σύστημα. Στο δεύτερο kit, επιλέγουμε ως Device type την τιμή Generic Linux Device, ως Compiler τον cross-compiler που έχουμε δημιουργήσει στο κεφάλαιο 5 και ως Qt version τις βιβλιοθήκες που θα χρησιμοποιηθούν για το cross-compilation της εφαρμογής μας. Δεν απαιτείται να συμπληρώσουμε τα υπόλοιπα πεδία, ωστόσο προσφέρουν επιλογές για την άμεση εναπόθεση της εφαρμογής στο target σύστημα ή για την αποσφαλμάτωσή της μέσω επιλογής κάποιου debugger.

121 113 Κεφάλαιο 7 : Εφαρμογή Ανάγνωσης PDF αρχείων Εικόνα 7-3: Η καρτέλα Kits της κατηγορίας Build & Run του μενού επιλογών του Qt Creator, έπειτα της δημιουργίας των απαιτούμενων kits. 7.4 Περιγραφή του κώδικα της εφαρμογής Δημιουργία νέου έργου Αφού έχει ρυθμιστεί πλέον κατάλληλα το αναπτυξιακό περιβάλλον, είμαστε έτοιμοι να μεταβούμε στη δημιουργία της εφαρμογής μας. Για να δημιουργήσουμε ένα νέο project, από το κυρίως μενού επιλέγουμε File->New File or Project. Κατόπιν, θα εμφανιστεί το παράθυρο της εικόνας 7-4, στο οποίο επιλέγουμε την τιμή Qt Quick 1 Application (Built-in Elements), ώστε να προγραμματίσουμε μία εφαρμογή η οποία θα περιλαμβάνει τόσο QML όσο και C++ κώδικα. Έπειτα, αφού ονοματίσουμε το έργο μας και επιλέξουμε να υποστηρίζει και τα δύο kits που δημιουργήσαμε προηγουμένως, τερματίζουμε τον οδηγό δημιουργίας νέων αρχείων και έργων. Εικόνα 7-4: Οδηγός δημιουργίας νέων αρχείων και έργων.

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

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Λογισμικό Συστήματος & Εφαρμογών ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Γενική Δομή Υπολογιστών Λειτουργικό σύστημα Υπολογιστής

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

Διαβάστε περισσότερα

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux 1 Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux Το Linux είναι ένα λειτουργικό σύστημα όμοιο με το Unix που αναπτύχθηκε από έναν πυρήνα (kernel, Εικ.1) τον οποίο δημιούργησε το 1991 ο Linus Torvalds όντας

Διαβάστε περισσότερα

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Προγραμματισμός Διαχείρισης Συστημάτων Ι Προγραμματισμός Διαχείρισης Συστημάτων Ι Μάθημα 7ο X Window System Μιχαηλίδης Παναγιώτης Tι είναι παραθυρικό σύστημα; Ένα παραθυρικό σύστημα (window system) είναι μια γραφική διεπαφή χρήστη (Graphical

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ Κεφάλαιο 1: Υλικό Υπολογιστών (Hardware) 1.1: Το υπολογιστικό σύστημα ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1. Τι αντιλαμβάνεστε με τον όρο υλικό (hardware); [σελ. 8] Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α' ΛΥΚΕΙΟΥ ΕΝΟΤΗΤΑ 1η ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ 1. Τι ονομάζουμε υλικό και τι λογισμικό ενός υπολογιστικού συστήματος; 2. Τι είναι α) η μητρική πλακέτα ( motherboard), β) η κεντρική μονάδα

Διαβάστε περισσότερα

12/5/18. Αποτίµηση του υποσυστήµατος CPU. Κεφάλαιο 6. Κατανόηση και εκτίμηση του υλικού: Αποτιμήστε το σύστημά σας. Στόχοι

12/5/18. Αποτίµηση του υποσυστήµατος CPU. Κεφάλαιο 6. Κατανόηση και εκτίμηση του υλικού: Αποτιμήστε το σύστημά σας. Στόχοι 12/5/18 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 6 Κατανόηση και εκτίμηση του υλικού: Αποτιμήστε το σύστημά σας Η ιδανική ψηφιακή συσκευή σας Αποτίµηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας.

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας. Δεδομένα Πληροφορίες Δεδομένα: Μια ομάδα από σύμβολα, αριθμούς, λέξεις που αντιπροσωπεύουν κάτι και θα χρησιμοποιηθούν σε μια επεξεργασία. Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα,

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 1- MULTIPLE CHOICE

ΜΑΘΗΜΑ 1- MULTIPLE CHOICE ΜΑΘΗΜΑ 1- MULTIPLE CHOICE 1. Ποιος τύπος Η/Υ χρησιμοποιείται για την λειτουργία συστημάτων και βάσεων δεδομένων μεγάλων εταιρειών; a) Επιτραπέζιος Η/Υ b) Προσωπικός Ψηφιακός Βοηθός c) Μεγάλο σύστημα d)

Διαβάστε περισσότερα

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

Διαβάστε περισσότερα

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων Λειτουργικά Συστήματα Ι Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων Δομή Η/Υ Ο Η/Υ αποτελείται από δυο βασικά στοιχεία: Υλικό (το ηλεκτρονικό-μηχανικό μέρος πχ συσκευές, πλακέτες κλπ) Λογισμικό

Διαβάστε περισσότερα

Μαθαίνοντας το hardware του αναπτυξιακού

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

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

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή 1.5.1 Ανάλυση των μερών ενός υπολογιστή Μονάδα συστήματος Είναι το κουτί του υπολογιστή το οποίο φαίνεται αρκετά συμπαγές, αλλά στην πραγματικότητα αποτελείται

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects) ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ Τίτλος Μαθήματος Μικροελεγκτές και Ενσωματωμένα συστήματα Ανάπτυξη και Εφαρμογές Κωδικός Μαθήματος Μ2 Θεωρία / Εργαστήριο Θεωρία + Εργαστήριο Πιστωτικές μονάδες 4 Ώρες Διδασκαλίας 2Θ+1Ε

Διαβάστε περισσότερα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΔΙΑΝΟΜΗΣ LINUX ΠΡΟΣΑΡΜΟΣΜΕΝΗΣ ΣΤΙΣ ΑΝΑΓΚΕΣ ΤΟΥ ΤΜΗΜΑΤΟΣ Η.Υ.Σ.

ΑΝΑΠΤΥΞΗ ΔΙΑΝΟΜΗΣ LINUX ΠΡΟΣΑΡΜΟΣΜΕΝΗΣ ΣΤΙΣ ΑΝΑΓΚΕΣ ΤΟΥ ΤΜΗΜΑΤΟΣ Η.Υ.Σ. Ανώτατο Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά ΑΝΑΠΤΥΞΗ ΔΙΑΝΟΜΗΣ LINUX ΠΡΟΣΑΡΜΟΣΜΕΝΗΣ ΣΤΙΣ ΑΝΑΓΚΕΣ ΤΟΥ ΤΜΗΜΑΤΟΣ Η.Υ.Σ. Σπουδαστής: Τσεσμελής Θεόδωρος Εισηγητής Καθηγητής: Πρεζεράκος Γεώργιος Ανάπτυξη

Διαβάστε περισσότερα

Linux Terminal Server Project

Linux Terminal Server Project Linux Terminal Server Project Ένα κεντρικό σύστημα διαχείρισης των τερματικών κοινού της Βιβλιοθήκης & Κέντρου Πληροφόρησης του Πανεπιστημίου Μακεδονίας Κολοβός Φίλιππος filippos@uom.gr Ευάγγελος Μπάνος

Διαβάστε περισσότερα

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος Δρ. Μηνάς Δασυγένης mdasyg@ieee.org 1 1 Οι εταιρείες παραγωγής IC διαφημίζουν εκτός από τους επεξεργαστές και τα chipset τους 2 2 Τι είναι όμως

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Linux με τη χρήση κονσόλας

Linux με τη χρήση κονσόλας Linux με τη χρήση κονσόλας Κεφάλαιο 1 Κείμενα Χρυσούλα Παπάζογλου Πανεπιστήμιο Μακεδονίας, Βιβλιοθήκη και Κέντρο Πληροφόρησης Υπηρεσία Ασύγχρονης Τηλεκπαίδευσης Θεσσαλονίκη, Μάρτης 2009 Το υλικό διατίθεται

Διαβάστε περισσότερα

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

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

Διαβάστε περισσότερα

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

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

Ενότητα Β1 κεφ.2 ο «Σο Εσωτερικό του Τπολογιστή» 1 2 1) ΚΟΤΣΙ ΤΠΟΛΟΓΙΣΗ (computer case): το κύριο κουτί που περικλείει τις βασικές συσκευές του υπολογιστή (επεξεργαστή, αποθήκες, RAM). 2) ΜΗΣΡΙΚΗ (motherboard): η πιο μεγάλη κάρτα πάνω στην οποία βρίσκεται

Διαβάστε περισσότερα

Μάθημα 4.2 Η μητρική πλακέτα

Μάθημα 4.2 Η μητρική πλακέτα Μάθημα 4.2 Η μητρική πλακέτα - Εισαγωγή - Οι βάσεις του επεξεργαστή και της μνήμης - Οι υποδοχές της μητρικής πλακέτας - Άλλα μέρη της μητρική πλακέτας - Τυποποιήσεις στην κατασκευή μητρικών πλακετών Όταν

Διαβάστε περισσότερα

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΡΓΑΣΙΑ ΜΕ ΤΙΤΛΟ ΕΠΕΞΕΡΓΑΣΤΕΣ - CPU Μπακρατσάς Γιώργος geback007@yahoo.gr Δεκέμβριος, 2014 Περιεχόμενα ΕΙΣΑΓΩΓΗ... 3 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 4 ΧΡΟΝΟΛΟΓΙΕΣ

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 1 Ψηφιακός Κόσμος ΚΕΦΑΛΑΙΟ 1 Ψηφιακός Κόσμος Τι σημαίνει ο όρος ψηφιακό ; Όλα τα φυσικά φαινόμενα που συμβαίνουν στη φύση είναι αναλογικές διαδικασίες. Ένα αναλογικό σύστημα λοιπόν μπορεί να λάβει άπειρες συνεχόμενες τιμές

Διαβάστε περισσότερα

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

Διαβάστε περισσότερα

MULTIPLE CHOICE REVISION: ΜΑΘΗΜΑ 1-2

MULTIPLE CHOICE REVISION: ΜΑΘΗΜΑ 1-2 MULTIPLE CHOICE REVISION: ΜΑΘΗΜΑ 1-2 1. Ποιος τύπος Η/Υ χρησιμοποιείται για την λειτουργία συστημάτων και βάσεων δεδομένων μεγάλων εταιρειών; a) Επιτραπέζιος Η/Υ b) Προσωπικός Ψηφιακός Βοηθός c) Μεγάλο

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ Απαντήσεις στις ερωτήσεις του βιβλίου ΚΕΦΑΛΑΙΟ 3 1. 2. Από ποια στοιχεία αποτελείται το κεντρικό μέρος ενός υπολογιστή και ποια η λειτουργία καθενός; Κεντρική Μονάδα επεξεργασίας

Διαβάστε περισσότερα

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή Κεφάλαιο 3 Το υλικό του υπολογιστή Εισαγωγή Τµήµατα του Η/Υ καιοργάνωση Μονάδα Κεντρικής Μνήµης Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Εισόδου Εξόδου ίαυλοι Επικοινωνίας Εναλλακτικές αρχιτεκτονικές

Διαβάστε περισσότερα

Ενσωµατωµένα Συστήµατα

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2 Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου Ενότητα 2 Τι είναι το PLC ΠΕΡΙΕΧΟΜΕΝΑ 2 Τι είναι το PLC. 2.1 Πλεονεκτήματα των PLC. 2.2 Η δομή ενός PLC. 2.3 Τα PLC της αγοράς. 2.4 Αρχή λειτουργίας ενός PLC.

Διαβάστε περισσότερα

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ Μνήμες (Memory) - Είναι ημιαγώγιμα κυκλώματα που μπορούν να αποθηκεύσουν ένα σύνολο από δυαδικά ψηφία (bit). - Μια μνήμη αποθηκεύει λέξεις (σειρές από bit). - Σε κάθε

Διαβάστε περισσότερα

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

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Άριστος Πασιάς 1 ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Η ΔΟΜΗ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Άριστος Πασιάς Σεπτέμβριος 2017 2 Στόχοι: Στο τέλος αυτού του μαθήματος ο μαθητή πρέπει: Να μπορεί να αναφέρει τα κύρια χαρακτηριστικά

Διαβάστε περισσότερα

ΜΑΡΙΑ ΚΑΤΕΛΑΝΟΥ ΤΜΗΜΑ: Γ 1

ΜΑΡΙΑ ΚΑΤΕΛΑΝΟΥ ΤΜΗΜΑ: Γ 1 ΜΑΡΙΑ ΚΑΤΕΛΑΝΟΥ ΤΜΗΜΑ: Γ 1 ΥΛΙΚΟ & ΛΟΓΙΣΜΙΚΟ ΛΟΓΙΣΜΙΚΟ ΚΑΤΗΓΟΡΙΕΣ ΛΟΓΙΣΜΙΚΟΥ ΥΛΙΚΟ ΚΕΝΤΡΙΚΗ ΜΟΝΑΔΑ ΚΥΡΙΑ ΜΝΗΜΗ ΣΥΣΚΕΥΕΣ ΕΙΣΟΔΟΥ & ΕΞΟΔΟΥ ΣΥΣΚΕΥΕΣ ΕΙΣΟΔΟΥ ΣΥΣΚΕΥΕΣ ΕΞΟΔΟΥ ΑΠΟΘΗΚΕΥΤΙΚΑ ΜΕΣΑ ΠΗΓΕΣ Κάθε υπολογιστής

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Λογισμικό. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Λογισμικό. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Λογισμικό ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Αλληλεπίδραση Συστημάτων Χρήστες Λογισμικό Εφαρμογών Λειτουργικό Σύστημα Επιπλέον

Διαβάστε περισσότερα

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

Διαβάστε περισσότερα

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Προεπισκόπηση Παρουσίασης Διαδραστικοί Πίνακες

Προεπισκόπηση Παρουσίασης Διαδραστικοί Πίνακες Οριζόντιο Έργο Υποστήριξης Σχολείων, Εκπαιδευτικών και Μαθητών στο Δρόμο για το ΨΗΦΙΑΚΟ ΣΧΟΛΕΙΟ, νέες υπηρεσίες Πανελλήνιου Σχολικού Δικτύου και Στήριξη του ΨΗΦΙΑΚΟΥ ΣΧΟΛΕΙΟΥ Δράση Α8 Πρακτική εκπαίδευση

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Υλοποίηση δικτύου ασύρματης ραδιοεπικοινωνίας μεταξύ δύο ενσωματωμένων κόμβων (κόμβος ταυτοποίησης

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Bread Online Σχεδιασμός και μετατροπή μιας απλής οικιακής συσκευής σε επαναπρογραμματιζόμενη συσκευή IP Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών

Διαβάστε περισσότερα

Εισαγωγή στην Αρχιτεκτονική Η/Υ

Εισαγωγή στην Αρχιτεκτονική Η/Υ Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2017-18 Εισαγωγή στην Αρχιτεκτονική (θεμελιώδεις αρχές λειτουργίας των υπολογιστών) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία Σήματος

Ψηφιακή Επεξεργασία Σήματος ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ψηφιακή Επεξεργασία Σήματος Ενότητα Α: Περιγραφή και Τεχνικά Χαρακτηριστικά της κάρτας TMS320C5505 ezdsp Όνομα Καθηγητή: Ραγκούση

Διαβάστε περισσότερα

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

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα Μάθημα 2ο Εισαγωγή στο GNU/Linux Ύλη Μαθημάτων ΙΙ Μαθ. 2 : Εισαγωγή στο GNU/Linux Διανομές GNU/Linux, Filesystem/Δικαιώματα, Διανομές live σε VirtualBox,

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Αποτίμηση ενός υπολογιστή 1

Αποτίμηση ενός υπολογιστή 1 0 Πληροφορική Ι - Ιωάννης Γιώτης 10/11/16 Θέματα κεφαλαίου Πληροφορική Ι Ιωάννης Γιώτης Κατανόηση και εκτίμηση του υλικού: Αποτιμήστε το σύστημά σας 10/11/16 Αποτίμηση του υπο της μνήμης Αποτίμηση του

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ

ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ kv@hua.gr Στόχος Μαθήματος Εισαγωγή σε Βασικούς Όρους Πληροφορικής και Τηλεματικής. Εφαρμογές Τηλεματικής. Αναφορά στις κοινωνικές επιπτώσεις των Υπολογιστών.

Διαβάστε περισσότερα

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους.

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. *Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε ονομάζονται συνολικά υλικό (hardware). * * υπερυπολογιστές

Διαβάστε περισσότερα

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου 1. Τι ονομάζουμε κόμβο και τι σύνδεσμο σε μια μη γραμμικά διαρθρωμένη ύλη; Με την έννοια σύνδεσμος (link) σε μια μη γραμμικά διαρθρωμένη

Διαβάστε περισσότερα

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Τα 4 Είδη Των Αρχιτεκτονικών Των Σύγχρονων Η/Υ Ο Michael J. Flynn 1 το 1966 πρότεινε τον χωρισμό

Διαβάστε περισσότερα

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

Κεφάλαιο 2.4: Εργασία με εικονίδια Κεφάλαιο 2.4: Εργασία με εικονίδια 2.4.1 Συχνότερα εμφανιζόμενα εικονίδια των Windows Τα πιο συνηθισμένα εικονίδια, που μπορεί να συναντήσουμε, είναι: Εικονίδια συστήματος: Τα Windows εμφανίζουν τα στοιχεία

Διαβάστε περισσότερα

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 1 : Οργάνωση και Αρχιτεκτονική υπολογιστών Καρβούνης Ευάγγελος Εισαγωγή Τεράστια ποικιλία προϊόντων ως προς

Διαβάστε περισσότερα

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή - Εισαγωγή - Αρχιτεκτονική προσωπικού υπολογιστή - Βασικά τμήματα ενός προσωπικού υπολογιστή - Η κεντρική μονάδα Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς:

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα1 Υλικό Λογισμικό και Εφαρμογές Κεφ1: Υλικό Υπολογιστών - Hardware Τι ονομάζουμε υλικό υπολογιστών; Με τον όρο υλικό (hardware) αναφερόμαστε σε οτιδήποτε έχει μια φυσική-υλική υπόσταση σε ένα υπολογιστικό

Διαβάστε περισσότερα

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

Διαβάστε περισσότερα

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

Διαβάστε περισσότερα

4 η γενιά ( δεκαετία 70 έως σήμερα) Δομικό Στοιχείο : Ολοκληρωμένο κύκλωμα ή τσιπ μεγάλης κλίμακας ολοκλήρωσης.

4 η γενιά ( δεκαετία 70 έως σήμερα) Δομικό Στοιχείο : Ολοκληρωμένο κύκλωμα ή τσιπ μεγάλης κλίμακας ολοκλήρωσης. Γενιές Η/Υ Χωρίζουμε τη χρονική περίοδο από τη στιγμή της εμφάνισης του πρώτου Η/Υ (του ENIAC) μέχρι σήμερα σε χρονικά διαστήματα, τα οποία καθορίζονται από αλλαγές στην τεχνολογία κατασκευής των Η/Υ και

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΑΣ ΥΠΟΔΟΜΩΝ, ΝΑΥΤΙΛΙΑΣ & ΤΟΥΡΙΣΜΟΥ ΑΠΟΦΑΣΗ ΕΠΙ ΔΗΛΩΣΗΣ ΣΗΜΑΤΟΣ ΑΠΟΦΑΣΗ ΕΞ 4288 /11.08.2015

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΑΣ ΥΠΟΔΟΜΩΝ, ΝΑΥΤΙΛΙΑΣ & ΤΟΥΡΙΣΜΟΥ ΑΠΟΦΑΣΗ ΕΠΙ ΔΗΛΩΣΗΣ ΣΗΜΑΤΟΣ ΑΠΟΦΑΣΗ ΕΞ 4288 /11.08.2015 ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΑΣ ΥΠΟΔΟΜΩΝ, ΝΑΥΤΙΛΙΑΣ & ΤΟΥΡΙΣΜΟΥ ΑΠΟΦΑΣΗ ΕΠΙ ΔΗΛΩΣΗΣ ΣΗΜΑΤΟΣ ΑΠΟΦΑΣΗ ΕΞ 4288 /11.08.2015 Σύμφωνα με: α) τις διατάξεις των άρθρων 123, 124, 135 και 136 του Ν. 4072/2012

Διαβάστε περισσότερα

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 1: Βασικές Έννοιες Λειτουργικών Συστημάτων

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

Προηγμένες Υπολογιστικές Υπηρεσίες για την Ερευνητική και Ακαδημαϊκή Κοινότητα ΠΙΝΑΚΑΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΔΗΜΟΣΙΑΣ ΔΙΑΒΟΥΛΕΥΣΗΣ

Προηγμένες Υπολογιστικές Υπηρεσίες για την Ερευνητική και Ακαδημαϊκή Κοινότητα ΠΙΝΑΚΑΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΔΗΜΟΣΙΑΣ ΔΙΑΒΟΥΛΕΥΣΗΣ Προηγμένες υπηρεσίες μεταδόσεων και τηλεδιασκέψεων Πράξη: Αναθέτουσα Αρχή: Προηγμένες Υπολογιστικές Υπηρεσίες για την Ερευνητική και Ακαδημαϊκή Κοινότητα Εθνικό Δίκτυο Έρευνας και Τεχνολογίας Α.Ε. ΠΙΝΑΚΑΣ

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών 1 Οργάνωση υπολογιστών ΚΜΕ Κύρια Μνήμη Υποσύστημα εισόδου/εξόδου 2 Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) R1 R2 ΑΛΜ

Διαβάστε περισσότερα

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή Στόχοι Μαθήματος: Να γνωρίσετε τις βασικές λειτουργίες ενός Η/Υ. Να γνωρίσετε τις έννοιες δεδομένα, πληροφορία, επεξεργασία,

Διαβάστε περισσότερα

Τι είναι το HARDWARE στην σημερινή εποχή; Σελίδα 3 Το καθένα από αυτά σε τι χρησιμεύει; Σελίδα 4

Τι είναι το HARDWARE στην σημερινή εποχή; Σελίδα 3 Το καθένα από αυτά σε τι χρησιμεύει; Σελίδα 4 H A R D W A R E Τι είναι το HARDWARE στην σημερινή εποχή; Σελίδα 3 Το καθένα από αυτά σε τι χρησιμεύει; Σελίδα 4 Επεξεργαστής Σελίδα 4 Κύρια μνήμη Σελίδα 5 Κάρτα γραφικών Σελίδα 5 Οθόνη Σελίδα 6 Οδηγός

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα 4o Εργαστήριο Σ.Α.Ε Ενότητα : Μελέτη και Σχεδίαση Σ.Α.Ε Με χρήση του MATLAB Aναστασία Βελώνη Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΣΤΟΧΟΙ: 1. Λογισμικό 2. Λογισμικό Λειτουργικού Συστήματος 3. Προσαρμοστικό Γραφικών Χρήστη 4. Λογισμικών Εφαρμογών 5. Διαφορά Μεταξύ Λογισμικού Λειτουργικού Συστήματος Και

Διαβάστε περισσότερα

Βασικές Έννοιες Πληροφορικής

Βασικές Έννοιες Πληροφορικής Βασικές Έννοιες Πληροφορικής 1. Τι είναι ο Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι οποιαδήποτε συσκευή μεγάλη ή μικρή που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το Υλικό του Υπολογιστή ΠΡΟΒΛΗΜΑ ΔΕΔΟΜΕΝΑ (Είναι τα στοιχεία που δίνουμε για λυθεί το πρόβλημα) ΕΠΕΓΕΡΓΑΣΙΑ (Είναι οι σκέψεις και οι πράξεις που

Διαβάστε περισσότερα

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αρχιτεκτονική Eckert-von Neumann εισόδου μεταφορά δεδομένων από έξω προς τον Η/Υ εξόδου μεταφορά δεδομένων από τον Η/Υ προς τα έξω ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Κύκλος Μηχανής κεντρικός έλεγχος/πράξεις

Διαβάστε περισσότερα

Information Technology for Business

Information Technology for Business Information Technology for Business Lecturer: N. Kyritsis, MBA, Ph.D. Candidate e-mail: kyritsis@ist.edu.gr Computer System Hardware Υποδομή του Information Technology Υλικό Υπολογιστών (Hardware) Λογισμικό

Διαβάστε περισσότερα

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου Θέματα διπλωματικών εργασιών σε συστοιχίες παράλληλης εξυπηρέτησης εφαρμογών Διαδικτύου Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής

Διαβάστε περισσότερα

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης Ενότητα: Λειτουργικά Συστήµατα, Συστήµατα Batch και Time Sharing Γεώργιος Σκιάνης Γεωλογίας και Γεωπεριβάλλοντος Σελίδα 2 1. Περιεχόµενα ενότητας...

Διαβάστε περισσότερα

«ΠΡΟΜΗΘΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΕΡΙΦΕΡΙΑΚΩΝ ΣΥΣΚΕΥΩΝ» ΤΟΥ ΔΗΜΟΥ ΙΩΑΝΝΙΤΩΝ ΤΕΧΝΙΚΗ ΜΕΛΕΤΗ

«ΠΡΟΜΗΘΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΕΡΙΦΕΡΙΑΚΩΝ ΣΥΣΚΕΥΩΝ» ΤΟΥ ΔΗΜΟΥ ΙΩΑΝΝΙΤΩΝ ΤΕΧΝΙΚΗ ΜΕΛΕΤΗ «ΠΡΟΜΗΘΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΕΡΙΦΕΡΙΑΚΩΝ ΣΥΣΚΕΥΩΝ» ΤΟΥ ΔΗΜΟΥ ΙΩΑΝΝΙΤΩΝ ΤΕΧΝΙΚΗ ΜΕΛΕΤΗ ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ : 49999,50 ΕΥΡΩ ΜΕ Φ.Π.Α. Κ.Α. : 70.01.7134.001 ΕΤΟΣ : 2015 ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΑΠΟΚΕΝΤΡΩΜΕΝΗ

Διαβάστε περισσότερα

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ηλεκτρονική Υγεία Εργαστήριο 4 ο : MATLAB Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες

Διαβάστε περισσότερα

Raspberry PI 3. Στο σχολείο

Raspberry PI 3. Στο σχολείο Raspberry PI 3 Στο σχολείο Τι είναι το Raspberry PI «Το Raspberry Pi είναι ένας υπολογιστής μεγέθους πιστωτικής κάρτας που συνδέεται στην τηλεόρασή σας και ένα πληκτρολόγιο. Είναι ένας ικανός μικρός υπολογιστής

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

Διαβάστε περισσότερα

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

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα