平素より、弊社製品をお引き立ていただき厚く御礼申し上げます。
2010年6月8日をもちまして組込みLinux開発用CPUボード Bishop 6.4インチLCDタイプPE-201Bの販売を終了致します。
なお、4インチLCDタイプPE-201Aは引き続き販売を継続いたします。
今後とも、弊社ならびに弊社製品をご愛顧賜りますよう、お願い申しあげます。
E-mail: sales@pylone.jp
組込みLinux開発用CPUボードBishop向けに移植したTOPPERS/JSPカーネルを公開します。使用したTOPPERS/JSPカーネルのバージョンは 1.4.3 です。
TOPPERS/JSPカーネルとは、μITRON4.0仕様に準拠したリアルタイムカーネルで、TOPPERSプロジェクトの開発成果です。 TOPPERS/JSPカーネルの詳細についてはTOPPERSプロジェクトサイトを参照してください。
株式会社パイロンが独自に配布する非公式なバージョンです。本ソフトウェアについてTOPPERSプロジェクトへの質問はお控えください。
今回の移植は実験的なものです。実用レベルに達していないことを予めご了承ください。
| TOPPERS/JSP カーネル for Bishop | |||
| toppers-jsp-bishop-1.4.3-pylone0.tar.bz2 ソースコード | 1.4.3-pylone0 | ダウンロード | 996.4KB |
| toppers-jsp-bishop-1.4.3-pylone0.bin ROMバイナリ | 1.4.3-pylone0 | ダウンロード | 28.0KB |
ゼロからの移植ではなく、標準TOPPERS/JSPカーネルに既に含まれる同一のCPUコアを持つシステムをベースにして移植を行いました。 BishopのCPUコアはARM920Tであるため、ベースにするシステムはIntegrator/AP+CM920Tとしました。
また、サポートしたデバイスは、TOPPERS/JSPカーネルの動作が最低限確認出来るものとして、
のみとしました。
Bishopエミュレータにて実行する手順です。 予めBishopエミュレータをインストールしたLinux環境を想定しています。
Windows上のBishopエミュレータでの実行手順、及びBishopボードでの実行手順に関しては後述の関連リンクを参照してください。
前述のTOPPERS/JSPカーネルのROMバイナリファイルをダウンロードして、ダウンロードしたディレクトリに移動後、
$ mv toppers-jsp-bishop-1.4.3-pylone0.bin u-boot.bin
としてファイル名称を変更して、
$ qemu-bishop -M pe201a -serial stdio -kernel dummy -mtdblock /dev/null -nographic
としてqemu-bishopを起動します。この時、
failed to open: led.img failed to open: led.img failed to open: led.img failed to open: led.img failed to open: pe201a.img bishop_reset: splash image splash480.bmp.gz was not found bishop_reset: failed to load a kernel image file
と、qemu-bishopがメッセージを出力しますがTOPPERS/JSPカーネルの動作に影響はありません。
次いで、
TOPPERS/JSP Kernel Release 1.4 (patchlevel = 3) for ARM - Pylone Bishop board (Feb 24 2009, 15:21:58)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001). |
task1 is running (002). |
task1 is running (003). |とTOPPERS/JSPカーネルのバナー、及びTOPPERS/JSP付属のサンプルプログラムからのシリアル出力が表示されると思います。
サンプルプログラムは起動中の3つのタスクに関する指示を与えられるようになっており、 例えばレディーキューを回転する'r'を入力すると、task1からtask2へと実行状態のタスクが切り替わります。
Sample program starts (exinf = 0). task1 is running (001). | task1 is running (002). | task1 is running (003). | #rot_rdq(three priorities) task2 is running (001). + task2 is running (002). + task2 is running (003). +
サンプルプログラムの詳細に関しては、TOPPERS/JSPカーネルソースコード内の sample/sample1.c 冒頭のコメント文を参照してください。
TOPPERS/JSPカーネルに標準で付属するWindows上で動作するシミュレータでもタスクの状態を検証する事が出来ると思いますが、今回のBishopエミュレータによる実行も併用すれば、実機によるデバッグをさらに軽減することが出来ると思います。
組込みLinux開発用CPUボードBishopに同梱されるソフトウェアのバージョンアップを実施いたします。
| 旧バージョン | 新バージョン | |
|---|---|---|
| U-Boot | 1.2.0-pylone5 (変更なし) | |
| Linuxカーネル | 2.6.22.1-pylone0 | 2.6.26.8-pylone0 |
| ルートファイルシステム | Debian GNU/Linux etch 4.0r3 | Debian GNU/Linux etch 4.0r5 |
2009年1月以降にご注文いただいた分から新バージョンにて出荷いたします。
2008年12月までにご購入いただいたお客様につきましては、別途バージョンアップ手順をご案内いたします。
組込みLinux開発用CPUボードBishopエミュレータの正式版をリリースしました。
| Bishopエミュレータ | |||
| qemu-bishop-0.9.1-pylone1.tar.bz2 ソースコード | 0.9.1-pylone1 | ダウンロード | 2.3MB |
| qemu-bishop-0.9.1-pylone1-setup.exe win32 installer | 0.9.1-pylone1 | ダウンロード | 1.7MB |
| qemu-bishop_0.9.1-pylone1-1_i386.deb deb | 0.9.1-pylone1-1 | ダウンロード | 461.0KB |
| qemu-bishop-0.9.1_pylone1-1.i386.rpm rpm | 0.9.1-pylone1-1 | ダウンロード | 462.8KB |
ビットラン JTAGエミュレータ Code Debugger のデバッガソフト Code Stage 用 S3C2440Aペリフェラル定義ファイルを 公開 します。
定義ファイルをデバッガソフトに追加することによって、直感的なユーザインタフェースでS3C2440Aのペリフェラルレジスタへアクセスできます。
入手方法や使い方については 「DR-01用S3C2440Aペリフェラル定義ファイル」 を参照してください。
正式版を公開しました - 記事: Bishopバージョンアップのお知らせ
Bishop 向け Linux カーネルのテスト版 (2.6.26.8) を公開します。
| Linux-2.6.26.8-pylone0 | |||
| linux-2.6.26.8-pylone0.tar.gz ソースコード | 2.6.26.8-pylone0 | ダウンロード | 61.4MB |
| uImage バイナリ | 2.6.26.8-pylone0 | ダウンロード | 1.7MB |
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopエミュレータBeta4を公開します。
Bishopの実機では、GPIOポートに対して出力を行うことで、基板上でLED5/LED4/LED8/LED7とラベルされたLEDを制御することができます。
QEMUウィンドウ内にLCDの内容だけでなく、これらのLED状態も表示されるようにしました。起動初期段階のデバッグ等に利用できます。
本エミュレータは、オープンソースのプロセッサエミュレータ QEMUの開発版をベースに、Bishop向けの機能を追加したものです。 本リリースでは Beta3 と比較してエミュレーション可能な機能自体に変更はありません。
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | ○ | PE-201QにはLEDが存在しないため、201A,201Bエミュレーション時のみ表示されます。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | △ | 再生のみです。 | |
| タッチスクリーン | ○ | ||
| SD/MMC | ○ | ||
| カメラ | × | ||
本バージョンでは、ソースコード (qemu-bishop-0.9.1-pylone0rc4.tar.bz2) のみを公開しています。以下の手順でコンパイルすることができます。
$ ./configure --target-list=arm-softmmu --enable-alsa $ make
まず、以下のイメージファイルをダウンロードします。画像データ以外のファイルは、従来バージョンで使用していたものがあればそのまま使用できます。
イメージファイルが置かれたディレクトリでqemuを
$ qemu-system-arm -M pe201a -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
$ qemu-system-arm -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
のように起動してください。
-M オプションに指定された値(pe201a または pe201b) に従って、QEMUウィンドウ内にLCDの内容だけでなく、ボード画像/LED状態も表示されます。
Bishop標準のLinuxカーネルで起動した場合、実機と同様にHeartBeatの処理が開始されるとLEDの表示が変化します。
LEDはGPIOポートバンク'B'の 5,6,7,8 ビットに接続されているので、アドレス0x56000014に値を書くと(対応するピンが出力用に設定されていれば)反映されます。なお、論理は負、0 から数えたビット番号とLEDの対応は以下となります。
| ビット番号 | LED |
|---|---|
| 5 | LED5 |
| 6 | LED4 |
| 7 | LED7 |
| 8 | LED6 |
例として、U-Bootプロンプトから4つのLEDすべてを消灯/点灯するには以下のようにします。
# mw.l 56000014 1e0 # mw.l 56000014 000
なお、QEMU上では 1e0 に代わりに ffff などの値を書いても同様の結果が得られますが、実機では 0x1E0 以外の値を設定すると他デバイスの動作に干渉してしまいます。
Bishop のカーネルを distcc による分散クロスコンパイル環境 でクロスコンパイルしてみました。
distcc の FAQ によると
You should use about twice the total number of CPUs available, but it dependson your network, program being compiled, available memory, etc. Experimentwith different values.
とのことなので、 とりあえず -j をプロセッサ・コア数の2倍にします。
まずは localhost 1台で計ってみます。(Xeon 2.40GHz x2, コア x4)
$ time make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnu- uImage real 4m0.051s user 13m14.462s sys 1m12.329s
ホストを一台追加します。(host2: Pentium D 3.0GHz, コア x2)
$ export DISTCC_HOSTS="localhost host2" $ time make -j12 ARCH=arm CROSS_COMPILE=arm-linux-gnu- CC="distcc arm-linux-gnu-gcc-4.1" uImage real 2m4.114s user 4m38.933s sys 0m57.964s
もう一台追加します。(host3: Core 2 Duo E6600 2.4GHz, コア x2)
$ export DISTCC_HOSTS="localhost host2 host3" $ time make -j16 ARCH=arm CROSS_COMPILE=arm-linux-gnu- CC="distcc arm-linux-gnu-gcc-4.1" uImage real 1m32.039s user 3m41.718s sys 1m0.260s
さらにもう一台追加します。(host4: Celeron M 520 1.60GHz, コア x1)
$ export DISTCC_HOSTS="localhost host2 host3 host4" $ time make -j18 ARCH=arm CROSS_COMPILE=arm-linux-gnu- CC="distcc arm-linux-gnu-gcc-4.1" uImage real 1m22.078s user 3m17.572s sys 1m2.056s
新しいデバッガソフト Code Stage に対応したペリフェラル定義ファイルを公開しました。記事: Code Stage用S3C2440Aペリフェラル定義ファイルの公開
ビットラン DR-01 の 共通デバッガソフト用 S3C2440Aペリフェラル定義ファイルを 公開 します。
定義ファイルをデバッガソフトに追加することによって、直感的なユーザインタフェースでS3C2440Aのペリフェラルレジスタへアクセスできます。
入手方法や使い方については 「DR-01用S3C2440Aペリフェラル定義ファイル」 を参照してください。
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopエミュレータBeta3を公開します。
再生のみですが、オーディオに対応しました。
SD/MMCに対応しました。 -sd オプションで指定したディスクイメージファイルをSDカードとして扱うことができます。 ディスクイメージの作成方法は「ディスクイメージのホスト側での操作方法」を参照してください。
debianパッケージ、RPM、Windows インストーラを用意しました。
本エミュレータは、オープンソースのプロセッサエミュレータ QEMUの開発版をベースに、Bishop向けの機能を追加したものです。 Beta1 や Beta2 と比較してエミュレーションの精度が向上していますが、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | △ | 状態の設定は可能ですが、表示はおこなわれません。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | △ | 再生のみです。 | |
| タッチスクリーン | ○ | ||
| SD/MMC | ○ | ||
| カメラ | × | ||
/etc/apt/sources.list に以下の apt-line を加えます。
deb http://downloads.pylone.jp/tools/deb ./
入手可能なパッケージの一覧を更新します。
# aptitude update
qemu-bishop パッケージをインストールします。
# aptitude install qemu-bishop
/etc/yum.repos.d/pylone-jp.repo に yum レポジトリを追加します。
[tools] name=Tools baseurl=http://downloads.pylone.jp/tools/rpm/ enabled=1 gpgcheck=0
リポジトリ情報を更新します。
# yum update
qemu-bishopパッケージをインストールします。
# yum install qemu-bishop
インストーラ (qemu-bishop-0.9.1-pylone0rc3-setup.exe) をダウンロードして実行してください。
まず、以下のイメージファイルをダウンロードします。
イメージファイルが置かれたディレクトリでqemu-bishopコマンドを
$ qemu-bishop -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
として起動してください。
の順で実行されます。
-M オプションには、従来の pe201a と pe201b に加えて pe201q を指定することができます。
「スタート」 → 「すべてのプログラム」 → 「qemu-bishop」
ソースコード (qemu-bishop-0.9.1-pylone0rc3.tar.bz2) からビルドする場合の手順です。
$ ./configure --target-list=arm-softmmu --enable-alsa $ make
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopのエミュレータのBeta2版を公開します。
エミュレートする環境として提供される仮想ターゲットPE-201Qを追加しました。実機より大きな画面(640x1024)および豊富なNOR領域(128MBytes)が利用可能となるので、開発環境としての利便性が向上します。
エミュレータウィンドウ上のポインタ操作を、タッチスクリーンへの入力として変換するようにしました。PE-201A/Bとしてエミュレーションを行う場合、タッチスクリーンはキャリブレーション済の状態で起動します。PE-201Qでは変換係数の初期値に意図的にある程度の誤差を残してあります。キャリブレータの動作確認にはPE-201Qを使用してください。
QEMU起動時に-appendオプションが付加された場合に、U-Bootの環境変数"bootargs"へ反映するようにしました。この環境変数はLinuxカーネルの起動時の引数として渡されます。
-append を指定しないか、空("")とした場合、bootargsの内容は
bootargs=console=ttySAC0,115200 console=tty0 preinit=/pylone root=/dev/mtdblock5 nfsroot=10.0.2.2:/ROOTFS/ ip=10.0.2.15::10.0.2.2:255.255.255.0:::
となります。この場合、特に操作しなければルートファイルシステムとしてNANDが使用されます。
-appendに"xxx=yyy"のような値を指定した場合、bootargsの内容の後半が書き換えられて
bootargs=console=ttySAC0,115200 console=tty0 preinit=/pylone xxx=yyy
となります(この例のままでは"root="が指定されなくなるため、起動に失敗します)。
-append "root=/dev/nfs nfsroot=xx.xx.xx.xx:/XXXXX ip=10.0.2.15::10.0.2.2:255.255.255.0:::"
のように有効な"root="と付加情報を設定すれば、指定に従って起動します(この例の場合は nfs サーバxx.xx.xx.xx の /XXXXX をルートとして)。
QEMU がエミュレーションのために使用するコード変換バッファ領域のサイズを増やしました。エミュレータ上で複雑な処理をおこなわせた場合の速度低下が軽減されています。
QEMUのメモリ消費量がBeta1と比較して増加しているため、十分なメモリを確保しての使用をお勧めします。
今回のリリースでは、ソースコードのみ提供します。以下のリンク先から取得してください:
今後
も準備する予定です。
本エミュレータは、オープンソースのプロセッサエミュレータQEMUの開発版をベースに、Bishop向けの機能を追加したものです。Beta2ではBata1に比較してエミュレーションの精度が向上していますが、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | △ | 状態の設定は可能ですが、表示はおこなわれません。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | × | ||
| タッチスクリーン | ○ | ||
| MMC | × | ||
| カメラ | × | ||
Debian環境では、 # apt-get build-dep qemu を実行することで、必要なパッケージを一括してインストールすることもできます。
ソースコードを展開したディレクトリ内で以下の手順を行うことで、実行可能ファイル ./arm-softmmu/qemu-system-arm が生成されます。
Bishopエミュレータに実機出荷状態と同様の動作をさせるためには、
を与える必要があります。それぞれのファイルをリンク先からダウンロードし、ソースコードのトップディレクトリに置いた状態で
$ ./arm-softmmu/qemu-system-arm -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
として起動してください。
の順で実行されます。
オプション”-M”には、従来の"pe-201a"と"pe-201b"に加えて"pe-201q"を指定することができます。
カーネルイメージを最新のBishop向けカーネルに差し替えると、起動時にタッチスクリーンからルートファイルシステムを選択することができます。
Bishop向けLinuxカーネルのテスト版 (2.6.24-rc6) を公開します。
最新版は2.6.26.8です。記事: Bishop向けLinuxカーネルのテスト版 - 2.6.26.8
主な変更点は以下の通りです。
本カーネルは近日中に正式リリースされる予定です。今後出荷するBishopにもプリインストールされます。これまでご購入いただいたお客様につきましては、アップデート手順をご案内させていただきます。
Bishopにプリインストールされている uClibcベースのinitrdを klibcによるinitramfsに変更する予定です。
klibcやinitramfsについては、カーネル付属文書Documentation/early-userspace/READMEを参照してください。JFプロジェクトによる日本語訳もあります。
klibcのサンプル実装として、起動時にタッチスクリーンからルートファイルシステムを選択する仕組みを用意しました。
起動時に表示される画面上のアイコンをタッチすることにより、NAND、NFS、USBマスストレージ、SDカードの何れかからルートファイルシステムを選択できます。
近日中にリリース予定のBishop向けカーネルでは、このカスタムinitramfsも含まれます。
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
Bishopエミュレータのベータ版を公開しました。
パイロンでは組込みLinux開発用CPUボードBishopのエミュレータを開発しています。主要な構成要素についてエミュレーションの実装が終了したので、Beta1として公開します。
今回のリリースでは、ソースコードとWindows向けインストーラの形式で提供します。以下のリンク先から取得してください:
今後
についても準備していく予定です。
本エミュレータは、オープンソースのプロセッサエミュレータQEMUの開発版をベースに、Bishop向けの機能を追加したものです。Bata1の段階では、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | △ | 状態の設定は可能ですが、表示はおこなわれません。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | × | ||
| タッチスクリーン | × | ||
| MMC | × | ||
| カメラ | × | ||
※Debian環境では、 # apt-get build-dep qemu を実行することで、必要なパッケージを一括してインストールすることもできます。
ソースコードを展開したディレクトリ内で以下の手順を行うことで、実行可能ファイル ./arm-softmmu/qemu-system-arm が生成されます。
Bishopエミュレータに実機出荷状態と同様の動作をさせるためには、
を与える必要があります。それぞれのファイルをリンク先からダウンロードし、ソースコードのトップディレクトリに置いた状態で
$ ./arm-softmmu/qemu-system-arm -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
として起動してください。
の順で実行されて、最終的にログインプロンプトが表示されます。
このスクリーンショットは現在パイロンで開発中のBishopエミュレータです。オープンソースのプロセッサエミュレータQEMUをベースにしています。ちょっと試しにやってみるかという軽い動機で始めたのですが、作業が進み QEMU への理解が深まるにつれて組込みソフトウェア開発ツールとしての可能性を感じるようになりました。まだ具体的な活用をご提案できるまでには至っていませんが、何か役にたつ使い方があれば紹介していきたいと考えています。
前回の記事
でご紹介した uClibc によるルートファイルシステムとは別に
Debian GNU/Linux
環境もご提供させていただく予定です。
組込み Linux 開発において、アプリケーションのクロスコンパイルだけでそれなりの時間を取られてしまった経験のある開発者の方も多いかと存じます。 Debian の豊富なバイナリパッケージをお使いいただければ製品企画段階のデモ機作成などが手軽に行えます。
Bishop のブートローダ U-Boot は前身であるPowerPC用ブートローダ ppcboot を他のアーキテクチャにも対応させた組込み向け汎用ブートローダです。 tftpによるネットワークブートなどブートローダとしての機能に加え、 USB、MMC、IDE、MII、PCMCIA、NAND、I2C、SPI など様々なデバイスやバスに対応 したモニタプログラムでもあります。
U-Boot の特筆すべき点は移植性の高さです。アーキテクチャに依存する部分と非依存の部分が分離されているため、コアアーキテクチャさえ対応していれば新しい CPU への対応も比較的少ない作業で済みます。また、デバイスドライバが豊富に用意されているため、対応しているデバイスであればデバイス固有のパラメータを与えるだけで動いてしまう事が多いです。例として、実際に U-Boot を Bishop へ移植した際に追加したコードの一部をご紹介します。
DM9000 のドライバは common/dm9000x.c です。ターゲットで動かすためにはアドレスとバス幅を指定します。
include/configs/bishop.h:
#define CONFIG_DRIVER_DM9000 1 /* ドライバを有効化 */ #define CONFIG_DM9000_BASE 0x20000300 #define DM9000_IO CONFIG_DM9000_BASE /* アドレス (I/O) */ #define DM9000_DATA (CONFIG_DM9000_BASE + 4) /* アドレス (データ) */ #define CONFIG_DM9000_USE_32BIT 1 /* バス幅 */
NAND のドライバは drivers/nand/ です。動かすためにはチップの数と NAND コントローラのベースアドレスを指定し、NAND コントローラ固有の処理を追加します。
include/configs/bishop.h:
#define NAND_MAX_CHIPS 1 #define CFG_MAX_NAND_DEVICE 1 #define CFG_NAND_BASE 0x4E000010
board/pylone/bishop/nand.c:
#include <common.h>
#if (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY)
#include <nand.h>
#include <s3c2440.h>
static int hwctl = 0;
static void bishop_hwcontrol(struct mtd_info *mtdinfo, int cmd)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
switch (cmd) {
case NAND_CTL_SETCLE:
hwctl |= 0x1;
break;
case NAND_CTL_CLRCLE:
hwctl &= ~0x1;
break;
case NAND_CTL_SETALE:
hwctl |= 0x2;
break;
case NAND_CTL_CLRALE:
hwctl &= ~0x2;
break;
case NAND_CTL_SETNCE:
reg->NFCONT = reg->NFCONT & 0xfffffffd;
break;
case NAND_CTL_CLRNCE:
reg->NFCONT = reg->NFCONT | 2;
break;
}
}
static void bishop_write_byte(struct mtd_info *mtdinfo, u_char byte)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
if (hwctl & 0x1)
reg->NFCMMD = byte;
else if (hwctl & 0x2)
reg->NFADDR = byte;
else
reg->NFDATA = byte;
}
static u_char bishop_read_byte(struct mtd_info *mtdinfo)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
return reg->NFDATA;
}
static int bishop_dev_ready(struct mtd_info *mtdinfo)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
while (!(reg->NFSTAT & 1));
return 1;
}
void board_nand_select_device(struct nand_chip *nand, int chip)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
reg->NFCONT = reg->NFCONT & 0xfffffffd;
return;
}
int board_nand_init(struct nand_chip *nand)
{
S3C2440_NAND * const reg = S3C2440_GetBase_NAND();
nand->eccmode = NAND_ECC_SOFT;
nand->hwcontrol = bishop_hwcontrol;
nand->read_byte = bishop_read_byte;
nand->write_byte = bishop_write_byte;
nand->dev_ready = bishop_dev_ready;
reg->NFCONF = 0x0300;
reg->NFCONT = 0x0063;
return 0;
}
#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) && !CFG_NAND_LEGACY */前回の記事で JTAG-ICE を使わないでフラッシュメモリに書込む方法をご紹介しましたが、実際の開発では JTAG-ICE を用いたデバッグのニーズも多いかと思います。基本的には ARM920T コアを サポートしている JTAG-ICE であれば使用可能ですが、コアだけに対応して CPU 固有 のペリフェラルに対応していない JTAG-ICE では使い勝手はあまりよくありません。
Bishop の推奨 JTAG-ICE は
ビットラン株式会社様
の DR-01 です。
DR-01 の
デバッガソフト
は CPU 固有のペリフェラル定義を簡単に追加できます。
パイロンでは S3C2440 用ペリフェラル定義ファイルを公開する予定です。
このペリフェラル定義ファイルをデバッガソフトに追加することによって、直感的なユー
ザインタフェースで S3C2440 のペリフェラルレジスタへアクセスできます。
2008/06/07: ペリフェラル定義ファイルを公開
Bishop にプリインストールされるブートローダ U-BootはOSのブートだけでなくフラッシュメモリの書き込みもできます。フラッシュメモリ上のLinuxカーネルやルートファイルシステムを書き換えるにはU-Bootを使うのがもっとも簡単な方法です。
U-BootによってU-Boot自体を書き換える事も可能ですが、書き込みに失敗した場合は起動できなくなります。お客様がU-Bootを上書きした事による起動の不具合についてはサポート対象外とさせていただきます。
オプションとして販売予定のダウンロードケーブルとライタープログラムを使えば、 PC からNORフラッシュメモリへ書き込む事ができます。U-Bootを使った書き込みでは U-Boot自体の上書きが失敗した場合に起動できなくなってしまいますが、本ケーブルを使えば起動できない状態でも書き込むことができます。フラッシュメモリ書き込みのためだけにJTAG-ICEを購入する必要はありません。
Bishop
のフラッシュメモリは 4MB の NOR 型 と 128MB の NAND 型です。
NOR は S3C2440 のメモリコントローラに直接つながり、
NAND は S3C2440 の NAND コントローラによって制御されます。
S3C2440 のリセットベクタはメモリコントローラのバンク0 (ROM/RAM の先頭)になります。出荷状態の Bishop では バンク0 は NOR になっていますので、ブートローダは NOR にインストールされます。S3C2440 の Stepping Stone と呼ばれる機能により NAND からもブート可能ですが、Bishop では Stepping Stone をサポート対象外とさせていただきます。
Bishop にはタッチパネルと LCD (TFT) が付属します。サイズは2種類です。
| サイズ | 解像度 |
|---|---|
| 6.4インチ | 640x480 (VGA) |
| 4インチ | 480x272 |
6.4インチ (写真) はボードとほぼ同じサイズで解像度は VGA です。
4インチは QVGA をワイドにした感じの 480x272 というちょっと変わった解像
度です。PSP
と同じ解像度といえばわかりやすいでしょうか。
タッチパネルからの入力は Linux Input Drivers が提供する仕組みによって 特定のデバイスに依存しない抽象的なイベントとして扱うことができます。 /dev/input/event0 や /dev/input/ts0 に対応したアプリケーションであれば修正す ることなくタッチパネルを使えるでしょう。 サンプルアプリケーションとしてタッチパネルを 利用した手書き入力やソフトウェアキーボードなどもご用意させていただく予定です。
Bishop の CPU は ARM920T コアの
SAMSUNG S3C2440 400MHz です。価格が安く、海外のポータブルナビ市場におけるシェ
アが高いことで知られています。この S3C2440 は SAMSUNG の CPU ラインナップの中
でモバイル SoC と位置付けられ、モバイル機器に必要とされる標準的なペリフェラル
を内蔵しています。 Bishop の LCD、タッチパネル、MMC/SD、USB、オーディオなどの
機能も S3C2440 の内蔵ペリフェラルによるものです。
これから何回かにわたって、7月発売予定の組込み Linux 開発用 CPU ボード Bishop についての情報をお伝えしたいと思います。予定している内容は以下の通りです。