Ich habe lange von einem Gerät geträumt, das einen Touchscreen und Hardwaretasten an Bord hat und auf dem Linux problemlos funktioniert. Und natürlich wird es eine ausreichende Anzahl von Schnittstellen haben. Früher war das Vogue-Projekt vielversprechend , aber heute fand ich es - ein ideales Gerät zum Tragen in der Tasche, mit einem leistungsstarken Prozessor und Linux an Bord. Das ist also der HP Prime G2 Calculator. Es gibt einen schicken i.mx6ull-Prozessor, mit dem ich viel Erfahrung habe, so dass das Portieren von Linux keine allzu schwierige Aufgabe zu sein schien. Wie immer steckt der Teufel jedoch in den kleinen Dingen.
Ich möchte Ihnen von meinem schwierigen Weg erzählen, Linux auf einem Taschenrechner zu installieren, was dabei herauskam und was nicht, sollten Sie beurteilen!
Linux-Projekt für HP Prime G2
Trotz der Tatsache, dass ich viel mit diesem Projekt herumgespielt und im Allgemeinen sogar meinen eigenen Beitrag zu seiner Entwicklung geleistet habe, sollte der Hauptzweig des Projekts, mit dem alles begann, als Linux für HP Prime G2 von zephray betrachtet werden . Aber wie üblich passiert es in solchen Projekten, wenn Sie versuchen, alles gemäß den Anweisungen zu wiederholen, dann funktioniert die Nifiga nicht und Sie sammeln Tausende von Rechen, die der Autor aus dem einen oder anderen Grund vergessen hat zu erwähnen . Daher werde ich in diesem Artikel versuchen, Ihre Aufmerksamkeit auf diese Inkonsistenzen zu lenken, Ihnen zu erklären, wie Sie sie umgehen können, und auch die offensichtlich funktionierenden Kernel- und Rootfs-Assemblys veröffentlichen.
Es versteht sich, dass ich keinen Schatten auf Zephray werfen möchte.... Dies ist ein Titan, der echte Bewunderung verdient. Er hat wirklich titanische Arbeit geleistet, um dieses Zeug auf einen Taschenrechner zu portieren. Tatsächlich hat er, wie es normalerweise der Fall ist, die Debugboard-Konfigurationen für das aktuelle Gerät angepasst. Außerdem wurde dort der Anzeigetreiber geschrieben, der U-Boot-Loader wurde korrekt konfiguriert, die dts-Datei ( Gerätebaumdatei ) wurde korrekt kompiliert und dem Kernel selbst wurde eine Reihe von Code hinzugefügt. Vergessen Sie nicht, dass dies alles ohne Schema und Dokumentation geschehen ist. Die Menge der geleisteten Arbeit ist einfach atemberaubend, und all dies beruht auf purer Begeisterung. Leider können ich aufgrund des Umfangs und des Formats des Artikels den Code nicht im Detail durchgehen, obwohl es wirklich etwas zu sehen gibt und wo ich bewundernd Ihren Hut abnehmen kann!
Aber es gibt viel Code, sowohl im Kernel, im Bootloader als auch im Gerätebaum. Ich werde das Kapitel mit einem Zitat aus Basha beenden :
callidus77:
Pomnitsa in unserem Netz, Installateure haben den Teilnehmer verbunden. Sie kamen, steckten den Setevukha fest, aber er hatte keinen Frya und kein Brennholz. Wir kratzten uns am Kopf und gingen. Die Person verbindet sich schließlich in drei Wochen.
Gryat: Wie lange suchst du schon nach Brennholz?
Er: "Ich habe nicht gesucht. Ich habe sie selbst geschrieben. "
Mit Blick auf die Zukunft können wir sagen, dass sich die Installation von Linux auf einem Taschenrechner von einem angenehmen Spaziergang für eine halbe Stunde zu einer echten Suche für ein paar Wochen entwickelt hat.
Meerschweinchen
Für den Einstieg benötigen wir den HP Prime G2 Calculator (2AP18AA) . Da die Wahrscheinlichkeit besteht, dass sich mehrere verschiedene Geräte unter einem Namen verstecken, finden Sie hier Fotos und eine Beschreibung, wie es aussieht und wie Sie feststellen können, dass dies genau das Gerät ist, das Sie benötigen.
Um sicherzustellen, dass dies genau unser Taschenrechner ist, müssen Sie die Hilfe (Schaltfläche Hilfe) öffnen und dort den Abschnitt über den Taschenrechner öffnen (zweite Zeile von oben im Menü). Sie müssen so etwas haben.
Über den Taschenrechner.
Ich werde gleich sagen, dass in unserem Land nur eine Firma diese Taschenrechner verkauft (zumindest habe ich keine anderen gefunden), daher sollte es keine Probleme mit dem Kauf geben, außer vielleicht wegen des Preises. Aber es ist alles wert!
Vorbereiten der Installation von Linux auf einem Taschenrechner
Um loszulegen, müssen wir einige Aktivitäten durchführen. Um Linux in Nand zu installieren oder dieses Betriebssystem im RAM auszuführen, müssen Sie die hintere Abdeckung des Rechners entfernen, wodurch Ihre Garantie per Definition sofort erlischt (denken Sie daran, bevor Sie mit der Arbeit beginnen). Alle Manipulationen wurden in Linux Mint 18.2 durchgeführt (in Ubuntu 18.04 sollte alles auf die gleiche Weise funktionieren).
Würde brauchen:
- HP Prime G2 Rechner (2AP18AA);
- USB-Kabel (USB A - Micro B) zum Anschließen von Prime an einen PC;
- Schraubenzieher;
- Pinzette (leitend oder mit einem Jumper) oder ein Knopf an den Drähten;
- PC unter Linux oder Windows 7+;
- Distributionskit HP-Prime-Linux (weiter werde ich einen etwas anderen Link geben, dafür funktioniert es nicht ganz richtig).
- Das im mfgtools 3.0-Paket .https: //github.com/NXPmicro/mfgtools enthaltene Dienstprogramm uuu (Universal Update Utility).
Wir installieren die notwendige Software
Zunächst bereiten wir eine Software-Basis vor und stellen sicher, dass sie funktioniert. Lassen Sie uns zunächst das Dienstprogramm uuu erstellen.
git clone https://github.com/NXPmicro/mfgtools.git
cd mfgtools
sudo apt-get install libusb-1.0-0-dev libzip-dev libbz2-dev pkg-config cmake libssl-dev g++
cmake . && make
Und dann bekam ich einen cmake-Fehler ... Als Ergebnis musste ich das cmake-Dienstprogramm aktualisieren. Dazu habe ich folgende Befehle ausgeführt:
wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc |
sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt-get update
sudo apt-get install cmake
Nach einem erfolgreichen Build habe ich mich entschlossen, das Paket zu installieren. Da wir jedoch bei der Installation auf die Hände getroffen werden, werden wir dies wissenschaftlich tun und mit dem Dienstprogramm checkinstall installieren.
sudo checkinstall
Als Ergebnis haben wir das mfgtools- Paket installiert , das bei Bedarf mit dem Befehl entfernt werden kann
dpkg -r mfgtools
Wir überprüfen, ob alles funktioniert und gehen weiter.
uuu -h
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.69-0-g63b1d3c
uuu [-d -m -v -V] <bootloader|cmdlists|cmd>
bootloader download bootloader to board by usb
cmdlist run all commands in cmdlist file
If it is path, search uuu.auto in dir
If it is zip, search uuu.auto in zip
cmd Run one command, use -H see detail
....
Hardware-Vorbereitung
Es sollte eine Tirade geben, dass Sie alles auf eigene Gefahr und Gefahr tun, dass der Autor nicht für Ihre ausgebrannten Taschenrechner usw. verantwortlich ist. usw. Aber ich glaube, dass wir alle Erwachsene sind, die die Risiken ihres Handelns klar verstehen und die Konsequenzen verstehen.
Zuerst müssen Sie den Rechner zerlegen. Zuerst habe ich alle Schrauben gelöst und die Batterie herausgenommen.
Wir entfernen die Batterie.
Achten Sie übrigens darauf, welchen coolen Akku dieses Gerät hat. Übrigens werde ich es in weiteren Experimenten leider nicht mehr brauchen.
Weiter entlang des Umfangs hebe ich es mit einer Karte und einem speziellen Öffner auf und versuche, die Verriegelungen nicht zu brechen.
Wir öffnen die Plastikhülle.
Nach all den Aktionen erschien mir der Darm des Taschenrechners und jetzt bin ich fast bereit für die barbarischsten Experimente.
Busen.
Ich habe fast alles bereit, um Linux auf diesem Rechner auszuführen. Aber es gibt eine Nuance (n). Für den ersten Start müssen zwei Pads kurzgeschlossen werden. Wie der Autor dieses Projekts schreibt:
, USB .
: . .
Reset ( ). USB- “SE Blank 6ULL”. ( Linux Feescale USB- lsusb)
![]()
Hinweis: Sie schließen den Kontakt "Boot Mode" mit Masse kurz. Standardmäßig ist dieser Pin über einen 10k-Pull-up-Widerstand mit 3,3 V verbunden.
Außerdem haben Sie zwei Möglichkeiten. Gleichzeitig können Sie eine Reihe von Aktionen einzeln ausführen, ohne den Rechner neu zu starten. Erstellen Sie beispielsweise in einer der Optionen zuerst eine Sicherungskopie des NAND-Speichers und flashen Sie dann das Linux-Betriebssystem hinein, ohne einen Neustart durchzuführen.
Ich entschied, dass ich nicht mit zitternder Hand bereit war, kaum wahrnehmbare Pads zum Laden kurzzuschließen. Wir brauchen diesen Vorgang nur einmal (damit Sie natürlich ein Risiko eingehen können), also habe ich mich trotzdem entschlossen, mich zu schützen und den Knopf verlötet.
Download-Button.
Ich mache Sie darauf aufmerksam, dass die Schaltfläche nur benötigt wird, wenn Sie den Inhalt des Rechners nicht löschen möchten und bereit sind, Linux einmal im RAM zu starten und sich zu beruhigen. Im Allgemeinen können Sie mit geraden Händen und Vertrauen in die Zukunft mit einer Pinzette arbeiten.
Das war's, wir sind praktisch bereit, Linux mit einem Fuß zu starten
Linux installieren, auf einem Rechen laufen
Bevor wir zur eigentlichen Installation von Linux auf dem Taschenrechner übergehen, möchte ich Ihre Aufmerksamkeit auf ein Detail lenken. Stellen Sie vor dem Wiederholen der Anweisungen anderer Personen (einschließlich der Anweisungen in diesem Artikel) sicher, dass alle Dateien in den Installationsarchiven vorhanden sind und dass Sie genau den Befehl ausführen, den Sie benötigen. Wenn Sie das Skript einer anderen Person ausführen, überprüfen Sie den Inhalt dieses Skripts. Wenn Sie nicht verstehen, was dort geschrieben steht, finden Sie heraus, was dort passiert, und dann besteht die Möglichkeit, dass Sie Ihre Ausrüstung zumindest vor allen möglichen Problemen bewahren können, wenn nicht alles funktioniert.
Aber wie Sie sich vorstellen können, bin ich diesem Weg nicht gefolgt, seit ich einen solchen Absatz geschrieben habe. Wie sie sagen, liest der Russe die Anweisungen mit den Worten: Verdammt, schon kaputt. Also habe ich ungefähr genauso gehandelt und mein Weg war dornig. Um eine Sicherungskopie der Firmware zu erstellen, Linux auszuführen und / oder zu installieren, müssen Sie das Archiv flash_utility.tar.gz von hier herunterladen ... Bevor wir weiter gehen, werde ich sagen, dass dieses Archiv keine rootfs.tar.bz2 enthält, die für das Flashen auf nand erforderlich ist (obwohl es im Skript flash_linux_to_nand.uu aufgerufen wird), initramfs, was dies erlaubt Sie Linux ohne Installation zu starten, funktioniert nicht und Linux-Installation auf nand schlägt fehl. Als Ergebnis erhalten Sie einen Ziegelstein, in der Tat nicht. Ich wusste nicht alles und von diesem Moment an stellte sich heraus, dass die Installation von Linux eine echte Aufgabe für mich war.
Damit wir weitermachen können, werde ich die Anweisungen zur Verwendung dieses Dienstprogramms zitieren.
2.2 NAND-Sicherung
: NAND ECC OOB-, . ECC. , flash- ( , ..) - . , , , , . , , , .
SDP. flash_utility :
Windows:
uuu backup_nand.uu
Linux:
sudo ./uuu backup_nand.uu
, NAND backup.
2.3 NAND
NAND backup.
SDP. flash_utility, :
Windows:
uuu restore_nand.uu
Linux:
sudo ./uuu restore_nand.uu
2.4 Linux RAM
Linux NAND. Linux SDP USB.
: , - .
: RAM ~15. .
SDP, , flash_utility, :
Windows:
uuu run_linux_in_ram.uu
Linux:
sudo ./uuu run_linux_in_ram.uu
Linux. «root».
2.5 Linux NAND
: , NAND. , , 2.3.
: .
Linux NAND SDP, , flash_utility, :
Windows:
uuu flash_linux_to_nand.uu
Linux:
sudo ./uuu flash_linux_to_nand.uu
Der Vorgang dauert einige Minuten. Starten Sie nach Abschluss des Vorgangs den Rechner neu (setzen Sie ihn zurück). Danach sollte Linux gestartet werden. Der Download dauert ca. 15 Sekunden. Zur Autorisierung verwenden Sie den Login "root".
Ich habe diese Übersetzung absichtlich hierher gebracht, damit sie in Zukunft nicht verloren geht.
Die Logik schreibt vor, dass Sie ein Nand-Flash-Backup erstellen und dann Experimente durchführen müssen. Dazu hielt ich die Taste gedrückt, steckte das USB-Kabel in den Taschenrechner und führte Folgendes aus:
sudo uuu restore_nand.uu
Achtung: Es liegt ein Fehler im obigen Befehl vor, dieser kann derzeit nicht ausgeführt werden !!! Stört Sie an diesem Befehl nichts? Anfangs hat mich auch nichts verwirrt ... Aber ich habe mit diesem Befehl den Taschenrechner nicht gesichert, sondern meinen Nand-Flash gelöscht, ihn mit unnötigem Müll verstopft und den ECC-Abschnitt über Bord geworfen. Ein Taschenrechner wird jetzt niemals ein Taschenrechner sein ...
Der Abend war träge, ich wollte es versuchen, ich stumpfte ab und mischte die Befehle. Okay, ich dachte, ich war es, ich war es nicht, ich werde versuchen, Linux zu flashen, das Flash-Laufwerk ist bereits gelöscht und es gibt nichts zu verlieren. Auf die gleiche Weise habe ich USB getrennt, die Taste gedrückt und Folgendes getan:
sudo uuu flash_linux_to_nand.uu
Als Ergebnis habe ich diesen Fehler erhalten:
Dann wusste ich noch nicht, dass ich meinen Rechner immer noch nicht flashen könnte, wenn dieser Fehler nicht vorhanden wäre, da das Archiv der rootfs selbst in der Dateiliste fehlte und ich mit einem Fehler a ausgestiegen wäre einige Zeilen weiter unten.
Leider ist es mir nicht gelungen, diesen Fehler weiter zu beseitigen, dieser Befehl führt die U-Boot-Firmware im Nand-Flash aus. Aus irgendeinem Grund stürzt die Ausführung mit einem Fehler beim Erstellen einer temporären Datei ab (dies habe ich später über die UART-Verbindung erfahren).
Das gute Ergebnis dieses Befehls ist, dass Sie keine Taste mehr drücken müssen. Und wir brauchen es nicht mehr, wir können es jetzt entlöten.
Also ... ich habe das USB-Flash-Laufwerk über Bord geworfen, ich kann Linux nicht einsetzen, na ja, vielleicht ist es zumindest im RAM möglich, es zu starten?
Ich renne:
sudo uuu run_linux_in_ram.uu
Ich verbinde den USB mit dem Zielgerät und der Befehl wird mit Erfolg übergeben. Und siehe da, Linux wird geladen! Aber ... aber wir kommen nie zum Login.
Wir hängen in dieser Phase ...
Gutes Ergebnis: Bootloader, Kernel, Display, Flashing-System als Ganzes funktioniert. Schlechtes Ergebnis: Linux funktioniert nicht wirklich.
Infolgedessen müssen wir: den Hardware-UART verbinden, um zu sehen, was passiert, und den Kernel (hauptsächlich für Treiber) neu erstellen und die Rootfs neu erstellen, damit er funktioniert.
Abschluss des ersten Teils
Der Artikel ist einfach zu einer obszönen Größe gewachsen, daher wurde eine schwierige Entscheidung getroffen, ihn in zwei Teile zu teilen.
Wie Sie verstehen, konnte ich Linux nicht auf diese Weise setzen. Und so müssen Sie schwere Artillerie anschließen: Erhitzen Sie den Lötkolben, steigen Sie in die Hardware-Füllung ein und stöbern Sie im Code herum. Sie können darüber im zweiten Teil dieses Epos lesen.