*HDL-GXR 対応 linux カーネルパッチの使い方 [#dc247f21]

[[先日の日記>日記/2008-12-09/HDL-GXR 対応 linux カーネルパッチ]]でカーネルパッチを晒したので,使い方をもう少し詳しく説明してみる.

** 用意するもの [#pf75f239]
:LANTANK 用シリアル接続ケーブル|
今回は必須です.
挑戦者で SERIAL-KIT として売られていたもの.
もしくはその相当品.
:ARM コンパイル環境|
セルフコンパイルでもクロスコンパイルでも可.
:シリアル端末|
LANDISK の接続先
:rootfs|
とりあえずは http://jr0bak.homelinux.net/~imai/linux/HDL-GXR/install_kit/sda2.tar.gz でいいかな.
debian の lenny-armel (EABI) でも動作しております.
lenny が正式リリースされたらインストールキットにまとめてみようかと思ってます.
:USB-SATA 変換ケーブル|
HDD にカーネルと rootfs を書き込むのに使います.
:x86 linux マシン|
同上

** mkimage プログラム [#o8d0b852]
u-boot 形式のバイナリを作るプログラムです.
u-boot のソースの中にあります.
ARM コンパイル環境上でビルドしてパスの通った場所に置いておきましょう.

** カーネルのコンパイル [#v622d98f]

+ linux-2.6.27.tar.bz2 と patch-2.6.28-rc6.bz2 を kernel.org から入手します.
+ 先日のパッチを当てます.
#ref(日記/2008-12-09/HDL-GXR 対応 linux カーネルパッチ/hdl-gxr.diff)
+ カーネルをビルドします.linux/.config ファイルをここに上げておくので,設定の参考に.
#ref(dot.config)
設定を変更しない場合は
 $ cd linux-2.6.28-rc6
 $ cp どこか/dot.config .config
 $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make oldconfig
 $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make uImage
でコンパイルできます.
CROSS_COMPILE= の部分はクロスコンパイラの名前によって変更してください.
この例はクロスコンパイラが arm-linux-gnueabi-gcc の場合です.

linux-2.6.28-rc6/arch/arm/boot/uImage が目的のブツです.

** rootfs の作成 [#b4363290]
SATA HDD にパーティションを切って sda2.tar.gz を展開します.
[[このページ>Linux/embedded/LANDISK/HDL-GXR/debian インストールキット]]と同じ要領でいいでしょう.

** カーネルのコピー [#s99cf9d4]
先ほど作成した uImage を 1 番めのパーティションにコピーします.
名前は何でもいいのですが,説明のためここでは uImage-2.6.28-rc6.gxr としときます.

** HDD を LANDISK に装着 [#i83997f8]
T/O

** シリアルの接続 [#f91e78c7]
UART0 というシルク(基板上の文字)があるところにシリアルケーブルを接続します.
文字のあるほうが 1 番ピンです.
向きを間違えないように.

シリアルの通信パラメータは
- 115200 bps
- 8 bit
- パリティなし
- ハードフロー・ソフトフローなし

です.

** 電源投入 [#jd3d7ca0]

 =========================================                                       
     HDL-GXR series Initial boot loader                                          
 =========================================
     HDL-GXR series Initial boot loader
 
  Copyright (C) 2006 I-O DATA DEVICE,INC.
 ========================================= ** LOADER **
  ** MARVELL BOARD: DB_MV88F5182_HDL_GT LE
                                                                                 
  Copyright (C) 2006 I-O DATA DEVICE,INC.                                        
 ========================================= ** LOADER **                          
  ** MARVELL BOARD: DB_MV88F5182_HDL_GT LE                                       
                                                                                 
 U-Boot 1.1.1 (Oct  5 2006 - 13:58:33) MV : 1.7.3 (I-O DATA 0.9(GX))             
                                                                                 
 DRAM CS[0] base 0x00000000   size 128MB                                         
 DRAM Total size 128MB                                                           
 MX AM29LV400B (4 Mbit, bottom boot sect)                                        
 Size: 512 kB,Bus Width: 2, device Width: 2.                                     
 Flash base: 0xfff80000,Number of Sectors: 11 Type: BOTTOM.                      
 [512kB@fff80000] Flash: 512 kB                                                  
 Addresses 20M - 0M are saved for the U-Boot usage.                              
 Mem malloc Initialization (20M - 16M): Done                                     
                                                                             
 Soc: MV88F5182 Rev 2                                                            
 CPU: ARM926 (Rev 0) running @ 400Mhz                                            
 SysClock = 200Mhz , TClock = 166Mhz                                             
                                                                                                                                                                 
 USB 0: host mode                                                                
 USB 1: host mode                                                                
 PCI 0: PCI Express Root Complex Interface                                       
 Net:   egiga0 [PRIME]                                                           
 Hit any key to stop autoboot:  0                                                
 U-Boot 1.1.1 (Oct  5 2006 - 13:58:33) MV : 1.7.3 (I-O DATA 0.9(GX))
 
 DRAM CS[0] base 0x00000000   size 128MB
 DRAM Total size 128MB
 MX AM29LV400B (4 Mbit, bottom boot sect)
 Size: 512 kB,Bus Width: 2, device Width: 2.
 Flash base: 0xfff80000,Number of Sectors: 11 Type: BOTTOM.
 [512kB@fff80000] Flash: 512 kB
 Addresses 20M - 0M are saved for the U-Boot usage.
 Mem malloc Initialization (20M - 16M): Done
 
 Soc: MV88F5182 Rev 2
 CPU: ARM926 (Rev 0) running @ 400Mhz
 SysClock = 200Mhz , TClock = 166Mhz
 
 USB 0: host mode
 USB 1: host mode
 PCI 0: PCI Express Root Complex Interface
 Net:   egiga0 [PRIME]
 Hit any key to stop autoboot:  0
 HDL-GXR>>

電源を入れるとシリアル端末上にベロベロっとメッセージが出てきます.
このままだと自動ブートシーケンスに入ってしまうので,何かキーを押してシーケンスを中止させます.
HDL-GXR>> というプロンプトが出てきます.

そこで,以下のように入力します.

 ide reset                                                         ← SATA ドライブのリセット
 ext2load ide 0:1 0x02000000 /uImage-2.6.28-rc6.gxr                ← カーネルのロード
 setenv bootargs console=ttyS0,115200 root=/dev/sda2 ro mem=128M   ← カーネルコマンドラインの指定
 bootm                                                             ← 起動

linux が起動しましたね.

** tips [#ze550672]
*** 自動起動するようにする [#gbaed998]

下記のようにすればできるはずですが,未確認です.

+ 1 番目のパーティションのカーネルの名前を uImage.gxr にします.
-- 別の名前にするとブートシーケンスのほうも書き換えないといけないので,面倒です.
+ カーネルコマンドラインを上記の値に設定します.
+ u-boot 環境変数を保存します.
 saveenv
+ 再起動して,動作を確認してください.

*** tftp でのカーネルのロード [#fcd13ce0]

u-boot 上で以下のようにすれば tftp 経由でカーネルをロードできます.

 set ipaddr 192.168.0.200                          ← LANDISK の IP アドレス
 set serverip 192.168.0.1                          ← tftp サーバの IP アドレス
 tftpboot 0x02000000 どこか/uImage-2.6.28-rc6.gxr  ← tftp でのカーネルのロード
 setenv bootargs console=...(略)                 ← カーネルコマンドライン
 bootm                                             ← linux の起動

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS