Πίνακας περιεχομένων:

Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)

Βίντεο: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)

Βίντεο: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)
Βίντεο: rusEFI orange pi zero+ wifi java setup 2024, Ιούλιος
Anonim
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows

ΠΡΟREΠΟΘΕΣΕΙΣ:

Θα χρειαστείτε

  1. Ένας (επιτραπέζιος) υπολογιστής με Windows.
  2. Μια σύνδεση στο Διαδίκτυο.
  3. Ένας πίνακας Πορτοκαλί PI.

Το τελευταίο είναι προαιρετικό, αλλά είμαι σίγουρος ότι το έχετε ήδη. Διαφορετικά Δεν θα διαβάσετε αυτό το διδακτικό.

Όταν αγοράζετε τον υπολογιστή μονής πλακέτας Orange PI παραμένει μόνο ένα κομμάτι νεκρού μετάλλου μέχρι να διαμορφωθεί σωστά. Και το κύριο αρχείο διαμόρφωσης: "script.bin" είναι το πρώτο κλειδί που το ζωντανεύει. Αυτό το αρχείο βρίσκεται στο διαμέρισμα εκκίνησης της κάρτας SD με δυνατότητα εκκίνησης. Και ευτυχώς για εμάς, στις περισσότερες από τις διανομές Linux από τον Επίσημο ιστότοπο (https://www.orangepi.org/downloadresources/) αυτό το διαμέρισμα είναι FAT32 και μπορεί εύκολα να το δει οποιοσδήποτε υπολογιστής Windows. Πραγματικά απλοποιεί τα πράγματα, καθώς δεν υπάρχει ακόμα αξιόπιστος τρόπος για να γράψετε στα διαμερίσματα του Linux ext2 κάτω από τα Windows.

Άτυχος για εμάς το αρχείο διαμόρφωσης script.bin έχει δυαδική μορφή εντελώς εχθρικό για ανθρώπινη επεξεργασία. Κάποιος χρειάζεται κάποιο είδος εργαλείου λογισμικού για να το αποκρυπτογραφήσει και να κρυφτεί πίσω αφού γίνουν οι απαραίτητες τροποποιήσεις. Και υπάρχει ένα τέτοιο σύνολο εργαλείων. Είναι το περιβόητο SUNXI-TOOLS. Η μύγα στην αλοιφή είναι ότι προορίζεται να λειτουργήσει με Linux και είτε πρέπει να κρατήσουμε ένα αποκλειστικό Linux-μηχάνημα μόνο για να χρησιμοποιήσουμε τα sunxi-εργαλεία, είτε να βρούμε έναν τρόπο για να τα μεταγλωττίσουμε για παράθυρα.

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

Βήμα 1: Λήψη εργαλείων Sunxi

Λήψη εργαλείων Sunxi
Λήψη εργαλείων Sunxi
Λήψη εργαλείων Sunxi
Λήψη εργαλείων Sunxi

Αποκτήστε την πιο πρόσφατη (ή απαραίτητη) έκδοση του πηγαίου κώδικα sunxi-tools. Μεταβείτε στη διεύθυνση URL: https://github.com/linux-sunxi/sunxi-tools/releases και επιλέξτε τη λήψη ως αρχείο zip.

Βήμα 2: Αποσυμπιέστε τον κώδικα πηγής

Αποσυμπιέστε τον πηγαίο κώδικα
Αποσυμπιέστε τον πηγαίο κώδικα

Μόλις ολοκληρωθεί η λήψη, αποσυμπιέστε τον πηγαίο κώδικα στο φάκελο της επιλογής σας. (περαιτέρω θα υποθέσω ότι αυτός ο φάκελος είναι c: / sunxitools \, οπότε αντικαταστήστε αυτήν τη διαδρομή με τη δική σας διαδρομή).

Βήμα 3: Λήψη κωδικού:: μπλοκ

Λήψη κωδικού:: μπλοκ
Λήψη κωδικού:: μπλοκ

Εάν έχετε εγκατεστημένο αντίγραφο κάποιου λειτουργικού μεταγλωττιστή c ++ για παράθυρα. και αν γνωρίζετε πώς να το χρησιμοποιήσετε, μπορείτε να προχωρήσετε απευθείας στο βήμα 3. Άλλοι θα πρέπει να αποκτήσουν έναν κατάλληλο μεταγλωττιστή c ++ και ένα κέλυφος (IDE) για να το χρησιμοποιούν άνετα. Η επιλογή μου είναι code:: blocks για Windows μαζί με προεγκατεστημένη εργαλειοθήκη MinGW. Μπορείτε να το πάρετε από εδώ:

Κατεβάστε και εγκαταστήστε το.

Βήμα 4: Δοκιμάστε το IDE σας

Δοκιμάστε το IDE σας
Δοκιμάστε το IDE σας

Για να ελέγξετε αν τα πράγματα είναι εντάξει, ξεκινήστε κωδικούς αποκλεισμούς, κάντε κλικ στην επιλογή "δημιουργία νέου έργου", επιλέξτε "εφαρμογή κονσόλας", επιλέξτε είτε c ή c ++, πληκτρολογήστε τον τίτλο του έργου ολοκλήρωσης αγοράς, κρατήστε τις προεπιλογές ανέγγιχτες στο επόμενο παράθυρο και κάντε κλικ στο "τέλος" ".

Βήμα 5: Πλήρης δοκιμή

Πλήρης δοκιμή
Πλήρης δοκιμή

Στη συνέχεια, κάντε κλικ σε ένα πράσινο τρίγωνο στον επάνω πίνακα του IDE ή χρησιμοποιήστε το μενού Build-> Run. Εάν τα πράγματα πήγαν σωστά Θα πρέπει να δείτε ένα μήνυμα από την αυτόματη δημιουργία της εφαρμογής "Hello world" στο μαύρο παράθυρο "DOS".

Εάν όχι, σημαίνει ότι το IDE και ο μεταγλωττιστής δεν λειτουργούν σωστά και θα πρέπει να διερευνήσετε πώς να το ρυθμίσετε σωστά. Πιθανώς θα πρέπει να κατεβάσετε μια άλλη έκδοση των εργαλείων προγραμματισμού ή να ελέγξετε τα δικαιώματά τους στο τείχος προστασίας/λογισμικό προστασίας από ιούς.

Βήμα 6: Δημιουργία νέου έργου

Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου
Δημιουργία νέου έργου

Τώρα θα πρέπει να έχετε μια λειτουργική εργαλειοθήκη προγραμματιστή C/C ++ και τους μη συσκευασμένους πηγαίους κώδικες sunxi-tools στο φάκελο c: / sunxitools / στον υπολογιστή σας. Itsρθε η ώρα να συγκεντρώσουμε ένα έργο. Δημιουργήστε νέο έργο στο IDE σας. Επιλέξτε το απλό έργο C (όχι c ++) του τύπου "εφαρμογή κονσόλας".

Βεβαιωθείτε ότι δημιουργείτε έργο στο φάκελο c: / sunxitools / και όχι σε κάποιο άλλο μέρος. (Οι κωδικοί αποκλεισμοί EG τείνουν να δημιουργούν έναν υποφάκελο με το ίδιο όνομα με το έργο. Έτσι, αν έχετε ονομάσει το έργο σας, πείτε "test" και προσπαθήστε να το τοποθετήσετε σε c: / sunxitools \, μπορεί να καταλήξετε με το έργο να έχει φύγει σε c: / sunxitools / test / εάν δεν είστε αρκετά προσεκτικοί.) Τα εργαλεία Sunxi περιέχουν πολλά βοηθητικά προγράμματα, αλλά για το σκοπό μας θα χρειαστούμε μόνο ένα: το λεγόμενο βοηθητικό πρόγραμμα "fexc".

Βήμα 7: Προσθήκη αρχείων στο έργο

Προσθήκη αρχείων στο έργο
Προσθήκη αρχείων στο έργο

Ακριβώς το βοηθητικό πρόγραμμα "fexc" είναι υπεύθυνο για τη μετατροπή του script.bin σε μορφή κειμένου και για την πίσω μετατροπή σε δυαδικό. Είναι απαραίτητο το εκτελέσιμο αυτού του βοηθητικού προγράμματος να έχει το όνομα "fexc.exe", οπότε είναι καλό αν έχετε ονομάσει το έργο σας ως "fexc". Ωστόσο, μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο όνομα του έργου, αφού μπορείτε πάντα να μετονομάσετε το εκτελέσιμο μετά τη μεταγλώττιση, ή είτε Μπορείτε να επιλέξετε "Project-> Properties" από το επάνω αναπτυσσόμενο μενού και στο εμφανιζόμενο παράθυρο κάντε κλικ στην καρτέλα "Δημιουργία στόχων", και επεξεργαστείτε το πεδίο "Όνομα αρχείου εξόδου" εκεί για να παρακάμψετε το εκτελέσιμο όνομα.

Στο έργο σας που δημιουργήθηκε αυτόματα Θα πρέπει να προσθέσετε μόνο πέντε αρχεία προέλευσης:

  • fexc.γ
  • script.c
  • script_bin.c
  • script_fex.γ
  • script_uboot.c

και επτά αρχεία κεφαλίδας:

  • list.h (μετακινήστε το από c: / sunxitools / include / folder / c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • έκδοση.η

Βεβαιωθείτε ότι έχετε αποκλείσει το autogenerated main.c από το έργο, επειδή το fexc.c έχει ήδη τη λειτουργία "int main" σε αυτό. (Θυμηθείτε ότι οποιοδήποτε πρόγραμμα πρέπει να έχει μόνο μία κύρια λειτουργία;).

Όλα τα απαραίτητα αρχεία πηγαίου κώδικα βρίσκονται ήδη στον υποφάκελο, όπου έχετε αποσυσκευάσει τους πηγαίους κώδικες. Τα αρχεία κεφαλίδας αξίζουν ένα ζευγάρι λέξεις, από πού να τα βρείτε. "list.h" - βρίσκεται συνήθως στον υποφάκελο "περιλαμβάνει" του συνόλου των μη συσκευασμένων πηγαίων κωδικών. "version.h" - απλά δημιουργήστε το μόνοι σας. Βάλτε εκεί μια συμβολοσειρά όπως:

#define VERSION "Win32"

Στη συνέχεια, αποθηκεύστε και κλείστε το αρχείο. (Μπορείτε να το διακοσμήσετε με #define και #ifdef's αν θέλετε.)

Εάν προσπαθήσετε τώρα να μεταγλωττίσετε το έργο, θα διαμαρτυρηθείτε για πολλά σφάλματα και ένα αρχείο που λείπει. Τα σφάλματα οφείλονται ως επί το πλείστον σε μια υπερβολική ελευθερία στυλ, που χρησιμοποιούσαν οι προγραμματιστές sunxi-tools και το αρχείο που λείπει είναι η εξάρτηση που δεν περιλαμβάνεται στο πακέτο του πηγαίου κώδικα. Ας το αντιμετωπίσουμε βήμα βήμα.

Βήμα 8: Ζητήστε από το Gcc να ακολουθήσει το πρότυπο γλώσσας ISO C 1999

Ακολουθήστε το Gcc Ακολουθήστε το πρότυπο γλώσσας ISO C 1999
Ακολουθήστε το Gcc Ακολουθήστε το πρότυπο γλώσσας ISO C 1999

Προκειμένου ο μεταγλωττιστής να μην παραπονεθεί, το πολύ δωρεάν στυλ προγραμματισμού ορίζει το πρότυπο "с99" της συλλογής. Στα μπλοκ κωδικών μεταβείτε στο μενού "Project -> Build Options" και στο "Compiler Settings -> Compiler Flags" επιλέξτε το πλαίσιο "Have gcc follow the 1999 ISO C standard standard language". Or μπορείτε απλά να προσθέσετε "-std = c99" στη συμβολοσειρά επιλογών του μεταγλωττιστή σας. Τώρα αν προσπαθήσετε να μεταγλωττίσετε το έργο θα πρέπει να αρχίσουν αυτοί οι τόνοι σφαλμάτων και είστε ένα προς ένα με την εξάρτηση που λείπει.

Βήμα 9: Βρείτε τη χαμένη εξάρτηση

Βρείτε τη χαμένη εξάρτηση
Βρείτε τη χαμένη εξάρτηση

Η εξάρτηση που λείπει είναι το αρχείο "mman.h" - η κεφαλίδα κάποιου είδους διαχειριστή μνήμης linux. Τα Windows C εγγενώς δεν έχουν τέτοιο αρχείο, αλλά ευτυχώς υπάρχει μια θύρα των Windows. Μεταβείτε στη διεύθυνση https://github.com/witwall/mman-win32 για Windows. Κατεβάστε το στιγμιότυπο του αποθετηρίου git.

Βήμα 10: Αποσυσκευάστε το Mman

Αποσυσκευάστε το Mman
Αποσυσκευάστε το Mman

Αποσυσκευάστε τα αρχεία mman.c και mman.h, τοποθετήστε τα στο φάκελο c: / sunxitools \.

Βήμα 11: Και προσθέστε τα στο έργο

Και προσθέστε τα στο έργο
Και προσθέστε τα στο έργο

Βήμα 12: Σωστό μονοπάτι

Σωστό Μονοπάτι
Σωστό Μονοπάτι

Και στο αρχείο "fex.c" raplece line:

#περιλαμβάνω

στο

#include "mman.h"

Σε αυτό το βήμα, ο μεταγλωττιστής σας δεν πρέπει να παραπονιέται για τίποτα και θα λάβετε το fexc.exe μακράς αναμονής ως έξοδο. Μην είσαι χαρούμενος πολύ νωρίς. Το βοηθητικό πρόγραμμα δεν είναι ακόμα πλήρως λειτουργικό. Μπορείτε να το διασφαλίσετε αποκρυπτογραφώντας κάποιο έγκυρο αρχείο script.bin στη μορφή κειμένου - αρχείο script.fex με επακόλουθη κρυπτογράφηση του αρχείου script.fex ξανά στο script.bin. Μπορείτε να σημειώσετε ότι το μέγεθος του script.bin που προκύπτει διαφέρει ελαφρώς από το μέγεθος του αρχικού script.bin. Και αν προσπαθήσετε να αποκρυπτογραφήσετε το αποτέλεσμα για άλλη μια φορά, θα αποτύχει. Ούτε το Orange PI θα λειτουργήσει με αυτό το script.bin. Για να αποκτήσουμε το λειτουργικό βοηθητικό πρόγραμμα πρέπει να εκφορτώσουμε μια βόμβα κώδικα, την οποία κάποιος έχει βάλει στον πηγαίο κώδικα sunxi-tools. Θα είναι το επόμενο βήμα μας.

Βήμα 13: Εξορκισμός

Εξορκισμός
Εξορκισμός

Για να εκφορτώσετε τη βόμβα κωδικού ανοίξτε το αρχείο κώδικα fexc.c και βρείτε εκεί μια συμβολοσειρά κειμένου του επόμενου περιεχομένου:

else if ((έξω = ανοιχτό (όνομα αρχείου, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Απλώς αντικαταστήστε το με την επόμενη συμβολοσειρά:

else if ((έξω = ανοιχτό (όνομα αρχείου, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Αν όχι τα κακά ψηφία "666" στην πρώτη συμβολοσειρά, θα πίστευα ότι ο κωδικοποιητής μόλις ξέχασε να χρησιμοποιήσει τη σημαία O_BINARY. Αλλά το Number of The Beast διευκρινίζει με σαφήνεια τις προθέσεις του. Φανταστείτε, πόσο έξυπνο είναι: λόγω της λεπτής διαφοράς στον τρόπο επεξεργασίας των αρχείων σε Windows και Linux, η βόμβα δεν έχει καμία επίδραση όταν το βοηθητικό πρόγραμμα καταρτίζεται και χρησιμοποιείται στο Linux. Αλλά καταστρέφει τα πάντα όταν το βοηθητικό πρόγραμμα χρησιμοποιείται στα Windows.

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

Βήμα 14: ΣΗΜΕΙΩΣΕΙΣ

ΣΗΜΕΙΩΣΕΙΣ
ΣΗΜΕΙΩΣΕΙΣ

1) Για να χρησιμοποιήσετε άνετα το βοηθητικό πρόγραμμα fexc, θα πρέπει να λάβετε δύο αρχεία δέσμης:

bin2fex.bat - και - fex2bin.bat.

Μπορείτε να τα προμηθευτείτε από κάποιο σφάλμα fexc.exe build για Windows εκεί έξω, ή μπορείτε να τα πληκτρολογήσετε μόνοι σας:

  • Το bin2fex.bat πρέπει να περιέχει "fexc -I bin -O fex script.bin script.fex"
  • Το fex2bin.bat πρέπει να περιέχει "fexc -O bin -I fex script.fex script.bin"

2) Εάν είναι δύσκολο να βρείτε τον διαχειριστή mman για Windows, μπορείτε να αποφύγετε τη χρήση του καθόλου. Ωστόσο, χρειάζεται πολύ περισσότερη επεξεργασία του αρχείου fexc.c και απαιτεί τουλάχιστον κάποια γνώση του c. Για τη δική σας ευκολία, μοιράζομαι τον επεξεργασμένο πηγαίο κώδικα του fexc από το sunxi-tools v1.4 ελεύθερο από την εξάρτηση από το mman.h μαζί με το αρχείο έργου codeblocks και με δείγμα script.bin από κάποιο πορτοκαλί pi. Μπορείτε να κατεβάσετε το fexc_nomman.zip

3) Είναι πιθανό ότι σε επακόλουθες εκδόσεις των εργαλείων sunxi θα προσθέσουν μερικές ακόμη εξαρτήσεις. Μη διστάσετε να τα βρείτε μέσω διαδικτύου και να τα προσθέσετε στο έργο συλλογής σας.

5) Τέλος, εδώ είναι η προ -μεταγλωττισμένη έκδοση του fexc.exe για το Win32:

fexc_nomman.zip

Εάν είστε αρκετά τεμπέλης, μη διστάσετε να χρησιμοποιήσετε το ver. Ωστόσο, προσέξτε ότι δεν θα ενημερωθεί εάν/πότε θα είναι διαθέσιμες οι νεότερες εκδόσεις του SunxiTools/Windows. Είναι καλύτερα λοιπόν να μάθουμε πώς να τα μεταγλωττίζουμε παρά να εξαρτάται από κάποια σταθερή δυαδική κατασκευή, υποθέτω.

4) Τα "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", κλπ … είναι τα αντίστοιχα εμπορικά σήματα των αντίστοιχων κατόχων τους.

5) Εάν ο μεταγλωττιστής παραπονιέται ότι δεν βρίσκει λειτουργίες mman, όπως:

απροσδιόριστη αναφορά στο '_imp_mmap'

να γνωρίζετε ότι οι λάτρεις της κοινότητας ανάπτυξης mman έχουν ξεχάσει ότι ο κώδικας μπορεί να μεταγλωττιστεί όχι μόνο ως βιβλιοθήκη dll. Μπορεί επίσης να είναι μια στατική βιβλιοθήκη ή ένας αυτόνομος κώδικας όπως έχουμε εδώ. Για να διορθώσετε το πρόβλημα, επεξεργαστείτε το αρχείο "mman.h" ως εξής:

α) βρείτε τις χορδές:

#if καθορισμένα (MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec (dllexport) #else #define MMANSHARED_EXPORT _declspec (dllimport) #endif

β) προσθέστε τη συμβολοσειρά

#define MMANSHARED_EXPORT

ακριβώς κάτω από τις συμβολοσειρές που βρέθηκαν στο προηγούμενο βήμα

Συνιστάται: