OpenSSMのファームウェアは、RTOS等の OSを使わず独自の環境下(プログラムライブラリ)に構築されています。最初は分かりにくい/理解しにくいと思われるところも多々あると思いますので、各ライブラリの説明ページを設けました。
RTOSではマルチタスクが使えるため大変便利ですが、OpenSSMでは各タイマ割込をタスク代わりに使っています。また一部の処理では、イベントもどきの概念(あるいは、コルーチンに近い)を導入しています。
Fig.1 アプリケーション層とライブラリ(ドライバ)の関係
ライブラリとなる対象は、他のソフトウェアへの流用が可能かどうかという点において決められています。そのハードウェアあるいはアプリケーション固有となる機能の場合は、ライブラリ化されていません。 ライブラリは、lib〜.c, lib〜.hと、libが接頭辞としてファイル名が決められています。また必ず lib〜.c, lib〜.hとペアでファイルが存在します。場合によっては、外部のテーブルを参照することがあり、その場合は table.hが必要になります。
ソースコード名 | ヘッダ名 | 機能 | 備考 |
libadc.c | libadc.h | A/D変換ドライバ | |
libdac.c | libdac.h | D/A変換ドライバ | |
libeeprom.c | libeeprom.h | I2C対応の EEPROMドライバ | |
libfontx2.c | libfontx2.h | FONTX2ドライバ (ASCIIフォントのみ) | FONTX2のフォントファイルが別途必要 |
libps2.c | libps2.h | PS/2対応キーボードドライバ | |
librtc.c | librtc.h | Software RTCドライバ | |
libuart.c | libuart.h | Software FIFO対応 UARTドライバ | |
libvideo.c | libvideo.h | NTSCビデオ出力/スーパーインポーズドライバ | |
table.c | table.h | 数値参照用のテーブル | |
types.h | BOOL型など変数型の定義 |
OpenSSMのアプリケーション層に相当する部分は、下記のコードにまとめられています。
ソースコード名 | ヘッダ名 | 機能 | 備考 |
main.c | main.h | 各初期化の呼び出し、main関数、メインループなど | |
config.c | config.h | EEPROMへのバックアップ/リストアを行う | |
event.c | event.h | イベント処理を行う | |
extmeter.c | extmeter.h | 外付けメータの制御を行う | |
screen.c | screen.h | 画面表示の制御及びキーボード入力処理を行う | |
ssm.c | ssm.h | プロトコル処理を行う |