Flashに焼き込む

Yoctoプロジェクトが提供するツール群を使うと比較的簡単にブートローダーやカーネル、rootfsをビルドすることが出来ます。しかし、当然ですが作り出したイメージは基板に焼き込まなければなりません。これはYoctoプロジェクトの守備範囲ではなく、各基板の制作者あるいはチップベンダーの守備範囲となります。

以下ではSAMA5D3 Xplained(以下SAX。流石に面倒)に書き込む手順を説明します。

リカバリ手順

なにはともあれ、失敗したときに元に戻るための手順を書いておきます。実際には元に戻すのではなく、ネットで提供されているイメージを書き込んで動作可能状態にする方法です。

まず最初にホスト側の整備です。以下のコマンドをコピーして、shellに貼り付けて実行してください。

sudo gpasswd -a `whoami` dialout

“はBashの記法で、くるまれた部分のコマンドを実行して、標準出力で置き換えます。ようするに、whoamiコマンドの実行結果がここに来ます。わかりにくいならば、自分のアカウント名を指定してください。

sudo gpasswd –a account_name dialout

これによってビルド用のLinuxアカウントがdialoutグループに追加され、USBモデム接続されたSAXの制御を可能にします。rootで実行してもいいですが、この方法は後々躓くので最初からグループを変更したほうが合理的です。

設定したら一度ログアウトして再度ログインします。

次にFlashライターをダウンロードします。AtmelはAT91マイコン用にFlashライターとしてSAM-BAというプログラムを提供しています。ダウンロードはリンク先から可能です。面倒ですが登録が必要です。bitbakeを使えばビルド出来るようなのですが、リカバリ用としてはダウンロードした方がいいでしょう。

展開したら展開位置への実行パスを貼ってください。私は~/yoctoの下にそのまま展開したので以下のコマンドを実行しました。

export set PATH=$PATH:/home/`whoami`/yocto/sam-ba_cdc_linux/

最後にデモ用の実行イメージをダウンロードします。ダウンロードはLinux & Open Source related information for AT91 Smart ARM Microcontrollersから行いました。このページの、linux4sam-poky-sama5d3_xplained-4.7.zipをダウンロードしました。新しいものがあるのなら、そちらでもいいでしょう。

zipを展開したら展開先のディレクトリにシェルで移動してください。これでソフトウェアのほうはFlashへの準備完了です。

書き込み前にボードの準備も行います。まず、ボードをガジェットUSBポートを通してPCに接続します。これは普段端末を使うときと同じです。電源が入りますので、JP-6(下の図の赤丸)のジャンパーを抜いてください。

image

ここでリセットボタンを押すと、ボードがNAND Flashではなく、SoC内部のブートROMから起動してFlashライターと通信可能になります。特にタイミングは無いのですが、一呼吸置いてからJP-6にジャンパーをさしてください。これでSAXは書き込み準備完了となりました。

用意が出来たら以下のコマンドをシェルから実行します。

./demo_linux_nandflash.sh

正しく設定していれば、ブートローダー、u-Boot、u-Boot環境変数、デバイスツリー、カーネル、rootfsが書き込まれます。書き込みが終わったらリセットボタンを押してください。Linuxが起動し、LEDが点滅を始めます。

bitbakeで作ったプログラムを書き込む

リカバリ手順を把握したら、自分でビルドしたプログラムを焼きましょう。

ビルド結果は poky/build-atmel/tmp/deploy/image/sama5d3-xplained/ にあると仮定します。また、ターゲットはcore-base-minimalであると仮定します。

最初に重要な事を書いておきます。検索していると出てくるAtmelの公式トレーニング資料を読むと、いかにもSAXのFlash焼きをSAM-BAのGUI画面から出来そうに思えますが、それは幻想です。忘れてください。

GUI画面からFlashを焼くのは二つの意味でハードルが高いです。

  • 離散的なアドレスにブートローダー、u-boot、u-boot環境変数、カーネル、DTB、rootfsを手作業で正確に焼き込まなければならない。
  • bitbakeはu-boot環境変数を作ってくれないので、自分で作る必要がある。

以下に作業手順を書きます。なお、bitbake atmel-demo-image は完了しているものとします。

まずpoky/meta-atmel/scriptsにある、以下の二つのスクリプトをpoky/build-atmel/tmp/deploy/image/sama5d3-xplained/にコピーします。

  • flasher.sh
  • nandflash.tcl

この二つがFlashライターです。あとは、リカバリ手順で説明したとおり、

  1. SAM-BAが置いてあるディレクトリを実行パスに追加する
  2. JP-6からジャンパを抜いてSAXをUSBケーブルでPCに接続する
  3. JP-6にジャンパを挿す

と進みます。最後に以下のコマンドを実行すると書き込みが始まります。

./flashser.sh atmel-demo-image /dev/ttyACM0 sama5d3_xplained

正しく終了すると、リセット後にLEDが点滅を始めます。

追記

コア・イメージをcore-image-minimal からatmel-demo-imageに変更しました。

また、シェルスクリプトにあったバグの修正方法を削除しました。当該バグはmeta-atmelのmasterブランチに存在していますが、fidoブランチには存在していないからです。Yoctoによるビルドもfidoベースに書き直しています。

bitbakeを使ってsam-baを作りたいときには、 bitbake sam-ba-native を実行してください。

参考リソース

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください