#contents
** まえがき [#zb2a34d8]
- 本ドキュメントは、HDD audio system に搭載される Linux OS 及び
 boot_loader の目標仕様を記述するものである。
- 本仕様書内に規定された処理時間・プログラムサイズ等は現時点での
 予測値でありソフトウエア・ハードウエアの要件の見直しにより変動
 する可能性がある。
- 本ドキュメントは、システム構成検討用の資料として作成されたもの
 であり、プログラム開発/検収用の仕様書ではない。

** Linux 実装に関連した "ハードウエア構成" [#v3672b3a]
- システム回路基盤上に実装された NOR型 Flash メモリーに、Linux OS
 kernel 圧縮イメージ と boot_loader プログラムが格納される。
- HDD 内に kernel 圧縮イメージ以外の全ての Linux プログラムが格納
 される。
- kernel 更新処理に失敗してもバックアップで起動できるように Flash 
 メモリー上には 2つの Linux kernel 圧縮イメージを格納できる。
- システム開発用に利用する Linux shell 操作用のコンソール接続の
 ために RS232C の調歩同期式のシリアルポート 1ch を利用する。
- システム開発用にサーバー連携を行うために Ethernet LAN を 1ch 利用
 する。この LAN 1ch は製品のネットワーク接続用として共用可能である。
- 開発ボード上に実装された JTAG ポートを利用して外部にデバッガーを
 接続して Linux kernel空間、user空間のプログラムのデバッグが可能。

** boot_loader [#laa09508]
*** 概 要 [#i107789d]
- ハードウエアの初期化を行ってから、Linux OS の kernel イメージを
 システムRAM(SD-RAM)上に展開し、プログラムの実行を Linux kernel
 に引き渡すまでの処理を行うプログラムである。
- CD-ROMから Linux kernel イメージ を自動更新する機能をもたせる。
 CD-ROM の中には HDD内の Linux システムプログラム、ユーザーアプリ
 ケーションプログラムなどの更新データを記録しておいて、システム
 起動後にこのCD-ROMを読ませて、これらのプログラムを自動更新させる
 ことが可能であるが、この更新機能は boot_loader 内の機能ではない。
- システム開発支援機能として LANを利用した kernel のネットワーク
 からの起動、ネットワーク上のファイルシステムのマウントに対応する。

*** 性能の指標(予測値) [#ubd7215c]
- [処理時間]今回の boot_loader 部の処理時間は通常の起動方法(後述)
 の場合で1秒以下でありシステム全体起動時間のチューニング要素ではない。
- [サイズ①]boot_loader 自体のサイズはCD-ROMからの自動更新機能(後述)
 を含めても高々 128k バイト以下と予測する。
- [サイズ②]kernel image のサイズは構成次第であるが、1つのイメージ
 で高々 1M バイトと想定している。

*** 機 能 [#u0f7c1d4]
- ブート対象デバイス
++ Flash + HDD (通常利用される起動方式)
++ CD-ROM (プログラム更新用)
++ LAN   (システム開発用)
++ シリアルポート(システム開発用)
- 実際の製品ではシステム起動時間高速化要求もあるので(後述する
 プログラム更新時を除き)ブート方法の選択は行わないものする。
- 製品開発時に boot_loader 起動後にキー入力を受け付けて、ブート
 対象デバイスの選択や kernel image の選択を行う方法を提供するか
 については別途協議とする。(現見積にはこれらの機能は含まれていない)
- [制限事項]今回開発する boot_loader は ①SD memory card、②HDD 単体
 からの起動(=kernel 圧縮イメージ自体をHDD内に格納する方式)には
 主として boot_loader プログラムサイズ制約を考慮し対応しない。

- 高速起動支援機能
-- 今回はシステム稼働時の性能を犠牲にしないためフラッシュメモリー上
  から Linux kernel の展開イメージを直接実行する方式(XIP方式)を
  採用しない。
-- 本システムでは kernel スケジューラの拡張(後述)にてシステムの
  高速起動を行うが、一部の機能(電源投入直後のビットパターンLCD
  表示など)を boot_loader 内に持たせることは可能である。実際に
  どのような機能を持たせるかは、プログラム/データ(表示データ)
  のサイズ制約を考慮しながら別途協議して決定する。 実際には 
  kernel 起動後に LCD表示データを設定する方式でも電源投入後 2秒
  程度で表示ができる可能性があり、必ずしも boot_loader の対応が
  必須であるとは考えていない。現状保険と考えておく。
-- システム起動時間の中で HDD 装置の起動(spin_up)時間が大きな
  要因となる。今回の boot_loader は HDD 上のファイルの読み込みには
  対応していないが、HDD を起動させるためにATAPIのリセット処理(だけ)
  を boot_loader 内で実施する方法を検討。HDD のリセットはハード
  ウエアで処理できる可能性もあるので詳細の実装は別途検討とする。
 
- プログラム更新機能
-- プログラム更新専用 CD-ROM を利用したソフトウエアの更新機能をもつ。
-- 起動時に CD-ROM に更新プログラムが入っているか自動確認させると
  システム起動時間が長くなってしまうので、起動時に CD-ROM 起動を
  選択させる方法(特殊なキー操作など)を別途協議して決定する。
-- kernel image を更新した場合には、自動的に更新された kernel を
  システム起動時に選択する機能をもたせる。
-- kernel image の更新に失敗した場合には、自動的に更新前の kernel
  を利用して起動できる救済機能を持たせる。この機能のために kernel
  image の先頭に kernel 識別用のコード(magic_number)領域を設定する。
-- CD-ROM 内にHDD上のファイル更新プログラムが格納されている場合に
  HDD 上のファイルをどのように更新するかは別途検討とする。kernel
  起動後にメンテナンス用のプログラムを起動して、CD-ROM何に格納さ
  れた更新情報(ファイル名、ファイル格納位置)を参照しながら自動
  更新することができるが、

*** プログラムライセンス [#reb7bea5]
- boot_loader 部は Panasonic 殿向けのカスタムソフトウエアとして
 スクラッチ開発されるものである。
- boot_loader には GPL などのオープンソースソフトウエアライセンスは
 適用されない。(GPL成分を含まない)

** Linux kernel [#k868c41f]
*** 適用ディストリビューション [#n024065f]
- 本システムの Linux ディストリビューションは Lineo Solutions の
 uLinux CEE 1.0 である。
- Linux 統合開発環境は Lineo Solutions 社の ELITE( http://www.lineo.co.jp/products-services/products/ulinux-elite1.html ) である。
- Linux(kernel、ドライバー)は ELITE BSP(後述)として組み込まれる。
- ELITE は Java プログラムであり、Linux/Windows 両方で実行可能である。
 詳細な実行環境については Lineo Solutions の製品仕様を参照のこと。

*** BSP(ボードサポートパッケージ) [#s7e325ed]
- 本システム用にカスタマイズされたLinuxソフトウエアプログラムコード
 一式(バイナリーデータを含む)を カスタムBSPとして Lineo Solutions
 からリリースする。
- Lineo Soluions は別途締結するサポート契約に基づき提供するメールベースの
 テクニカルサポートは、このBSPに含まれたパッケージを対象とする。
- BSPには以下の SH-Linux 開発用の tool_chain を含んでいる。

-- kernel  = 2.4.20
-- gcc     = 3.2.3
-- glibc   = 2.3.1
-- binutil = 2.13.90.1

*** 性能の指標(予測値) [#a5d076b3]
- [起動時間]システム全体の起動時間は以下の項目の合計値で、 
  一般には ⅰ < ⅱ ≪ ⅲ の関係となる。
++ boot_loader(1秒程度)、
++ kernel起動時間(ハードウエア構成の時間を含む)、
++ アプリケーション起動時間

- [起動時間]②のkernel起動時間は、kernel 初期化の手順に大きく依存し、
 特にネットワーク認識やPCI/ATAPIなどのハードウエア認識の時間が占める
 割合が大きい。これらの認識時間は外部環境依存で変動する可能性がある。
- [起動時間]今回は起動時間高速化のため、ネットワークの認識などの
 処理は、システム起動時にハードウエア構成の認識を行わず(=決めうちして)
 ネットワーク接続が必要になった時に on-demand に module として組み込む
 手法を適用する。
- [起動時間]本システムのLinuxに実装されているハードリアルタイム機能
 を利用することで、上記②のkernel起動期間中にも一部のプログラムを実行
 させることができる。この機構を利用してユーザがシステムが起動して
 いることを見せるためのプログラム起動処理の作り込みを行う。(後述)

- [起動時間]上記対応を前提に以下のシステム起動時間目標を設定する。

|1|電源投入後、LCDに初期画面が表示されるまで        |2秒                   |
|2|キー・リモコン操作で表示内容が切り替わるまで         |4秒                   |
|3|キー・リモコ操作でCDトレイの開閉操作が可能になるまで |5秒 (詳細実装検討要)|
|4|実際にHDDに録音された音が出るまで                |8秒 (ハード未検討) |

*** ハードリアルタイム機能 [#efca8f9b]
- uLinux CEE 1.0 にはハードリアルタイム機能が実装されている。
- 本システムでは以下の技術課題解決にハードリアルタイム機能を利用する。

-- 起動時間高速化のためのハードリアルタイム機能利用
++ LCD表示データ表示ルーチンkernelプロセスで実行
++ 起動途中でキー入力に表示を応答させるため Sub-CPU との通信プログラム
  をリアルタイムスケジューラで実行させる
++ 起動途中でCDのトレイ開閉操作に対応した動作を行う

-- リアルタイム応答性確保のためのハードリアルタイム機能利用
++ 外部表示コントローラへのビットマップデータ転送処理(=シリアル
  通信)。本仕様はシステム全体性能への影響が大きく詳細検討中
++ Sub-CPU とのシリアル通信処理を行う、通信プロトコル詳細未決

- 上記のハードリアルタイム対応プログラムはユーザーアプリケーション
 であるが、リアルタイム対応のプログラム作成に特殊なAPIを理解する
 必要があるので、今回提供するBSPの中に上記のプログラムのひな形を
 含めて提供する。タイミング調整などのパラメータ設定は変更可能である。
*** 起動シーケンス解説 [#q7fa6d10]
- 現在の HDD-Audio デモシステムの起動シーケンスは以下のようになっている。
- 各ステップ毎の処理時間は現在計測中であるが、現状はユーザアプリ(GUI
 画面)が表示されるまでに約8秒かかっている。
- 本システムでは、この起動シーケンスの見直しを行うのと合わせ、リアルタイム
 機能の適用により起動時間の最適化を図る。(初期LCD表示まで2秒目標)

+ /sbin/init が起動しユーザ空間に処理が移行する。

+ /etc/inittab のエントリから /etc/rc.d/rcS スクリプトが実行される。

+ /etc/rc.d/rc.sysinit の実行
++    -hostname の設定
++    -log level の設定
++    -hwclock による system clock の設定
++  -keymap の設定
++  -System Font の設定
++  -USBドライバモジュール時のドライバ読み込み
++  -fsck
++  -rootfs の remount
++    -各デバイスドライバモジュールの読み込み
++  -swap on

+ /etc/rc.d/rc 3 にてランレベル3にて実行
++    rc0.d
+++        S01halt
+++        S00killall
++    rc1.d
+++        S00single
++    rc2.d
+++        S99local
+++        S24pcmcia
+++        S20random
+++        S12syslog
+++        S10network
++    rc3.d
+++        S99local
+++        S56rawdevices
+++        S25netfs
+++        S24pcmcia
+++        S20random
+++        S12syslog
+++        S10network

*** DVD-RAM サポート [#b221143e]
- SH7760 に内蔵されて USB Host インターフェース(USB1.1準拠、Linux からは
 OHCI仕様に見える)を利用して、外部に光ストレージデバイスを接続したい
 という顧客リクエストがあり実装方法を検討中
- DVD-RAM の UDFファイルシステム(1.50)対応には 3rd party 製のカスタム
 ドライバーの適用が必要となることがわかった。
- 日立システム
 (http://www.hitachi-system.co.jp/http://www.hitachi-system.co.jp/)の
 PC用のDVD-RAMドライバー を有償で組み込みLinux向けに開発し、ライセンス
 していることがわかった。( http://www.hitachi-system.co.jp/udf/ )
- SH-Linux への移植作業は2人月程度の作業工数との概算見積であった。
- SH-Linux 用ドライバーを binary 提供(ソース非公開)する
- 別途ライセンス契約が必要(詳細情報未入手)
- 現在の日立システム製品は UDF2.01 に未対応(対応には6人月+の期間必要)
- 現在の日立システム製品は VR書き込み に未対応

*** パワーマネージメント機能 [#lfa916b3]
- apm の実装により、CPUのスリープモードを実現。個々のデバイスのパワーマネージメント機能の実装に関しては別途検討とする。

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