Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 11

Θέμα: Απορία για Bootloader

  1. #1
    Μέλος Το avatar του χρήστη agis68
    Όνομα
    Αγις
    Εγγραφή
    Mar 2009
    Περιοχή
    ΑθΗΝΑ Πατήσσια
    Μηνύματα
    2.580

    Προεπιλογή Απορία για Bootloader

    Ισως φανεί μια χαζή απορία στους γνώστες. Αλλά επειδή δεν βρήκα κάτι που να μου λύνει την απορία στο νετ τη καταθέτω εδώ.

    Δοκιμάζω διάφορα duino-clones μερικά τα έχω αγοράσει και άλλα που έχω φτιάξει εγώ είτε με atmega 8 ή και μεγαλύτερο.

    Πως ξέρω κάθε φορά το σωστό bootloader που κουβαλάει το τσιπάκι. Πως ελέγχω την έκδοση? Είναι καλύετρα να δουλεύω με ASCII ωστε να αποφύγω πιθανά προβλήματα?




    ευχαριστώ

    0 Not allowed! Not allowed!
    "Την Άνοιξη αν δεν τη βρεις τη φτιάχνεις!"
    Οδ.Ελύτης

  2. #2
    Μέλος
    Όνομα
    .
    Εγγραφή
    Sep 2011
    Περιοχή
    .
    Μηνύματα
    802

    Προεπιλογή

    Αυτα που εχεις φτιαξει εσυ λογικα δεν εχουν bootloader, το chip ειναι κενο οταν το περνεις και χρειαζεσε καποιον programmer (ή καποιο arduino ως ICSP, εχει πολλα παραδειγματα στο νετ) για να του περασεις bootloader ή οποιοδηποτε αλλο προγραμμα. Τα τα διαφορα ετοιμα clones δεν ξερω αν εχουν bootloader ή πρεπει να βαλεις, χωρις να εχω αςχοληθει πολυ με arduino λογικα θα μπορουν να παρουν το bootloader του arduino.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Ο κάθε μΕ έχει έναν δικό του Bootloader, αν βάλεις απο Arduino απλά θα μπορείς να το προγραμματίζεις μέσω σειριακής έχει και bootloaders για άλλες μορφές επικοινωνίας. Τι εννοείς με ASCII ;

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Όλοι οι μ/Ε της Atmel βασίζουν τους διάφορους bootloaders στο πρωτόκολο STK500. Δεν μπορεί να προγραμματιστεί κάποιος απο αυτούς αν δεν ακολουθηθούν οι κανόνες αυτού του πρωτοκόλλου. Αν θα ήταν δυνατόν, μήπως θα μπορούσες να δώσεις μια παραπάνω εξήγηση στο "σωστό bootloader που κουβαλάει το τσιπάκι";

    Μπορείς να διαβάσεις εδώ:

    http://www.atmel.com/images/doc2591.pdf για το πρωτόκολλο αυτό. Απο όσα ξέρω, κάθε μ/Ε γνωστών εταιρειών, για να εγγράψει στη μνήμη προγράμματος τον κώδικα μηχανής ενός hex αρχείου με bootloader ενσωματωμένο, πρέπει να ακολουθήσει κάποιους κανόνες που ορίζονται απο τη μορφή του ίδιου του hex αρχείου. Για παράδειγμα, ένα hex file ενός AVR μ/Ε έχει αυτή τη μορφή (ο κώδικας τυχαίος):

    :10 0000 00 0C9434000C944F00 0C944F000C944F00 4F
    :10 0010 00 0C944F000C944F00 0C944F000C944F00 24
    :10 0020 00 0C944F000C944F00 0C944F000C944F00 14
    :10 0030 00 0C944F000C944F00 0C944F000C944F00 04
    :10 0040 00 0C944F000C944F00 0C944F000C944F00 F4
    :10 0050 00 0C944F000C944F00 0C944F000C944F00 E4
    :10 0060 00 0C944F000C944F00 11241FBECFEFD4E0 2E
    :10 0070 00 DEBFCDBF11E0A0E0 B1E0E8EFF0E002C0 EC
    :10 0080 00 05900D92A030B107 D9F711E0A0E0B1E0 E2
    :10 0090 00 01C01D92A030B107 E1F70C9467000C94 E9
    :10 00A0 00 00008FEF84B987B9 8EEF8AB9089501C0 37
    :10 00B0 00 0197009759F020E0 0000000000000000 C8
    :10 00C0 00 000000002F5F2A35 99F3F6CF08958FEF D7
    :10 00D0 00 84B987B98EEF8AB9 8FEF88B985B98BB9 A2
    :10 00E0 00 84EF91E00E945700 18B815B81BB884EF 50
    :08 00F0 00 91E00E945700F0CF DF
    :00 0000 01 FF

    Αρχίζοντας απο την πρώτη γραμμή, έχουμε πάντα colon (, σύμφωνα με το πρώτυπο Intel HEX:

    :10 = Αριθμός bytes που ακολουθούν, 0x10 (hex) ή 16(dec) bytes
    0000
    = Αριθμός γραμμής ή η διεύθυνση μνήμης προγράμματος στην οποία αντιστοιχεί η πληροφορία που ακολουθεί
    00 = Τύπος data (δυο ψηφία), εκ των οποίων η μορφή μπορεί να είναι 00, 01, 02, 03, 04, 05 (στο τέλος η αναφορά για το τι σημαίνουν αυτά)
    0C9434000C944F00 0C944F000C944F00 = 16 bytes πληροφορίας
    4F = checksum των 16 bytes που εγγράφηκαν παραπάνω. Είναι το άθροισμα όλων των 16 bytes σε modulo 256 (%256) και τέλος το συμπλήρωμα αυτού ως προς 2.
    :00 0000 01 FF = τέλος αρχείου, έχει πάντα αυτή τη μορφή.

    Τώρα, για να γραφτεί όλο αυτό στη μνήμη προγράμματος με self writing πρέπει οπωσδήποτε να υπάρχει ήδη προ-εγγεγραμμένος στη μνήμη αυτή ένας bootloader. Αυτός, με το που ενεργοποιηθεί με τάση ο μ/Ε, συνεχώς διαβάζει τη σειριακή περιμένοντας για το colon (. Μόλις δεί αυτό, ο κώδικας του bootloader εκτελεί συνεχώς ρουτίνες που εξασφαλίζουν την ανάγνωση καθενός απο τα πεδία που σου έγραψα παραπάνω. Αν σε κάποιο απο τα colon δεί 00 000 01 FF, κλείνει την εγγραφή, επανεκκινεί τον μ/Ε απο την αρχή του κανονικού προγράμματος.

    Για αυτό δεν μπορώ να καταλάβω τι εννοείς με "σωστό bootloader που κουβαλάει το τσιπάκι"... Όλοι οι bootloaders έτσι δουλεύουν...



    Υ.Γ.: Συγχωρήστε με αν κάνω κάποια λάθη, υπάρχουν πιο σοφοί για να εξηγήσουν ακριβώς τι συμβαίνει...



    0 Not allowed! Not allowed!

  5. Ένα μέλος ευχαρίστησε τον manolena για αυτό το χρήσιμο μήνυμα:

    tasos987 (21-12-14)

  6. #5
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.381

    Προεπιλογή

    δεν έχω χρησημοποιήσει ποτέ bootloader , αλλά από οτι γνωρίζω είναι λειτουργία, για να μπορεί να ξαναπρογραμματίσει τη flash του, σε πετίπτωση ανάβαθμισης απο το χρήστη(και όχι μονο) χωρίς προγραμματιστή,
    Προφανώς με σηριακό ή usb interface.
    Οπότε σωστός bootloader τι σημαίνει όπως είπε και ο μάνος?

    0 Not allowed! Not allowed!

  7. #6
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Όλοι οι μ/Ε της Atmel βασίζουν τους διάφορους bootloaders στο πρωτόκολο STK500. Δεν μπορεί να προγραμματιστεί κάποιος απο αυτούς αν δεν ακολουθηθούν οι κανόνες αυτού του πρωτοκόλλου. Αν θα ήταν δυνατόν, μήπως θα μπορούσες να δώσεις μια παραπάνω εξήγηση στο "σωστό bootloader που κουβαλάει το τσιπάκι";

    Μπορείς να διαβάσεις εδώ:

    http://www.atmel.com/images/doc2591.pdf για το πρωτόκολλο αυτό. Απο όσα ξέρω, κάθε μ/Ε γνωστών εταιρειών, για να εγγράψει στη μνήμη προγράμματος τον κώδικα μηχανής ενός hex αρχείου με bootloader ενσωματωμένο, πρέπει να ακολουθήσει κάποιους κανόνες που ορίζονται απο τη μορφή του ίδιου του hex αρχείου. Για παράδειγμα, ένα hex file ενός AVR μ/Ε έχει αυτή τη μορφή (ο κώδικας τυχαίος):

    :10 0000 00 0C9434000C944F00 0C944F000C944F00 4F
    :10 0010 00 0C944F000C944F00 0C944F000C944F00 24
    :10 0020 00 0C944F000C944F00 0C944F000C944F00 14
    :10 0030 00 0C944F000C944F00 0C944F000C944F00 04
    :10 0040 00 0C944F000C944F00 0C944F000C944F00 F4
    :10 0050 00 0C944F000C944F00 0C944F000C944F00 E4
    :10 0060 00 0C944F000C944F00 11241FBECFEFD4E0 2E
    :10 0070 00 DEBFCDBF11E0A0E0 B1E0E8EFF0E002C0 EC
    :10 0080 00 05900D92A030B107 D9F711E0A0E0B1E0 E2
    :10 0090 00 01C01D92A030B107 E1F70C9467000C94 E9
    :10 00A0 00 00008FEF84B987B9 8EEF8AB9089501C0 37
    :10 00B0 00 0197009759F020E0 0000000000000000 C8
    :10 00C0 00 000000002F5F2A35 99F3F6CF08958FEF D7
    :10 00D0 00 84B987B98EEF8AB9 8FEF88B985B98BB9 A2
    :10 00E0 00 84EF91E00E945700 18B815B81BB884EF 50
    :08 00F0 00 91E00E945700F0CF DF
    :00 0000 01 FF

    Αρχίζοντας απο την πρώτη γραμμή, έχουμε πάντα colon (, σύμφωνα με το πρώτυπο Intel HEX:

    :10 = Αριθμός bytes που ακολουθούν, 0x10 (hex) ή 16(dec) bytes
    0000
    = Αριθμός γραμμής ή η διεύθυνση μνήμης προγράμματος στην οποία αντιστοιχεί η πληροφορία που ακολουθεί
    00 = Τύπος data (δυο ψηφία), εκ των οποίων η μορφή μπορεί να είναι 00, 01, 02, 03, 04, 05 (στο τέλος η αναφορά για το τι σημαίνουν αυτά)
    0C9434000C944F00 0C944F000C944F00 = 16 bytes πληροφορίας
    4F = checksum των 16 bytes που εγγράφηκαν παραπάνω. Είναι το άθροισμα όλων των 16 bytes σε modulo 256 (%256) και τέλος το συμπλήρωμα αυτού ως προς 2.
    :00 0000 01 FF = τέλος αρχείου, έχει πάντα αυτή τη μορφή.

    Τώρα, για να γραφτεί όλο αυτό στη μνήμη προγράμματος με self writing πρέπει οπωσδήποτε να υπάρχει ήδη προ-εγγεγραμμένος στη μνήμη αυτή ένας bootloader. Αυτός, με το που ενεργοποιηθεί με τάση ο μ/Ε, συνεχώς διαβάζει τη σειριακή περιμένοντας για το colon (. Μόλις δεί αυτό, ο κώδικας του bootloader εκτελεί συνεχώς ρουτίνες που εξασφαλίζουν την ανάγνωση καθενός απο τα πεδία που σου έγραψα παραπάνω. Αν σε κάποιο απο τα colon δεί 00 000 01 FF, κλείνει την εγγραφή, επανεκκινεί τον μ/Ε απο την αρχή του κανονικού προγράμματος.

    Για αυτό δεν μπορώ να καταλάβω τι εννοείς με "σωστό bootloader που κουβαλάει το τσιπάκι"... Όλοι οι bootloaders έτσι δουλεύουν...



    Υ.Γ.: Συγχωρήστε με αν κάνω κάποια λάθη, υπάρχουν πιο σοφοί για να εξηγήσουν ακριβώς τι συμβαίνει...


    Αυτό είναι το ΗΕΧ πρότυπο , δεν νομίζω να έχει καμια σχέση με τον bootloader,o bootloader ειναι parser, εσύ μπορείς να κάνεις το δικό σου πρότυπο άλλοστε υπάρχει και το .elf, εγώ πχ γράφω αυτο το αρχέιο και οχι το HEX.

    1 Not allowed! Not allowed!

  8. #7
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Τα αρχεία ELF (Executable and Linkable Format) τα χρησιμοποιεί παραδοσιακά ο AVR-GCC compiler για να κρατά και πληροφορίες debugging μέσα στο AVR Studio. Η Atmel έχει επιλέξει αυτό τον τύπο αρχείου γιατί υπήρχαν παράπονα στον τρόπο προγραμματισμού των μ/Ε, δηλαδή έπρεπε κάθε φορά να προγραμματίζεται ξεχωριστά η flash, ξεχωριστά η EEPROM, ξεχωριστά τα lockbits... Για αυτό και μπήκε στο περιβάλλον του AVR Studio για να τα κάνει όλα μαζί με ένα αρχείο προγραμματισμού.

    Τι σημαίνει Hex πρότυπο; Ένας οποιοσδήποτε compiler δεν παράγει πάντα hex αρχείο; Αυτό δεν προγραμματίζεται στη flash memory ενός μ/Ε; Αν βρώ εγώ τρόπο να κάνω parsing την πληροφορία, δεν θα προγραμματίσω τον μ/Ε;

    0 Not allowed! Not allowed!

  9. #8
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Τα αρχεία ELF (Executable and Linkable Format) τα χρησιμοποιεί παραδοσιακά ο AVR-GCC compiler για να κρατά και πληροφορίες debugging μέσα στο AVR Studio. Η Atmel έχει επιλέξει αυτό τον τύπο αρχείου γιατί υπήρχαν παράπονα στον τρόπο προγραμματισμού των μ/Ε, δηλαδή έπρεπε κάθε φορά να προγραμματίζεται ξεχωριστά η flash, ξεχωριστά η EEPROM, ξεχωριστά τα lockbits... Για αυτό και μπήκε στο περιβάλλον του AVR Studio για να τα κάνει όλα μαζί με ένα αρχείο προγραμματισμού.

    Τι σημαίνει Hex πρότυπο; Ένας οποιοσδήποτε compiler δεν παράγει πάντα hex αρχείο; Αυτό δεν προγραμματίζεται στη flash memory ενός μ/Ε; Αν βρώ εγώ τρόπο να κάνω parsing την πληροφορία, δεν θα προγραμματίσω τον μ/Ε;
    Αυτό εννοώ "Nun soll der Bootloader erweitert werden. Nach dem Kompilieren des Anwendungsprogramms erhalten wir eine Datei Anwendung.hex im Intel-HEX-Format. Da wir im Bootloader diese Daten auswerten mΓΌssen, wollen wir uns kurz mit dem Format beschΓ€ftigen. Das Intel-HEX-Format ist geschaffen worden, um BinΓ€rdaten als ASCII-Daten zu ΓΌbertragen. Jedes Byte ist in Form von zwei ASCII-Zeichen gespeichert, d.h. aus der Zahl 0x4A wird die ASCII-Zeichenfolge "4A". Das bedeutet aber auch, dass aus den BinΓ€rdaten die doppelte Anzahl von Zeichen wird, welche ΓΌbertragen werden mΓΌssen, hinzu kommen noch Steuerzeichen und Zusatzinformationen. Jede Zeile in der Intel-HEX-Datei folgt einem bestimmten Schema, in dem u.a. die Anzahl der Bytes, die Zieladresse und Checksumme stehen."

    To link είναι στα αγγλικά αλλά εν ολίγοις , Ιντελ-ΗΕΧ αρχείο, είχα ξεχάσει να γράψω το intel και εκπαραδρομής έγραψα ΗΕΧ πρότυπο, ΙΝΤΕΛ ΗΕΧ φορμάτ δηλαδή καταφέρνει να μεταδίδει δυαδικές πληροφορίες σάν ASCII χαρακτήρες.
    http://en.wikipedia.org/wiki/Intel_HEX

    0 Not allowed! Not allowed!

  10. #9
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Ναι, όλα αυτά τα γνωρίζω, αυτό που δεν μπορώ να καταλάβω είναι πως αφού τα hex αρχεία έχουν αυτή τη μορφή πάντα και αφού έτσι κι αλλιώς είναι απαραίτητα για τον προγραμματισμό ενός μ/Ε, όλοι οι bootloaders δεν κάνουν την ίδια δουλειά; Όλοι τους δεν καταφέρνουν να διαβάζουν αυτό το format και να εγγράφουν τη flash memory του μ/Ε; Άρα ποιά είναι η διαφορά τους όπως λέει ο Άγης;

    0 Not allowed! Not allowed!

  11. #10
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Δεν ξέρω, ίσως εννοεί την επικοινωνία, serial/usb/CAN/κλπ.

    0 Not allowed! Not allowed!

Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Arduino και bootloader
    By nicksia in forum Μικροελεγκτές
    Απαντήσεις: 10
    Τελευταίο Μήνυμα: 17-05-18, 21:42
  2. CCS,MPLAB,Bootloader
    By Prithan in forum Μικροελεγκτές
    Απαντήσεις: 12
    Τελευταίο Μήνυμα: 11-12-14, 17:13
  3. atmega bootloader helpppp
    By bill.lask in forum Μικροελεγκτές
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 17-10-13, 23:38
  4. BootLoader σε Arduino
    By makridelacos in forum Μικροελεγκτές
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 29-11-11, 23:52

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας