2023年1月27日金曜日

TOPPERS/ASP - ML62Q1000版 その1

TOPPERS/ASP - ML62Q1000版 概要

以前、このページで書かせてもらいました。

ラピステクノロジー社のマイコン「ML62Q1000」です。

「ML62Q1000」マイコン


結局仕事では使えなかったので、ここでの公開となりました。

オリジナル「nX-U16/100」コアの16bit RISCマイコンです。

かつてはローム株式会社が開発・販売しており、同じロームグループのラピステクノロジー社に移管されました。

このマイコンの一番の特徴は耐ノイズ性にあり、そのスジでは結構有名です。

次いで、低消費電力

イメージ的には低消費電力を謳っているマイコンほど耐ノイズ性が劣る気がしますが、この「ML62Q1000」、これらを両立しているところにインパクトのある製品だと思います。

この特徴から家電などの民生分野に向いており、これからの時代に益々需要が増えるであろう、環境への耐性が求められるセンサーなどのIoTデバイスにも最適です。

ただ、いかんせんマイナーなアーキテクチャであることは否めなく、技術情報もネット上ではほとんど見かけません。

また、目ぼしいRTOSなども見つからなかったので、この「ML62Q1000」に「μITRON4.0」準拠のRTOS(リアルタイムOS)であるTOPPERS/ASPを移植してみました。


必要なもの

今回のターゲットとなる、ML62Q1000マイコンスタータキット「SK-BS01-D62Q1577TB」です。

ありがたいことにデバッガー「EASE1000 V2」も付いており、通販で買うことができます。

こちらであれば、最安値で26,000円くらいです。

趣味で買うにはキツイお値段ですね…。

私の場合は、例え仕事で使う可能性があっても確定的でない限り、こういうの会社が絶対買ってくれないので自腹を切りましたが、あまり良いことではありませんね!

(それをやると、会社はソフトウェアの開発には金が要らないと錯覚して、益々ケチになる…。)

ML62Q1000マイコン スタータキット「SK-BS01-D62Q1577TB」


他の型番への移植も可能ですが、TOPPERS/ASPを搭載して動作させるならROM:128KB/RAM:8KB以上の容量を持つ型番を選びましょう。

そうなると実質的に「ML62Q1000」シリーズでも、ML62Q15xx、ML62Q16xx、ML62Q17xxなどのハイエンドの型番がターゲットになります。

このブログでは「SK-BS01-D62Q1577TB」を使用した場合の例を説明していきたいと思います。


ダウンロード/GitHub

ソースコードの入手は、こちらからどうぞ。

とは言っても、このソースコードをダウンロード、もしくは「git clone」しても、絶対にビルドが通りません。

このソースコードは未完成です。

なぜなら、ラピステクノロジー社のドライバーを後から付け加える必要があるんです。

ラピステクノロジー社のドライバーのライセンスの条項によれば、ソースコードの一切の再配布を認めていません。

そのため公開できるのは、それに抵触しない完全なオリジナル部分のみです。

そして、ラピステクノロジー社のドライバーを触ることができるのは、上記のスタータキットを購入した方のみです。

ですので、今後この記事では、それらのソースコードの在り処やコピーする場所などを事細かに書いていくつもりです。

やや面倒ですが、お付き合いいただけると嬉しいです。

ビルドは、まだやらないでくださいね~。

(あと、動かしながら記事書いてる過程でバグなんかが見つかるかもしれないので、ダウンロードは後の方が良いかも…。)


ベンダーの提供するドライバーなどのソフトウェアにあまり厳しいライセンスを課すと、ユーザーが気軽に試せないし、コミュニティが育たないので製品のシェアが伸びない気もするのですが…。

ただ、これらを公開してしまうとベンダー側のサポートの手間は確実に増えるので、それを懸念してライセンスを厳しくしているベンダーは少なからず存在します。

前回の「TOPPERS/ASP AVR32版」で取り上げた、Microchip社なんかもそうですね。

次回以降、開発環境の構築から始めましょう!


<続く>

2023年1月19日木曜日

TOPPERS/ASP - AVR32版 その5

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


プロジェクトの作成

この「TOPPERS/ASP AVR32版」では、2つのIDE(統合開発環境)を使用する方針です。

