電卓へのLinuxのインストール





私は長い間、タッチスクリーン画面とハードウェアボタンが搭載され、Linuxが問題なく動作するデバイスを夢見ていました。そしてもちろん、十分な数のインターフェースがあります。かつて、Vogueプロジェクトは有望 でしたが、今日私はそれを見つけました。これは、強力なプロセッサとLinuxを搭載した、ポケットに入れるのに理想的なデバイスです。これがHPPrime G2Calculatorです。私が非常に豊富な経験を持っているシックなi.mx6ullプロセッサがあるので、Linuxの移植はそれほど難しい作業ではなかったようです。しかし、いつものように、悪魔はささいなことにあります。



Linuxを電卓にインストールするという厄介な道のり、何が出てきたのか、何が出なかったのかをお話ししたいと思います。



HP PrimeG2用のLinuxプロジェクト



私がこのプロジェクトいじくり回し、一般的にはその開発に自分自身で貢献したという事実にもかかわらず、すべてを開始したプロジェクトのメインブランチは、zephrayのLinux for HP PrimeG2と見なす必要があります 。しかし、いつものように、それはそのようなプロジェクトで起こります、あなたが指示に従ってすべてを繰り返そうとすると、nifigaは機能せず、あなたは何千もの熊手を集めるでしょう、それは作者が何らかの理由で言及するのを忘れました。したがって、この記事では、これらの不整合に注意を向け、それらを回避する方法を説明し、明らかに機能しているカーネルとrootfsアセンブリを投稿します。



私はゼフレイに影を落としたくないことを理解する必要があります ..。これは本当に称賛に値する巨人です。彼はこのようなものを電卓に移植するという本当に巨大な仕事をしました。実際、通常の場合と同様に、彼は現在のデバイスのデバッグボード構成を調整しました。また、そこにディスプレイドライバーが書き込まれ、u-bootローダーが正しく構成され、dtsファイル(デバイスツリーファイル)が正しくコンパイル され、カーネル自体に一連のコードが追加されました。これはすべてスキームとドキュメントなしで行われたことを忘れないでください。そのため、行われた作業の量は単に息をのむようなものであり、これはすべて非常に熱心です。残念ながら、記事の量と形式では、コードを詳細に説明することはできませんが、実際に見るべきものと、賞賛に値する帽子を脱ぐ場所があります。



しかし、カーネル、ブートローダー、およびデバイスツリーの両方に多くのコードがあります。Bashaからの引用で終了します



callidus77:

グリッド内のPomnitsa、インストーラーがサブスクライバーを接続しました。彼らはやって来て、setevukhaを立ち往生させましたが、彼にはFryaも薪もありませんでした。私たちは頭をかいて去った。その人はついに3週間でつながります。

Gryat:「薪をどれくらい探していましたか。」

彼:「私は見ていませんでした。自分で書いた」


将来的には、Linuxを電卓にインストールすることで、30分間の快適な散歩から、数週間の本当の探求に変わったと言えます。



モルモット



開始するには、HP Prime G2 Calculator (2AP18AA)が必要 です。複数の異なるデバイスが1つの名前で隠れている可能性があるため、写真とその外観の説明、およびこれがまさに必要なデバイスであるかどうかを判断する方法を以下に示します。







これが正確に電卓であることを確認するには、ヘルプ([ヘルプ]ボタン)を開き、電卓に関するセクション(メニューの上から2行目)を開く必要があります。あなたはこのようなものを持っている必要があります。





電卓について。



私たちの国では、これらの計算機を販売しているのは1社だけなので(少なくとも他の会社は見つかりませんでした)、おそらく価格を除いて、購入に問題はないはずです。しかし、それはすべて価値があります!



電卓にLinuxをインストールする準備



開始するには、いくつかのアクティビティを実行する必要があります。LinuxをNandにインストールしたり、このOSをRAMで実行したりするには、電卓の裏表紙を取り外す必要があります。これにより、定義上、保証はすぐに無効になります(作業を開始する前にこれを覚えておいてください)。すべての操作はlinuxmint 18.2で実行されました(Ubuntu 18.04でもすべて同じように機能するはずです)。

