Topページ

kmix Top

 特徴

 概観

 ハードウェア

 ソフトウェア

 PCソフト

 マニュアル

 ダウンロード

 入手について


★★k-mix1601のソフトウェア★★


**** 全体構成 ****

 k-mix1601はCPUにH8/3048Fを使用しています。ソフトウェアは大きく分けて ブートプログラム(Bios)とアプリケーションプログラムにわかれますが、 入出力の様々なライブラリはブートプログラムに含まれており、その機能を 利用してアプリケーションプログラムを構成しています。

 開発環境としては cygwin上でH8用のgccを利用して開発しました。newlibは プログラムサイズが巨大になるので、その機能をほとんど使用していません。
    cygwin-1.0.0
    gcc-2.95.2
    binutils-2.10.1
    newlib-1.8.1

**** Bios ****
 Biosは、H8/3048Fの内部フラッシュメモリに書き込まれており、 基本的な設定を行なってアプリケーションソフトウェアを起動する役割と、 アプリケーションのメンテナンス(バージョンアップ)等を行なうことのできる シェル、各種ライブラリを提供する役割を持っています。
(1) 起動
 起動に関しては特に特別なことはせず、シリアル通信の設定、 H8/3048F内臓周辺モジュールのうち最低限の設定を行なってから、 アプリケーション用フラッシュメモリのチェックを行ない、アプリケーションが 書き込まれていたらメインメモリにロードしてアプリケーションを実行します。 アプリケーションが実行されたらBios本体は基本的に何もしません。
 なお、あらかじめkmix-1601とPCをシリアル通信接続して端末ソフトを 起動しておき、スペースを押しながら電源を投入するとシェルモードが 起動します。

(2) シェル
 Biosはアプリケーションのメンテナンス等や動作チェックを行なうことが できるよう、コマンドヒストリ付きのシェルモードが備わっています。
kmix-1601とPCの間をシリアル通信接続して端末ソフト(TeraTerm等)を 起動しておき、、電源起動時にスペースキーを押しっぱなしにするとシェルモード が起動し、リスト1のように端末ソフトに表示されます。なお、端末ソフトは、 3800bps、8bit Data、1stop bit、Parityなしに設定しておきます。
"ls"と入力すると、使用できるコマンドが表示されます。
リスト1:シェルモードの起動
***************************************
*    K-mix Boot                       *
*                        Ver. 0.4     *
*                        2004. 3.24   *
***************************************
KmixBoot>

(3) ライブラリ関数
 Biosにはボリュームコントロール、LCD制御、7segmentLED制御、 フロントパネルの各種入力、シリアル通信関連等のハードウェア制御ライブラリ が多数含まれています。ここではその代表的なものを紹介します。詳細は ソースコードをご覧ください。
システム操作 panelLockOnOff(), mnsetoff(), mnseton(), chsetoff(), chseton() BeepEnable(), BeepDisable(), getBeepLen(), Beep(), setBeepLength(), setContrast()
フロントパネル入力 swcheck(), checkPush(), setdpmode(), checkVolUp()
システムリソース sysParamInit(), readRom(), sysParamRec(), getStartMode(), setStartMode() sciSetBaud(), getSciBaud(), getSciDataLen(), getSciParity(), getSciStopBit(), sciSetMode(), writeLcd(), outToLcd(), lcdInit(), initVCgRam(), initHCgRam(), wrietLcdRAM(), lcdWait(), lcdOut(), lcdRawOut(), lcdBackspace(), lcdMoveto(), lcdCommand(), ledoutLeft(), ledoutLeftRaw(), ledoutCenter(), ledoutCenterRaw(), ledLampOut(), ledLampOut2(), setLedMode(), swinput(), getSwStat(), checksw(), auxswUpdateSet(), getAuxSendSw(), checkTimeFlag(), setBeepFreq(), getBeepFreq(), BeepOn(), BeepOff()
ホストPC通信 pcomInit(), cmd_ping(), cmd_chdsend(), cmd_chdrcv(), cmd_chrcv(), cmd_mndsend(), cmd_mndrcv(), cmd_mnrcv(), cmd_pgm(), cmd_pgmname(), cmd_pgmdate(), cmd_lock(), pgmInfoToPC(), pgmNGToPC(), cmd_sysreq(), cmd_sysset(), sendComToPC(), sendSysToPC()
ミキシング関数 volinit(), resetchdata(), resetmndata(), initchdata(), initmdata(), initauxsend(), copychdata(), copymdata(), volSet(), mainSetL(), mainSetR(), auxRtnL(), auxRtnR(), chvolSet(), auxSendSetA(), auxSendSetB(), toneSet(), vbufinit(), vbufInput(), vbufOutput(), mainvolume(), phone(), auxrtn(), chvolume(), auxsend(), auxsw(), tone(), getChDataPtr(), getMnDataPtr(), getAllChDataPtr(),
コマンド実行 miscInit(), execDispInfo(), execSysEnv(), dispSysEnv(int), editSysEnv(), dispBeepOnOff(), editBeepOnOff(), dispBeepFreq(), editBeepFreq(), dispBeepMsec(), editBeepMsec(), dispContrast(), editContrast(), dispStartMode(), editStartMode(), saveSysEnv()
メッセージ表示 initmsg(), startmsg(), graphOutMain(), graphOutAuxRtn(), graphChData(), graphOutPan(), dispChData(), graphOutCh(), graphPanVol(), numCmpOut(), numOutCh(), numOutAuxCh(), dispVgraph(), clear_vgraph(), disp_hgraph(), disp_start(), dispMain(), chOutNumTitle(), chOutNumAuxTitle(), dispCH(), checkYesNo()
Program関数 pgmInit(), pgmIncDec(), savePgmData(), loadPgmData(), falshProgram(), execSavePgm(), setAuxName(), getAuxName(), setChName(), getChName(), waitSecLoop(), waitSecLoop2(), pgmnoWarning(), getpgmStrLoop(), nstripPstr(), stripPstr(), pstrlen(), delStr(), refleshNameSpace(), getPushStat(), loadPgm(), getCurPgmName(), getCurPgmDate(), umemcpy()
**** ミキサー制御ソフトウェア ****
ミキサー制御ソフトウェアはいわゆるミキサーのコントロールアプリケーションです。 フロントパネルの入力およびホストPCとの通信から内部の各種音量制御や LCD/LEDをコントロールします。
 アプリケーションの起動シーケンスは以下のようになります。
  1. Bios→アプリケーション起動
  2. バックアップRAM検査および保存してあるパラメータ復帰
  3. シリアル通信初期化
  4. ADC, DAC, LCD, LED, 各種入力スイッチ、ボリューム制御変数初期化
  5. その他変数、システムリソース初期化
  6. 初期化ループ:LCDへの起動メッセージ出力とボリュームのデフォルト設定
  7. メインループ:ミキサー制御ループ
    4msec毎:通信メンテナンス 8msec毎:ビープ音制御 16msec毎:スイッチ状態、LED出力制御 32msec毎:LCD出力制御
  8. 2msec毎の割り込み処理
    実際のAD入力、Volume設定LCD駆動等を行なう。
各種操作関数の実態はほとんどBiosのライブラリを使用しており、 ミキサー制御ソフトウェアではそのライブラリを使用して、全体の 制御の流れをコントロールするような形で動作しています。