すなわち、コードを編集してそれをビルドする時に使う「Eclipse」と、ターゲットへプログラムの書き込みを行い、それをデバッグするための「Microchip Studio」です。

したがって、それぞれの様式に沿った2つのプロジェクトを作成しなければなりません。

では、なぜ2つ使うのか?

Microsoftの「Visual Studio」ベースの「Microchip Studio」が、コーディングをする上で重すぎて使い難いからです。

とはいえ、デバッガの「Atmel-ICE」を使用するためには、どうしても「Microchip Studio」が必要というジレンマ…。

あくまで個人的な好みなので、このあたりの使い分けは自由に選択してください。


とにもかくにも、まずは「Eclipse」のプロジェクトを作りましょう。

これに関しては、以前このブログに記載した「TOPPERS/ASP Arduino MEGA2560版」の記事が参考になります。

8Bitか32Bitかの違いはありますが、同じAVRマイコンですからね。

作業内容は同じです。

このページ(TOPPERS/ASP - Arduino Mega2560版 その4)の「プロジェクトの作成(Eclipse編)」の項目を参考にしてください。

同様に「Microchip Studio」のプロジェクトもこのページ(TOPPERS/ASP - Arduino Mega2560版 その4)の「プロジェクトの作成(Microchip Studio編)」の項目を参考にしてください。


デバッガとターゲットの配線

デバッガの「Atmel-ICE」とターゲットの「AT32UC3A3-XPLD」の間で、こんな感じの配線をします。

デバッガとターゲットの配線 - 1


「Atmel-ICE」には2種類のケーブルが同梱されているはずです。

今回使用するのは、10ピンがバラバラに出てるやつです。

それをこのように配線しなければなりません。

表がこう。

デバッガとターゲットの配線 - 2


裏はこんな感じ。

デバッガとターゲットの配線 - 3


信号の対応表は以下の通り。

まずは、「Atmel-ICE」側は以下の通り。

今回使うのはAVRポートの方ですよ!

信号表(デバッガ側)


次に「AT32UC3A3-XPLD」側は以下の通りです。

信号表(ターゲット側)


結果、バラバラ10ピンケーブルの方は、7番と8番はノンコネクトで大丈夫です。


プログラムの転送とデバッグ

これからTOPPERS/ASPのサンプルプログラムを動かす際には、動作確認のためにどうしてもシリアルポートが必要です。

そこで、以下のような市販のUSB/シリアル通信変換ケーブルを用意します。

市販のUSB/シリアル通信変換ケーブル


シリアル通信をするために必要なポートは、RXDとTXDとGNDの三本ですね。

ターゲット基板上の「J4」ヘッダから取りましょう。

「J4」ヘッダの位置


以下の赤い四角で囲った端子を使いましょう。

信号表(「J4」ヘッダ)


評価ボードからこうやってGNDRXDTXDと、それぞれの線を出してやって…

ターゲット側の配線


USB/シリアル通信変換ケーブル側の配線は、上からTXDRXDGNDの順番でこんな感じ。

これでシリアルポートが使えるようになりました。

USB/シリアル通信変換ケーブル側の配線


続いて、このUSB/シリアル通信変換ケーブルをパソコンに繋いでみましょう。

パソコン上でデバイスマネージャーを開きます。

ポート(COMとLPT)のサブカテゴリーとして「USB Serial Port」というポートが追加されているはずです。

(私のパソコンでは、「COM15」として認識されていますね。)

このポート番号、覚えておいて下さい。

デバイスマネージャー


ここで、デバッガとパソコン、そしてターゲットとパソコンをそれぞれUSBケーブルで繋げちゃいましょ。

面倒なことに、2種類のUSBケーブルが必要です。

デバッガは「Micro-B」、ターゲットは「Mini-B」と、似ているようで違うので要注意です。

ご覧の通り、通電します。

デバッガ、ターゲットとパソコンの接続


次に「TeraTerm」をご用意ください。

インストールしていない方は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「TeraTermの導入」の項目を参考にしてください。

もちろん、シリアル通信のターミナルであれば、他のものもお使いいただけます。

今回のTOPPERS/ASPのサンプルプログラムは、シリアル通信のメッセージを出力しますので、先程「USB Serial Port」として認識されたシリアルポート番号でターミナルを立ち上げておきましょう。

