#contents

~
* [[Linux:http://www.kernel.org/]] サポートアーキテクチャー (役割分担) [#m40b7b80]
+''COLOR(BLUE){Linux code maintainor}''
++Linux master code maintainor~
有名な ライナス氏、現在の2.6メンテナーのMarcelo氏が管理
++Archtecture code maintainor (Linux-SH Tree  など)~
[[Linux-SH:http://sourceforge.net/projects/linuxsh/]]  は現在 Paul Mundt 氏が実質的なコードメンテナー
+''COLOR(BLUE){Linux community}''
++各開発プロジェクト ( [[Mozilla:http://jt.mozilla.gr.jp/]]  とか [[Apache:http://www.apache.jp/]] とか)
++個人の開発者 (会社での成果を個人名で寄付するケースも含む)
+''COLOR(BLUE){Linux 標準化団体}'' 
++一番有名なのは [[OSDL:http://www.osdl.jp/]] 
++[[CE-Linux Forum:http://www.celinuxforum.org/]] もここの位置づけ ・・・・ 但し 新参ものです
+''COLOR(BLUE){Distributor}''
++PC-Linux ディストリビューター ⇒ Redhat、Turbo、SUSIE など
++組込みLinux ディストリビューター ⇒ Montavista、超L など、
+''COLOR(BLUE){Integrator}''
++半導体メーカー系インテグレータ ⇒ 超L、 RSO など
++独立系インテグレータ ⇒ ELT、日立ソフト、東芝情報 など

一般的には [Community] の成果を [Code maintainor] が認証したものを~
[Distributor] が再配布して [Integrator] が顧客サポートする.... という基本構造があり~
[ 各種標準化団体 ]は[Community]の活動の方向付けをしています。

お客さんは (例外的に master code から直接ネタをもってくることもあるでしょうが)~
一般には [Distributor] からLinux のコードを導入し、[Integrator] の有償サポートを~
期待しているのですが、このためには 一般には [Code maintainor] に必要なものがサポートされている必要があります。~
例外的に [Distributor] が先行して特定の機能、CPUをサポートすることはありえますが、~
最終的に [Master code]まで還流していかないと 亜流となり 以降の Linux には含まれないことになります。
----
* &ref(Linux_サポート範囲説明 .xls,center,Linux システムソフトウエア構成要素と責任分担構造図); [#l9efde12]
-&ref(Linux_サポート範囲.JPG);

* &ref(DTV-H サポートSDK.xls,center,Linux システムソフトウエア構成図); [#l9efde12]
-&ref(Linux_stracture.JPG);
----
* &ref(LAC_Delivery.xls,center,Linux プラットフォーム開発分担); &ref(LAC_Delivery.pdf,center, [PDF]); [#i5a8e01a]
-&ref(LAC_Delivery.jpg);
----
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;

* Direct Fb 性能比較 (CE Linux での検証) [#p7561d67]

The DirectFB example suites include benchmark 'df_dok'. We have ran this benchmark on the following platform:
|CENTER:Platform|CENTER:CPU|CENTER:clock|CENTER:I/F|LEFT:SYSTEM RAM|CENTER:Graphics Card|CENTER:Kernel Version|h
|CENTER:A|Renesas SH-4|RIGHT:240MHz|CENTER:CPU|RIGHT:64MB|SMI SM501|CENTER:2.4.19|
|CENTER:B|Renesas SH-4|RIGHT:240MHz|CENTER:PCI|RIGHT:64MB|Matrox Millenium|CENTER:2.4.19|
|CENTER:C|Intel Celeron |RIGHT:450MHz|CENTER:PCI|RIGHT:128MB|Matrox Mystique|CENTER:2.4.20|
|CENTER:D|Intel Celeron |RIGHT:450MHz|CENTER:PCI|RIGHT:128MB|Matrox Millenium|CENTER:2.4.20|
|CENTER:E|Intel Pentium4|RIGHT:2.4GHz|CENTER:AGP|RIGHT:1GB|Matrox G450|CENTER:2.4.20|
~
|CENTER:Benchmarks|CENTER:Platform|>|>|>|>|h
|~|CENTER:A|CENTER:B|CENTER:C|CENTER:D|CENTER:E|h
|Anti-aliased Text [KChars/sec]|CENTER:N/A|RIGHT:20.40|RIGHT:24.83|RIGHT:23.96|RIGHT:750.00|
|Anti-aliased Text (blend)  [KChars/sec]|CENTER:N/A|RIGHT:6.12|RIGHT:16.52|RIGHT:16.66|RIGHT:752.85|
|Fill Rectangles [MPixel/sec]|CENTER:N/A|RIGHT:63.63|RIGHT:116.37|RIGHT:53.25|RIGHT:849.22|
|Fill Rectangles (blend) [MPixel/sec]|CENTER:N/A|RIGHT:1.20|RIGHT:3.18|RIGHT:3.26|RIGHT:225.84|
|Fill Triangles [MPixel/sec]|CENTER:N/A|RIGHT:62.26|RIGHT:108.79|RIGHT:50.51|RIGHT:730.24|
|Fill Triangles (blend) [MPixel/sec]|CENTER:N/A|RIGHT:1.17|RIGHT:3.13|RIGHT:3.17|RIGHT:218.24|
|Draw Rectangles [KRects/sec]|CENTER:N/A|RIGHT:10.67|RIGHT:12.95|RIGHT:8.57|RIGHT:36.27|
|Draw Rectangles (blend) [KRects/sec]|CENTER:N/A|RIGHT:0.43|RIGHT:0.83|RIGHT:0.84|RIGHT:17.09|
|Draw Lines [KLines/sec]|CENTER:N/A|RIGHT:61.33|RIGHT:62.60|RIGHT:48.84|RIGHT:162.40|
|Draw Lines (blend) [KLines/sec]|CENTER:N/A|RIGHT:1.94|RIGHT:3.69|RIGHT:3.70|RIGHT:80.04|
|Blit [MPixel/sec]|CENTER:N/A|RIGHT:38.68|RIGHT:53.75|RIGHT:32.56|RIGHT:398.84|
|Blit colorkeyed [MPixel/sec]|CENTER:N/A|RIGHT:39.19|RIGHT:58.69|RIGHT:32.54|RIGHT:421.97|
|Blit with format conversion [MPixel/sec]|CENTER:N/A|RIGHT:3.59|RIGHT:18.11|RIGHT:17.79|RIGHT:193.26|
|Blit from 32bit (alphachannel blend) [MPixel/sec]|CENTER:N/A|RIGHT:0.82|RIGHT:2.71|RIGHT:2.71|RIGHT:158.10|
|Blit from 8bit palette [MPixel/sec]|CENTER:N/A|RIGHT:3.20|RIGHT:17.40|RIGHT:17.38|RIGHT:95.17|
|Blit from 8bit palette (alphachannel blend) [MPixel/sec]|CENTER:N/A|RIGHT:0.81|RIGHT:2.67|RIGHT:2.71|RIGHT:5.53|
|Stretch Blit [MPixel/sec]|CENTER:N/A|RIGHT:7.06|RIGHT:46.69|RIGHT:47.61|RIGHT:220.77|
|Stretch Blit colorkeyed [MPixel/sec]|CENTER:N/A|RIGHT:4.20|RIGHT:46.17|RIGHT:46.30|RIGHT:221.64|

* Direct Fb 性能比較2 (2008.1 最新CPUの性能比較) [#be55278c]
- &ref(DirectFB_comp.JPG);
-- Excel File ====> &ref(DirectFB性能比較20080118.xls);

* [[DirectFB Tuning for SH7770>DirectFB7770]] [#o0a56ed2]

* Direct Fb 性能比較 (R-CarE1 SGX/PVR2D での検証) [#r25dfdf2]
&ref(rce1dfbpvr2d.JPG); 
&ref(rcare1pvrd2.xls,center,[excel file]);

* Direct Fb 性能比較 (R-CarH1 R-GP2D での検証) [#r25dfdf2]
&ref(rcarh1_gp2d.JPG); 
&ref(rcarh1_gp2d_offscreen3.xls,center,[excel file]);

* Direct Fb 性能比較 (R-CarM1A R-GP2D での検証) [#r25dfdf2]
&ref(rcarm1a_gp2D.JPG); 
&ref(rcarm1a_gp2dD.xls,center,[excel file]);

* Direct Fb 性能比較 (R-CarE2 VSP-DU版とPVR2D版の性能比較) [#j33eff4a]
&ref(pvr2dvsvsp.JPG); 
&ref(DirectFB-on-Silk df_dok PVR2D vs VSP1(20150309).xlsx,center,[excel file]);

//* SH用セレクタ付ブートローダ ( http://www.mizore.jp/wiki/index.php ) [#cfbb439f]
//SH-linuxの起動用ブートローダ boot.b は1種類のカーネルしか起動できない。
// i386 と同じように、複数のカーネルを選択して起動できるように sh-lilo を改造する。
//
//これにより、既存のブート環境を残しつつ、新しいブート環境を実験できるようにする。
//
//*** ブートローダの概要 [#kdcfce75]
//- オリジナルソースは cvs.m17n.org のCVSから取得した。
// % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/superh login
// Logging in to :pserver:anonymous@cvs.m17n.org:2401/cvs/superh
// CVS password: (空)
// % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/superh co lilo
//- 選択はリストが出力されるのでそのインデックスを 1 〜 9 の1文字入力で入力する。
//- 最大9個まで選択できる。(オリジナルは15だが、これは手抜き)
//- タイムアウトは lilo.conf の timeout= で指定可能。
//-- タイムアウトした場合はリスト先頭(1番)のカーネルを起動する。
//-- ask= 設定は無視する。
//- g をキーインすると、gdb-stub を呼び出すことができる(おまけ)。
//
//*** 動作イメージ [#mce416ce]
// Set Transfer Mode result: 50
// > b
// Set Transfer Mode result: 50
// Initialize Device Parameters result: 50
// IDLE result: 50
// LILO boot:
// 
//   1 : linux
//   2 : linux-test
// 
// Select boot image ->
// Loading linux...................done.
//
//*** 導入効果 [#bb56ee41]
//- 確実にブートできるイメージを登録できるので、実験システムで起動失敗しても、
//わざわざ母艦でliloを実行しなおす必要がない。
//- gdb-stub を起動できるので、カーネルを起動することなくレジスタのチェックや、
//別のOSの起動などが可能になる。
//
//*** 注意 [#r61a29d1]
//タイムアウトの判定に、sh-ipl+g のRTCファンクションの reset_tick/get_tick
//を使用している。これが機能していないIPLではタイムアウトが正常に行われない。
//
//必ずキー入力が必要になると、効果半減なので、ループカウンタも併用して、
//確実にタイムアウトするようにしてある。
//ただし、ループカウンタによるタイムアウト時間はCPUの処理速度に依存するので、
//ターゲット毎にカウント値のチューニングが必要である(second.c の MAXLOOP定数)。
//
//添付のソースはLANDISK(SH4/266MHz)にて約6秒でタイムアウトするようにチューニング
//した(MAXLOOP=15000)。
//
//- RTCファンクションが動作しないターゲット
//-- COLOR(RED){LANDISK} (RTCが外付けかつ、SH4の内蔵RTCへクロックが供給されていないため)
//*** GDBとの接続の実際 [#a566ce2e]
// (コンソール端末を開いて gdbstub を呼ぶ)
// Set Transfer Mode result: 50 
// A-Card ATP865 ATA controller found.
// > b
// Set Transfer Mode result: 50 
// Initialize Device Parameters result: 50 
// IDLE result: 50 
// LILO boot: 
// 
//  1 : linux
// 
// Select boot image -> g   ( g をキーインする)
// goto gdbstub...
// $S05#b8
// (ここでコンソール端末をクローズする)
// 
// (今度は GDBから接続する
// # sh-linux-gdb
// GNU gdb 20001217
// Copyright 2000 Free Software Foundation, Inc.
// GDB is free software, covered by the GNU General Public License, and you are
// welcome to change it and/or distribute copies of it under certain conditions.
// Type "show copying" to see the conditions.
// There is absolutely no warranty for GDB.  Type "show warranty" for details.
// This GDB was configured as "--host=i686-pc-linux-gnu --target=sh-linux".
// (gdb) set remotebaud 9600   (ボーレートの設定)
// (gdb) set endian little     (エンディアンの設定)
// The target is assumed to be little endian
// (gdb) target remote /dev/ttyS0   (シリアルデバイスを指定して接続)
// Remote debugging using /dev/ttyS0
// 0x8c201706 in ?? ()             ( <-- これが表示されれば接続成功)
//
//*** ソースおよびコンパイル済オブジェクト [#t6ed51eb]
//#ref(sh-lilo-sel-20040408[1].tar.gz);
//- precompiled の下に boot.b と sh4 でセルフコンパイルした lilo がある。
//-- boot.b は sh3 / sh4 どちらでも動作する(ただしlittle endian用)
//- その他の修正点
//-- lilo がコンパイルできない問題を修正
//-- コンパイル時のワーニングを出ないように修正
//-- lilo で boot.b のバージョンチェックする機能を無効にした
//*** TODO [#a9f30ca4]
//- initrd に対応する。
//- コードをきれいに書き直す。
//
//&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;

* R2R vs AP4 (Android performance 比較) [#ua802fa4]
-&ref(r2rvsap4.JPG);  
&ref(Android_Benchmark.xls,center,元データ Excel);

* Renesas Platform 共通項目 [#i94f4734]
** lilo & boot.b (検証済みの組合せ) 2006.4 UP [#i6535f80]
- liloと、boot.bの組み合わせによりliloがエラーが発生する
- 組合せ検証済み二つのバージョンのliloとboot.bを添付~
&ref(NewVersion.tar.bz2,center,New Version = Fedra3); ・・・・ 起動するzImage を名前で選択可能~
&ref(OldVersion.tar.bz2,center,Old Version = Redhat);~
** R2D 用 ipl+g マルチブートに関する補足 [#ka7ab4f0]
- [[SH用セレクタ付ブートローダ(元ネタ):http://www.mizore.jp/wiki/index.php]] から R2D 用にリターゲットしたものである
- CF からのブートでは、複数の (当然名前を変えて登録した) kernel を起動時
 に選択させることができる機能を持っています。 
- このために 専用の boot.b を使っています。最大9個のカーネルを管理することができます。
- 複数の kernel image を持たせる場合、lilo.conf の image の登録の部分に下記
 のように 複数の kernel image を列挙させます。 起動するカーネルの選択は出力された一覧から、そのインデックスを  1〜9 の1文字で入力する。
- タイムアウトは、lilo.conf の timeout= で指定可能。タイムアウトした場合は、一覧の先頭のカーネルを起動する。また、ask= の設定は無視されます。

- COLOR(RED){lilo.conf の内容を編集した場合には lilo -r コマンドを実行して設定を反映させる必要がある};
-- mount /dev/sdb /mnt/CF ( 自動マウントを一端解除し、手動マウントしなおす )
-- lilo -r /mnt/CF ( -C /etc/lilo.conf )
*** lilo.conf の内容 [#pb8e07a8]
 linear
 
 # You must appoint your CF mounting device name on following lines.
 # Default CF mounting device is /dev/hdc.
 boot = /dev/sda
 disk = /dev/sda
 
   bios = 0x80
 #
 delay = 30
 timeout=100 
 #vga = normal
 image = /boot/zImage-2.6.11.8
 	label = linux-2.6.11.8
 	root = /dev/hda1
 	read-only
 	append="mem=64M console=ttySC0,115200"
 image = /boot/zImage-2.6.10
 	label = linux-2.6.10
 	root = /dev/hda1
 	read-only
 	append="mem=64M console=ttySC0,115200"
 image = /boot/zImage-2.6.9
 	label = linux-2.6.9
 	root = /dev/hda1
 	read-only
 	append="mem=64M console=ttySC0,115200"

*** ipl 起動画面イメージ [#jb7a6209]
       RTS7751R2D>b
         Disk_drive detected: ScanDisk SDCFB-128 HDX 2.15 012004K2904K5933
         Set Transfer Mode result: 50
         Initialize Device Parameters result: 50
         IDLE result: 50
         LILO boot:
 
            1 : linux-2.6.8.1
            2 : linux-2.6.7
            3 : linux-2.6.6
 
         Select boot image -> 1
         Loading linux-2.6.8.1 ..........................done.

** R2D 用 ipl+g ネットワークブートに関する補足 [#x0cf4447]
- &ref(NFS環境構築手順書.txt,center,合田さん 作成手順書(日本語));
- Linux kernel を ネットワークからブートするための設定を、ネットワークサーバー
 上に反映する 
- sh-lilo は MAC アドレスを broadcast するだけ
- (現在の設定では)サーバー上の top directry  直下に /tftpboot という
  ディレクトリーを作成し この中に kernel image を格納しておく。
- ネットワークブートに対応しているのは eth0 側(RTL8139)。
- MAC アドレスはボード上にシールで示されている。
- (現在の設定では)root file system もネットワーク上から NFS としてマウント
 するようになっており、kernel 起動パラメータの中で NFS の mount point を
 指定します。 
- マウント前に root file system 上の lilo.conf を参照出来ないので .config の起動パラメータにIP アドレス、マウントポイント などを環境に合わせてハードコードして kernel を構築する。
-  root file system 上のネットワーク関連設定でボードの IP アドレスなどを適切に設定する。

*** ネットワーク起動用の設定内容 [#d5c761fc]
- kernel config 時の設定
 Kernel Network boot
 Kernel configuration
 	[System type] - [Default bootloader kernel arguments (CMDLINE_BOOL)]
 		(CMDLINE):mem=64M console=ttySC0,115200 root=/dev/nfs
                            nfsroot=192.168.10.191:/tftpboot/rts7751r2d ip=192.168.10.200

-- nfsroot=192.168.10.191:/tftpboot/rts7751r2d
--- RTS7751R2D 用 Rootfile system の場所を指定。
--- この例では、NFS Server IP Address 192.168.10.191 の /tftpboot/rts7751r2d を指定。

-- ip=192.168.10.200
--- RTS7751R2D に割り当てる IP Address を指定。
--- この例では、192.168.10.200
-- 上記のコマンドは、例であり、各ネットワーク環境に合わせて IP Address 等を指定。

 [Networking support] - [Network options] - [kernel level autoconfiguration (IP_PNP)]
-- IP:BOOTP support (IP_PNP_BOOTP) 選択。
 [File systems] - [Network File Systems]
-- NFS file system support (NFS_FS) 選択。
--- Provide NFSv3 client support (NFS_V3) 選択。
--- Provide NFSv4 client support (EXPERIMENTAL) (NFS_V4) 選択。
--- Allow direct I/O on NFS files (EXPERIMENTAL) (NFSDIRECTIO) 選択。
--- Root file system on NFS 選択。

- Server 側の設定
-- Server 側では、nfsd, dhcpd が起動されている事。
-- /etc/dhcpd.conf には、RTS7751R2D 用の設定がされている事。
-- dhcod.conf を変更した場合には 
 [root@power root]# service dhcpd restart
 dhcpd を停止中:                                            [  OK  ]
 dhcpd を起動中:                                            [  OK  ]
--- 例えば、RTS7751R2D On board の RTL8139 MAC Address が、00:00:87:6B:60:44 の場合
 	host RTS7751R2D {
 		hardware ethernet 00:00:87:6B:60:44;
 		fixed-address 192.168.10.200;
 		filename "/tftpboot/rts7751r2d/boot/zImage-2.6.8.1";
 		option root-path "/tftpboot/rts7751r2d";
 	}

 	上記の例では、MAC Address 00:00:87:6B:60:44 に対して、IP Address
 		192.168.10.200
 	を割り当て、boot するカーネルは、
 		/tftpboot/rts7751r2d/boot/zImage-2.6.8.1
 	を指定する。また、Root filesystem として、
 		/tftpboot/rts7751r2d
 	を指定する。

**  initramfs ramdisk による zImage の作成方法 (Kernel 2.6.16.2) [#sa5b68da]
+ カーネルディレクトリ内にルートファイル展開先を作成
   (例)  #mkidr arch/sh/initram
+ ルートファイルシステムを展開
   #tar zxvf  rootfs.tgz -C arch/sh/initram
+ シンボリックリンク "init "を作成
  #cd arch/sh/initram
  #ln -s bin/busybox init
+ .config 変更
 CONFIG_INITRAMFS_SOURCE="arch/sh/initram"
 CONFIG_INITRAMFS_ROOT_UID=0
 CONFIG_INITRAMFS_ROOT_GID=0
+ カーネル起動パラメーターの設定
 CONFIG_CMDLINE="mem=128M console=ttySC0,115200 root=/dev/ram0
+ make zImage
- 出来た zImage を etherboot よりダウンロードし実行

** date の設定 [#a444f35a]
''COLOR(GREEN){date コマンドを使ってシステム時刻を変更する方法 (フォーマットに注意)}''
 # date 041211402004
 Mon Apr 12 11:40:00 UTC 2004

''COLOR(GREEN){hwclock コマンドでRTC の時刻をシステム時刻にあわせる}''
 # hwclock
 Tue Apr 12 09:19:04 2016  -0.028194 seconds
 
 # hwclock --systohc
 
 # hwclock
 Mon Apr 12 11:41:45 2004  -0.069402 seconds

''COLOR(GREEN){再起動するとシステム時間がRTCから正しく読み込まれる}''
 # halt
 
 Reboot してから
 
 # date
 Mon Apr 12 11:49:38 UTC 2004
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
** LAN の設定 [#k2cb83f8]
*** 設定ファイル一覧 [#n74a3e8c]
|場所・名前|目的|ダウンロード|h
|/etc/sysconfig/network-scripts/ifcfg-eth0|eth0の設定ファイル|'&ref(ifcfg-eth0)'|
|/etc/sysconfig/network-scripts/ifcfg-eth1|eth1の設定ファイル|~|
|/etc/sysconfig/network|networkの設定ファイル||
|/etc/dhcpd.conf|DHCPサーバの設定ファイル||
|/etc/rc.d/init.d/S20network|ネットワーク起動のスクリプトファイル|'&ref(S20network)'|
|/etc/rc.d/init.d/S40dhcpd|DHCPサーバ起動のスクリプトファイル|'&ref(S40dhcpd)'|
*** ネットワークの設定及び起動方法 [#ncc5c637]
+ /etc/sysconfig/network-scripts配下のifcfg-eth0、ifcfg-eth1を設定します。
+ /etc/sysconfig配下のnetworkファイルに「FORWARD_IPV4=yes」行を追加します。
+ /etc/rc.d/init.d/S20networkを起動します。
*** DHCPサーバの設定及び起動方法 [#t9f3f8ce]
+ dhcpサーバの設定ファイル(dhcpd.conf)を/etc配下に作成します。
+ dhcpサーバは、インストールしてください。
+ /etc/rc.d/init.d/S40dhcpdを起動します。
*** テスト方法及び結果 [#qaa4fc11]
eth1側に接続したパソコンがIPアドレスを取得することができます。~
上記の機能を有効にするためにカーネルのコンフィグレーションで以下の項目を指定してください。
  [Networking option]
  [Socket Filtering]
    [IP:Kernel level autoconfiguration]
     [IP:DHCP support]
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** /etc/sysconfig/network-scripts/ifcfg-eth0 の例 [#h8cfe2a7]
 DEVICE=eth0
 BOOTPROTO=static
 BROADCAST=192.168.10.255
 IPADDR=192.168.10.200
 NETMASK=24
 NETWORK=192.168.10.0
 GATEWAY=192.168.10.5
 ONBOOT=yes

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** /etc/sysconfig/network|network の例 [#ee303fe3]
  bios = 0x80
 #
 # Network configuration file
 #
 #
 # NETWORKING    : yes, no(yes is require)
 # HOSTNAME      : localhost
 # NISDOMAIN     : NIS domain name. "nisdomain" (none: "NISDOMAIN=")
 # GATEWAYDEV    : eth0, eth1, ... (none:"GATEWAYDEV=")
 # GATEWAY       : router address. (none:"GATEWAY=" )
 #
 
 NETWORKING=yes
 FORWARD_IPV4=yes
 HOSTNAME=sh7751rvoip
 #NISDOMAIN=
 #GATEWAYDEV=eth0
 GATEWAY=192.168.10.5
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** /etc/dhcpd.conf の例 [#r2e42356]
 server-identifier    192.168.10.200; 
 
 shared-network DHCP-NET {
     subnet 192.168.10.0 netmask 255.255.255.0 {
         range 192.168.10.197 192.168.10.199;
         default-lease-time -1;
     }
 }
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** Ether port 間のブリッジの設定(brctlコマンドの使用方法) [#ee8204bb]
-ここでbr0デバイスにIPアドレスを指定したい場合には⑦をそうでない場合は⑧を実行してください。⑦を実行するとR2DボードのIPアドレスが指定したIPアドレスになります。⑧を実行するとR2Dボードにはシリアル以外でのアクセスができなくなります。
-下記の設定を行うとeth0、eth1デバイスに同一セグメントのマシンを接続して使用できます。
+ eth0、eth1を起動停止します。
+ brctl addbr br0
+ brctl addif br0 eth0
+ brctl addif br0 eth1
+ ifconfig eth0 0.0.0.0
+ ifconfig eth1 0.0.0.0
+ ifconfig br0 xxx.xxx.xxx.xxx netmask 255.255.255.0(「xxx.xxx.xxx.xxx」は指定したいIPアドレス)
+ ifconfig br0 up

** kernel 2.6 における MMU レスのCPUサポート [#v1355835]
Kernel-2.6.x における、MMU のコンフィグレーションでSH-2 以外 (SH-3 or SH-4) の時、指定可能です。~
SH-3 or SH-4 指定時、デフォルトでは、"y" になります。ヘルプとして下記の記述があります。

 >    Early SH processors (such as the SH7604) lack an MMU. In order to~
 >    boot on these systems, this option must not be set.
 >
 >    On other systems (such as the SH-3 and 4) where an MMU exists,~
 >    turning this off will boot the kernel on these machines with the~
 >    MMU implicitly switched off.
  
従って、SH-3, SH-4 の時に、MMU の有効/無効が指定出来ますが、MMU を無効にした時の動作は検証していません。

* RTS7751R2D Platform 関連情報 [#l3587811]

&ref(RenesasSH4.gif);

** ハードウエアマニュアル [#r95e04b2]
+ハードウエアマニュアル(和文)  &ref(RTS7751R2D_HW.doc);
+ハードウエアマニュアル(英文)  &ref(RTS7751R2D-e.pdf);
+Lineo BSP サポートパッケージ一覧(kernel 2.6.8-1) &ref(BSP_list_detail_RTS7751R2D_BE.pdf); 

** PCI スロットから供給可能な電源容量 [#v9069eba]
-  共通仕様
-- コネクタスペックは、5V/8A、3.3V/12A、12V/2Aが流せます (1端子あたり1Aで電源の割り振り本数倍になります)

- R2D : 5V/8A、3.3V/12A
-- ATX電源から持ってきています
-- R2D ボード標準添付の ATX電源は3.3V/17A、5.0V/21Aです
-- ボード上他デバイスを考慮しても5V/8A、3.3V/12Aは流せる仕様です

- R2D+ : 5V/8A、3.3V/4.0A
-- PCIデバイスへの電源供給は、レギュレータから3.3Vを作っています
-- レギュレータの仕様がmax5A出力です
-- PCIに流せる電流は、余裕見て3.3V/4.0A程度
-- PCカード未使用であれば 5Vについては、DCDCコンバータからの出力なので16Aで他のデバイスで使用していても8Aは使用可能

- 他PCIデバイスの消費電流 (想定実力値)
-- RTL8139(150mA x 2)
-- RTL8305(195mA)
-- PCI1520(不明、50mA程度と仮定)
-- PCカード(未使用条件)

* R2D+ (R0P751RLC0011RL) 関連情報 [#qb62481e]
+ハードウエアマニュアル(和文)  &ref(R2D_hw_manual_00_jl.pdf);
+ハードウエアマニュアル(英文)  &ref(R2D_hw_manual_00_e.pdf);
+ハードウエアマニュアル(英文)  &ref(rej10j1322_r0p751rlc0011rl.pdf);

+回路図(メイン)&ref(R0P751RLC0011RL-MAIN_SCH.pdf);
+回路図(FROM ボード)  &ref(R0P751RLC0011RL-FROM_SCH.pdf);

* HS7751VoIP-2 Platform 関連情報 [#r985df42]

&ref(HS7751RGVoIP_2.jpg);

** ハードウエアマニュアル [#j3589d87]

&ref(RTS7751RVoip-2_HW.pdf);
** ソフトウエアリリースノート [#c85c82ac]
*** ネットワークの設定 [#r668dbf2]
+IPアドレスは、/etc/sysconfig/network-scripts/ifcfg-eth0、ifcfg-eth1ファイルで設定してください。
+デフォルトのIPアドレスは、以下のようになっています。
|eth0|192.168.10.200|
|eth1|192.168.20.200|
+ネットワークの立ち上げシェルは、/etc/rc.d/init.d/S20networkです。
+ホスト名は、/etc/sysconfig/networkファイルの「HOSTNAME」で設定してください。
+デフォルトのホスト名は、「HS7751RVoIP」となっています。
+ホスト名を変更した場合は、リブートをして再度立ち上げ直してください。
+ホスト名の設定は、/etc/rc.d/rcSファイルで行っています。
+GATEWAYは、/etc/sysconfig/networkファイルの「GATEWAY」で設定してください。
+pppoeでの接続を考慮してデフォルトではGATEWAYを有効にしていません。
*** DHCPの設定 [#oaac3353]
+DHCPの設定は、/etc/dhcpd.confファイルで行ってください。
+起動ファイルは、/etc/rc.d/init.d/S30dhcpdです。
+デフォルトで起動させる場合は9行目の「exit 0」をコメントにしてください。
*** NTPの設定 [#yc1cb930]
+NTPでの時間の設定は、立ち上げ時に1度だけ行っています。
+NTP設定のシェルは、/etc/rc.d/init.d/S60ntp_daemonです。
デフォルトでは、起動しないようにしています。~
起動する場合は、上記ファイルの3行目の「exit 0」をコメントにしてください。
*** PPPoEの設定 [#vbe66479]
+[adsl-setup]コマンドを使用してpppoeの設定を行ってください。
このコマンドでプロバイダーに接続するためのユーザーIDやパスワードなどを設定します。
+設定を行うと/etc/ppp配下のファイルに設定情報を書き込むために、ルート部分(/dev/hda1)を書き込み可能にするためにリマウントし直してください。
+起動ファイルは、/etc/rc.d/init.d/S64firewall、S65adslです。
+S64firewallファイルは、インターネットに接続できる最低限のセキュリティを確保するためのファイアウォールです。設定したスクリプトは、以下の通りです。
|CENTER:S64 Firewall のセキュリティポリシー|h
|ルータからインターネットへの接続はすべて許可|
|LANからルータへの接続を許可|
|インターネットからの接続要求のうち、コネクションが確立済みのTCPで短命ポート宛(1024以上)を許可|
|LANからの接続要求をIPマスカレード|
|DNSが利用するudpを許可|
|これ以外の接続はすべて拒否|
+S65adslファイルは、実際に接続を行うものです。
*** その他 [#e34c3032]
+syslogの起動ファイルは、/etc/rc.d/init.d/S05syslogです。デフォルトで起動しています。
+立ち上げ時に起動をしたくない場合には、上記ファイルの15行目の「#exit 0」のコメントをはずしてください。
+pcmciaの起動ファイルは、/etc/rc.d/init.d/S06pcmciaです。デフォルトで起動しています。~
立ち上げ時に起動をしたくない場合には、上記ファイルの20行目の「#exit 0」のコメントをはずしてください。
+inetdの起動ファイルは、/etc/rc.d/init.d/S15inetです。~
デフォルトで起動しいます。
立ち上げ時に起動をしたくない場合には、上記ファイルの20行目の「#exit 0」のコメントをはずしてください。
+デフォルトでftp、telnetが使用可能にしてあります。
ログインは、ユーザ名、パスワードともに「guest」です。接続先は、/home/guestです。
+宗像さんが作成したiptablesは、/etc/rc.d/init.d/S50iptablesのままです。
デフォルトでは、起動しないようにしてあります。~
立ち上げ時に起動する場合は、16行目の「exit 0」をコメントにしてください。

** ルーティング性能のベンチマーク (Smartbit による計測) [#wcae8d29]

Gigabit LAN での限界ベンチマークデータ ⇒ &ref(gigabit_benchmark.xls);~
Intel IXP-425 との性能比較データ ⇒ &ref(SH7751RvsIXP425.xls);

&ref(Route_Realtek.JPG);

&ref(Route_AMD.JPG);

* Partner を利用した Linux 開発 [#e5c89bb3]
+ Partner-J   Linux 開発環境説明 ・・・・ &ref(kmc_linux_j.pdf);
+ Partner-Jet Linux 開発環境説明 ・・・・ &ref(kmc_linux_jet.pdf);

* アイオーデータ LAN Disk ベース mobile-server 関連情報 [#jd725ac8]

*** pukiwiki の接続、起動方法 (2004.7 菊武氏作成 readme) [#m81c3ea5]
+ルータにLANDISKを接続し電源を入れます。
+LANDISKのIPアドレスを確認します。
++ルータに接続します。
 IPアドレス : 192.168.0.1
 ユーザ名  : admin
 パスワード : なし
++接続できたら「ステータス」−「DHCPサーバの状態表示」メニューでマシン名「cyber_disk」があることを確認し、そこに表記されているIPアドレスが割り振られたIPアドレスです。
+DNSサーバへの設定を行います。
++検索したIPアドレスで「ping」を行います。(逆引きレコードの設定)
 「ping 192.168.0.xxx」(xxxは、調べた値)
++次に「cyber_disk」で「ping」を行い「ping」が通ることを確認します。
 (正引きレコードの設定)
 「ping cyber_disk」
++LANDISKが立ち上がったらapacheが接続できることを確認します。
+++LANDISKの設定画面表示
http://cyber_disk」と入力します。~
管理者を選択する場合は、ユーザ名「admin」と入力してください。~
パスワードは、ありません。~
++pukiwikiの画面表示
+++「https://cyber_disk」と入力します。
このときユーザ名、パスワードを聞かれてきますがともに「guest」です。
+telnetでログインする場合は、確認したIPアドレスで接続します。
そのときのユーザ名、パスワードはともに「guest」です。
+namazu検索を行う場合には、以下の手順で行ってください。
(namazu検索用のインデックスは、以前に宗像様からいただいたsample_docを使用
しています)

++「http://cyber_disk/search.html」と入力し検索画面を表示します。
++そこで検索をしたい文字列を入力し「search」ボタンを押します。

* [[R2D board への GTK+ の移植>GTK_eval]] [#t9b17e8a]
* Highlander [#rc0b81dc]
&ref(Highlander.jpg);

- &ref(kernel.xls,center,カーネル評価状況 7780 2005-6-3 時点);
- &ref(R7780RP-1.xls,center,ソフト視点 デバッグ問題点 7780 2005-6-3 時点);
- &ref(Highlander.ppt,center,Highlander コンセプト紹介プレゼン資料);
- &ref(kernel-r7780rp.xls,center,Kernel support 2.6.8-1 2005-8-14 時点);
- &ref(Highlander_BSP.xls,center,BSP 2005-8-14 時点);
- &ref(Highlander80SpecEN.pdf,center,Hardware Manual (英文) 2005-10);
- &ref(Highlander80SetupEN.pdf,center,SetUp Manual (英文) 2005-10);
- &ref(Highlander80Connectivity.pdf,center,Hardware Connectivity (英文) 2005-10);
- &ref(Highlander_7780_bootlog3.txt,center,Highlander 7780 起動ログ(2.6.13+CABI));
- Highlander_7780_CD (2005-11 RTA リリース版) ⇒ 大きいので ftp サーバーにあげた (211MB)
- &ref(20060328_HighLander80報告書.pdf,center,(シ研) Streaming 7780 ベンチマーク);
- &ref(20060310_LANTANK報告書.pdf,center,(シ研) Streaming 7751R ベンチマーク[比較用]);
- &ref(SH7780_BSP_3.4.5.xls,center,2.6.14-4/GCC3.4.5 ベースパッケージリスト);
----
- Ver 2.0 マニュアル
- &ref(rej10j1387_r0p0400lp0011rl.pdf,center,電源ボード:R0P0400LP0011RL);
- &ref(rej10j1686_r0p7780lc0011rl.pdf,center,CPUボード:R0P7780LC0011RL);
- &ref(rej10j1448_r0p0400le0011rl.pdf,center,PCI拡張ボード:R0P0400LE0011RL);

*** SH7780 PCI 空間マッピング [#u195708c]
- SH-4 (7751R) の PCI 空間は 16MB の制約があった
- SH-4A (7780) は 16M、64M、512M が条件により使い分けられる
-- 16M 空間 と 64M 空間は非連続、従って選択的に使うことになる
-- 512M 空間は real 32bit mode アドレス設定時のみ使用できる

&ref(7780PCI_space.JPG);

* SH7724 MS7724 関連 [#jf3f5c46]
- NASA の 1280x720 ビデオ(ライセンスフリーらしい)---> http://svs.gsfc.nasa.gov/vis/a000000/a003500/a003563/index.html 		 	   		  
- 松原さんからのビデオ変換方法アドバイス
松原は、インターネットから適当なビデオファイルをダウンロードしてffmpeg + libx264でH264ビデオストリームに変換しています。

--合法ではないと思いますが、下記のサイトにmovie trailerが転がっています。
 http://www.movie-list.com/forum/archive/index.php/f-16.html
--ffmpeg/libx264は、動作時に設定ファイルを読み込む機能がありますので、添付の設定ファイル(libx264-shvpu.ffpreset)を適切な場所(/usr/share/ffmpeg)等においてください。
  # gzip -d libx264-shvpu.ffpreset.gz
  # cp libx264-shvpu.ffpreset /usr/share/ffmpeg/
-- ffmpegでビデオストリームだけ変換します。
 $ ffmpeg -i _input_file_ -vcodec libx264 -vpre shvpu \
           (options) _output_file.mp4
このとき、(options)にビットレートやサイズを変更できます。ビットレート: -b 500000 (500 kbpsの場合、デフォルトは200kbps)サイズ: -s 640x480 (640x480の場合、デフォルトはinputと同じ)
-- 作成したファイルはmplayerで再生できます。
  $ mplayer _output_file.mp4
-- 作成したファイルはmediainfoで設定を確認できます。
  $ mediainfo _output_file.mp4

* RAMを1Gつむと起動しない件 [#m47b2bb8]

- 1GBのRAMでは vmalloc= を指定しないと起動しない件。一度に三か所でひっかかったのを見て、つたない書き物送ります。
- 一般向けの説明として、わかりきったことも書いてあります。

-- この現象は、RAMへの単純なマッピングが要求されるいわゆる lowmem 空間と、機種依存のハードウェアにマップされるiotableとが重なることによって発生します。
-- 後者は、機種依存部のソースコード上で、仮想と物理の両方のアドレスを明示的に指定してマップを作るので、ぶつけることができてしまいます。
-- 残念ながら、チェックや警告はないようです(バージョンによって若干挙動は違うようです)。

-- ARMのメモリマップは[[ここ:http://lxr.linux.no/linux+v3.9.4/Documentation/arm/memory.txt]] Documentation/arm/memory.txt に説明があります。


-- 今の現象をもたらした、カーネルの変更は[[これ:http://gitelephant.cypresslab.net/linux-kernel/commit/0536bdf33faff4d940ac094c77998cfac368cfff]]です。v3.2-rc2 ぐらいで入ったようです。
0536bdf ARM: move iotable mappings within the vmalloc region

-- これは、機種依存の静的マップを vmalloc 領域の中にもてるようにして、今までは iotable とともに機種依存だったVMALLOC_END を ff000000 に統一するものです。今度は iotableがvmalloc 領域の中にないと問題がでるので、そこはちょっと考えてあって、
コミットのメッセージのとおり、vmalloc領域を広げるという対応とともに導入されています。

 >    To accommodate all static mappings on machines with possible highmem usage,
 >    the default vmalloc area size is changed to 240 MB so that VMALLOC_START
 >    is no higher than 0xf0000000 by default.

-- ですが、残念ながら、sh-mobileの iotableはもっと前 0xe6000000 とかにあるので、救済されません。そこ、つまり lowmem の後ろから160MBほどのところに、カーネルはRAMを期待しているのにレジスタがマッピングされている領域がきて、カーネルが誤動作して起動しません。

-- 一番簡単な解は vmalloc= を大きめに指定すること。408M 以上なら引っかからないはずです。

-- 僕らがこのアドレスにiotableを持つ理由は単に「仮想==物理 だと簡単だ」という事だと理解しています。そもそも iotableは簡単だから使っているのです。

-- デフォルトで動かないのは現在多少不便なところではありますが、開発の方向は
++ デフォルトを 400MB に変更する議論をするのではなく、
++ iotable を後ろに移動するのではなく
++ iotable を使わないようにする
というものです。最新のバージョンでは大体この問題は過去のものになっているはず。

-- 単にみための問題なら、1 をローカルにやってしまえば隠せます。
lowmemが広くないとだめ、という制約なら、2 もできると思います。iotable を移動するのは
定数を書き換える工数の多い作業ですが、難しくはないし、危険も少ないと思います。
(G4では 物理 e* のレジスタを 仮想 f* にマップしたりしました。そこまで面倒ではない)

/よしい

* UIO から V4L2 に意向するモチベーション [#i1933b4e]

まず、VIOドライバをUIOからV4L2への切り替えるを勧める理由を説明します。

過去CELF等で松原が&ref(community081119celfet.pdf,center,説明);している通り、UIOドライバは、ユーザランドのプログラム(OMXIL等)と密な連携がしやすいという利点がある反面、複数プロセスでのデバイスの共有やカーネル他機能との連携が難しくなります。特に、(これまでのVEUと違い)VIO(VSP)は、1つのIP内に複数の論理モジュールが存在して、かつ、割り込みを共有しています。&color(red){それぞれの論理モジュールを有効的に並列処理させるためには、デバイス共有(排他制御)の仕組みが必要(* 理由1)};となります。また、現状でも、fbdev/DRM-KMS(LCDC, DU)やV4L2(CEU)等のカーネル他機能との連携が必要なケースが多く、これまではバッファの物理アドレスをユーザランドで共有することで、これらとの連携を実現してきました。が、現&color(red){DRM-KMSのように、ユーザランドでの物理アドレスの取得が難しくなってきており(* 理由2)};、また、IPMMUIが有効な環境では、IP毎に設定される仮想I/Oアドレスをユーザランドで取得する方法を新たに実現する必要がでてきます。

これらの要求に自然に対処するためには、カーネルドライバ化が自然な流れであると考えています。が、VIOドライバ開発当時の打ち合わせでも&ref(design111216libshvio.pdf,center,説明);した通り、カーネルのフレームワークが整っていない当時の環境(2.6.35)では UIOがベターな解でした。が、V4L2 MEM2MEMやmedia controller、dma_bufが使える現状では、前述の要求からもVIOのカーネルV4L2ドライバ化がベストな解と考えます。

 User 空間からVPU、 VIO などの IP 管理下のバッファーへのアクセス方法という意味では
 当時は 物理連続メモリーを確保して、それを mmap で見せる方法が最適> 解だったので、
 UIO でそれが使える環境で割り込みイベントだけをハンドルするような構成をとっていた。

はい、その通りです。

 最近 V4L2 が拡張されて、この種のゼロコピーでのバッファーの受け渡しが
 出来るようになり (← 本当?)、更に
 IOMMU を解することで物理非連続であっても仮想連続メモリーとして
 扱える点が UIO より柔軟性がある。 但し IOMMU の間接参照のコストは
 UIO よりは大きいが、世の中の流れが V4L2 に向いているので、それに
 あわせるという意味も含め、こちらに置き換えていきたい.....

IOMMUが有効な環境では、UIOでも物理非連続メモリが扱えます。ですので、柔軟性や参照コスト面での差ではなく、H/W IPが求めるバッファの物理アドレス(IOMMU有効の場合はデバイス毎の仮想 I/Oアドレス)をユーザランドで取得、共有することが難しくなっており、最新カーネルでは、ユーザランドではdma_buf APIによりバッファの export/importを行い、カーネル内ドライバ間でアドレスの管理・変換を行うほうが実現が容易であるという理由です。

 CMA との関係、 DMA-mapping との関係はどうなりますか ?

CMA対応は、UIO/V4L2とも同じ条件です。DMA-mapping (dma_buf API)は、現状、UIOが未対応ですので UIOドライバでdma_buf APIを用いることはできません。ですので、dma_buf APIに関してはV4L2が1歩進んでいます。

 あと、下記で mem2mem と言っているのは、他にどんな選択肢があるなかでの mem2mem なのでしょうか ? 
 また zero-copyになるのでしょうか ?

H2のVSPでは、出力がDUにつながる選択肢があるので、outputもmemory bufferという意味でmem2memという言葉を用いています。もちろん、これまで同様、出力memoryをframe buffer領域にすることでmem2memでもzero-copyによる画面描画は実現できます。

 今回の変更に影響されるのは OMX component の中に閉じますか ?

先のメールで書きましたが、V4L2 VIO上にlibshvioを移植する予定ですので、移植ができれば、現状libshvio上に実現されている OMXILはほとんど変更せずに動作するものと考えています。

 それとも Gstreamer component のつくり等にも影響してきますか ?

GStreamerのつくりは、これまで(0.10)のものから変更しようと思っています。これまでは、dfbvideosink内でDirectFBとlibshvio による描画処理を切り替えていましたが、V4L2 VIOドライバでは、コミュニティのV4L2プラグイン実装をうまく利用して、色変換・拡縮処理を単独のプラグインとして実現できないか検討しています。また、VSP-DUの場合にはDRM-KMSと連携することができると思いますので、DirectFB内にVSP処理が隠ぺいされて、コミュニティコードのdfbvideosinkがそのまま利用できるのではと予想しています。

 H2 の場合、武蔵のミドルチームが関連 IP のハンドルをクローズに
 握って独自の実装をしているのですが (RT ドメインはやっと排除できた
 のですが、別の形のブラックボックスが介入してきてちょっと厄介です)
 この辺 (=mem2mem V4L2 実装) の取り組みについては、ミドル
 チームにも啓蒙するべきと思いますか ? 彼らが聞く耳を持つかは
 わかりませんが、言うだけいったあげた方が良いでしょうか ?

隠ぺいすると、V4L2化で可能となったデバイス共有による複数モジュールの(複数プロセスに対する)並列処理を活用することが難しくなります(例えば、androidにおいて、OMXIL, hardware composer, カメラHALのそれぞれでVIO/VSPを利用する等)。また、隠ぺいは、カーネル(フレームワーク)の進化についていきにくいことが予想されます。V4L2, media controller, dma_bufのように
カーネルは常に進化しますので、オープンソース化して流れに乗る(本当は、流れを作る)のがよいと思います。

松原 克弥@株式会社イーゲル matsu@igel.co.jp / 0422-50-2810
On Fri, 26 Jul 2013 21:57:17 +0900 (JST) Katsuya MATSUBARA <matsu@igel.co.jp> wrote:

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