ディバイスが動いたので、今度はこのソースをSTM8Sに移植する工程に移れる。ところが、ソースコードを読んでいるうち重大な問題を発見した。ビットマップフォントのデータがオブジェクトファイルになっているのである。STM8Sの開発環境はGNUではない。RaisonanceのCコンパイラーもmakeを使っているので、もしかしたら動くのかもしれないが、GNUで作ったオブジェクトファイルとの互換性は余り期待できない。あわててRaisonanceコンパイラーのマニュアルを調べだす。これがなかなか見つからない。ことで探し出し(マニュアルはダウンロードファイル一式の中の/docディレクトリで発見)、詳しく読み込むが、内容は使い方が中心で、こういう構造的な話は出ていない。やっていることは非常に簡単で、テーブルの頭を外部参照変数として受け取れるようにするだけなのだが、リンカーのところは、プログラム開発でも一番の奥の院だ。GNUのフォーマットとRaisonanceのが等しい可能性は薄い。STM8Sでフォントを出すには、EEPROMを外付けするか(12/20/2012)色々調べたが、結局、フォントデータを.oファイルで持ち込むことは諦めることとする。バイナリエディターで双方のオブジェクトファイルを検証したが、全くフォーマットが違う。objcopyに相当するオブジェクトツールはRaisonanceにはない。出来ないとなると猛然と何とかしてやろうと、こだわってしまうところがいつもの悪い癖である。AVRで開発すれば何でもないところを、STM8Sでどうやったら実現出来るか頭をひねる。ひとつのプログラム実行形式ファイルの中に入れようとするのが難しいのなら、外の記録装置(SDカード)などに入れてやれば良いのではないか。フォントのためだけにSDカードを実装するのは馬鹿げている。STM8SにはまだFatFSは移植されていない。この移植も少し食指が動くが、これを始めると収拾がつかなくなるので、この案の実現は諦める。なると、残るは、EEPROMなどの外付けである。EEPROMはSPI、IICどちらも手持ちがある。LatticeのFPGAのために買ったEEPROM(M25P40)などは、512KBもある。これだけあれば、日本語のフォントファイルもかなり大きいものが収容できる。EEPROMから読み込む関数を開発すれば、現在のソースコードもそれほど変更せずに使えそうだ。ふむふむ、これなら出来そうだぞ。問題はどうやってEEPROMにフォントデータを書き込むかである。老AVR研究所は前にも書いたように、なるべくPCでプログラム開発は行わないことを原則としている。.oファイルの形でフォントデータを書き込み、SDカードが読めるマイコンにEEPROMを外付けしてここからデータを移す方法なら何とかなりそうだ。SDカードを読めるマイコンなら既に、STM32や、AVRで実現している。余裕があれば、キャッシュを設定して読み込み済みのフォントはそこから読むようにすれば高速化もできる。そこまで凝ることもないだろう。簡単ではないけれど道筋はついた。UARTモニターにするのにまた一苦労(12/23/2012)そら。さんの、このGLCDのデモプログラムは、電波時計の方のソースコードを流用し表示部分だけに限定したもので、GLCDを初期化して、一気に画面いっぱいに文字を描画するだけのプログラムである。ここまで来たのだから、STM32のグラフィック気圧計のとき果せなかった、グラフィック画面でのUARTモニターをついでに実現してみようと、少し欲張ってみることにした。STM8Sでは、今のところフォントの実装を急には出来ないが、自由に文字が出力され、画面がスクロールしていくような仕掛けを自前で作っておくことは汎用性が高く、これから他の応用にも効く。UARTの受信部を導入して、UARTモニタープログラムを作ることにする。いつもの定番のUART開発である。これが、うまく動かないのである。割り込み部を作るのだが、ここに処理がまわってこない。オシロでは間違いなくPCからリターンキーなどの信号が来ている。受信割り込みが起きない。送信は問題なく、PCのコンソールにはWelcomeメッセージが出ているのだが、PCのキーボードを押しても何の反応もない。やれやれ、またロジアナの登場か、と準備をしかけたときである。コンパイルメッセージで、奇妙な警告を見つけた。エラーではなく警告だ。この'SIG_USART_RECV'という割り込みルーチンのエントリーポイントは、昔のMega168のソースファイルから取ってきたものだ。したら、割り込みエントリーが違うのではないか。Mega328のエントリーを調べる。こいつは'USART_RX_vect'だ。エントリーポイントが違うのだ。割り込みが起きても反応しないのだ。ここを直したら、全く何事もなく受信が出来た。いやいや、えらい道草を食ってしまった。それにしても、これが警告というのはおかしい。みたいな遠慮がちのメッセージでなくはっきりエラーとして欲しい。何かやましいことでもあるのだろうか(と八つ当たり)。GLCDの描画ロジックを研究する(12/29/2012)グラフィックな表示装置に、文字フォントを出していくソースコードはいくつかこれまでに見ている。この間のグラフィック気圧計のベースにした、ねむいさんのSTM32などの標準ソースにも、カラー液晶でグラフィックで日本語ファイル名を表示する、しゃれたファイラーがある。ねむいさんによれば、このソースは、ChaNさんのFDのソースコードをオリジナルにしているということで、大分前からこのオリジナルを探していた。さんのソースも、これが原典になっているのではないかと思い、そのオリジナルが知りたくて、ここ数日一生懸命探し回っていた。その結果、やっと見つけたのだが、それは、なんと、FatFSのサンプルコード集(ffsample.zip)の中のLPC2388用のソースの中にひそんでいた。さんのソースの原典は、これでもないようだ。いずれにしても、受信が順調に動くようになったので、ちょっと本格的なUARTモニターを、このGLCDで作るため、次のようなロードマップで開発することにした。(1)スクロールモニターなので、最低でも、出てきたデータが次々にスクロールしていく機能は欲しい。これが出来れば、PCに依存しないシステムが作れる(キーボードは、4方向スイッチなどで実装)。大きさの違う文字を表示しながらスクロールさせるのは、ちょっと難しいが、スクロールできなくても、少なくとも表示だけは出来るようにしておきたい。(3)あわよくば逆スクロール一旦消えた文字列を、コマンド(上下キーなど)で画面上に戻す機能。これは文字バッファーを別途に持ち、かなり複雑な構造が要求され実装することはそう簡単ではない。所長は、昔々MS-DOSでパソコン通信ソフトを自作した時、実装したことがあるのでノウハウはある。どれも急にできる機能ではない。今動いているUARTモニターに何種類かコマンドを加えて、描画速度などを調べてみた。これが描画が結構早いのだ。一文字づつキャッシュに描いては、updateをかけて連続して出力するが、画面の管理が良く出来ているので、4行を一字づつ書き込むのだが、殆ど一瞬で全部の文字が表示される。Pi(以降、RasPi)が遂に到着した(12/25到着)。注文した時は4週で来ると言っていたが、結局、予定の倍の2ヶ月を要したことになる。BeagleBoardのとき、「もう、このあたりの工作はしない」と宣言していた筈なのだが、ウェブを見ていると周辺でRasPiが次々に到着し、みなさん何か面白そうなことを始めている。RasPiの詳しいスペックを調べている間に、RasPiの余りの安さに負けて、つい発注してしまったものである。Piは、何と¥3000以下($35)なのである。ケースや、HDMIケーブル、それに送料(¥840)をあわせても¥4500である($=¥80換算)。あきれるしかない安さだ。コア512MBである。256MB)とほぼ同じだが、ARMのグレードは、RasPiの方が上なので、スペック的に少し上だろう(オーバークロックも出来るようだ)。ペリフェラルもほぼ同じだが、RasPi(モデルB)は、LANが標準なので性能的に有利だし、部品も少なく出来る。BealeBoardのときは、宅配便だったが、今度のは郵便箱にいつのまにか納まっていた。とるものもとりあえず持ち込んで、記念撮影する。ケースが良く出来ている。何も用意していないので、ケースに入れて、ただ眺めて楽しむだけである。これを何に使うのかである。ウェブカメラが安かった(¥1500)ので買ってある。USBのビデオクラスを使っているのでLinuxでも動くはずだ。これを使って、いよいよ念願のリモートカメラを実現しようと考えている。モーター制御を入れて、パンやズームも試してみたい。3の電源事情好転せず。ESP32に手を出す(2017.05.19)motionの動体検知はRaspi3の電源が安定しない(2017.04.16)コメントきゅうる村さん、お久しぶりです。こちらこそ、よろしく。