設定は、こんな感じです。

ボーレートは「9600」です。

(私のパソコンは、USB/シリアル通信変換ケーブルをCOM15として認識していました。)

TeraTerm - シリアルポートの設定


さて、「Microchip Studio」に戻りましょう。

「Microchip Studio」でプロジェクトを作成した状況から始めます。

以下の画面が表示されたら、上部にある「AT32UC3A3256」というタブをクリックしてください。

「Microchip Studio」 - 1


すると、以下の表示に切り替わりますので、すかさず左のリストから「Tool」をクリックしてください。

「Microchip Studio」 - 2


以下のような画面に切り替わります。

Selected debugger/programmer」のコンボボックスに接続中の「Atmel-ICE」がID番号付きで表示されていますか?

(「J41800113804」というIDは私のですね。)

表示されていない場合は、コンボボックスをクリックして、あなたの「Atmel-ICE」(「J41800113804」以外のもの)を選択してください。

加えて「Interface」は「JTAG」のままで結構です。

(ていうか、それ以外選べないはず。)

「Microchip Studio」 - 3


この設定を保存しましょう。

画面上部の保存アイコンをクリックしてください。

「Microchip Studio」 - 4


次に、プログラムのビルドと実行を行います。

画面上部の「」ボタンをクリックします。

「Microchip Studio」 - 5


しばらくすると、立ち上げておいたターミナルに以下のような表示が出ていると思います。

TOPPERS/ASPカーネルとそのサンプルプログラムの転送と実行に成功です。

TeraTermの表示


ブレークポイントを試してみましょう。

動作中のプログラムを停止します。

画面上部の「」ボタンをクリックします。

「Microchip Studio」 - 6


ブレークポイントを仕掛けましょう。

画面右の「Solution Explorer」のソースコードリストの中から「sample1.c」をダブルクリックし、ソースコードを表示します。

このソースコードの丁度中盤くらい、メインタスクの始めに仕掛けましょうか。

ブレークポイントは、ソースコードビューの左端をクリックすると赤丸が表示され、セットされていることを表します。

仮に、これを再びクリックするとブレークポイントが解除され赤丸も消えます。

「Microchip Studio」 - 7


では、ブレークポイントを仕掛けた状態で、プログラムを再び実行してみます。

上手く引っかかってくれるでしょうか…。

「Microchip Studio」 - 8


以下のようにプログラムが停止すれば成功です!

ここからは、「F10」キーでステップオーバー、「F11」キーでステップインなど、おなじみの操作が使用できます。

因みに、ステップオーバーやステップインなどを行っている時に命令が飛んでしまったり前後したりする場合は、最適化のせいです。

デバッグ時は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「サンプルプログラムのデバッグ」の項目を参考に最適化を解除しましょう。

「Microchip Studio」 - 9


ソースコードのコピーやら、複数のIDEの操作やら、AVR32版は少々複雑でしたね…。

お疲れ様でした!!

さて、次回はサンプルプログラムの動きの説明や、AVR32版カーネルの詳細な情報や注意事項などを書いていきます。


<続く>

2023年1月12日木曜日

TOPPERS/ASP - AVR32版 その4

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


Atmel Software Framework (ASF)のコピー

前回作成した雛形プロジェクトのディレクトリと、「TOPPERS/ASP AVR32版」のソースツリーのディレクトリを同時に2つエクスプローラーで開いておきましょう。

記事通りに作業すると、雛形プロジェクトは以下のディレクトリに保存されているはずです。


C:\Users\<ユーザー名>\Documents\Atmel Studio\7.0\GccBoardProject1

雛形プロジェクトのディレクトリ - 1


同じく、TOPPERS/ASPのソースツリーは以下のディレクトリに保存されているはずです。

「asp_avr32_gcc」や「asp_avr32_gcc_master」を「asp_1.9.2」に改名した場合。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2

TOPPERS/ASPソースツリーのディレクトリ - 1


さて、2つ開いたエクスプローラーでそれぞれ以下の場所を表示するようにします。

まず、雛形プロジェクトの方は、以下のディレクトリへ移動させます。


C:\Users\<ユーザー名>\Documents\Atmel Studio\7.0\GccBoardProject1\GccBoardProject1\src

