AP-SH4A-2A Linux BSPチュートリアル 1. 仕様 CPUボード : アルファプロジェクト製AP-SH4A-2A CPU : SH7763 RS232レベル変換ユニット : アルファプロジェクト製PC-RS-04 ホストPC環境 : Fedora9 Linuxカーネル : 2.6.29.4 U-Boot(ブートローダ ): u-boot-2009.08 ルートファイルシステム : buildroot-2009.05 クロス開発環境 : buildroot-2009.05 GCC 4.3.3 binutils 2.19.1 uClibc 0.9.30.1 kernel-headers 2.6.29.x 2. クロス開発環境 2.1 クロス開発環境の構築 SH4用のクロス開発環境を『buildroot』を使用して構築します。 同時にルートファイルシステムの構築も行います。 (1) ホストPC上にAP-SH4A-2Aの作業ディレクトリを作成します。 PC# mkdir AP-SH4A-2A PC# cd AP-SH4A-2A (2) ホストPC上の作業ディレクトリ『AP-SH4A-2A』にAP-SH4A-2A用buildroot 『buildroot-2009.05-apsh4a2a.tar.gz』をダウンロードします。 (3) 『buildroot-2009.05-apsh4a2a.tar.gz』を解凍し、buildrootのディレクトリに 移動します。 PC# tar -zxf buildroot-2009.05-apsh4a2a.tar.gz PC# cd buildroot-2009.05-apsh4a2a (4) buildrootのコンフィグレータを起動します。 PC# make menuconfig (5) buildrootのコンフィグレータにて『Exit』を選択し、コンフィグレータを終了 します。 (6) buildrootのAP-SH4A-2A用設定データを読み出します。 PC# make BOARD=apsh4a2a getconfig cp .//local/apsh4a2a/apsh4a2a.config .config PC# (7) AP-SH4A-2A用クロスコンパイラを構築します。 終了までに数時間かかる場合があります。 PC# make ・ ・ ・ PC# 2.2 クロス開発環境の設定 U-Boot、Linuxカーネルのコンパイルのために作成したAP-SH4A-2A用クロスコンパイラ のパスを設定します。 (1) AP-SH4A-2A用クロスコンパイラのパスを設定します。 パス設定は一時的な設定なので、端末を終了すると設定が無効になります。 PC# export PATH=作業ディレクトリ/buildroot-2009.05-apsh4a2a/staging_dir/usr/bin:$PATH PC# (2) AP-SH4A-2A用クロスコンパイラのバージョンを確認します。 PC# sh4-linux-gcc -v Using built-in specs. Target: sh4-linux-uclibc Thread model: posix gcc version 4.3.3 (GCC) PC# 2.3 ルートファイルシステムの確認 buildrootを実行すると、クロスコンパイラと同時にルートファイルシステムの構築 も行います。 Linuxカーネルの作成にルートファイルシステムをリンクするため、任意のディレク トリにコピーします。 (1) AP-SH4A-2A用ルートファイルシステムを確認します。 PC# ls binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz PC# (2) AP-SH4A-2A用ルートファイルシステムを『/nfs』ディレクトリにコピーします。 PC# mkdir -p /nfs PC# cp binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz /nfs PC# 3. U-Boot 3.1 U-Bootの作成 AP-SH4A-2A用U-Bootの作成を行います。 (1) クロス開発環境の構築時に作成したAP-SH4A-2Aの作業ディレクトリに移動します。 PC# cd 作業ディレクトリ (2) ホストPC上の作業ディレクトリ『AP-SH4A-2A』にAP-SH4A-2A用u-boot 『u-boot-2009.08-apsh4a2a.tar.gz』をダウンロードします。 (3) 『u-boot-2009.08-apsh4a2a.tar.gz』を解凍し、U-Bootのディレクトリに移動 します。 PC# tar -zxf u-boot-2009.08-apsh4a2a.tar.gz PC# cd u-boot-2009.08-apsh4a2a (4) u-bootのAP-SH4A-2A用設定データを読み出します。 PC# make apsh4a2a_config Configuring for apsh4a2a 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-2009.08-apsh4a2a/tools:$PATH PC# 4. Linuxカーネル 4.1 Linuxカーネルの作成 AP-SH4A-2A用Linuxカーネルの作成を行います。 (1) クロス開発環境の構築時に作成したAP-SH4A-2Aの作業ディレクトリに移動します。 PC# cd 作業ディレクトリ (2) ホストPC上の作業ディレクトリ『AP-SH4A-2A』にAP-SH4A-2A用Linuxカーネル 『linux-2.6.29.4-apsh4a2a.tar.gz』をダウンロードします。 (3) 『linux-2.6.29.4-apsh4a2a.tar.gz』を解凍し、U-Bootのディレクトリに移動 します。 PC# tar -zxf linux-2.6.29.4-apsh4a2a.tar.gz PC# cd linux-2.6.29.4-apsh4a2a (4) LinuxカーネルのAP-SH4A-2A用設定データを読み出します。 PC# ARCH=sh make apsh4a2a_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サーバディレクトリにコピーします。 TFTPサーバディレクトリはディストリビューションによって異なります。 Fedora9では『/var/lib/tftpboot』、Fedora10では『/tftpboot』になります。 PC# cp arch/sh/boot/uImage /var/lib/tftpboot PC# ※ TFTPサーバのインストール方法についてはインターネット上で検索してください。 5. ルートファイルシステム 5.1 ルートファイルシステムの作成 『buildroot』を使用してルートファイルシステムの構築を行います。 (1) ホストPC上のbuildrootのディレクトリに移動します。 PC# cd 作業ディレクトリ/buildroot-2009.05-apsh4a2a 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-SH4A-2A用ルートファイルシステムのネットワーク設定を変更します。 『./project_build_sh4/apsh4a2a/root/etc/network/interfaces』ファイル を変更します。 (6) AP-SH4A-2A用ルートファイルシステムを構築します。 PC# make ・ ・ ・ PC# (7) AP-SH4A-2A用ルートファイルシステムを確認します。 PC# ls binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz PC# (8) AP-SH4A-2A用ルートファイルシステムを『/nfs』ディレクトリにコピーします。 PC# mkdir -p /nfs PC# cp binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz /nfs PC# (9) 『4. Linuxカーネル』を参考にLinuxカーネルを再構築します。 PC# mkdir -p /nfs PC# cp binaries/apsh4a2a/rootfs.sh4-apsh4a2a.cpio.gz /nfs PC# 6. システムの起動 6.1 シリアルコンソール設定 ボーレート : 115200 bps データ : 8ビット パリティビット: なし ストップビット: 1ビット フロー制御 : なし 6.2 ネットワーク設定 CN6 IPアドレス : 192.168.128.200 サブネットマスク : 255.255.255.0 ゲートウェイ : 192.168.128.254 CN7 IPアドレス : 192.168.128.201 サブネットマスク : 255.255.255.0 ゲートウェイ : 192.168.128.254 6.3 U-Bootの起動 U-BootをAP-SH4A-2Aのフラッシュロムに書込み、起動します。 (1) AP-SH4A-2AのSW1を『1:ON,2:OFF,3:OFF,4:ON,5:ON,6:OFF』、SW2を『1:ON,2:ON, 3:ON,4:OFF』、SS1を『DEBUG』、JSW1を『HOST AUTO』に設定します。 (2) JTAGデバッガで作成した『u-boot.bin』ファイルをAP-SH4A-2Aのフラッシュロム の先頭番地に書込みます。 (3) AP-SH4A-2AのCN10とRS232レベル変換ユニット『PC-RS-04』を接続し、PC-RS-04と ホストPCをシリアルケーブルで接続します。 (4) ホストPC上でTeraTermやminicomなどのシリアルターミナルソフトを起動し、 『6.1 シリアルコンソール設定』に合わせて、シリアルの設定を行います。 (5) AP-SH4A-2Aの電源を入れ、U-Bootを起動します。 U-Boot 2009.08 ( 1月 19 2010 - 00:34:15) CPU: SH4 BOARD: ALPHAPROJECT AP-SH4A-2A DRAM: 64MB FLASH: 16MB In: serial Out: serial Err: serial Net: sh_eth => 6.4 Linuxの起動 LinuxをU-Bootとネットワークを使用してAP-SH4A-2Aのフラッシュロムに書込み起動 します。 (1) AP-SH4A-2AとホストPCをネットワークに接続します。 AP-SH4A-2Aは必ずLANコネクタCN6を接続してください。 (2) AP-SH4A-2Aの電源を入れ、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 8c800000 uImage sh_eth: 100Base/Full Using sh_eth device TFTP from server 192.168.128.202; our IP address is 192.168.128.200 Filename 'uImage'. Load address: 0x8c800000 Loading: ################################################################# ################################################################# ################################################################# #################################### done Bytes transferred = 3377024 (338780 hex) => (4) Linuxを格納するフラッシュロムの領域のプロテクトを解除します。 => protect off a0100000 +00400000 Un-Protected 32 sectors => (5) Linuxを格納するフラッシュロムの領域を消去します。 => erase a0100000 +00400000 ................................ done Erased 32 sectors => (6) ロードしたLinuxカーネルU-Boot用イメージをフラッシュロムに保存します。 => cp.b 8c800000 a0100000 00400000 Copy to Flash... done => (7) U-Bootのブートコマンドを設定します。 => setenv bootcmd bootm a0100000 => saveenv => (8) AP-SH4A-2Aの電源を再投入し、Linuxを起動します。 U-Boot 2009.08 ( 2月 01 2010 - 07:49:36) CPU: SH4 BOARD: ALPHAPROJECT AP-SH4A-2A DRAM: 64MB FLASH: 16MB In: serial Out: serial Err: serial Net: sh_eth Hit any key to stop autoboot: 0 ## Booting kernel from Legacy Image at a0100000 ・ ・ ・ net eth1: attached phy 1 to driver Generic PHY Starting httpd: OK Welcome to Buildroot uclibc login: (9) ログイン画面で「root」でログインします。