株式会社インタフェース Topページへ サイトマップ
English Site
Made in 日本
新着情報 製品情報 download 会社概要 採用情報 購入方法 資料請求
 
ご意見・ご要望はこちら
>>How toのTopへ

OpenRTLinux v3.2-pre1の構築手順(続編) 最終更新日:2003/04/24
 
メーリングリストで公開されたパッチを使う事で、未解決だった起動精度の問題が改善されるので、OpenRTLinuxの構築の続編としてまとめる。なお、このHow-toは、Linux kernelがv2.4.18, OpenRTLinuxがv3.2-pre1を前提にしています。
それぞれの構築方法は、別のHow-to(Linux v2.4.18へのバージョンアップ, OpenRTLinux v3.2-pre1の構築手順)をご参照ください。
注) 記載している内容は、いかなる動作も保証しない完全無保証です。使用される場合は、すべて自己責任でお願いします。
    弊社Web siteからファイルをダウンロードする場合は、ユーザIDを取得してください。

1. Linux kernelに、メーリングリストで公開されたパッチをあてる。
(詳しくは、http://www.m17n.org/linux-sh/ml/linux-sh-ja/2003-04/msg00009.html参照)

ここでは、linux kernel v2.4.18は /usr/src/sh-linux/linux-2.4.18/に、OpenRTLinux v3.2-pre1は /usr/src/sh-linux/rtlinux-3.2-pre1/に展開している事を前提としています。

(1) 弊社Web siteから必要なファイル(diff-2.4.18-ts-linux-20030407, diff-2.4.18-ts-rtlinux-20030407, libgcc-sh-mno-implicit-fp-20030110.tar.bz2, config-linux, config-rtlinux)を、/usr/src/sh-linux/にダウンロードする。
(2) #cd /usr/src
(3) #tar jxvf /usr/src/sh-linux/ libgcc-sh-mno-implicit-fp-20030110.tar.bz2
(4) #cd /usr/src/sh-linux/linux-2.4.18
(5) #patch -p1 <../ diff-2.4.18-ts-linux-20030424
(6) #patch -p1 <../ diff-2.4.18-ts-rtlinux-20030424でパッチをあてる。
(7) kernelコンパイルに使用するincludeファイルにリンクをはる
   ・ #ln -s /usr/src/sh-linux/linux-2.4.18/include/asm /usr/sh-linux/include/asm
   ・ #ln -s /usr/src/sh-linux/linux-2.4.18/include/linux /usr/sh-linux/include/linux
(8) #make ARCH=sh mrproper
(9) #cp ../config-linux ./.config
(10) #make ARCH=sh xconfig
Linux/SuperH Kernel Configurationのメニュー画面が表示されるので、好みに合わせて設定する。(.configで既に設定してあるので、ここでは何も変更せず、Save and Exitを選択する。)
(11) #make ARCH=sh CROSS_COMPILE=sh4-linux- INSTALL_MOD_PATH=/usr/src/sh-linux clean dep zImage modules modules_install
これで、./arch/sh/boor/zImageと../lib/modules/2.4.18-sh-rtl/*が出来る。

2. OpenRTLinux v3.2-pre1の再コンパイル
OpenRTLinuxへのパッチあては不要で、主にRTモジュールのバージョンを一致させるために再コンパイルを行う。
(1) #cd /usr/src/sh-linux/rtlinux-3.2-pre1
(2) #ln -s ../linux-2.4.18 linux
(3) #cp ../config-rtlinux ./.config
(4) #make ARCH=sh CROSS_COMPILE=sh4-linux- DESTDIR=/usr/src/sh-linux/rtlinux-3.2-pre1 clean
(5) #make ARCH=sh CROSS_COMPILE=sh4-linux- DESTDIR=/usr/src/sh-linux/rtlinux-3.2-pre1 xconfig
デフォルト以外の動作確認はしていない。また、今回使ったパッチで、FP SUPPORTが使用出来る様になる。
(6) #make ARCH=sh CROSS_COMPILE=sh4-linux- DESTDIR=/usr/src/sh-linux/rtlinux-3.2-pre1
(7) #make ARCH=sh CROSS_COMPILE=sh4-linux- DESTDIR=/usr/src/sh-linux/rtlinux-3.2-pre1 install

これで、/usr/src/sh-linux/rtlinux-3.2-pre1/usr/rtlinux-3.2-pre1/以下に、必要なモジュール等が作られるので、ターゲットのファイルシステムにコピーする。
前回同様、作成したモジュールは、rtl.o, rtl_time.o, rtl_sched.o, rtl_posixio.o, rtl_fifo.o, mbuff.oの6モジュールで、regression.shといくつかのサンプルプログラムで動作確認をする。
exsamples/の中には、使用しないのでパッチをあてていない物もあります。(parallelはコンパイルエラーになります)

3. ターゲット(SH4 CPU)のファイルシステムへコピー
(1) 前回のHow-to(OpenRTLinuxの構築)でGNU/Linuxを構築したターゲット(SH)CPUを起動し、Linuxを立ち上げる。
(2) パソコン側で、#/etc/rc.d/init.d/nfs start
(3) SH CPU側で#mount kitty:/usr /mnt
   NFS: NFSv3 not supported.
   Nfs warning: mount version older than kernel
と出るが、気にしない。
(4) 以下、SH CPU側の手順
   #cp -a /mnt/src/sh-linux/linux-2.4.18/arch/sh/boot/zImage /boot/vmlinuz
   #cp -a /mnt/src/sh-linux/lib/modules/2.4.18-sh-rtl /lib/modules/
   #lilo
ここまでで、Linuxのkernelとmodulesが、ターゲットにコピーできた。次は、OpenRTLinux関連の内、まずは必要な物だけをコピーする。
   #cp -a /mnt/src/sh-linux/rtlinux-3.2-pre1/lib/modules/2.4.18-sh-rtl/misc /lib/modules/2.4.18-sh-rtl/
   #cp -a /mnt/src/sh-linux/rtlinux-3.2-pre1/usr/rtlinux-3.2-pre1/modules/* /usr/ rtlinux-3.2-pre1/modules/
RT用のconfigファイルを一部変更する。
   #vi /usr/rtlinux-3.2-pre1/include/rtl.configで、9,10行目を、
      LINUX_SUBLEVEL=”18”
      LINUX_EXTRAVERSION=”sh-rtl”
とする。

4. OpenRTLinuxを動かす
(1)一旦、これだけでOpenRTLinuxが立ち上がるか確認する。
まずは、SH CPU側で、#umount /mnt
次に、パソコン側で、#/etc/rc.d/init.d/nfs stop
とし、再度SH CPU側で、#shutdown -r nowとする。
リブート後、SH CPU側で、
#rtlinux startとすると、以下のようなWarningが出るが、これは MODULE_LICENSE("GPL");などをOpenRTLinuxのモジュールソースに入れれば解決するのだろうが、気が引けるのでそのままにしている。気にしなくて良い。
 Warning: loading /usr/rtlinux-3.2-pre1/modules/rtl.o will taint the kernel: no license
 Module rtl loaded, with warnings
 
 Scheme: (-) not loaded, (+) loaded
  (+) mbuff
  (+) rtl
  (+) rtl_fifo
  (+) rtl_posixio
  (+) rtl_sched
  (+) rtl_time
大切なのは、最後のメッセージ。いい感じである。
#lsmod すると、確かに組み込まれている。
Module Size Used by     Tainted: P
rtl_sched 31496 0 (unused)
rtl_fifo 9400 0 (unused)
rtl_posixio 7092 0 [rtl_fifo]
rtl_time 3636 0 [rtl_sched rtl_posixio]
rtl 16060 0 [rtl_sched rtl_fifo rtl_posixio rtl_time]
mbuff 6832 0 (unused)
:
:
まだ、サンプルプログラムをコピーしていないので、#rtlinux stopで一旦 モジュールを取り外す。
 rmmod: rtl is in use
 
 Scheme: (-) not loaded, (+) loaded
  (-) mbuff
  (-) rtl
  (-) rtl_fifo
  (-) rtl_posixio
  (-) rtl_sched
  (-) rtl_time

5. Regressionを動かす
 パソコン側で構築できている/usr/src/sh-linux/rtlinux-3.2-pre1/usr/rtlinux-3.2-pre1/regression* を/usr/rtlinux-3.2-pre1/にコピーする。
 #cd /usr/rtlinux-3.2-pre1
 #./regression.sh
 モジュール組み込み時のワーニングが、とても鬱陶しいが我慢。ワーニングを取り除くと、表示は以下の通り。
 No directory for linux 2.3
 ----------------------------
 - Installing basic modules -
 ----------------------------
 Testing multiple loads of rtl.o...        [ OK ]
 Testing multiple loads of rtl_time.o...        [ OK ]
 Testing multiple loads of rtl_posixio.o...        [ OK ]
 Testing multiple loads of rtl_fifo.o...        [ OK ]
 Testing multiple loads of rtl_sched.o...        [ OK ]
 Testing RTLinux fifos...        [ OK ]
 Testing thread wait times...        [ OK ]
 Testing that Linux time progresses...        [ OK ]
 Testing that Linux time is monotonically increasing...        [ OK ]
 Testing ping flood...        [ OK ]
 Testing floating-point support...        [ OK ]
 Removing rtl_sched.o...               [ OK ]
 Testing periodic timer...               [ OK ]
 Testing oneshot timer...               [ OK ]
 
regression.logの中身は、以下の通り。
 grep: /include/linux/version.h: No such file or directory
 rmmod: module periodic_test is not loaded
 rmmod: module rtl_fifo is not loaded
 rmmod: module rtl_posixio is not loaded
 rmmod: module rtl_sched is not loaded
 rmmod: module rtl_time is not loaded
 rmmod: module psc is not loaded
 rmmod: module rtl is not loaded
 rmmod: module fifo_module is not loaded
 Testing /dev/rtf1 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 Testing /dev/rtf32 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 Testing /dev/rtf63 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 Testing /dev/rtf10 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 Testing /dev/rtf11 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 Testing /dev/rtf12 . . 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 passed.
 rmmod: module fifo_module is not loaded
 rmmod: module thread_time is not loaded
 system (/sbin/rmmod thread_time): Success
 avg_drift: 1.86 us worst_drift: 27.00 us
 rmmod: module periodic_test is not loaded
 rmmod: module rtl_sched is not loaded
 rmmod: module psc is not loaded
 
 X Window System上で、xtermを3つ開き、それぞれmeasurements, ls -R /, ps auxを動かす。また、telnetでSH(CPU)に接続しls -R /を実行させてみた。以前は、この状態でRTTaskの起動精度が600μsec程度まで悪化する現象が発生していたが、135μsec程度に改善されています。
 CUIでmeasurementsを実行し、telnetでSH(CPU)に接続しls -R /を実行するだけだと起動精度の最悪値は75μsec程度。
上へ


© 2012 Interface Corporation. All rights reserved.
製品を選ぶ
・スペック検索
・用途/使い方から
・インタフェースモジュールが
  使えるCPU

・ボックス型コンピュータ
・新製品
・おすすめ/売れ筋から
・製品マップから
・カテゴリから
・広告から
・パンフレットから
・型式から
産業用パソコン
Classembly Devices®
・エコ
・省エネ
・車載
・タフコントローラ
・I/O
・タッチパネル
・マザコン
FAコントローラ
・長期安心
・スロットイン
・ノンストップ
・分散処理コントローラ

産業用マザーボード
・ATXマザーボード
・Mini-ITX マザーボード

インタフェースモジュール
・インタフェースモジュール
・最大50%OFF
  特別キャンペーン販売実施中

・サブプロセッサモジュール
・拡張ユニット
・アクセサリ
・ソフトウェア
・開発らくらくパッケージ
部品販売
・クラシック販売
・ディスコン部品販売
・ポップス部品販売
サポート
・サポート
・ユーザID登録
・製品貸出サービス
・コラム集
・FAQ検索
・個人情報の取扱について

・サイトマップ