雛形プロジェクトのディレクトリ - 2


次に、TOPPERS/ASPのソースツリーの方は、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\at32uc3a3_xpld_gcc

TOPPERS/ASPソースツリーのディレクトリ - 2


雛形プロジェクトの方のディレクトリに注目!

以下の3つのディレクトリとヘッダーファイルを確認して下さい。


●ASF

●config

●asf.h

雛形プロジェクトのディレクトリ - 3


この3つを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 3


これで、ASF関連のソースコードの回収は完了です。

雛形プロジェクトの方のエクスプローラーは閉じちゃって構いません。


ヘッダーファイルのコピー

TOPPERS/ASPをビルドするにあたり、AVR32の様々な定義を記述したヘッダーファイルが必要となります。

それを一から自分で書いていたら大変ですので「Microchip Studio」から頂いちゃいましょう。

新たに、以下のパスを表示するエクスプローラーを開きましょう。


C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel

ヘッダーファイルのディレクトリ - 1


次に、TOPPERS/ASPのソースツリーの方のエクスプローラーは、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\arch\avr32uc3_gcc

TOPPERS/ASPソースツリーのディレクトリ - 4


ヘッダーファイルの方のディレクトリに注目!

以下のディレクトリを確認して下さい。


●UC3A_DFP

ヘッダーファイルのディレクトリ - 2


このディレクトリを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 5


ここで、コピーしたヘッダーファイルのバージョンを調べておきます。

TOPPERS/ASPのソースツリーの方のエクスプローラーでコピーした「UC3A_DFP」ディレクトリをダブルクリックしてください。

そこで新たに現れたディレクトリの名前がヘッダーファイルのバージョンを示します。

以下の例では「1.0.80」となっていますね?

TOPPERS/ASPソースツリーのディレクトリ - 6


このバージョンは「Microchip Studio」をインストールした時期によって異なります。

そのため、TOPPERS/ASPのMakefileに対し、このバージョン通りのディレクトリ名を教えてあげないといけません。

それを行うには、以下のディレクトリにある「Makefile.prc」を修正する必要があります。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\arch\avr32uc3_gcc

TOPPERS/ASPソースツリーのディレクトリ - 7


そこで「Makefile.prc」をテキストエディターなどで開き、以下の部分を修正します。

15行目付近からの…

...
#
#  コンパイルオプション
#
INCLUDES := $(INCLUDES) \
		    -I$(SRCDIR)/arch/$(PRC)_$(TOOL)/UC3A_DFP/1.0.53/include/AT32UC3A3256
COPTS := $(COPTS) -mpart=uc3a3256 -DBOARD=UC3_A3_XPLAINED -std=gnu99
LDFLAGS := $(LDFLAGS)
...


…という部分を以下のように修正します。

...
#
#  コンパイルオプション
#
INCLUDES := $(INCLUDES) \
		    -I$(SRCDIR)/arch/$(PRC)_$(TOOL)/UC3A_DFP/1.0.80/include/AT32UC3A3256
COPTS := $(COPTS) -mpart=uc3a3256 -DBOARD=UC3_A3_XPLAINED -std=gnu99
LDFLAGS := $(LDFLAGS)
...


おわかりいただけただろうか?

「INCLUDES :=」の定義の2行目において「1.0.53」などとなっている古いバージョンの表記を今回使用する「1.0.80」に修正しています。

もちろん、前述した方法でヘッダーファイルのバージョンを調べた結果「1.0.80」でなかった場合は、それに合わせたバージョン番号をディレクトリ名として修正すれば良いです。

修正が終わったら、忘れずに「Makefile.prc」を保存してください。

これで、ヘッダーファイルの回収は完了です。

ヘッダーファイルの方のエクスプローラーは閉じちゃって構いません。


スタートアップファイル「start.S」のコピーと修正

ターゲットに電源が入った後、いの一番に実行されるアセンブラのソースコード「start.S」を作成します。

一から書くのは大変なので、既に用意されているものをベースに作成しましょう。

元となるソースコードは、「startup_uc3.S」という名前で以下のパスに配置されています。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\at32uc3a3_xpld_gcc\ASF\avr32\utils\startup

TOPPERS/ASPソースツリーのディレクトリ - 8