必要なもの:



  • HP Prime G2 Calculator(2AP18AA);
  • PrimeをPCに接続するためのUSBケーブル(USB A-Micro B)。
  • ドライバー;
  • ピンセット(導電性またはジャンパー付き)、またはワイヤーのボタン。
  • LinuxまたはWindows7以降のPC。
  • 配布キットHP-Prime-Linux(さらに少し異なるリンクを提供します。これは完全に正しく機能しません)。
  • mfgtools 3.0パッケージに含まれているuuu(Universal Update Utility)ユーティリティ。https://github.com/NXPmicro/mfgtools。


必要なソフトウェアをインストールします



まず、ソフトウェアの足場を準備し、それが機能することを確認します。まず、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
      
      





そして、cmakeエラーが発生しました...その結果、cmakeユーティリティを更新する必要がありました。これを行うために、次のコマンドを実行しました。



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
      
      





ビルドが成功した後、パッケージをインストールすることにしました。しかし、インストールを行うときに手に負えないので、科学的に行い、checkinstallユーティリティを使用してインストールします。



sudo checkinstall
      
      





その結果、mfgtoolsパッケージが インストールされ、必要に応じて、コマンドで削除できます。



dpkg -r mfgtools
      
      





すべてが機能することを確認し、次に進みます。



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
....

      
      





ハードウェアの準備



あなたがあなた自身の危険と危険ですべてをするというティレードがあるべきです、彼らは言う、彼らはあなたの燃え尽きた計算機などに対して作者は責任がないと言います。しかし、私たちは皆、自分たちがしていることのリスクを明確に理解し、その結果を理解している大人であると信じています。

まず、電卓を分解する必要があります。まず最初に、すべてのネジを緩めてバッテリーを取り出しました。





バッテリーを取り外します。



ちなみに、このデバイスが持っているクールなバッテリーに注意してください。ちなみに、今後の実験では、残念ながらもう必要ありません。

さらに、周囲に沿って、ロッキングラッチを壊さないように、カードと特別なオープナーでそれをこじ開けます。





プラスチックケースを開けます。



すべてのアクションの後、電卓の腸が私に現れました、そして今、私はほとんど野蛮な実験の準備ができています。





胸。



私はこの計算機でLinuxを実行する準備がほぼすべてできています。しかし、ニュアンスがあります。最初の始動では、2つのパッドを短絡する必要があります。このプロジェクトの作者は次のように書いています。

, USB .

: . .

Reset ( ). USB- “SE Blank 6ULL”. ( Linux Feescale USB- lsusb)





注:「ブートモード」接点をアースに短絡しています。デフォルトでは、このピンは10kのプルアップ抵抗を介して3.3Vに接続されています。

さらに、2つのオプションがあります。同時に、電卓を再起動せずに、一連のアクションを1つずつ実行できます。たとえば、オプションの1つでは、最初にNANDメモリのバックアップコピーを作成してから、再起動せずにLinuxOSをフラッシュします。



震える手で、ほとんど目立たないパッドをロードするために短絡させる準備ができていないと判断しました。この操作が必要なのは1回だけなので(もちろん、リスクを冒すこともできます)、それでも私は身を守ることに決め、ボタンをはんだ付けしました。





ダウンロードボタン。



電卓の内容を消去したくない場合にのみボタンが必要であり、RAMでLinuxを一度起動して落ち着く準備ができているという事実に注意を向けます。一般的に、まっすぐな手と将来への自信があれば、1本のピンセットで行うことができます。

これで、Linuxを片足起動する準備はほぼ整いました が、成功しません。



Linuxをインストールし、熊手の上を歩く



電卓へのLinuxの実際のインストールに移る前に、発生したすべての問題について、1つの詳細に注意を向けたいと思います。他の人の指示(この記事に記載されているものを含む)を繰り返す前に、インストールアーカイブにあるはずのすべてのファイルが存在し、必要なコマンドを正確に実行していることを確認してください。他の人のスクリプトを実行している場合は、そのスクリプトの内容を確認してください。そこに書かれていることを理解していない場合は、そこで何が起こっているのかを理解してください。そうすれば、すべてが機能しない場合でも、少なくともあらゆる種類のトラブルから機器を救うことができるという非酸性の可能性があります。



