Hatena::Groupprogram

lnzntのプログラミング日記 このページをアンテナに追加 RSSフィード

2010年11月08日(月)

Armadillo-9 コンパクトフラッシュでのファイルシステム構築

| 15:13 | Armadillo-9 コンパクトフラッシュでのファイルシステム構築 - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク - Armadillo-9 コンパクトフラッシュでのファイルシステム構築 - lnzntのプログラミング日記 Armadillo-9 コンパクトフラッシュでのファイルシステム構築 - lnzntのプログラミング日記 のブックマークコメント

Armadillo-9 コンパクトフラッシュでのファイルシステム構築メモです。

詳細は以下のマニュアルを参照しましょう。

要約です。

コンパクトフラッシュ初期化

JP1=オープン、JP2=オープン、CF を挿して Armadillo-9 を起動します。

フラッシュの Linux が起動します。CF は /dev/hdc になります。

# fdisk /dev/hdc

fdisk で CFパーティションを切ります。私はマニュアル通りに切りました。

devsize
/dev/hdc1 32MB
/dev/hdc2 残り

ファイルシステムの作成

bootデバイス(/dev/hdc1)の方は ext2 で作ります。

また -O none オプションをつけます。

# mke2fs -O none /dev/hdc1      # boot は -O none をつけます
# mke2fs -j /dev/hdc2

カーネルイメージ配置

Armadillo-9 用カーネルイメージを配置します。

イメージは Armadillo 開発サイトからダウンロードします。(PCMCIA 用は使えません)

# mount /dev/hdc1 /mnt
# mkdir /mnt/boot
# cd /mnt/boot/
# wget http://armadillo.atmark-techno.com/files/downloads/armadillo-9/image/linux-2.6.12.3-a9-17.bin.gz
# gzip -dc linux-2.6.12.3-a9-17.bin.gz >Image.gz
# sync
# sync
# sync
# cd
# umount /mnt

ルートファイルシステム構築

イメージは Armadillo 開発サイトからダウンロードします。(PCMCIA 用は使えません)

# mount /dev/hdc2 /mnt
# mount -t ramfs ramfs /tmp
# cd /tmp
# wget http://armadillo.atmark-techno.com/files/downloads/armadillo-9/image/romfs-20090318-2.6.12.3-a9-17.img.gz
# gzip -dc romfs-20090318-2.6.12.3-a9-17.img.gz >romfs.img
# mkdir romfs
# mount -o loop romfs.img romfs
# ( cd romfs/; tar cf - ./* ) | ( cd /mnt; tar xf - )

ここで、/mnt/etc/fstab を書き替えます。(マニュアルに載ってません)

/dev/ram0 を / にマウントするようになっているので、/dev/hdc2 に変更です。

ファイルシステムext3 で作成したので ext3 を指定します。

#/dev/ram0              /               ext2    defaults                0 1
/dev/hdc2               /               ext3    defaults                0 1

sync して umount です。

# sync
# sync
# sync
# umount romfs
# umount /mnt
# halt

システムは終了->電源断させます。

ブートオプション変更 (マニュアルに載ってません)

/dev/hdc1 が root だと設定がいらないようですが /dev/hdc2 を root にするのでブートオプションを変更します。

JP1=オープン、JP2=ショート、CF を抜いて Armadillo-9 を起動します。

hermit が起動したらオプションを設定します。

hermit> setenv console=ttyAM0,11520 root=/dev/hdc2 noinitrd

システムは電源断させます。

起動

JP1=オープン、JP2=ショート、CF を挿して Armadillo-9 を起動します。

CF のシステムが起動するはずです。

ログインしたら、df などで確認しましょう。

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hdc2               953448     20540    884476   2% /

CF を挿している場合は必ず shutdown させてからシステムを終了させます。

# halt

Armadillo-9 のイメージのビルド

| 09:35 |  Armadillo-9 のイメージのビルド - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク -  Armadillo-9 のイメージのビルド - lnzntのプログラミング日記  Armadillo-9 のイメージのビルド - lnzntのプログラミング日記 のブックマークコメント

開発ホスト ATDE

Armadillo-9 の開発ホストはやはり Linux が良いでしょう。

自前で環境を整えるのは面倒なので、アットマークテクノさんが提供する ATDE という開発を利用します。開発者サイトから入手できます。

ATDE は VMwareアプライアンスです。VMware Player が必要です。

ATDE には Debian Linux とツールチェーンがプリインストールされています。

Armadillo-9 では ATDE2 を使用します。

マニュアルの ATDE2 インストールガイドが参考になります。(下記から入手可)

Atmark-Dist と カーネル

Armadillo のイメージをビルドする環境として Atmark-Distが提供されています。製品用のカーネルソースも提供されています。

マニュアルの atmark-dist 開発ガイド以下が参考になります。(下記から入手可)

ビルド

ATDE2 で Armark-dist とカーネルソースを開発サイトからダウンロードして、マニュアルを参考にビルドします。

