
Depuis longtemps, j'ai rĂȘvĂ© d'un appareil qui aurait un Ă©cran tactile, des boutons matĂ©riels Ă bord, et sur lequel Linux fonctionnera sans aucun problĂšme. Et bien sĂ»r, il aura un nombre suffisant d'interfaces. Ă une certaine Ă©poque, le projet Vogue Ă©tait prometteur , mais aujourd'hui je l'ai trouvĂ© - un appareil idĂ©al pour le transport de poche, avec un processeur puissant et Linux Ă bord. Voici donc la calculatrice HP Prime G2. Il y a un processeur i.mx6ull chic avec lequel j'ai une grande expĂ©rience, donc le portage de Linux ne me semblait pas une tĂąche trop difficile. Cependant, comme d'habitude, le diable est dans les petites choses.
Je veux vous parler de mon chemin épineux d'installation de Linux sur une calculatrice, de ce qui en est sorti et de ce qui ne l'a pas été, vous devriez juger!
Projet Linux pour HP Prime G2
MalgrĂ© le fait que j'ai beaucoup manipulĂ© ce projet, et en gĂ©nĂ©ral mĂȘme apportĂ© ma propre contribution Ă son dĂ©veloppement, la branche principale du projet, qui a tout dĂ©clenchĂ©, devrait ĂȘtre considĂ©rĂ©e comme Linux pour HP Prime G2 de zephray . Mais, comme d'habitude, cela se produit dans de tels projets, si vous essayez de tout rĂ©pĂ©ter selon les instructions, le nifiga ne fonctionnera pas et vous collecterez des milliers de rĂąteaux, que l'auteur, pour une raison ou une autre, a oubliĂ© de mentionner . Par consĂ©quent, dans cet article, je vais essayer d'attirer votre attention sur ces incohĂ©rences, de vous expliquer comment les contourner et de publier Ă©galement les assemblys noyau et rootfs qui fonctionnent manifestement.
Il faut comprendre que je ne veux pas jeter d'ombre sur zephray.... C'est un homme titan qui mĂ©rite une rĂ©elle admiration. Il a fait un travail vraiment titanesque de porter ces choses sur une calculatrice. En fait, comme c'est gĂ©nĂ©ralement le cas, il a adaptĂ© les configurations de la carte de dĂ©bogage pour le pĂ©riphĂ©rique actuel. Et aussi, le pilote d'affichage y a Ă©tĂ© Ă©crit, le chargeur u-boot a Ă©tĂ© correctement configurĂ©, le fichier dts ( fichier d'arborescence des pĂ©riphĂ©riques ) a Ă©tĂ© correctement compilĂ© , un tas de code a Ă©tĂ© ajoutĂ© au noyau lui-mĂȘme. N'oubliez pas que tout cela a Ă©tĂ© fait sans schĂ©ma ni documentation, donc la quantitĂ© de travail effectuĂ©e est tout simplement Ă©poustouflante, et tout cela est purement enthousiaste. Malheureusement, le volume et le format de l'article ne me permettront pas de parcourir le code en dĂ©tail, mĂȘme s'il y a vraiment quelque chose Ă voir et oĂč dĂ©coller son chapeau en admiration!
Mais il y a beaucoup de code, à la fois dans le noyau, dans le chargeur de démarrage et dans l'arborescence des périphériques. Je terminerai le chapitre par une citation de Basha :
callidus77:
Pomnitsa dans notre rĂ©seau, les installateurs ont connectĂ© l'abonnĂ©. Ils sont venus, ont collĂ© le setevukha, mais il n'avait ni Frya ni bois de chauffage. Nous nous sommes grattĂ©s la tĂȘte et sommes partis. La personne se connecte enfin en trois semaines.
Gryat: "Depuis combien de temps cherchez-vous du bois de chauffage."
Lui: «Je ne cherchais pas. Je les ai Ă©crits moi-mĂȘme. "
Pour l'avenir, on peut dire qu'installer Linux sur une calculatrice est passĂ© d'une agrĂ©able promenade d'une demi-heure Ă une vĂ©ritable quĂȘte de quelques semaines.
Cochon d'Inde
Pour commencer, nous avons besoin de la calculatrice HP Prime G2 (2AP18AA) . Puisqu'il y a une chance non acide que plusieurs appareils diffĂ©rents puissent se cacher sous un mĂȘme nom, voici des photos et une description de ce Ă quoi il ressemble et comment dĂ©terminer qu'il s'agit exactement de l'appareil dont vous avez besoin.


Afin de vous assurer qu'il s'agit bien de notre calculatrice, vous devez ouvrir l'aide (bouton Aide) et y ouvrir la section sur la calculatrice (deuxiÚme ligne en partant du haut du menu). Vous devez avoir quelque chose comme ça.

Ă propos de la calculatrice.
Je dirai tout de suite que dans notre pays une seule entreprise vend ces calculatrices (du moins je n'en ai pas trouvĂ© d'autres), donc il ne devrait y avoir aucun problĂšme avec l'achat, sauf peut-ĂȘtre pour son prix. Mais ça vaut le coup!
Préparation à l'installation de Linux sur une calculatrice
Pour commencer, nous devons faire quelques activitĂ©s. pour installer Linux dans Nand ou exĂ©cuter ce systĂšme d'exploitation en RAM, vous devez retirer le capot arriĂšre de la calculatrice, qui par dĂ©finition annulera immĂ©diatement votre garantie (rappelez-vous ceci avant de commencer le travail). Toutes les manipulations ont Ă©tĂ© effectuĂ©es sous linux mint 18.2 (tout devrait fonctionner de la mĂȘme maniĂšre dans Ubuntu 18.04).
Aurait besoin:
- Calculatrice HP Prime G2 (2AP18AA);
- CĂąble USB (USB A - Micro B) pour connecter Prime Ă un PC;
- Tournevis;
- une pince à épiler (conductrice ou avec un cavalier), ou un bouton sur les fils;
- PC sous Linux ou Windows 7+;
- kit de distribution HP-Prime-Linux (en outre, je donnerai un lien légÚrement différent, pour cela cela ne fonctionne pas tout à fait correctement).
- L'utilitaire uuu (Universal Update Utility) inclus dans le package mfgtools 3.0 .https: //github.com/NXPmicro/mfgtools.
Nous installons le logiciel nécessaire
Pour commencer, nous préparerons une implantation logicielle et nous assurerons qu'il fonctionne. Tout d'abord, construisons l'utilitaire uuu.
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
Et puis j'ai eu une erreur cmake ... En conséquence, j'ai dû mettre à jour l'utilitaire cmake. Pour ce faire, j'ai exécuté les commandes suivantes:
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
AprÚs une construction réussie, j'ai décidé d'installer le package., Mais comme nous sommes frappés par la main lorsque nous faisons l'installation, nous le ferons scientifiquement et installerons à l'aide de l'utilitaire checkinstall.
sudo checkinstall
En consĂ©quence, nous avons le package mfgtools installĂ© , qui, si nĂ©cessaire, peut ĂȘtre supprimĂ© avec la commande
dpkg -r mfgtools
Nous vérifions que tout fonctionne et passons à autre chose.
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
....
Préparation du matériel
Il devrait y avoir une tirade que vous faites tout à vos risques et périls, que, disent-ils, l'auteur n'est pas responsable de vos calculatrices épuisées, etc. etc. Mais je crois que nous sommes tous des adultes qui comprennent clairement les risques de ce qu'ils font et en comprennent les conséquences.
Tout d'abord, vous devez démonter la calculatrice. Tout d'abord, j'ai dévissé toutes les vis et sorti la batterie.

Nous retirons la batterie.
En passant, faites attention à la batterie fraßche de cet appareil. D'ailleurs, dans d'autres expériences, je n'en aurai plus besoin, hélas.
De plus, le long du périmÚtre, je le fais levier avec une carte et un ouvre-porte spécial, en essayant de ne pas casser les loquets de verrouillage.

Nous ouvrons le boĂźtier en plastique.
AprĂšs toutes les actions, les entrailles de la calculatrice m'apparurent et maintenant, je suis presque prĂȘt pour les expĂ©riences les plus barbares.

Sein.
J'ai presque tout prĂȘt Ă exĂ©cuter Linux sur cette calculatrice. Mais il y a une (des) nuance (s). Pour le dĂ©marrage initial, deux Ă©lectrodes doivent ĂȘtre court-circuitĂ©es. Comme l'Ă©crit l'auteur de ce projet:
, USB .
: . .
Reset ( ). USB- âSE Blank 6ULLâ. ( Linux Feescale USB- lsusb)
![]()
Remarque: vous court-circuitez le contact "Boot Mode" à la masse. Par défaut, cette broche est connectée à 3,3V via une résistance de rappel de 10k.
De plus, vous aurez deux options. En mĂȘme temps, vous pouvez effectuer une sĂ©rie d'actions une par une sans redĂ©marrer la calculatrice. Par exemple, dans l'une des options, effectuez d'abord une copie de sauvegarde de la mĂ©moire NAND, puis flashez-y le systĂšme d'exploitation Linux sans recourir Ă un redĂ©marrage.
J'ai dĂ©cidĂ© que je n'Ă©tais pas prĂȘt avec une main tremblante Ă court-circuiter des pads Ă peine perceptibles pour le chargement. Nous n'avons besoin de cette opĂ©ration qu'une seule fois (donc, bien sĂ»r, vous pouvez prendre un risque), j'ai nĂ©anmoins dĂ©cidĂ© de me protĂ©ger et de souder le bouton.

Bouton de téléchargement.
J'attire votre attention sur le fait que le bouton n'est nĂ©cessaire que si vous ne voulez pas effacer le contenu de la calculatrice et ĂȘtes prĂȘt Ă dĂ©marrer Linux en RAM une fois et Ă vous calmer. En gĂ©nĂ©ral, avec les mains droites et la confiance en l'avenir, vous pouvez le faire avec une pince Ă Ă©piler.
Ca y est, nous sommes pratiquement prĂȘts Ă lancer Linux avec un pied
Installer Linux, marcher sur un rĂąteau
Avant de passer Ă l'installation proprement dite de Linux sur la calculatrice, Ă toutes les difficultĂ©s qui sont survenues, je tiens Ă attirer votre attention sur un dĂ©tail. Avant de rĂ©pĂ©ter les instructions d'autres personnes (y compris celles donnĂ©es dans cet article), assurez-vous que tous les fichiers qui devraient ĂȘtre dans les archives d'installation sont prĂ©sents, que vous exĂ©cutez la commande exacte dont vous avez besoin. Si vous exĂ©cutez le script de quelqu'un d'autre, vĂ©rifiez le contenu de ce script. Si vous ne comprenez pas ce qui y est Ă©crit, dĂ©terminez ce qui se passe lĂ -bas, et il y a alors une chance non acide que si tout ne fonctionne pas, vous puissiez au moins sauver votre Ă©quipement de toutes sortes de problĂšmes.
Mais comme vous pouvez l'imaginer, depuis que j'ai Ă©crit un tel paragraphe, je n'ai pas suivi cette voie. Comme on dit, le Russe lit les instructions avec les mots: bon sang, dĂ©jĂ cassĂ©. J'ai donc agi Ă peu prĂšs de la mĂȘme maniĂšre et mon chemin Ă©tait Ă©pineux. Pour faire une sauvegarde du micrologiciel, exĂ©cuter et / ou installer Linux, vous devez tĂ©lĂ©charger l'archive flash_utility.tar.gz Ă partir d'ici... Avant d'aller plus loin, en regardant plus loin, je dirai que cette archive ne contient pas rootfs.tar.bz2, ce qui est nĂ©cessaire pour flasher sur nand (bien qu'il y ait un appel Ă lui dans le script flash_linux_to_nand.uu), initramfs, qui permet vous pour dĂ©marrer linux sans installer, ne fonctionne pas et l'installation de linux sur nand Ă©choue. En consĂ©quence, vous obtenez une brique, en fait, non. Je n'Ă©tais pas au courant de tout cela, et Ă partir de ce moment, installer Linux s'est avĂ©rĂ© ĂȘtre une vĂ©ritable quĂȘte pour moi.
Afin que nous puissions avancer, je vais citer les instructions d'utilisation de cet utilitaire.
2.2 Sauvegarde NAND
: 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
Le processus prendra quelques minutes. Une fois terminé, redémarrez (réinitialisez) la calculatrice, aprÚs quoi elle devrait démarrer sous Linux. Le téléchargement prendra environ 15 secondes. Pour l'autorisation, utilisez le login "root".
J'ai délibérément apporté cette traduction ici pour qu'elle ne se perde pas à l'avenir.
La logique veut que vous deviez effectuer une sauvegarde nand-flash, puis effectuer des expériences. Pour ce faire, j'ai maintenu le bouton enfoncé, inséré le cordon USB dans la calculatrice et effectué:
sudo uuu restore_nand.uu
Attention: il y a une erreur dans la commande ci-dessus, Ă ce stade elle ne peut pas ĂȘtre exĂ©cutĂ©e !!! Cette commande ne vous dĂ©range-t-elle pas? Au dĂ©but, rien ne me confondait non plus ... Mais moi, avec cette commande, je n'ai pas sauvegardĂ© la calculatrice, mais j'ai effacĂ© mon nand-flash, le colmatant avec des dĂ©chets inutiles et abandonnant la section ECC. Une calculatrice ne sera plus jamais une calculatrice maintenant ...