この「startup_uc3.S」を以下のディレクトリにコピーします。


C:\cygwin64\home\morita\asp_1.9.2\arch\avr32uc3_gcc

TOPPERS/ASPソースツリーのディレクトリ - 9


ついでに、今コピーした「startup_uc3.S」を「start.S」に改名しておきましょう。

TOPPERS/ASPソースツリーのディレクトリ - 10

続きまして、改名した「start.S」をテキストエディターなどで開き、以下の部分を修正します。

59行目付近からの…

...
  .global _stext
  .type _stext, @function
_stext:
  // Set initial stack pointer.
  lda.w   sp, _estack
...


…という部分を以下のように修正します。

...
  .global _stext
  .type _stext, @function
_stext:
  // Set initial stack pointer.
  //lda.w   sp, _estack         // コメントアウト!
  lda.w   r0, _kernel_istkpt    // 追記!
  ld.w    sp, r0[0]             // 追記!
...


もう一箇所!

103行面付近からの…

...
  // Start the show.
  lda.w   pc, main
...


…という部分を以下のように修正します。

...
  // Start the show.
  //lda.w   pc, main            // コメントアウト!
  lda.w   pc, sta_ker           // 追記!
...

修正が終わったら、忘れずに「start.S」を保存してください。


リンカスクリプト「at32uc3a3_xpld.ld」のコピーと修正

ソースコードをビルドした後に、どのようにメモリに配置すればよいのか?をリンカに指示するためのリンカスクリプト「at32uc3a3_xpld.ld」を作成します。

こちらも一から書くのは大変なので、既に用意されているものをベースに作成しましょう。

元となるリンカスクリプトは、「link_uc3a3256.lds」という名前で以下のパスに配置されています。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\at32uc3a3_xpld_gcc\ASF\avr32\utils\linker_scripts\at32uc3a3\256\gcc

TOPPERS/ASPソースツリーのディレクトリ - 11


この「link_uc3a3256.lds」を以下のディレクトリにコピーします。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\at32uc3a3_xpld_gcc

TOPPERS/ASPソースツリーのディレクトリ - 12


ついでに、今コピーした「link_uc3a3256.lds」を「at32uc3a3_xpld.ld」に改名しておきましょう。

TOPPERS/ASPソースツリーのディレクトリ - 13

続きまして、改名した「at32uc3a3_xpld.ld」をテキストエディターなどで開き、以下の部分を修正します。

42行目付近からの…

...
OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")

OUTPUT_ARCH(avr32:uc)

ENTRY(_start)
...


…という部分を以下のように修正します。

...
OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")

OUTPUT_ARCH(avr32:uc)

/* ENTRY(_start) コメントアウト! */
STARTUP(start.o)                    /* 追記! */

PROVIDE (hardware_init_hook = 0) ;  /* 追記! */
PROVIDE (software_init_hook = 0) ;  /* 追記! */
PROVIDE (software_term_hook = 0) ;  /* 追記! */
...


修正が終わったら、忘れずに「at32uc3a3_xpld.ld」を保存してください。


クロック設定の変更

デフォルトのままではパフォーマンスが悪いのでCPUのクロック設定を変更します。

これを行うには、ASFのクロック設定ファイル「conf_clock.h」の内容を変更する必要があります。

この「conf_clock.h」は、以下のパスに配置されています。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\at32uc3a3_xpld_gcc\config

TOPPERS/ASPソースツリーのディレクトリ - 14


conf_clock.h」をテキストエディターなどで開き、以下の部分を修正します。

44行目付近からの…

...
#define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_RCSYS
//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_OSC0
//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLL0
...


…という部分を以下のように修正します。

...
//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RCSYS  // コメントアウト!
//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_OSC0
#define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_PLL0	// アンコメント!
...


もう一箇所!

60行面付近からの…

...
//#define CONFIG_PLL0_SOURCE          PLL_SRC_OSC0
//#define CONFIG_PLL0_SOURCE          PLL_SRC_OSC1

/* Fpll0 = (Fclk * PLL_mul) / PLL_div */
//#define CONFIG_PLL0_MUL             (48000000UL / BOARD_OSC0_HZ)
//#define CONFIG_PLL0_DIV             1
...

…という部分を以下のように修正します。