しかし、ご想像のとおり、私はそのような段落を書いたので、この道をたどりませんでした。彼らが言うように、ロシア人は言葉で指示を読みます:くそー、すでに壊れました。それで私はほぼ同じように行動しました、そして私の道は厄介でした。ファームウェアのバックアップを作成し、Linuxを実行および/またはインストールするには、ここからflash_utility.tar.gzアーカイブをダウンロードする必要があり ます。..。先に進む前に、このアーカイブには、nandでのフラッシュに必要なrootfs.tar.bz2(flash_linux_to_nand.uuスクリプトでの呼び出しがあります)、initramfsが含まれていないと言います。インストールせずにLinuxを起動すると、動作せず、nandへのLinuxのインストールが失敗します。その結果、実際には、レンガは得られません。私はこれらすべてについて知りませんでした、そしてその瞬間から、Linuxをインストールすることは私にとって本当の探求であることがわかりました。

先に進むために、このユーティリティの使用方法を引用します。

2.2NANDバックアップ



: 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
      
      





このプロセスには数分かかります。完了したら、電卓を再起動(リセット)します。その後、Linuxで起動します。ダウンロードには約15秒かかります。認証には、ログイン「root」を使用します。



この翻訳は、将来失われないように、意図的にここに持ってきました。



ロジックは、ナンドフラッシュバックアップを作成してから実験を実行する必要があることを示しています。これを行うには、ボタンを押したまま、USBコードを電卓に挿入して、次の手順を実行しました。



sudo uuu restore_nand.uu
      
      





注意:上記のコマンドにエラーがあります。この段階では実行できません!!! このコマンドについては何も気になりませんか?最初は、私も混乱しませんでした...しかし、私は、このコマンドで電卓をバックアップしませんでしたが、ナンドフラッシュを消去し、不要なゴミで詰まらせ、ECCセクションを捨てました。電卓は今では決して電卓にはなりません...





夕方はだらしなく、試してみたかったのですが、コマンドを鈍らせて混乱させました。さて、私はそうではなかったと思いました。とにかく、Linuxをフラッシュしてフラッシュしようとします。フラッシュドライブはすでに消去されており、失うものは何もありません。同じように、USBを切断し、ボタンを押したままにして、次のことを行いました。



sudo uuu flash_linux_to_nand.uu
      
      





その結果、次のエラーが発生しました。





次に、このエラーが存在しない場合でも、rootfs自体のアーカイブがファイルリストにないため、電卓をフラッシュできないことをまだ知りませんでした。エラーが発生してドロップアウトしました。以下の数行。



残念ながら、私はこのエラーをさらに克服することができませんでした。このコマンドは、nand-flashでu-bootファームウェアを実行します。何らかの理由で、一時ファイルの作成中にエラーが発生して実行がクラッシュします(後でUART接続でこれを学びました)。



このコマンドの良い結果は、ボタンを押す必要がなくなったことです。そして、私たちはもはやそれを必要としません、私たちは今それをはんだ付け解除することができます。



だから...私はUSBフラッシュドライブを捨てました、私はLinuxを置くことができません、まあ、おそらく少なくともRAMにそれを起動することは可能ですか?



走る:



sudo uuu run_linux_in_ram.uu
      
      





USBをターゲットデバイスに接続すると、コマンドは成功します。そして、見よ、Linuxがロードされている!しかし...しかし、私たちはログインに到達することはありません。





この段階でハングします...



良い結果:ブートローダー、カーネル、ディスプレイ、フラッシュシステム全体が機能します。悪い結果:Linuxは実際には機能しません。



その結果、次のことを行う必要があります。ハードウェアUARTを接続して何が起こっているかを確認し、カーネルを再構築し(主にドライバー用)、rootfsを再構築して機能させます。



最初の部分の結論



記事がわいせつなサイズに成長しただけなので、2つに分割するのは難しい決断でした。



ご存知のように、私はLinuxをこのように置くことはできませんでした。したがって、重い大砲を接続する必要があります。はんだごてを加熱し、ハードウェアの充填物に入り、コードを調べます。このすべてについては、この叙事詩の後半で読むことができます。






All Articles