概要

 OpenSSMの細かな機能を説明します。組込機器となりますので、回路とファームウェアは密接に絡んでいることもあり、ハードウェア/ソフトウェアを同時に説明します。

 OpenSSMのファームウェアは、RTOS等の OSを使わず独自の環境下(プログラムライブラリ)に構築されています。最初は分かりにくい/理解しにくいと思われるところも多々あると思いますので、各ライブラリの説明ページを設けました。

 RTOSではマルチタスクが使えるため大変便利ですが、OpenSSMでは各タイマ割込をタスク代わりに使っています。また一部の処理では、イベントもどきの概念(あるいは、コルーチンに近い)を導入しています。

1.png

Fig.1 アプリケーション層とライブラリ(ドライバ)の関係

開発環境

 C言語で開発されています。ごくごく一部に、インラインアセンブラが使用されています。

  1. Microchip MPLAB
  2. Microchip C Compiler for PIC24

ライブラリについて

 ライブラリとなる対象は、他のソフトウェアへの流用が可能かどうかという点において決められています。そのハードウェアあるいはアプリケーション固有となる機能の場合は、ライブラリ化されていません。  ライブラリは、lib〜.c, lib〜.hと、libが接頭辞としてファイル名が決められています。また必ず lib〜.c, lib〜.hとペアでファイルが存在します。場合によっては、外部のテーブルを参照することがあり、その場合は table.hが必要になります。

ソースコード名ヘッダ名機能備考
libadc.clibadc.hA/D変換ドライバ
libdac.clibdac.hD/A変換ドライバ
libeeprom.clibeeprom.hI2C対応の EEPROMドライバ
libfontx2.clibfontx2.hFONTX2ドライバ (ASCIIフォントのみ)FONTX2のフォントファイルが別途必要
libps2.clibps2.hPS/2対応キーボードドライバ
librtc.clibrtc.hSoftware RTCドライバ
libuart.clibuart.hSoftware FIFO対応 UARTドライバ
libvideo.clibvideo.hNTSCビデオ出力/スーパーインポーズドライバ
table.ctable.h数値参照用のテーブル
types.hBOOL型など変数型の定義

アプリケーションについて

 OpenSSMのアプリケーション層に相当する部分は、下記のコードにまとめられています。  

ソースコード名ヘッダ名機能備考
main.cmain.h各初期化の呼び出し、main関数、メインループなど
config.cconfig.hEEPROMへのバックアップ/リストアを行う
extmeter.cextmeter.h外付けメータの制御を行う
screen.cscreen.h画面表示の制御及びキーボード入力処理を行う
ssm.cssm.hプロトコル処理を行う

その他

 開発の後半でスタックメモリが足りなくなってしまったので、かなりの関数を inline展開しています。ROMは比較的余裕があるので、実際のところは大したことないですが...

添付ファイル: file1.png 3513件 [詳細]