...
#define CONFIG_PLL0_SOURCE            PLL_SRC_OSC0	            // アンコメント!
//#define CONFIG_PLL0_SOURCE          PLL_SRC_OSC1

/* Fpll0 = (Fclk * PLL_mul) / PLL_div */
//#define CONFIG_PLL0_MUL             (48000000UL / BOARD_OSC0_HZ)
#define CONFIG_PLL0_MUL               (84000000UL / BOARD_OSC0_HZ)  // 追記!
#define CONFIG_PLL0_DIV               1	                            // アンコメント!
...


修正が終わったら、忘れずに「conf_clock.h」を保存してください。


コマンドラインでのビルド

さて、これで全ての準備は整いました。

お疲れ様でした~!!

早速ビルドしてみましょう。

Cygwinを開いて、TOPPERS/ASPソースツリーの場所まで移動しましょう。


$ cd asp_1.9.2\


次にその直下の「OBJ」ディレクトリに移動します。


$ cd OBJ\


コンフィギュレーターのパーミッションを実行可能に設定します。


$ chmod 755 ../cfg/cfg/cfg.exe


ここまで、大丈夫ですか?

Cygwinターミナル - 1


そうしたら、プロジェクトのコンフィグファイル(sample1.cfg)の情報を元に、OSに必要な定義を記したソースコード(「kernel_cfg.c」と「kernel_cfg.h」)を生成します。


$ make depend


以下のような表示にならずエラーが出力される場合は、残念ながらこれまでの作業に誤りがあります。

お手数ですが、最初からご確認を!

Cygwinターミナル - 2


ここまで上手くいったら、ホンチャンのビルド。

以下のコマンドを実行します。


$ make all


以下のように無事にビルドが通ったでしょうか?

Cygwinターミナル - 3


本日はここまで!

とても煩雑な作業でしたが、お疲れ様でした。

コマンドラインではビルドが通るようになりましたので、次回はIDE(統合開発環境)で開発できるようにプロジェクトを作って、ターゲットへプログラムを転送し、デバッグを行うところまでやっていきましょう。


<続く>

2023年1月10日火曜日

TOPPERS/ASP - RL78版 目次

思い出しながら何とか完結!

以下RL78版に関する記事の目次です。


■TOPPERS/ASP - RL78 その1

TOPPERS/ASP - RL78版 概要

必要なもの

ダウンロード/GitHub


■TOPPERS/ASP - RL78 その2

開発環境の構築(コンパイラ編)


■TOPPERS/ASP - RL78 その3

開発環境の構築(IDE編)


■TOPPERS/ASP - RL78 その4

プロジェクトの作成


■TOPPERS/ASP - RL78 その5

プログラムの転送とデバッグ


■TOPPERS/ASP - RL78 その6

サンプルプロジェクトの説明

RL78版カーネルについて

「RL78」は「H8」より優れているのか?

ライセンスについて



なお、Qiitaにも上記の記事を1ページにまとめたダイジェスト版を投稿しました。

こっちの方が読み易いです。

でもQiitaって、あまり組み込み分野の記事って盛り上がらないんですよね…。

(オマエの文書が悪い…とか言われると傷付きます。)

よろしければ参考にしてください。

Qiita

TOPPERS/ASP - RL78版 - Qiita

2023年1月5日木曜日

まさかのIBM製マック!?PowerBook 2400c

私はMacユーザーです。

しかし、会社ではWindowsパソコンを使って仕事をしています。

でも、家のパソコンは代々Macです。

プログラマーという職業柄、家に帰ってまでパソコンの画面なんか見たくはありません。

とはいえネットやメールなど、今やパソコン無しでは普段の生活にも支障をきたす時代。

そこで妥協点として、プライベートでは仕事を連想してしまう無骨なWindowsパソコンではなく、見目麗しいMacを使うことにしたのが切っ掛けだったと思います。

(まあ、今や家にパソコンが無くたってAndroidのタブレット一台でもあれば事足りるんですけどね…)

今回は、手持ちの歴代Macの中でも、異様な一台を紹介します。

PowerBook 2400c/180」です!

「PowerBook 2400」エンブレム


詳しくは、こちらのページを参照してください。

発売は、なんと1997年!?20世紀のパソコンです。

