Install Babirl to V7768
V7768に組み込みLinuxをインストールしたときのメモ。
まず某所の某氏からv7768用のイメージファイルをもらう。
V7768にコンパクトフラッシュを載せ、そこにLinuxをいれて
使う訳だが、動作するCFが限られている模様。そこでV7768を購入した
代理店から動作保証付きCFを購入(swissbit社製4GB).
bios設定画面でCFが認識されている事を確認
1. キーボード/マウスの端子に二股ケーブルをつなぎ、その上でキーボードとマ
ウスを刺しておく。
2. 起動直後、delete連打(クイックbootの設定になっていてbios画面がほとんど
見えない)
3. クイックbootをdisableにする。
4. IDE configurationでCFの詳細を確認。Secandary IDEに何かあればそれがCF
5. 正常に動き出したらクイックbootをenableにしておくと起動が早い。
CFにOSイメージを焼く
適当なLinux PCを使う。まずはOSイメージをPCにマウント。
# mkdir /imgmnt
# mount -o loop vme7768.img imgmnt
次にCF(/dev/sdc)をフォーマット。
# fdisk /dev/sdc (Linuxパーティション、boot flagをつける)
# mkfs.ext3 /dev/sdc1
CFをマウント
# mkdir /mnt/sdc1
# mount /dev/sdc1 /mnt/sdc1
OSイメージをCFにコピー
# rsync -av imgmnt/ /mnt/sdc1/
device.mapを書き換える
# emacs -nw /mnt/sdc1/boot/grub/device.map
(hd0) /dev/sdc
GRUBをインストール
# grub-install --root-directory=/mnt/sdc1 /dev/sdc
device.mapを再び編集
# emacs -nw /mnt/sdc1/boot/grub/device.map
(hd0) /dev/hdc
ラベルのつけかえからのアンマウント
# e2label /dev/sdc1 /
# umount /mnt/sdc1
CFを7768に挿して起動。起動後すぐにESCを連打してGRUBの画面に入る。
'e'を押してkernelの最後の行にsingleと書き込む。→'b'を押してブート。
ユーザーrootとdaqのパスワード変更、host名、ipを変更。network設定は
system-config-networkを利用。
もらったイメージにはすでにNBBQ,Babirlがインストールされているので
cmdvme等をつかって動作チェックが可能。
LinuxのKernelが2.6以上の時の割り込み制御
割り込み制御に関連する記述はbabildrv.cに書かれているが、
kernel2.6以上ではここで使うirq関連のコマンドには注意が必要がある。
(実はkernelのコンパイルオプションによってはkerenel2.4と同じ処理でよい?)
v7768はマルチコアCPUなので、あるCPUが例えばevt()を処理中に
sca()等を呼ばないようにirq制御をする必要がある。
そこで、関数local_irq_save(), local_irq_restore()を
関数spin_lock_irqsave(), spin_lock_irqrestore()に変更。
spin_lock関数を使う事で、1つのCPUがDAQ関連の関数を実行中は他のCPUが
DAQ関連の関数を呼ばないように制御する。