AP-SH4AD-0A Linux BSPチュートリアル 1. 仕様 CPUボード : アルファプロジェクト製AP-SH4AD-0A CPU : SH7763 RS232レベル変換ユニット : アルファプロジェクト製PC-RS-04 ホストPC環境 : Fedora12 Linuxカーネル : 2.6.34 U-Boot(ブートローダ ): u-boot-2010.06-rc1 ルートファイルシステム : buildroot-2010.05 クロス開発環境 : buildroot-2010.05 GCC 4.3.4 binutils 2.20.1 uClibc 0.9.31 kernel-headers 2.6.34 2. クロス開発環境 2.1 クロス開発環境の構築 SH4用のクロス開発環境を『buildroot』を使用して構築します。 同時にルートファイルシステムの構築も行います。 (1) ホストPC上にAP-SH4AD-0Aの作業ディレクトリを作成します。 PC# mkdir AP-SH4AD-0A PC# cd AP-SH4AD-0A (2) ホストPC上の作業ディレクトリ『AP-SH4AD-0A』にAP-SH4AD-0A用buildroot 『buildroot-2010.05-ap.tar.gz』をダウンロードします。 (3) 『buildroot-2010.05-ap.tar.gz』を解凍し、buildrootのディレクトリに 移動します。 PC# tar -zxf buildroot-2010.05-ap.tar.gz PC# cd buildroot-2010.05-ap (6) buildrootのAP-SH4AD-0A用設定データを読み出します。 PC# make apsh4ad0a_defconfig PC# (7) AP-SH4AD-0A用クロスコンパイラを構築します。 終了までに数時間かかる場合があります。 PC# make ・ ・ ・ PC# 2.2 クロス開発環境の設定 U-Boot、Linuxカーネルのコンパイルのために作成したAP-SH4AD-0A用クロスコンパイラ のパスを設定します。 (1) AP-SH4AD-0A用クロスコンパイラのパスを設定します。 パス設定は一時的な設定なので、端末を終了すると設定が無効になります。 PC# export PATH=作業ディレクトリ/buildroot-2010.05-ap/output/staging/usr/bin:$PATH PC# (2) AP-SH4AD-0A用クロスコンパイラのバージョンを確認します。 PC# sh4-linux-gcc -v Using built-in specs. Target: sh4-unknown-linux-uclibc ... Thread model: posix gcc version 4.3.4 (Buildroot 2010.05) PC# 2.3 ルートファイルシステムの確認 buildrootを実行すると、クロスコンパイラと同時にルートファイルシステムの構築 も行います。 Linuxカーネルの作成にルートファイルシステムをリンクするため、任意のディレク トリにコピーします。 (1) AP-SH4AD-0A用ルートファイルシステムを確認します。 PC# ls output/images/rootfs.cpio.gz output/images/rootfs.cpio.gz PC# (2) AP-SH4AD-0A用ルートファイルシステムを『/nfs』ディレクトリにコピーします。 PC# mkdir -p /nfs PC# cp output/images/rootfs.cpio.gz /nfs/rootfs-apsh4ad0a.cpio.gz PC# 3. U-Boot 3.1 U-Bootの作成 AP-SH4AD-0A用U-Bootの作成を行います。 (1) クロス開発環境の構築時に作成したAP-SH4AD-0Aの作業ディレクトリに移動します。 PC# cd 作業ディレクトリ (2) ホストPC上の作業ディレクトリ『AP-SH4AD-0A』にAP-SH4AD-0A用u-boot 『u-boot-2010.06-rc1-ap.tar.gz』をダウンロードします。 (3) 『u-boot-2010.06-rc1-ap.tar.gz』を解凍し、U-Bootのディレクトリに移動 します。 PC# tar -zxf u-boot-2010.06-rc1-ap.tar.gz PC# cd u-boot-2010.06-rc1-ap (4) u-bootのAP-SH4AD-0A用設定データを読み出します。 PC# make apsh4ad0a_config Configuring for apsh4ad0a board... PC# (5) u-bootの作成を行います。 PC# make ・ ・ ・ PC# (6) コンパイルが正常に終了するとバイナリイメージ『u-boot.bin』、ELF イメージ 『u-boot』、モトローラS-Record フォーマット『u-boot.srec』が作成されます。 PC# ls u-boot.bin u-boot u-boot.srec u-boot u-boot.bin u-boot.srec PC# 3.2 ツールの設定 LinuxカーネルバイナリファイルをLinuxカーネルU-Boot用イメージに変換する『mkimage』 のパス設定を行います。 (1) U-Boot 用イメージ作成ツール『mkimage』が作成されていることを確認します。 PC# ls tools/mkimage tools/mkimage PC# (2) 『mkimage』のパスを設定します。 パス設定は一時的な設定なので、端末を終了すると設定が無効になります。 PC# export 作業ディレクトリ/u-boot-2010.06-rc1-ap/tools:$PATH PC# 4. Linuxカーネル 4.1 Linuxカーネルの作成 AP-SH4AD-0A用Linuxカーネルの作成を行います。 (1) クロス開発環境の構築時に作成したAP-SH4AD-0Aの作業ディレクトリに移動します。 PC# cd 作業ディレクトリ (2) ホストPC上の作業ディレクトリ『AP-SH4AD-0A』にAP-SH4AD-0A用Linuxカーネル 『linux-2.6.34-ap.tar.gz』をダウンロードします。 (3) 『linux-2.6.34-ap.tar.gz』を解凍し、U-Bootのディレクトリに移動 します。 PC# tar -zxf linux-2.6.34-ap.tar.gz PC# cd linux-2.6.34-ap (4) LinuxカーネルのAP-SH4AD-0A用設定データを読み出します。 PC# ARCH=sh make apsh4ad0a_defconfig # # configuration written to .config # PC# (5) Linuxカーネルのコンフィグレータを起動します。 PC# ARCH=sh make menuconfig (6) Linuxカーネルのコンフィグレータにて『Exit』を選択し、コンフィグレータを 終了します。 (7) Linuxカーネルの作成を行います。 PC# ARCH=sh CROSS_COMPILE=sh4-linux- make uImage ・ ・ ・ PC# (8) コンパイルが正常に終了すると『./arch/sh/boot』ディレクトリにLinux カーネル イメージ『uImage』が作成されます。 PC# ls arch/sh/boot/uImage arch/sh/boot/uImage PC# 4.2 Linuxカーネルのコピー LinuxカーネルバイナリファイルはTFTPを利用してダウンロードします。 (1) Linux カーネルイメージ『uImage』をTFTPサーバディレクトリ/tftpbootにコピーします。 PC# cp arch/sh/boot/uImage /tftpboot PC# ※ TFTPサーバのインストールおよび設定方法につきましてははインターネット上で検索してください。 5. ルートファイルシステム 5.1 ルートファイルシステムの作成 『buildroot』を使用してルートファイルシステムの構築を行います。 (1) ホストPC上のbuildrootのディレクトリに移動します。 PC# cd 作業ディレクトリ/buildroot-2010.05-ap PC# (2) buildrootのコンフィグレータを起動します。 PC# make menuconfig (3) buildrootのコンフィグレータでクロス開発環境(ツールチェイン) を外部バイナリツールチェインに変更し、外部ツールチェインの パスを変更します。 Toolchain ---> Toolchain type (Buildroot toolchain) ---> (X) External binary toolchain Toolchain type (External binary toolchain) ---> (/path/to/staging_dir/usr) External toolchain path $(BR2_STAGING_DIR)/usr ($(BR2_STAGING_DIR)/usr) External toolchain path (4) buildrootのコンフィグレータでクロス開発環境(ツールチェイン) を外部バイナリツールチェインに変更します。 Toolchain ---> Toolchain type (Buildroot toolchain) ---> (X) External binary toolchain (5) AP-SH4AD-0A用ルートファイルシステムのネットワーク設定を変更します。 『./output/target/etc/network/interfaces』ファイル を変更します。 (6) AP-SH4AD-0A用ルートファイルシステムを構築します。 PC# make ・ ・ ・ PC# (7) AP-SH4AD-0A用ルートファイルシステムを確認します。 PC# ls output/images/rootfs.cpio.gz output/images/rootfs.cpio.gz PC# (8) AP-SH4AD-0A用ルートファイルシステムを『/nfs』ディレクトリにコピーします。 PC# mkdir -p /nfs PC# cp output/images/rootfs.cpio.gz /nfs/rootfs-apsh4ad0a.cpio.gz PC# (9) 『4. Linuxカーネル』を参考にLinuxカーネルを再構築します。 6. システムの起動 6.1 シリアルコンソール設定 ボーレート : 115200 bps データ : 8ビット パリティビット: なし ストップビット: 1ビット フロー制御 : なし 6.2 ネットワーク設定 CN5 IPアドレス : 192.168.128.200 サブネットマスク : 255.255.255.0 ゲートウェイ : 192.168.128.254 6.3 U-Bootの起動 U-BootをAP-SH4AD-0Aのフラッシュロムに書込み、起動します。 (1) AP-SH4AD-0Aの SW1を『1:ON,2:ON,3:ON,4:ON』に、 SW2を『1:OFF,2:OFF,3:ON,4:ON,5:OFF,6:OFF,7:OFF,8:OFF』に、 SW4を『1:ON,2:ON,3:ON,4:OFF,5:OFF,6:OFF』に、 SS1を『DEBUG』に、 JSW1を『HOST』に、それぞれ設定します。 (2) JTAGデバッガで作成した『u-boot.bin』ファイルをAP-SH4AD-0Aのフラッシュロム の先頭番地に書込みます。 (3) AP-SH4AD-0AのCN10とRS232レベル変換ユニット『PC-RS-04』を接続し、PC-RS-04と ホストPCをシリアルケーブルで接続します。 (4) ホストPC上でTeraTermやminicomなどのシリアルターミナルソフトを起動し、 『6.1 シリアルコンソール設定』に合わせて、シリアルの設定を行います。 (5) AP-SH4AD-0Aの電源を入れ、U-Bootを起動します。 U-Boot 2010.06-rc1 ( 7月 12 2010 - 16:18:30) CPU: SH4 BOARD: ALPHAPROJECT AP-SH4AD-0A DRAM: 256MB FLASH: 16MB In: serial Out: serial Err: serial Net: smc911x-0 => 6.4 Linuxの起動 LinuxをU-Bootとネットワークを使用してAP-SH4AD-0Aのフラッシュロムに書込み起動 します。 (1) AP-SH4AD-0AとホストPCをネットワークに接続します。 (2) AP-SH4AD-0Aの電源を入れ、U-Bootを起動します。 (3) U-Boot上でネットワークを設定します。 U-Bootのネットワーク設定は『6.2 ネットワーク設定』、ホストPCのIPアドレス は『192.168.128.202』とします。 => setenv ipaddr=192.168.128.200 => setenv netmask=255.255.255.0 => setenv serverip=192.168.128.202 => saveenv Saving Environment to Flash... Un-Protected 1 sectors Un-Protected 1 sectors Erasing Flash... . done Erased 1 sectors Writing to Flash... done Protected 1 sectors Protected 1 sectors => (3) U-BootからTFTPでLinuxカーネルをダウンロードします。 ホストPC上ではTFTPサーバが動作していることを前提としています。 => tftp 88800000 uImage smc911x: detected LAN9221 controller smc911x: phy initialized smc911x: MAC 00:0c:7b:2a:01:02 Using smc911x-0 device TFTP from server 192.168.128.202; our IP address is 192.168.128.200 Filename 'uImage'. Load address: 0x88800000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####################### done Bytes transferred = 5097319 (4dc767 hex) => (4) Linuxを格納するフラッシュロムの領域のプロテクトを解除します。 => protect off a0100000 +00800000 Un-Protected 64 sectors => (5) Linuxを格納するフラッシュロムの領域を消去します。 => erase a0100000 +00800000 ................................ done Erased 64 sectors => (6) ロードしたLinuxカーネルU-Boot用イメージをフラッシュロムに保存します。 => cp.b 88800000 a0100000 00800000 Copy to Flash... done => (7) U-Bootのブートコマンドを設定します。 => setenv bootcmd bootm a0100000 => saveenv => (8) AP-SH4AD-0Aの電源を再投入し、Linuxを起動します。 U-Boot 2010.06-rc1 ( 7月 12 2010 - 16:18:30) CPU: SH4 BOARD: ALPHAPROJECT AP-SH4AD-0A DRAM: 256MB FLASH: 16MB In: serial Out: serial Err: serial Net: smc911x-0 Hit any key to stop autoboot: 0 ## Booting kernel from Legacy Image at a0100000 ・ ・ ・ net eth1: attached phy 1 to driver Generic PHY Welcome to Buildroot buildroot login: (9) ログイン画面で「root」でログインします。