La soirĂ©e a Ă©tĂ© languissante, j'ai voulu essayer, j'ai Ă©moussĂ© et j'ai mĂ©langĂ© les commandes. D'accord, j'ai pensĂ©, j'Ă©tais, je ne l'Ă©tais pas, je vais essayer de flasher Linux pour flasher, de toute façon, le lecteur flash est dĂ©jĂ effacĂ© et il n'y a rien Ă perdre. De la mĂȘme maniĂšre, j'ai dĂ©connectĂ© l'USB, maintenu le bouton enfoncĂ© et fait:
sudo uuu flash_linux_to_nand.uu
Et en conséquence, j'ai eu cette erreur:

Ensuite, je ne savais pas encore que si cette erreur n'existait pas, je ne pourrais toujours pas flasher ma calculatrice, car l'archive des rootfs elle-mĂȘme manquait dans la liste des fichiers, et j'aurais abandonnĂ© avec une erreur a quelques lignes ci-dessous.
Malheureusement, je n'ai pas réussi à vaincre cette erreur davantage, cette commande exécute le firmware u-boot dans le nand-flash. Pour une raison quelconque, son exécution plante avec une erreur lors de la création d'un fichier temporaire (je l'ai appris plus tard avec la connexion UART).
Le bon résultat de cette commande est que vous n'avez plus besoin d'appuyer sur un bouton. Et nous n'en avons plus besoin, nous pouvons désormais le dessouder.
Alors ... j'ai abandonnĂ© la clĂ© USB, je ne peux pas mettre Linux, eh bien, peut-ĂȘtre qu'au moins en RAM, il sera possible de le dĂ©marrer?
Je cours:
sudo uuu run_linux_in_ram.uu
Je connecte l'USB Ă l'appareil cible et la commande passe avec succĂšs. Et voilĂ , Linux se charge! Mais ... Mais nous n'arrivons jamais Ă la connexion.

On se bloque Ă ce stade ...
Bon résultat: bootloader, noyau, affichage, systÚme clignotant dans son ensemble fonctionne. Mauvais résultat: Linux ne fonctionne pas réellement.
En conséquence, nous devons: connecter l'UART matériel pour voir ce qui se passe, et reconstruire le noyau (principalement pour les pilotes) et reconstruire les rootfs pour le faire fonctionner.
Conclusion de la premiĂšre partie
L'article a simplement pris une taille obscÚne, donc une décision difficile a été prise de le diviser en deux.
Comme vous le comprenez, je ne pourrais pas mettre Linux de cette maniÚre. Et donc vous devez connecter de l'artillerie lourde: chauffez le fer à souder, entrez dans le remplissage du matériel et fouillez dans le code. Vous pouvez lire tout cela dans la deuxiÚme partie de cette épopée.