でも、私の機体はそんな古さを感じさせないほどキレイですよね?

新品同様の筐体


この時代のMacのロゴは「レインボーロゴ」と呼ばれる七色のリンゴ。

この機種には(小さいですが…)天板にも配置されています。

天板のレインボーロゴ


今のMacのノートPCとは逆に、天板を開いた状態では、このレインボーロゴは「逆さリンゴ」になってしまうのですが、ここはご愛嬌!

逆さリンゴ


インターフェースを見ていきましょう。

背面には、左からマウスなどを繋げるADB、電源、モデム、FDドライブ、外部モニタ、SCSIといった各種ポートが並びます。

右側には、赤外線通信ポートと、PCカードスロットが配置されています。

え…USB?

そんなものは知らない…。

背面のインターフェース


右側面にはサウンド入出力のジャックが配置されています。

右側面のインターフェース


この「PowerBook 2400c/180」は、「サブノートPC」というカテゴリーの製品です。

筐体そのもののサイズは非常に小さい(しかし、今の基準では分厚い…)のですが、キーボードはしっかりしており、適度なサイズとストロークを確保しています。

トラックパッドの下には。カイゼル髭のようなボタンがあります。

Macらしく1ボタンです。

及第点のキーボード


さて、所々で時代を感じさせる本機ですが、ご覧の通りパッと見、新品のような状態です。

これには訳があります。

実は、この機体は私が新品で購入したものではないのです。

正確な時期は忘れましたが、今から十数年前にジャンク屋で転がっていたものを格安で購入したものなのです。

この機体の発売が1997年ですので、その当時でも相当な旧型だったわけですが、私は以前から、この機体の数奇な生まれに不思議な魅力を感じていました。

それに関しては後述。

そのジャンク品は見た目はボロボロで、動作保証無し!

同系統のデザインのフロッピードライブも付いていましたが、こちらは蓋が破損!

(未だに動作自体は正常です。)

外付けフロッピードライブ


ダメ元で家に持ち帰り電源を入れたところ、本体は案の定うんともすんとも言わず…。

まずは電源回路を疑いました。

分解して地道にテスターを当てて故障箇所を探します。

一般的に、こういった精密機械において電源入れても何も反応がない…という症状は、軽症であることが多いです。

(因みに一番厄介なのは、通電して動いてはいるが不安定というケース。)

調べていくと、やはりそうか!

経年劣化か衝撃でチップヒューズが切れているだけだったのです。

そこで、電源回路にある全てのチップヒューズをポリスイッチに交換しました。

それだけで、あっさりと起動成功!

せっかく復活したのだから、とことん改造しよう!…ということで、IDE規格のハードディスクを取り出して、IDE/コンパクトフラッシュ変換アダプタを使用してコンパクトフラッシュをハードディスクとして使用することにしました。

今で言うところのSSDへ交換したみたいな感じですね。

その後、この「PowerBook 2400c/180」を売っていたジャンク屋で「PowerBook 2400c」の新品未開封のプラスチック筐体を見つけ、これに交換しました。

このプラスチック筐体、「PowerBook 2400c」本体のジャンクの5倍ほどの値段がしましたよ~。


今考えると…嵌められた!?

まあいいけど。


…このような経緯から、不自然なほどのキレイな見た目となっているのです。

さて、華麗なる復活を果たした「PowerBook 2400c/180」は、その後しばらく家のパソコンとして活躍をしてくれました。

しかしながら時代の流れには逆らえず、ここ数年はほとんど通電させていませんでした。

そこで、ブログのネタに丁度よいと思って本日押し入れから引っ張り出してきました。

さてさて起動するかな~?


電源プラグを差し込んだ瞬間に「ジャ~ン」というCコードがあっさりと聞こえてきました。

液晶は相当暗いものの「Mac OS 9.1」のロゴを表示!

「PowerBook 2400c/180」の起動 - 1


イケるか~!?

頑張れ!!

「PowerBook 2400c/180」の起動 - 2


よし!デスクトップまで行きました!!

やはりハードディスクじゃなくて、コンパクトフラッシュなどでシリコン化すると経年劣化には強いですね。

起動時間も倍以上早くなっていると思います。

あとは、ハードディスクと比べて消費電力も少ないし、モーターの始動時の突入もありません。

