3.8.3 YAFFS2をサーポートするカーネルをコンフィグ、コンパイル
Linuxカーネルソースコードルートディレクトリでmake menuconfigを実行する。下向きボタンで移動し、File Systemsを選べEnterボタンを押し、サブメニューに入る
゛Miscellaneous filesystems゛メニューオプションを探し、Enterボタンを押し、サブメニューに入る、下図を参照する
下図のメニューで、゛YAFFS2 file system support゛を探し、スペースボタンで選択する。カーネルにyaffs2ファイルシステムのサポートを追加、゛Exit゛を押し、カーネル設定を終了する。
コマンドライン:#make zImageを実行する
3.8.4 開発ボードにプログラミング、実行、テスト
最後にlinux-2.6.32.2/arch/arm/boot/zImageを生成し、supervivi の゛k゛機能を利用し、nand flashにプログラミングする、゛b゛を押し、システムを起動する。nand flashにはファイルシステムがあれば、(superviviの゛y゛機能を使用し、既存のyaffs2ファイルシステムイメージroot_qtopia-128M.imgでテスト)。下図の情報を確認できましたら、yaffs2の移植は成功することを明らかにしている。
3.9 DM9000のNICドライバを移植
3.9.1 デバイスリソースの初期化
Linux-2..6.32.2はすでに完全なDM9000 NICドライバを持っていた(ソースコード位置:linux-2.6.32.2/drivers/net/dm9000.c)、プラットフォームデバイスで、ターゲットプラットフォーム初期化コードに、該当の構造を書き込む、具体的な手順は下記の通り
まずドライバに必要のヘッダファイルdm9000.hを追加する
DM9000のLANカ—ドデバイスデバイスの物理ベースアドレスを定義する。
次にDM9000 NICドライバインタフェースと合わせ、該当プラットフォームのデバイスリソースを修正し、下記のとおりである
このようにDM9000プラットフォームデバイスのインタフェースは修正された
3.9.2 DM9000が使用するビット幅レジスタ調整
Linux-2.6.32.2のDM9000 NICドライバはmini2440専用ではないため、ソースコード移植が必要である:
linux-2.6.32.2/drivers/net/dm9000.cを開き、ヘッダファイルに2410の関連設定定義を追加し、次の赤い部分のように示す
dm9000デバイスの初期化関数には次の赤い部分を追加し、これはDM9000が使用するチップセレクトバスを設定するタイミングで、現在、mini2440にはバスを通じて外部へ拡張するデバイスは一つだけで、このデバイスで関連のレジスタ設定を直接に修正できる。mach-mini2440.cでも修正できる。
3.9.3 MACアドレスについて
本開発ボードの使用するDM9000 LANカ—ドはEEPROMと外部接続しMACアドレスを保存しないから、システムのMACアドレスは"ソフト"アドレス(広範囲)であり、即ちソフトウェアを通じて、任意値を修正できる、static int __devinit dm9000_probe(struct platform_device *pdev)関数から見て:
ここまでDM9000の移植は完了する
3.9.4 カーネル設定、DM9000を追加、コンパイルとテスト
カーネルソースディレクトリで、#make menuconfigを実行し、カーネルにNICドライバを設定し始め、下記のメニューオプションを順に選択する
DM9000の設定オプションを見つけ、DM9000は選択されたと見えるのは、Linux-2.6.32.2のデフォルトカーネル設定はDM9000のサポートを追加してからになる
次に#make zImageを実行し、最後にarch/arm/boot/zImageファイルを生成し、゛k゛コマンドを使用し、開発ボードにプログラミングし、デフォルトファイルシステムで起動し、コマンドラインターミナルにifconfigコマンドを実行する。下記図を参照することを見える
3.10 RTCドライバを活性化
3.10.1 初期化ファイルにRTCデバイス構造を追加
Linux-2.6.32.2カーネルは2440のRTCドライバに対して十分であるが、mach-mini2440.cのデバイスリストに追加しないため、活性化されていない。RTC構造を追加し、次の赤い内容のように示す
3.10.2 カーネルにRTCを設定
カーネルを再構成、RTCのドライバサポートを追加する、下記のメニューオプションを順に選択する
図のようなメニューが出る
デフォルト設定はRTCの関連オプションを設定メニューの一番に選択された
<*> Samsung S3C series SoC RTCオプション
カーネルの2440 のRTCドライバ設定オプションである。
3.10.3 RTCをテスト
カーネル設定メニューを終了し、#make zImageを実行し、生成したarch/arm/boot/zImageを開発ボードにプログラミングし、/devディレクトリ下に/dev/rtcデバイスドライバが確認できる、下図を参照する
RTCをテストしようとすれば、mini2440ユーザーマニュアルの関連章節を参照する:
Linuxでは、普通はdateコマンドで時間を変更する、S3C2440内部クロックをlinuxシステムクロックと同期させるため、hwclockコマンドを使用する:
(1) date -s 042916352007 #時間を2007-04-29 16:34と設定する
(2) hwclock -w #先設定した時間をS3C2440内部のRTCに保存する
(3) オンモードにする時、hwclock -sコマンドでlinuxシステムクロックをRTCに回復できる、基本的には該当コマンドは/etc/init.d/rcSファイルに置かれ、自動的に実行させる
注:既存システムは既にhwclock –sコマンドをrcSファイルに書き込まれました。
実行図は下記の通り
3.11 LCDバックライト•ドライバを追加
3.11.1 LCDバックライト•制御原理
今までコマンドラインで移植作業を行い、結果を表示される、LCDスクリーンには何の表示もない。本節からこれについて説明する
mini2440/micro2440開発ボードにはLCDバックライトはCPUのLCD_PWRピンを通じて制御し、GPG4と対応する。下図を参照する
LCD_PWR出力はハイレベル 奇数゛1゛になる場合、バックライトをオンし、出力はローレベル 偶数゛0゛になる場合、バックライトをオフする(注:ここで、バックライトをオン/オフ操作するだけ、バックライト輝度を調整しない)
3.11.2 カーネルにバックライトドライバを追加
現在、ソフトウェアでバックライトの制御スイッチを制御するため、バックライトドライバを追加する。
実現したい効果:
コマンドターミナルにバックライトデバイスへ偶数゛0゛を送信するすると、バックライトをオフできる、奇数 ゛1゛を送信するすると、バックライトをオンできる。ユーザーマニュアル (LCD バックライトを制御):
注:LCD バックライトデバイスファイル:/dev/backlight
コマンドライン:echo 0 > /dev/backlightを入力する、バックライトをオフできる
コマンドライン:echo 1 > /dev/backlightを入力する、バックライトをオンできる
そして、linux-2.6.32.2/drivers/videoディレクトリ下にmini2440_backlight.cファイルを追加する、内容は下記の通り
次にバックライト設定オプションをカーネル設定メニューに追加し、linux-2.6.32.2/drivers/video/Kconfigをオープンし、下図を参照し位置に追加する
linux-2.6.32.2/drivers/video/Makefileをオープンし、設定定義に基づき、ドライバターゲットファイルを追加し、下図を参照する
ここまでカーネルにmini2440のバックライトドライバは移植された、カーネルソースコードルートディレクトリにmake menuconfigを実行し、次のサブメニューを順に選択する
該当設定オプションを探し、下図を参照する
カーネルソースコードルートディレクトリにmake menuconfigを実行し、次のサブメニューを順に選択する。該当設定オプションを探し、下図を参照する
スペースを押し、先に追加されたmini2440オプションを選択、保存、カーネル設定メニューを終了し、コマンドライン:make zImageを実行し、arch/arm/boot/zImageを生成する、superviviの゛k゛機能を使用し、開発ボードにプログラミング、起動すると、バックライトはオンにする。
----------続く