Olinuxinoのシャーマニズムまたはカスタムファームウェアの芸術。 UBOOTパート2

これらはすべてUbuntu 16.04の下で収集されました。



ファームウェアをビルドする決定は、このボード(Olimex A13-Olinuxino)のイメージに無料でアクセスできないために生まれました。 メーカーは画像付きのSDカードを購入することを申し出ましたが、当時は約10ユーロでしたが、機能しませんでした。また、モニター用に設計されていました。



SDカードからブートするためのブートローダー構成を構成します。 ボードにNANDメモリがなく、他のすべてのブートオプションが少し曲がっているので(USBメディアからブートするためにubootを組み立てることができる人は誰でも、2歩先に進んで共有してください)。 allwinner a13プロセッサロードアルゴリズムは、製造元のWebサイトで見つけることができます。 または、これはデータシートからの切り抜きです。







アルゴリズムから、SDカードで最初にブートローダーがチェックされ、残りがチェックされ、最後にのみブートローダーでUSBがチェックされることが明らかになっています。 したがって、タブレットとスマートフォンは、適切な方法でSDカードをすればUbuntuで実行できます。 そして、どうやら、このようなアルゴリズムは、すべてではないにしても、多くのアームプロセッサのメーカーにとってはほぼ同じになるでしょう。



まず、コマンドを入力するプロセスを間違えないように、SDカードを壊す必要があります。プロセス全体をスクリプトファイルに削減します(複数回実行する必要があるため、このようなファイルにすべてを削減することをお勧めします)。



#!/bin/sh DEViCELINK=/dev/sdb fdisk $DEViCELINK <<EOF n #    p #   1 #   2048 #     2MiB +64M #  ,    kernel     dts  n p 2 +2G #    ubuntu n p 3 +2G #         n p 4 #         w EOF mkfs.ext2 /dev/sdb1 << EOF #   kernel    fat16  ext2 y EOF mkfs.ext4 /dev/sdb2 << EOF y EOF mkfs.ext4 /dev/sdb3 << EOF y EOF mkfs.ext4 /dev/sdb4 << EOF y EOF
      
      





UBOOTビルド



ブートローダーについて詳しく見てみましょう。これでUBOOTを選択し、その時点でu-boot-2018.05のバージョンをポンプアウトします。



アセンブリに必要なすべてのソフトウェアが既にインストールされていることを前提としています。 そして、ブートローダーを設定してビルドを開始します。



構成を開始するには、UBOOTがあるフォルダーに移動し、そこからコマンドを実行します。



 make O=../olimex-uboot #       -j4 #     ARCH=arm #      CROSS_COMPILE=arm-linux-gnueabihf- #    xconfig #   GUI 
      
      





実行の結果、このようなウィンドウが表示されます。







これはコンフィギュレーターのいわゆるXバージョンであり、通常はコンソールオプションを使用し、より多くの情報が提供されますが、これはより視覚的であり、ニーズを完全にカバーします。



そして、時間が長い場合や気にしない場合は、ブートローダーを最初から設定できます。 ただし、ファイルメニューからこのボードの完成した構成をダウンロードすることをお勧めします。 /u-boot-2018.05/configs/にあるブートローダーソースのあるフォルダーで、ファイルA13-OlinuXino_defconfigを選択します。これはすべてが既にインストールされている構成です。 次に、保存をクリックしてウィンドウを閉じます。ここでは何も変更する必要はありません。



ビルドコマンドを実行するために残ります。



 make O=../olimex-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
      
      





このコマンドでは、要素はすべて前の要素と同じですが、構成を意味するxconfigパラメーターがありません。 以上で、ブートローダーが組み立てられました。



アセンブリが完了したら、コマンドで指定されたフォルダーで、このファイル「u-boot-sunxi-with-spl.bin」を見つける必要があります。これが目的のブートローダーです。



次に、ブートローダーをSDカードにアップロードするには、次のコマンドを使用します。



 dd if=../olimex-uboot/u-boot-sunxi-with-spl.bin #      of=/dev/sdb #     SD  bs=1024 seek=8 #  8KiB  ,     
      
      





ブート後に記録されたばかりのブートローダーは、SDカードの次のセクション/ dev / sdb1を指し、そこでさらにロードするための指示を含む環境変数を含むスクリプトファイルを探します。



このファイルはboot.scrという名前にする必要があります。この名前のファイルは、ダウンロード後にubootを探します。 もちろん、UBOOT構成になった場合、ダウンロード方法だけでなくファイル名も変更できますが、このオプションについて説明します。



また、デバイスツリーファイルをコンパイルする必要があります。それらは、/ u-boot-2018.05 / arch / arm / dts /にあるブートローダーのソースにあります。ファイルsun5i-a13-olinuxino.dtsに興味があります。 プロセッサのレジスタおよび周辺機器の構成を表します。 これはユニバーサル構成ファイルであるため、1つのubootブートローダーが異なるプロセッサーに使用されているが、異なるdtsファイルが使用されている場合にオプションが可能です。 Linuxカーネルのソースコードにも同じdtsファイルがありますが、基本的にはわずかに異なって書かれているだけで、組み立てられたデバイスツリーの取得元を選択できます。 一般に、dtsファイルを作成するには、次のコマンドを実行する必要があります。



 make O=../olimex-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs #      dts 
      
      





コンパイルされたファイルは../olimex-uboot/arch/arm/dts/にあります。

boot.scrファイルの詳細を取得することを検討してください。

最初に、次の内容を含むboot.cmdファイルを作成します。



 load mmc 0 0x43000000 sun5i-a13-olinuxino.dtb load mmc 0 0x42000000 uImage setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait console=ttyS0,115200 bootm 0x42000000 – 0x43000000
      
      





ただし、ubootが命令を理解するためには、このファイルはスクリプトの形式である必要があり、このためにはコマンドを実行する必要があります。



  mkimage -C none -A arm -T script -d boot.cmd boot.scr
      
      





boot.scrは必須ファイルです。



最初の行のロードmmc 0 0x43000000 sun5i-a13-olinuxino.dtbは、RAMの指定されたアドレスにデバイスツリーファイルをロードします。 load mmc 0は、SDカードの最初のセクションからファイルをダウンロードする必要があることを示していますが、ubootの番号は1ではなくゼロです。



2行目はmmc 0 0x42000000をロードし、uImageは指定されたアドレスにアセンブルされたLinuxカーネルをロードします。



オプションであるsetenvビデオモード変数は、通常はさらに使用されますが、モニターは使用される予定がないため、必要ありません。



3行目:



 setenv bootargs #    root=/dev/mmcblk0p2 #    SD    rootfs rootfstype=ext4 #    rootfs rw #    rootwait console=ttyS0,115200 #    uart0
      
      





さて、最後のbootmコマンドは、メモリに以前にロードされたカーネルからカーネルをロードします。



次の記事では、SDカードの最初のセクションに配置する必要がある最後の部分は、Linuxカーネルカーネルの形成です。



記事の最初の部分

記事の第三部



All Articles