$ tar zxvf atmark-dist-20100916.tar.gz
$ ln -s atmark-dist-20100916/ atmark-dist
$ tar zxvf linux-2.6.12.3-a9-17.tar.gz
$ cd atmark-dist/
$ ln -s ../linux-2.6.12.3-a9-17/ linux-2.6.x  # 'x' はそのまま打つ
$ make config                       # make menuconfig、make xconfig でも可
(入力するパラメータについてはマニュアルを参照)
$ make all

make config は最初に 1回はマニュアル通りに実行して、Verndor などの情報を入力しておいたほうが楽だと思います。次回以降の make config/menuconfig/xconfig はその設定への変更になります。

images に kernel と userland のイメージができあがります。(イメージは harmit-at-win などでArmadillo-9 のフラッシュに書き込めます)

$ ls images/
linux.bin  linux.bin.gz  romfs.img  romfs.img.gz

romfs にファイルシステムのイメージができあがります。

$ ls romfs/
bin  dev  etc  home  lib  linuxrc  mnt  proc  root  sbin  tmp  usr  var

Armadillo-9 のフラッシュへの書き込み

| 09:15 |  Armadillo-9 のフラッシュへの書き込み - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク -  Armadillo-9 のフラッシュへの書き込み - lnzntのプログラミング日記  Armadillo-9 のフラッシュへの書き込み - lnzntのプログラミング日記 のブックマークコメント

Armadillo-9のフラッシュ最新のイメージを書き込んでみました。

リージョンと書き込むイメージは以下の通りです。

  • bootloader (loader-armadillo-9-eth-v.1.1.2)
  • kernel (linux-2.6.12.3-a9-17.bin.gz)
  • userland (romfs-20090318-2.6.12.3-a9-17.img.gz)

書き込む方法は以下があります。

今回は harmit-at-win を使用しました。

ツール、イメージ、マニュアルは以下からダウンロードできます。

今回は特にソフトウェアマニュアルが参考になります。

手順

  • シリアルケーブルで Armadillo-9 と PC をつなぐ
  • Armadillo-9 を起動してブートローダ(hermit)が起動した状態にする
  • TeraTerm などシリアルをオープンしているソフトを終了させる
  • harmit-at-win で以下を指定して「実行」ボタンを押す
    • シリアルポートを指定 (例:COM4)
    • 書き込み先のリージョンを選択 (bootloader/kernek/userland)
    • イメージファイルを指定
    • bootloader の場合は ForceLocked にチェックを入れる

(bootloader ダウンロードのとき)

f:id:lnznt:20101108091327j:image


今回は 3つのリージョンを書き込んだので 3 回ダウンロードしました。

ダウンロードが終えたら harmit-at-win を終了させて、TeraTermシリアルを開いて、hermit から Linux をブートさせることができます。

hermit> boot

Armadillo-9 で組み込み Linux

| 00:05 |  Armadillo-9 で組み込み Linux - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク -  Armadillo-9 で組み込み Linux - lnzntのプログラミング日記  Armadillo-9 で組み込み Linux - lnzntのプログラミング日記 のブックマークコメント

Armadillo-9 は アットマークテクノさんの ARM9 の CPUボードです。

4年くらい前に入手しました。組み込み Linux (uCLinux) が動きます。

環境構築メモ

詳細は製品マニュアルを参照しましょう。特に以下が参考になります。

Armadillo の開発者サイトからマニュアルやツール類を入手できます。


以下概略です。

f:id:lnznt:20101022203244p:image

ハードの接続は上のような感じです。PC の OSWindows XP です。

PC にシリアルポートが無いのでUSBコンバータを使います。(付属のドライバは事前にインストールします)

TeraTerm*1シリアルポートを開きます。速度は 115200bps です。(速度が違うと字化けします)

ジャンパについては以下の通りです。

  • ジャンパ JP2 はLANコネクタ
  • ジャンパ JP1 はケースモデルだと中に隠れてます(オープンの状態です)
JP1JP2挙動
オープンオープンフラッシュの Linux カーネルが起動
オープンショート1.IDELinux起動、2.CFLinux起動、3.hermit起動(保守モード)
ショート-オンチップのブートROM起動(復旧作業などで使用)

電源を入れます。

ブートローダ hermit のプロンプトが出たら "boot" と入力します。

hermit> boot

これでフラッシュのLinuxが起動します。

ログインに関する情報は以下の通りです。

アカウントパスワード
rootroot
guestなし

終了の場合は rootログインして halt を実行して電源を切ります。

# halt

(リムーバブルディスクが接続されてない場合は、即時電源断でも問題ないとマニュアルには書かれています。確認してください)

config について

フラッシュの config を /etc/config に読み込むコマンド

# flatfsd -r

/etc/config を フラッシュの config に保存するコマンド

# flatfsd -s

Armadillo-9 はデフォルトDHCP が設定されてます。

ネットワーク情報を変更する場合は /etc/network/interfaces を変更します。

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
#iface eth0 inet static
#       address 192.168.1.90
#       netmask 255.255.255.0
#       network 192.168.1.0
#       broadcast 192.168.1.255
#       gateway 192.168.1.1

書き替えた場合は config を保存します。(書き込まない場合電源断で変更内容が失なわれます)


再起動せずに変更の場合は、インターフェイスを Down -> Up させます。

# ifdown -a
# ifup -a

*1:もちろん、ターミナルソフトなら何でもいいです