だから電源回路にも優しいでしょう。

これは良い改造だったかなぁ~と。

デスクトップの表示


アプリケーションは「Microsoft Office」などが入っていますね。

2chブラウザーなんかもある。

生活感を感じますね。

ランチャー


さて、散々「異様」であるとか「数奇」などと称してきた「PowerBook 2400c/180」ですが、その魅力とは一体何なのか?

すでに題名で言ってしまってますが、これは当時のAppleがIBMへ開発を委託して完成した製品なのです。

パソコンに詳しい人にとっては、これは異様と感じざるを得ません。

歴史を紐解けば、インテルのCPUを載せた「IBM PC」とモトローラのCPUを載せた「Macintosh」は、長い期間対立関係にありました。

また当時のノートPC市場において、IBMの「ThinkPad」シリーズとAppleの「PowerBook」シリーズは、お互い強力なブランドとして確立されており、動作するOSこそ違えど苛烈なライバル関係にありました。

一方で、この「PowerBook 2400c」が発売された頃は、パソコン市場からサーバー市場への転換を図ろうとしていたIBMが、Appleとモトローラと組んで「PowerPC」という新たなアーキテクチャのCPUを協力して開発していた時期にあたります。

実際、この「PowerBook 2400c」に搭載されているCPUもこの「PowerPC」の最初期のものです。

昨日の敵は今日の友…。

そうした混沌の時代に産み落とされた数奇なモデルが、この「PowerBook 2400c」なのです。

IBMが開発を担当したとは言っても、実際に設計を行ったのは当時の「日本IBM大和事業所」という会社です。

ここは「ThinkPad」などのモバイル系機器の設計・開発を強みとしていたIBMの日本法人でした。

故に、ここで開発された「PowerBook 2400c」が、どこか昔の「ThinkPad」と似た雰囲気を持っていることも無理からぬことです。

外見からでも分かりますが、実際に分解してみると、それまでのMacとは全く違う設計思想であることを強く感じました。

そのIBMも、いつしかパソコン市場から完全に撤退。

レノボという中華系企業が「ThinkPad」のブランドを引き継いだものの、やはりかつての輝きはなく…。

「ThinkPad」と似た雰囲気?


また「PowerBook 2400c」は、当時のAppleの最高経営責任者であったギル・アメリオにより日本に派遣された技術者チームが、東京の満員電車を体験して小型軽量マシンのきっかけを掴んだ…といった逸話がある通り、明確に日本市場にターゲットを向けた製品という点でもApple製品としては異例なモデルと言えます。

そのギル・アメリオも、この製品の発売とほぼ同時に復権した、かのスティーブ・ジョブズにAppleを追い出されることとなります。

その後のAppleの躍進は、皆さんの御存知の通り。

しかしながら、この「PowerBook 2400c」以降、明確に特定の国にターゲットを絞った製品は、Appleから出ていないような気がします。

特定の市場に合わせて製品を分けて開発を行うのは、経営的に非効率であるとスティーブ・ジョブズは考えたのでしょう。

ギリギリのタイミングでしたが「PowerBook 2400c」は、ギル・アメリオ体制だったから出せた製品とも言えますね。


このような、まるで業界の歴史の「紆余曲折」を捏ねて固めたような生い立ち。

それこそが「PowerBook 2400c」の最大の魅力だと思います。


先日の「モバイルギアII(MC/R330)」とは異なり、この「PowerBook 2400c」が活躍できる場面は、もはや無いでしょう。

プラスチック筐体は未だ新品同様ですが、液晶は保護膜(剥がせないやつ)が波打ち、バックライトの陰極管の輝度も落ちています。

再び長い眠りにつく「PowerBook 2400c」


それでも一番思い入れのあるMac、なにせゴミ同然のジャンクからここまで頑張ってキレイにしたのですから!

可能な限り動態保存を維持していきたいと思います。

TOPPERS/ASP - ML62Q1000版 その1

TOPPERS/ASP - ML62Q1000版 概要 以前、 このページ で書かせてもらいました。 ラピステクノロジー社のマイコン「 ML62Q1000 」です。 結局仕事では使えなかったので、ここでの公開となりました。 オリジナル「nX-U16/100」コアの16bit RI...